Code

Removed a couple of normalize_preg calls
[gosa.git] / gosa-core / plugins / admin / departments / class_departmentGeneric.inc
index 5026fd9ab74d08a23977fe976270c7cbd0221949..27ad5c002bd9f29a56a6d8104ad5d8a94aec92b6 100644 (file)
@@ -112,6 +112,15 @@ class department extends plugin
       $smarty->assign($name."ACL",$this->getacl($name));
     }
 
+    /* Hide base selector, if this object represents the base itself 
+     */
+    $smarty->assign("is_root_dse", FALSE);
+    if($this->dn == $this->config->current['BASE']){
+      $smarty->assign("is_root_dse", TRUE);
+      $nA = $this->namingAttr."ACL";
+      $smarty->assign($nA,$this->getacl($this->namingAttr,TRUE));
+    }
+
                /* Base select dialog */
                $once = true;
                foreach($_POST as $name => $value){
@@ -166,23 +175,26 @@ class department extends plugin
 
     /* Set admin unit flag */
     if ($this->is_administrational_unit) {
-      $smarty->assign("unitTag", "checked");
+      $smarty->assign("gosaUnitTag", "checked");
     } else {
-      $smarty->assign("unitTag", "");
+      $smarty->assign("gosaUnitTag", "");
     }
 
     $smarty->assign("dep_type",$this->type);
+    
 
-    switch($this->type){
-      case 'c'        : $tpl ="country.tpl";break;
-      case 'o'        : $tpl ="organization.tpl";break;
-      case 'l'        : $tpl ="locality.tpl";break;
-      case 'ou'       : $tpl ="generic.tpl";break;
-      case 'alias'    : $tpl ="alias.tpl";break;
-      case 'referal'  : $tpl ="referal.tpl";break;
-      default  : $tpl ="generic.tpl";
+    $dep_types = departmentManagement::get_support_departments();
+    $tpl ="";
+    foreach($dep_types as $key => $data){
+      if($data['ATTR'] == $this->type){
+        $tpl = $data['TPL'];
+        break;
+      }
+    }
+    if($tpl == "") {
+      trigger_error("No template specified for container type '".$this->type."', please update epartmentManagement::get_support_departments().");
+      $tpl = "generic.tpl";
     }
-
                return($smarty->fetch (get_template_path($tpl, TRUE)));
        }
 
@@ -200,7 +212,7 @@ class department extends plugin
        {
                $ldap= $this->config->get_ldap_link();
                $ldap->cd ($this->dn);
-               $ldap->recursive_remove();
+               $ldap->rmdir_recursive($this->dn);
     new log("remove","department/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
     if (!$ldap->success()){
       msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class()));
@@ -218,7 +230,12 @@ class department extends plugin
        /* Save data to object */
        function save_object()
        {
-               if (isset($_POST['dep_generic_posted'])){
+    if (isset($_POST['dep_generic_posted'])){
+
+      $nA = $this->namingAttr;
+      $old_nA = $this->$nA;
+
+
 
       /* Create a base backup and reset the
          base directly after calling plugin::save_object();
@@ -236,13 +253,20 @@ class department extends plugin
       }
 
       /* Save tagging flag */
-      if ($this->acl_is_writeable("unitTag")){
-        if (isset($_POST['unitTag'])){
+      if ($this->acl_is_writeable("gosaUnitTag")){
+        if (isset($_POST['is_administrational_unit'])){
           $this->is_administrational_unit= true;
         } else {
           $this->is_administrational_unit= false;
         }
       }
+
+      /* If this is the root directory service entry (rootDSE)
+         then avoid changing the naming attribute of this entry.
+       */
+      if($this->dn == $this->config->current['BASE']){
+        $this->$nA = $old_nA;
+      }
     }
        }
 
@@ -443,7 +467,7 @@ class department extends plugin
                    }
 
                    /* This one matches with the latter part. Break and don't fix this entry */
-                   if (preg_match('/(^|,)'.normalizePreg($key).'$/', $attrs['dn'])){
+                   if (preg_match('/(^|,)'.preg_quote($key).'$/', $attrs['dn'])){
                            $fix= false;
                            break;
                    }
@@ -463,9 +487,13 @@ class department extends plugin
     if(!$OnlySetTagFlag){
       $this->must_be_tagged = FALSE;
            echo '<p class="seperator">&nbsp;</p>';
-      echo "<div style='width:100%;text-align:right;'><form name='form' method='post' action='?plug=".$_GET['plug']."' target='_parent'>
-        <br><input type='submit' name='back' value='"._("Continue")."'>
-        </form></div>";
+      echo "<div style='width:100%;text-align:right;'>".
+        "<form name='form' method='post' action='?plug=".$_GET['plug']."' target='_parent'>".
+        "<br>".
+        "<input type='submit' name='back' value='"._("Continue")."'>".
+        "<input type='hidden' name='php_c_check' value='1'>".
+        "</form>".
+        "</div>";
       echo "<script language=\"javascript\" type=\"text/javascript\">scrollDown2();</script>" ;
     }
        }
@@ -562,21 +590,22 @@ class department extends plugin
                   "plSelfModify"  => FALSE,
                   "plPriority"    => 0,
                   "plDepends"     => array(),
-                  "plSection"     => array("admin"),
+                  "plSection"     => array("administration"),
                   "plCategory"    => array("department" => array("objectClass" => "gosaDepartment", "description" => _("Departments"))),
             
                   "plProvidedAcls" => array(
-                    "description"       => _("Description"),
-                    "c"                 => _("Country"),
-                    "base"              => _("Base"),
-                    "l"                 => _("Location"),
-                    "telephoneNumber"   => _("Telephone"),
                     "ou"                => _("Department name"),
+                    "description"       => _("Description"),
                     "businessCategory"  => _("Category"),
+                    "base"              => _("Base"),
+
                     "st"                => _("State"),
+                    "l"                 => _("Location"),
                     "postalAddress"     => _("Address"),
-                    "gosaUnitTag"       => _("Administrative settings"),
-                    "facsimileTelephoneNumber" => _("Fax"))
+                    "telephoneNumber"   => _("Telephone"),
+                    "facsimileTelephoneNumber" => _("Fax"),
+
+                    "gosaUnitTag"       => _("Administrative settings"))
                   ));
   }
 
