X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_plugin.inc;h=ae5193b0e49eac04f7f8fecfd09ce8a876f9aa8b;hb=0a68aa232f4d9317a90c34912577d2ef7b3c1440;hp=aaf24622947957b5ee6e2fdd1d76a6ed1334a3d8;hpb=ba15f3571a99a0972c7deaeb914ec38852406a8c;p=gosa.git diff --git a/gosa-core/include/class_plugin.inc b/gosa-core/include/class_plugin.inc index aaf246229..ae5193b0e 100644 --- a/gosa-core/include/class_plugin.inc +++ b/gosa-core/include/class_plugin.inc @@ -263,7 +263,9 @@ class plugin /* Reset Lock message POST/GET check array, to prevent perg_match errors*/ session::set('LOCK_VARS_TO_USE',array()); - session::set('LOCK_VARS_USED',array()); + session::set('LOCK_VARS_USED_GET',array()); + session::set('LOCK_VARS_USED_POST',array()); + session::set('LOCK_VARS_USED_REQUEST',array()); } /*! \brief execute plugin @@ -744,6 +746,39 @@ class plugin } } + + /* Create unique DN */ + function create_unique_dn2($data, $base) + { + $ldap= $this->config->get_ldap_link(); + $base= preg_replace("/^,*/", "", $base); + + /* Try to use plain entry first */ + $dn= "$data,$base"; + $attribute= preg_replace('/=.*$/', '', $data); + $ldap->cat ($dn, array('dn')); + if (!$ldap->fetch()){ + return ($dn); + } + + /* Look for additional attributes */ + foreach ($this->attributes as $attr){ + if ($attr == $attribute || $this->$attr == ""){ + continue; + } + + $dn= "$data+$attr=".$this->$attr.",$base"; + $ldap->cat ($dn, array('dn')); + if (!$ldap->fetch()){ + return ($dn); + } + } + + /* None found */ + return ("none"); + } + + /* Create unique DN */ function create_unique_dn($attribute, $base) { @@ -774,6 +809,7 @@ class plugin return ("none"); } + function rebind($ldap, $referral) { $credentials= LDAP::get_credentials($referral, $this->config->current['REFERRAL']); @@ -940,7 +976,7 @@ class plugin array("dn","objectClass"),GL_SUBSEARCH | GL_NO_ACL_CHECK); foreach($leaf_objs as $obj){ $new_dn = $obj['dn']; - $old_dn = preg_replace("/".preg_quote($dst_dn, '/')."$/i",$src_dn,$new_dn); + $old_dn = preg_replace("/".preg_quote(LDAP::convert($dst_dn), '/')."$/i",$src_dn,LDAP::convert($new_dn)); $this->update_acls($old_dn,$new_dn); } @@ -1319,57 +1355,7 @@ class plugin 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(); } @@ -1856,9 +1842,10 @@ class plugin /* Copy needed attributes */ foreach ($this->attributes as $val){ $found= array_key_ics($val, $this->multi_attrs); + if ($found != ""){ - if(isset($this->multi_attrs["$found"][0])){ - $this->$val= $this->multi_attrs["$found"][0]; + if(isset($this->multi_attrs["$val"][0])){ + $this->$val= $this->multi_attrs["$val"][0]; } } } @@ -1910,7 +1897,9 @@ class plugin /* Reset Lock message POST/GET check array, to prevent perg_match errors*/ session::set('LOCK_VARS_TO_USE',array()); - session::set('LOCK_VARS_USED',array()); + session::set('LOCK_VARS_USED_GET',array()); + session::set('LOCK_VARS_USED_POST',array()); + session::set('LOCK_VARS_USED_REQUEST',array()); return("Multiple edit is currently not implemented for this plugin."); } @@ -2068,10 +2057,10 @@ class plugin /* 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){ - $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)){