X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_plugin.inc;h=58cec70eea89b1dc07b20aae2db6382120a67c79;hb=cf52f2875e8d24c2985898e38bfe03acf8900e44;hp=2966e8d44f93e1a1bd72b4122eac6ab58de2a44f;hpb=0f0cdd3a98e4a9c1fb8c3dde2d2db000f28b44c5;p=gosa.git diff --git a/include/class_plugin.inc b/include/class_plugin.inc index 2966e8d44..58cec70ee 100644 --- a/include/class_plugin.inc +++ b/include/class_plugin.inc @@ -118,6 +118,14 @@ class plugin /* This can be set to render the tabulators in another stylesheet */ var $pl_notify= FALSE; + + /* This variable indicates that this class can handle multiple dns at once. */ + var $multiple_support = FALSE; + + /* This aviable indicates, that we are currently in multiple edit handle */ + var $multiple_support_active = FALSE; + var $selected_edit_values = array(); + /*! \brief plugin constructor If 'dn' is set, the node loads the given 'dn' from LDAP @@ -141,10 +149,10 @@ class plugin /* Get LDAP descriptor */ $ldap= $this->config->get_ldap_link(); - if ($dn != NULL){ + if ($dn !== NULL){ /* Load data to 'attrs' and save 'dn' */ - if ($parent != NULL){ + if ($parent !== NULL){ $this->attrs= $parent->attrs; } else { $ldap->cat ($dn); @@ -175,7 +183,6 @@ class plugin } /* Is Account? */ - error_reporting(0); $found= TRUE; foreach ($this->objectclasses as $obj){ if (preg_match('/top/i', $obj)){ @@ -186,7 +193,6 @@ class plugin break; } } - error_reporting(E_ALL | E_STRICT); if ($found){ $this->is_account= TRUE; @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, @@ -243,21 +249,16 @@ class plugin /* Get current objectClasses in order to add the required ones */ $ldap->cat($this->dn); $tmp= $ldap->fetch (); + $oc= array(); if (isset($tmp['objectClass'])){ $oc= $tmp['objectClass']; - } else { - $oc= array("count" => 0); + unset($oc['count']); } /* Remove objectClasses from entry */ $ldap->cd($this->dn); $this->attrs= array(); - $this->attrs['objectClass']= array(); - for ($i= 0; $i<$oc["count"]; $i++){ - if (!in_array_ics($oc[$i], $this->objectclasses)){ - $this->attrs['objectClass'][]= $oc[$i]; - } - } + $this->attrs['objectClass']= array_remove_entries($this->objectclasses,$oc); /* Unset attributes from entry */ foreach ($this->attributes as $val){ @@ -279,6 +280,16 @@ class plugin /* Save data to object */ function save_object() { + if($this->multiple_support_active){ + foreach($this->attributes as $attr){ + if(isset($_POST["use_".$attr])){ + $this->selected_edit_values[$attr] = TRUE; + }else{ + $this->selected_edit_values[$attr] = FALSE; + } + } + } + /* Save values to object */ foreach ($this->attributes as $val){ if ($this->acl_is_writeable($val) && isset ($_POST["$val"])){ @@ -324,22 +335,18 @@ class plugin $ldap->cat($this->dn); $tmp= $ldap->fetch (); - + + $oc= array(); if (isset($tmp['objectClass'])){ $oc= $tmp["objectClass"]; $this->is_new= FALSE; + unset($oc['count']); } else { - $oc= array("count" => 0); $this->is_new= TRUE; } /* Load (minimum) attributes, add missing ones */ - $this->attrs['objectClass']= $this->objectclasses; - for ($i= 0; $i<$oc["count"]; $i++){ - if (!in_array_ics($oc[$i], $this->objectclasses)){ - $this->attrs['objectClass'][]= $oc[$i]; - } - } + $this->attrs['objectClass']= gosa_array_merge($oc,$this->objectclasses); /* Copy standard attributes */ foreach ($this->attributes as $val){ @@ -411,15 +418,12 @@ class plugin $message= array(); /* Skip if we've no config object */ - if (!isset($this->config)){ + if (!isset($this->config) || !is_object($this->config)){ return $message; } /* Find hooks entries for this class */ - $command= search_config($this->config->data['MENU'], get_class($this), "CHECK"); - if ($command == "" && isset($this->config->data['TABS'])){ - $command= search_config($this->config->data['TABS'], get_class($this), "CHECK"); - } + $command= $this->config->search(get_class($this), "CHECK", array('menu', 'tabs')); if ($command != ""){ @@ -580,10 +584,7 @@ class plugin function postcreate($add_attrs= array()) { /* Find postcreate entries for this class */ - $command= search_config($this->config->data['MENU'], get_class($this), "POSTCREATE"); - if ($command == "" && isset($this->config->data['TABS'])){ - $command= search_config($this->config->data['TABS'], get_class($this), "POSTCREATE"); - } + $command= $this->config->search(get_class($this), "POSTCREATE",array('menu', 'tabs')); if ($command != ""){ @@ -615,10 +616,7 @@ class plugin function postmodify($add_attrs= array()) { /* Find postcreate entries for this class */ - $command= search_config($this->config->data['MENU'], get_class($this), "POSTMODIFY"); - if ($command == "" && isset($this->config->data['TABS'])){ - $command= search_config($this->config->data['TABS'], get_class($this), "POSTMODIFY"); - } + $command= $this->config->search(get_class($this), "POSTMODIFY",array('menu','tabs')); if ($command != ""){ @@ -650,11 +648,7 @@ class plugin function postremove($add_attrs= array()) { /* Find postremove entries for this class */ - $command= search_config($this->config->data['MENU'], get_class($this), "POSTREMOVE"); - if ($command == "" && isset($this->config->data['TABS'])){ - $command= search_config($this->config->data['TABS'], get_class($this), "POSTREMOVE"); - } - + $command= $this->config->search(get_class($this), "POSTREMOVE",array('menu','tabs')); if ($command != ""){ /* Additional attributes */ @@ -769,7 +763,6 @@ class plugin } $r=ldap_bind($ds,$this->config->current['ADMIN'], $this->config->current['PASSWORD']); - error_reporting (0); $sr=ldap_read($ds, @LDAP::fix($src_dn), "objectClass=*"); /* Fill data from LDAP */ @@ -778,7 +771,7 @@ class plugin $ei=ldap_first_entry($ds, $sr); if ($ei) { foreach($attrs as $attr => $val){ - if ($info = ldap_get_values_len($ds, $ei, $attr)){ + if ($info = @ldap_get_values_len($ds, $ei, $attr)){ for ($i= 0; $i<$info['count']; $i++){ if ($info['count'] == 1){ $new[$attr]= $info[$i]; @@ -792,7 +785,6 @@ class plugin } /* close conncetion */ - error_reporting (E_ALL | E_STRICT); ldap_unbind($ds); /* Adapt naming attribute */ @@ -1286,7 +1278,7 @@ class plugin $snapldapbase = $cfg['SNAPSHOT_BASE']; $ldap_to = new LDAP($user,$password, $server); $ldap_to->cd ($snapldapbase); - show_ldap_error($ldap->get_error(), sprintf(_("Method get deleted snapshots with dn '%s' failed."),$this->dn)); + show_ldap_error($ldap_to->get_error(), sprintf(_("Method get deleted snapshots with dn '%s' failed."),$this->dn)); }else{ $ldap_to = $ldap; } @@ -1435,7 +1427,7 @@ class plugin $this->snapDialog = NULL; } - if($this->snapDialog){ + if(is_object($this->snapDialog )){ $this->snapDialog->save_object(); return($this->snapDialog->execute()); } @@ -1647,6 +1639,25 @@ class plugin } } } + + + function get_multi_edit_values() + { + $ret = array(); + foreach($this->selected_edit_values as $attr => $active){ + if($active){ + $ret[$attr] = $this->$attr; + } + } + return($ret); + } + + function set_multi_edit_value() + { + + } + } + // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>