@@ -600,7 +629,7 @@ class department extends plugin
           }
 
           /* This one matches with the latter part. Break and don't fix this entry */
-          if (preg_match('/(^|,)'.normalizePreg($key).'$/', $dn)){
+          if (preg_match('/(^|,)'.preg_quote($key).'$/', $dn)){
             @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "DEBUG: Possibly relevant: $key", "Tagging");
             $relevant[strlen($key)]= $ntag;
             continue;
@@ -688,47 +717,6 @@ class department extends plugin
     }
   }
 
-
-  
-  /*! \brief    Returns a list of all available departments for this object.
-                If this object is new, all departments we are allowed to create a new user in are returned.
-                If this is an existing object, return all deps. we are allowed to move tis object too.
-
-      @return   Array [dn] => "..name"  // All deps. we are allowed to act on.
-  */
-  function get_allowed_bases()
-  {
-    $ui = get_userinfo();
-    $deps = array();
-
-    /* Is this a new object ? Or just an edited existing object */
-    if(!$this->initially_was_account && $this->is_account){
-      $new = true;
-    }else{
-      $new = false;
-    }
-
-    $ideps = $this->config->idepartments;
-    if(!isset($ideps[$this->base])){
-      $ideps[$this->base] = ".";
-    }
-    foreach($deps as $dn => $name){
-      if($new && $this->acl_is_createable($dn)){
-        $deps[$dn] = $name;
-      }elseif(!$new && $this->acl_is_moveable($dn)){
-        $deps[$dn] = $name;
-      }
-    }
-
-    /* Add current base */
-    if(isset($this->base) && isset($ideps[$this->base])){
-      $deps[$this->base] = $ideps[$this->base];
-    }else{
-      trigger_error("Cannot return list of departments, no default base found in class ".get_class($this).". ".$this->base);
-    }
-    return($deps);
-  }
-
 }
 
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: