X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_plugin.inc;h=31d5b4bafd80e2c155c2852626394c08e60b80f1;hb=06cc53394cf695b3bc663073e526d7d94e4bb2d6;hp=f038fbf56d858f51b120db60966f3be939cf08e9;hpb=645f88d4feb970b4bb1cd54e7e5a26b5f7966ce5;p=gosa.git diff --git a/gosa-core/include/class_plugin.inc b/gosa-core/include/class_plugin.inc index f038fbf56..31d5b4baf 100644 --- a/gosa-core/include/class_plugin.inc +++ b/gosa-core/include/class_plugin.inc @@ -180,7 +180,7 @@ class plugin /* Set the template flag according to the existence of objectClass gosaUserTemplate */ if (isset($this->attrs['objectClass'])){ - if (in_array ("gosaUserTemplate", $this->attrs['objectClass'])){ + if (in_array_ics ("gosaUserTemplate", $this->attrs['objectClass'])){ $this->is_template= TRUE; @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "found", "Template check"); @@ -273,7 +273,7 @@ class plugin /* Remove objectClasses from entry */ $ldap->cd($this->dn); $this->attrs= array(); - $this->attrs['objectClass']= array_remove_entries($this->objectclasses,$oc); + $this->attrs['objectClass']= array_remove_entries_ics($this->objectclasses,$oc); /* Unset attributes from entry */ foreach ($this->attributes as $val){ @@ -636,8 +636,11 @@ class plugin if (check_command($command)){ @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Execute"); - - exec($command); + exec($command,$arr); + foreach($arr as $str){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, + $command, "Result: ".$str); + } } else { $message= msgPool::cmdnotfound("POSTCREATE", get_class($this)); msg_dialog::display(_("Error"), $message, ERROR_DIALOG); @@ -674,7 +677,11 @@ class plugin if (check_command($command)){ @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__,$command, "Execute"); - exec($command); + exec($command,$arr); + foreach($arr as $str){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, + $command, "Result: ".$str); + } } else { $message= msgPool::cmdnotfound("POSTMODIFY", get_class($this)); msg_dialog::display(_("Error"), $message, ERROR_DIALOG); @@ -712,7 +719,11 @@ class plugin @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Execute"); - exec($command); + exec($command,$arr); + foreach($arr as $str){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, + $command, "Result: ".$str); + } } else { $message= msgPool::cmdnotfound("POSTREMOVE", get_class($this)); msg_dialog::display(_("Error"), $message, ERROR_DIALOG); @@ -898,6 +909,9 @@ class plugin /* Try to move the source entry to the destination position */ $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace("/^[^,]+,/","",$dst_dn)); + if (!$ldap->rename_dn($src_dn,$dst_dn)){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $src_dn, "", get_class())); return(FALSE); @@ -1204,24 +1218,24 @@ class plugin } /* Get configuration from gosa.conf */ - $tmp = $this->config->current; + $config = $this->config; /* Create lokal ldap connection */ $ldap= $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); /* check if there are special server configurations for snapshots */ - if(!isset($tmp['SNAPSHOT_SERVER'])){ + if($config->get_cfg_value("snapshot_server") == ""){ /* Source and destination server are both the same, just copy source to dest obj */ $ldap_to = $ldap; $snapldapbase = $this->config->current['BASE']; }else{ - $server = $tmp['SNAPSHOT_SERVER']; - $user = $tmp['SNAPSHOT_USER']; - $password = $tmp['SNAPSHOT_PASSWORD']; - $snapldapbase = $tmp['SNAPSHOT_BASE']; + $server = $config->get_cfg_value("snapshot_server"); + $user = $config->get_cfg_value("snapshot_user"); + $password = $config->get_cfg_value("snapshot_password"); + $snapldapbase = $config->get_cfg_value("snapshot_base"); $ldap_to = new ldapMultiplexer(new LDAP($user,$password, $server)); $ldap_to -> cd($snapldapbase); @@ -1240,7 +1254,7 @@ class plugin /* Collect some infos */ $base = $this->config->current['BASE']; - $snap_base = $tmp['SNAPSHOT_BASE']; + $snap_base = $config->get_cfg_value("snapshot_base"); $base_of_object = preg_replace ('/^[^,]+,/i', '', $this->dn); $new_base = preg_replace("/".normalizePreg($base)."$/","",$base_of_object).$snap_base; @@ -1302,31 +1316,28 @@ class plugin There will also be some errors psoted, if the configuration failed */ function snapshotEnabled() { - $tmp = $this->config->current; - if(isset($tmp['ENABLE_SNAPSHOT'])){ - if (preg_match("/^true$/i", $tmp['ENABLE_SNAPSHOT']) || preg_match("/yes/i", $tmp['ENABLE_SNAPSHOT'])){ - - /* Check if the snapshot_base is defined */ - if(!isset($tmp['SNAPSHOT_BASE'])){ - msg_dialog::display(_("Configuration error"), sprintf(_("The snapshot functionality is enabled, but the required variable '%s' is not set."),"SNAPSHOT_BASE"), ERROR_DIALOG); - return(FALSE); - } - - /* check if there are special server configurations for snapshots */ - if(isset($tmp['SNAPSHOT_SERVER'])){ - - /* check if all required vars are available to create a new ldap connection */ - $missing = ""; - foreach(array("SNAPSHOT_SERVER","SNAPSHOT_USER","SNAPSHOT_PASSWORD","SNAPSHOT_BASE") as $var){ - if(!isset($tmp[$var])){ - $missing .= $var." "; - 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); - } + $config = $this->config; + if($config->get_cfg_value("enable_snapshot") == "true"){ + /* Check if the snapshot_base is defined */ + if ($config->get_cfg_value("snapshot_base") == ""){ + msg_dialog::display(_("Configuration error"), sprintf(_("The snapshot functionality is enabled, but the required variable '%s' is not set."),"SNAPSHOT_BASE"), ERROR_DIALOG); + return(FALSE); + } + + /* check if there are special server configurations for snapshots */ + if ($config->get_cfg_value("snapshot_server") != ""){ + + /* check if all required vars are available to create a new ldap connection */ + $missing = ""; + foreach(array("snapshot_server","snapshot_user","snapshot_password","snapshot_base") as $var){ + if($config->get_cfg_value($var) == ""){ + $missing .= $var." "; + 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); } @@ -1503,9 +1514,12 @@ class plugin } - function showSnapshotDialog($base,$baseSuffixe) + function showSnapshotDialog($base,$baseSuffixe,&$parent) { $once = true; + $ui = get_userinfo(); + $this->parent = $parent; + foreach($_POST as $name => $value){ /* Create a new snapshot, display a dialog */ @@ -1513,26 +1527,40 @@ class plugin $once = false; $entry = preg_replace("/^CreateSnapShotDialog_/","",$name); $entry = base64_decode(preg_replace("/_[xy]$/","",$entry)); - $this->snapDialog = new SnapShotDialog($this->config,$entry,$this); - } + if(!empty($entry) && $ui->allow_snapshot_create($entry,$this->parent->acl_module)){ + $this->snapDialog = new SnapShotDialog($this->config,$entry,$this); + }else{ + msg_dialog::display(_("Permission"),sprintf(_("You are not allowed to create a snapshot for %s."),$entry),ERROR_DIALOG); + } + } + /* Restore a snapshot, display a dialog with all snapshots of the current object */ if(preg_match("/^RestoreSnapShotDialog_/",$name) && $once){ $once = false; $entry = preg_replace("/^RestoreSnapShotDialog_/","",$name); $entry = base64_decode(preg_replace("/_[xy]$/","",$entry)); - $this->snapDialog = new SnapShotDialog($this->config,$entry,$this); - $this->snapDialog->display_restore_dialog = true; + if(!empty($entry) && $ui->allow_snapshot_restore($entry,$this->parent->acl_module)){ + $this->snapDialog = new SnapShotDialog($this->config,$entry,$this); + $this->snapDialog->display_restore_dialog = true; + }else{ + msg_dialog::display(_("Permission"),sprintf(_("You are not allowed to restore a snapshot for %s."),$entry),ERROR_DIALOG); + } } /* Restore one of the already deleted objects */ if(((isset($_POST['menu_action']) && $_POST['menu_action'] == "RestoreDeletedSnapShot") || preg_match("/^RestoreDeletedSnapShot_/",$name)) && $once){ $once = false; - $this->snapDialog = new SnapShotDialog($this->config,"",$this); - $this->snapDialog->set_snapshot_bases($baseSuffixe); - $this->snapDialog->display_restore_dialog = true; - $this->snapDialog->display_all_removed_objects = true; + + if($ui->allow_snapshot_restore($base,$this->parent->acl_module)){ + $this->snapDialog = new SnapShotDialog($this->config,"",$this); + $this->snapDialog->set_snapshot_bases($baseSuffixe); + $this->snapDialog->display_restore_dialog = true; + $this->snapDialog->display_all_removed_objects = true; + }else{ + msg_dialog::display(_("Permission"),sprintf(_("You are not allowed to restore a snapshot for %s."),$base),ERROR_DIALOG); + } } /* Restore selected snapshot */ @@ -1540,9 +1568,11 @@ class plugin $once = false; $entry = preg_replace("/^RestoreSnapShot_/","",$name); $entry = base64_decode(trim(preg_replace("/_[xy]$/","",$entry))); - if(!empty($entry)){ + if(!empty($entry) && $ui->allow_snapshot_restore($entry,$this->parent->acl_module)){ $this->restore_snapshot($entry); $this->snapDialog = NULL; + }else{ + msg_dialog::display(_("Permission"),sprintf(_("You are not allowed to restore a snapshot for %s."),$entry),ERROR_DIALOG); } } } @@ -1675,6 +1705,8 @@ class plugin /* Add current base */ if(isset($this->base) && isset($this->config->idepartments[$this->base])){ $deps[$this->base] = $this->config->idepartments[$this->base]; + }elseif(strtolower($this->dn) == strtolower($this->config->current['BASE'])){ + }else{ trigger_error("Cannot return list of departments, no default base found in class ".get_class($this).". ".$this->base); } @@ -1956,18 +1988,23 @@ class plugin { $str= ""; $ui = get_userinfo(); - if($this->snapshotEnabled() && $ui->allow_snapshot_create($base,$category)){ + if($this->snapshotEnabled()){ + if ($ui->allow_snapshot_restore($base,$category)){ - if(count($this->Available_SnapsShots($base))){ - $str.= " "; - } else { - $str = " "; + if(count($this->Available_SnapsShots($base))){ + $str.= " "; + } else { + $str = " "; + } + } + if($ui->allow_snapshot_create($base,$category)){ + $str.= " "; + }else{ + $str = "  "; } - - $str.= " "; } return($str);