From 8f8ae6708e2a44f925af5affd2e33f2734de0a67 Mon Sep 17 00:00:00 2001 From: hickert Date: Tue, 27 Apr 2010 10:04:41 +0000 Subject: [PATCH] Updated copy&paste to copy references too git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@17877 594d385d-05f5-0310-b6e9-bd551577e9d8 --- gosa-core/include/class_CopyPasteHandler.inc | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gosa-core/include/class_CopyPasteHandler.inc b/gosa-core/include/class_CopyPasteHandler.inc index 2a9bea409..868081204 100644 --- a/gosa-core/include/class_CopyPasteHandler.inc +++ b/gosa-core/include/class_CopyPasteHandler.inc @@ -352,6 +352,7 @@ class CopyPasteHandler { $this->lastdn = $this->current['object']->dn; $this->current= $this->_update_vars($this->current); $this->current['object']->save(); + $this->handleReferences(); $this->current = FALSE; } } @@ -368,6 +369,7 @@ class CopyPasteHandler { /* Load next queue entry */ if(!count($msgs)){ $this->current['object']->save(); + $this->handleReferences(); $this->lastdn = $this->current['object']->dn; $this->current = FALSE; }else{ @@ -504,6 +506,33 @@ class CopyPasteHandler { } + function handleReferences() + { + $dst_dn = $this->current['object']->dn; + $src_dn = $this->current['dn']; + + // 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); + + // Walk through all objectGroups + foreach($ogroups as $ogroup){ + $o_ogroup= new ogroup($this->config,$ogroup['dn']); + $o_ogroup->member[$dst_dn]= $dst_dn; + $o_ogroup->save(); + } + + // 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); + + // Walk through all roles + foreach($roles as $role){ + $role = new roleGeneric($this->config,$role['dn']); + $role->roleOccupant[] = $dst_dn; + $role->save(); + } + } + /* returns the paste icon for headpages */ function generatePasteIcon() { -- 2.30.2