index f58df50bc33d19a46ec9aa802fbeb7934a3d6f22..31115eced96878a3e78414b3add8fb5d3c49ebd8 100644 (file)
$this->update_acls($old_dn,$new_dn);
}
$this->update_acls($old_dn,$new_dn);
}
- /* Get all objectGroups defined in this database.
- and check if there is an entry matching the source dn,
- if this is the case, then update this objectgroup to use the new dn.
- */
- $ogroups = get_sub_list("(&(objectClass=gosaGroupOfNames)(member=*))","ogroups",
- array(get_ou("ogroupRDN")),$this->config->current['BASE'],array("member"),
- GL_SUBSEARCH | GL_NO_ACL_CHECK) ;
+ // Migrate objectgroups if needed
+ $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 and check if there are
- members matching the source dn
- */
+ // Walk through all objectGroups
foreach($ogroups as $ogroup){
foreach($ogroups as $ogroup){
- if(isset($ogroup['member'])){
+ // Migrate old to new dn
+ $o_ogroup= new ogroup($this->config,$ogroup['dn']);
+ unset($o_ogroup->member[$src_dn]);
+ $o_ogroup->member[$dst_dn]= $dst_dn;
+
+ // Save object group
+ $o_ogroup->save();
+ }
- /* Reset class object, this will be initialized with class_ogroup on demand
- */
- $o_ogroup = NULL;
- for($i = 0 ; $i < $ogroup['member']['count'] ; $i ++){
- $c_mem = $ogroup['member'][$i];
- if(preg_match("/".preg_quote($src_dn, '/')."$/i",$c_mem)){
- $d_mem = preg_replace("/".preg_quote($src_dn, '/')."$/i",$dst_dn,$ogroup['member'][$i]);
- if($o_ogroup == NULL){
- $o_ogroup = new ogroup($this->config,$ogroup['dn']);
- }
- unset($o_ogroup->member[$c_mem]);
- $o_ogroup->member[$d_mem]= $d_mem;
- }
- }
-
- /* Save object group if there were changes made on the membership */
- if($o_ogroup != NULL){
- $o_ogroup->save();
- }
- }
+ // Migrate rfc groups if needed
+ $groups = get_sub_list("(&(objectClass=posixGroups)(member=".LDAP::prepare4filter(LDAP::fix($src_dn))."))","groups", array(get_ou("groupRDN")),$this->config->current['BASE'],array("dn"), GL_SUBSEARCH | GL_NO_ACL_CHECK);
+
+ // Walk through all POSIX groups
+ foreach($groups as $group){
+ // Migrate old to new dn
+ $o_group= new group($this->config,$group['dn']);
+ unset($o_group->member[$src_dn]);
+ $o_group->member[$dst_dn]= $dst_dn;
+
+ // Save object group
+ $o_group->save();
}
}
- /* Update roles to use the new entry dn
- */
- $ldap = $this->config->get_ldap_link();
- $ldap->cd($this->config->current['BASE']);
- $ldap->search("(&(objectClass=organizationalRole)".
- "(roleOccupant=".LDAP::prepare4filter($src_dn)."))");
- while($attrs = $ldap->fetch()){
- $role = new roleGeneric($this->config,$attrs['dn']);
- $key = array_search($src_dn,$role->roleOccupant);
+ /* Update roles to use the new entry dn */
+ $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']);
+ $key= array_search($src_dn, $role->roleOccupant);
if($key !== FALSE){
$role->roleOccupant[$key] = $dst_dn;
$role->save();
if($key !== FALSE){
$role->roleOccupant[$key] = $dst_dn;
$role->save();
There will also be some errors psoted, if the configuration failed */
function snapshotEnabled()
{
There will also be some errors psoted, if the configuration failed */
function snapshotEnabled()
{
- $config = $this->config;
- if($config->get_cfg_value("enableSnapshots") == "true"){
-
- /* Check if the snapshot_base is defined */
- if ($config->get_cfg_value("snapshotBase") == ""){
-
- /* Send message if not done already */
- if(!session::is_set("snapshotFailMessageSend")){
- session::set("snapshotFailMessageSend",TRUE);
- msg_dialog::display(_("Configuration error"),
- sprintf(_("The snapshot functionality is enabled, but the required variable '%s' is not set."),
- "snapshotBase"), ERROR_DIALOG);
- }
- return(FALSE);
- }
-
- /* Check if the snapshot_base is defined */
- if (!is_callable("gzcompress")){
-
- /* Send message if not done already */
- if(!session::is_set("snapshotFailMessageSend")){
- session::set("snapshotFailMessageSend",TRUE);
- msg_dialog::display(_("Configuration error"),
- sprintf(_("The snapshot functionality is enabled, but the required compression module is missing. Please install '%s'."),"php5-zip / php5-gzip"), ERROR_DIALOG);
- }
- return(FALSE);
- }
-
- /* check if there are special server configurations for snapshots */
- if ($config->get_cfg_value("snapshotURI") != ""){
-
- /* check if all required vars are available to create a new ldap connection */
- $missing = "";
- foreach(array("snapshotURI","snapshotAdminDn","snapshotAdminPassword","snapshotBase") as $var){
- if($config->get_cfg_value($var) == ""){
- $missing .= $var." ";
-
- /* Send message if not done already */
- if(!session::is_set("snapshotFailMessageSend")){
- session::set("snapshotFailMessageSend",TRUE);
- msg_dialog::display(_("Configuration error"),
- sprintf(_("The snapshot functionality is enabled, but the required variable '%s' is not set."),
- $missing), ERROR_DIALOG);
- }
- return(FALSE);
- }
- }
- }
- return(TRUE);
- }
- return(FALSE);
+ return $this->config->snapshotEnabled();
}
}
/* Check permissions for each category, if there is at least one category which
support read or paste permissions for the given base, then display the specific actions.
*/
/* Check permissions for each category, if there is at least one category which
support read or paste permissions for the given base, then display the specific actions.
*/
- $readable = $pasteable = TRUE;
+ $readable = $pasteable = false;
foreach($category as $cat){
foreach($category as $cat){
- $readable |= $ui->get_category_permissions($base,$cat);
- $pasteable|= $ui->is_pasteable($base,$cat);
+ $readable= $readable || preg_match('/r/', $ui->get_category_permissions($base, $cat));
+ $pasteable= $pasteable || $ui->is_pasteable($base, $cat) == 1;
}
if(($cut || $copy) && isset($this->CopyPasteHandler) && is_object($this->CopyPasteHandler)){
}
if(($cut || $copy) && isset($this->CopyPasteHandler) && is_object($this->CopyPasteHandler)){