Code

Added delete icon to ppd list if ppd file is removeable
[gosa.git] / plugins / admin / users / tabs_user.inc
index 451d9f973f2f1b84184179214f38b627134d963b..6822ab713c1d4c68fde29754ccc2f3e945594e17 100644 (file)
@@ -18,15 +18,33 @@ class usertabs extends tabs
     $baseobject= $this->by_object['user'];
     foreach ($this->by_object as $name => $obj){
 
+      /* Adding uid to sub plugins of connectivity */
+      if($name == "connectivity"){
+        foreach ($obj->plugin_name as $plg_name){
+          if(isset($obj->plugin[$plg_name]->uid)){
+            $obj->plugin[$plg_name]->uid = $baseobject->uid;
+          }
+        }
+      }
+
+      /* Copy mail if needed */
+      if ($name == "gofaxAccount"){
+        if (isset($this->by_object['mailAccount']) && $this->by_object['mailAccount']->is_account){
+          $obj->mail= $this->by_object['mailAccount']->mail;
+        }
+      }
+
       /* Don't touch base object */
       if ($name != 'user'){
         $obj->parent= &$this;
         $obj->uid= $baseobject->uid;
         $obj->sn= $baseobject->uid;
         $obj->givenName= $baseobject->uid;
-        $this->by_object[$name]= $obj;
       }
 
+      /* Store changes */
+      $this->by_object[$name]= $obj;
+
       /* Update parent in base object */
       $this->by_object['user']->parent= &$this;
     }
@@ -66,8 +84,14 @@ class usertabs extends tabs
     /* Check for new 'dn', in order to propagate the
        'dn' to all plugins */
     $baseobject= $this->by_object['user'];
+    if ($baseobject->personalTitle == ""){
+      $pt= "";
+    } else {
+      $pt= $baseobject->personalTitle." ";
+    }
+
     if ($this->dn == 'new'){
-      $baseobject->cn= $baseobject->givenName." ".$baseobject->sn;
+      $baseobject->cn= $tp.$baseobject->givenName." ".$baseobject->sn;
       $this->by_object['user']= $baseobject;
       if (isset($this->config->current['DNMODE']) && $this->config->current['DNMODE'] == "uid"){
         $this->dn= 'uid='.$baseobject->uid.','.get_people_ou().$baseobject->base;
@@ -81,14 +105,27 @@ class usertabs extends tabs
       if (isset($this->config->current['DNMODE']) && $this->config->current['DNMODE'] == "uid"){
         $new_dn= 'uid='.$baseobject->uid.','.get_people_ou().$baseobject->base;
       } else {
-        $new_dn= "cn=".$baseobject->givenName." ".$baseobject->sn.','.
+        $new_dn= "cn=".$pt.$baseobject->givenName." ".$baseobject->sn.','.
           get_people_ou().$baseobject->base;
       }
-
+      
+      /* Hickert: 31.08.2005 
+       * fixed error = Trying to overwrite cn=***  which already exists.
+       * If you changed one of the "Name" / "Givenname" attributes to lower or upper case, like "test" to "Test", (in DNMODE=cn)
+       *  the old_dn and new dn were different. cn=test ... cn=Test ...
+       * The following code decided to move the entry from old_dn to new_dn. (Because they differ)
+       * But the ldap attribute cn is not case sensitive and the function plugin::move() quits with 
+       *  an error, because source and destination dn are both the same (for ldap, but not for php).
+       * This fix allow you to change the givenname or name attributes.
+       */
+      if(strtolower($this->dn)==strtolower($new_dn)){
+        $this->dn=$new_dn;
+      }
+  
       if ($this->dn != $new_dn){
 
         /* Write entry on new 'dn' */
-        $baseobject->cn= $baseobject->givenName." ".$baseobject->sn;
+        $baseobject->cn= $pt.$baseobject->givenName." ".$baseobject->sn;
         $baseobject->move($this->dn, $new_dn);
         $this->by_object['user']= $baseobject;
 
@@ -109,6 +146,16 @@ class usertabs extends tabs
       $this->by_object[$key]->is_template= TRUE;
     }
   }
+  
+  function saveCopyDialog()
+  {
+    tabs::saveCopyDialog();
+    $baseobject= $this->by_object['user'];
+    $uid = $baseobject->uid;
+    foreach($this->by_object as  $name => $obj){
+      $this->by_object[$name]->uid = $uid;
+    }
+  }
 
 }