Code

Removed jpgraph | qpl license doesn't match our needs
[gosa.git] / gosa-core / include / class_CopyPasteHandler.inc
index f0cb85d7db7e1ea8d8124508195231ee0ac515ac..62f3e3702e01ee030248ed034f9f0735e35a1ff7 100644 (file)
@@ -156,7 +156,7 @@ class CopyPasteHandler {
 
     /* Check if given dn is valid and ldap search was succesfull */ 
     if(!$res){
-      $msg= sprintf(_("Copy and paste failed!")."<br><br>"._("Error").": "._("'%s' is no vaild LDAP object"), bold(LDAP::fix($dn)));
+      $msg= sprintf(_("Copy and paste failed!")."<br><br>"._("Error").": "._("'%s' is no valid LDAP object"), bold(LDAP::fix($dn)));
       msg_dialog::display(_("Internal error"), $msg, ERROR_DIALOG);
       new log("copy","all/all",$dn,array(), $msg);
       return(FALSE);
@@ -417,7 +417,8 @@ class CopyPasteHandler {
         $smarty->assign("AttributesToFix",$this->generateAttributesToFix());
         $smarty->assign("SubDialog",$this->current['object']->SubDialog);
         $smarty->assign("objectDN",$this->current['source_data']['dn']);
-        $smarty->assign("message", sprintf(_("This object will be pasted: %s"), "<br><br>".bold($this->current['source_data']['dn'])));
+        $smarty->assign("message", sprintf(_("This object will be pasted: %s"), "<br><br>".
+                    bold(@LDAP::fix($this->current['source_data']['dn']))));
         return($smarty->fetch(get_template_path("copyPasteDialog.tpl",FALSE)));
       }
     }
@@ -516,7 +517,7 @@ class CopyPasteHandler {
 
     // Migrate objectgroups
     $ogroups = get_sub_list("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter(LDAP::fix($src_dn))."))",
-            "ogroups", array(get_ou("ogroupRDN")),$this->config->current['BASE'],array("dn"), GL_SUBSEARCH | GL_NO_ACL_CHECK);
+            "ogroups", array(get_ou("group", "ogroupRDN")),$this->config->current['BASE'],array("dn"), GL_SUBSEARCH | GL_NO_ACL_CHECK);
 
     // Walk through all objectGroups
     foreach($ogroups as $ogroup){
@@ -526,7 +527,8 @@ class CopyPasteHandler {
     }
 
     // Update roles 
-    $roles = get_sub_list("(&(objectClass=organizationalRole)(roleOccupant=".LDAP::prepare4filter(LDAP::fix($src_dn))."))","roles", array(get_ou("roleRDN")),$this->config->current['BASE'],array("dn"), GL_SUBSEARCH | GL_NO_ACL_CHECK);
+    $roles = get_sub_list("(&(objectClass=organizationalRole)(roleOccupant=".LDAP::prepare4filter(LDAP::fix($src_dn))."))",
+            "roles", array(get_ou("roleGeneric", "roleRDN")),$this->config->current['BASE'],array("dn"), GL_SUBSEARCH | GL_NO_ACL_CHECK);
 
     // Walk through all roles
     foreach($roles as $role){
@@ -534,6 +536,29 @@ class CopyPasteHandler {
         $role->roleOccupant[] = $dst_dn;
         $role->save();
     }
+
+    // Update groups
+    if(isset($this->current['object']->uid) && !empty($this->current['object']->uid)){
+
+        $ldap = $this->config->get_ldap_link();
+        $ldap->cd($this->config->current['BASE']);
+        $ldap->cat($src_dn);
+        $attrs = $ldap->fetch();
+        if(isset($attrs['uid'][0])){
+            $suid = $attrs['uid'][0];
+
+            $uid = $this->current['object']->uid;
+            $groups = get_sub_list("(&(objectClass=posixGroup)(memberUid={$suid}))",
+                    "groups",array(get_ou("core", "groupRDN")),$this->config->current['BASE'],array("dn"), GL_SUBSEARCH | GL_NO_ACL_CHECK);
+
+            // Walk through all POSIX groups
+            foreach($groups as $group){
+                $o_group= new group($this->config,$group['dn']);
+                $o_group->addUser($uid);
+                $o_group->save();
+            }
+        }
+    }
   }
 
   /* returns the paste icon for headpages */