X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_plugin.inc;h=7ca37d200c20ae45d5b62c5500941b94cc79d90d;hb=960f4dd60a4fbf67e15d5b2f5af55d024f94a330;hp=b33e609e29fa9432d76d589c2661ca09ed6c9f7f;hpb=951ff52238278141c5d423bda877eea92c86ce32;p=gosa.git
diff --git a/gosa-core/include/class_plugin.inc b/gosa-core/include/class_plugin.inc
index b33e609e2..7ca37d200 100644
--- a/gosa-core/include/class_plugin.inc
+++ b/gosa-core/include/class_plugin.inc
@@ -111,10 +111,6 @@ class plugin
var $acl_base= "";
var $acl_category= "";
- /* Plugin identifier */
- var $plHeadline= "";
- var $plDescription= "";
-
/* This can be set to render the tabulators in another stylesheet */
var $pl_notify= FALSE;
@@ -318,9 +314,6 @@ class plugin
$data = "";
}
$this->$val= $data;
- //echo "".$val."
";
- }else{
- //echo "".$val."
";
}
}
}
@@ -364,6 +357,8 @@ class plugin
}
}
+ /* Handle tagging */
+ $this->tag_attrs(&$this->attrs);
}
@@ -623,7 +618,7 @@ class plugin
exec($command);
} else {
$message= sprintf(_("Command '%s', specified as POSTCREATE for plugin '%s' doesn't seem to exist."), $command, get_class($this));
- print_red ($message);
+ msg_dialog::display(_("Error"), $message, ERROR_DIALOG);
}
}
}
@@ -655,7 +650,7 @@ class plugin
exec($command);
} else {
$message= sprintf(_("Command '%s', specified as POSTMODIFY for plugin '%s' doesn't seem to exist."), $command, get_class($this));
- print_red ($message);
+ msg_dialog::display(_("Error"), $message, ERROR_DIALOG);
}
}
}
@@ -691,7 +686,7 @@ class plugin
exec($command);
} else {
$message= sprintf(_("Command '%s', specified as POSTREMOVE for plugin '%s' doesn't seem to exist."), $command, get_class($this));
- print_red ($message);
+ msg_dialog::display(_("Error"), $message, ERROR_DIALOG);
}
}
}
@@ -822,7 +817,7 @@ class plugin
{
/* Rename dn in possible object groups */
$ldap= $this->config->get_ldap_link();
- $ldap->search('(&(objectClass=gosaGroupOfNames)(member='.@LDAP::fix($src_dn).'))',
+ $ldap->search('(&(objectClass=gosaGroupOfNames)(member='.@LDAP::prepare4filter($src_dn).'))',
array('cn'));
while ($attrs= $ldap->fetch()){
$og= new ogroup($this->config, $ldap->getDN());
@@ -974,26 +969,18 @@ class plugin
$tmp = $source[$var][$i];
}
$this->$var = $tmp;
-# echo $var."=".$tmp."
";
}else{
$this->$var = $source[$var][0];
-# echo $var."=".$source[$var][0]."
";
}
}else{
$this->$var= $source[$var];
-# echo $var."=".$source[$var]."
";
}
}
}
}
-
- function handle_object_tagging($dn= "", $tag= "", $show= false)
+ function tag_attrs($at, $dn= "", $tag= "", $show= false)
{
- //FIXME: How to optimize this? We have at least two
- // LDAP accesses per object. It would be a good
- // idea to have it integrated.
-
/* No dn? Self-operation... */
if ($dn == ""){
$dn= $this->dn;
@@ -1031,71 +1018,17 @@ class plugin
}
}
+ /* Remove tags that may already be here... */
+ remove_objectClass("gosaAdministrativeUnitTag", &$at);
+ if (isset($at['gosaUnitTag'])){
+ unset($at['gosaUnitTag']);
+ }
/* Set tag? */
if ($tag != ""){
- /* Set objectclass and attribute */
- $ldap= $this->config->get_ldap_link();
- $ldap->cat($dn, array('gosaUnitTag', 'objectClass'));
- $attrs= $ldap->fetch();
- if(isset($attrs['gosaUnitTag'][0]) && $attrs['gosaUnitTag'][0] == $tag){
- if ($show) {
- echo sprintf(_("Object '%s' is already tagged"), @LDAP::fix($dn))."
";
- flush();
- }
- return;
- }
- if (count($attrs)){
- if ($show){
- echo sprintf(_("Adding tag (%s) to object '%s'"), $tag, @LDAP::fix($dn))."
";
- flush();
- }
- $nattrs= array("gosaUnitTag" => $tag);
- $nattrs['objectClass']= array();
- for ($i= 0; $i<$attrs['objectClass']['count']; $i++){
- $oc= $attrs['objectClass'][$i];
- if ($oc != "gosaAdministrativeUnitTag"){
- $nattrs['objectClass'][]= $oc;
- }
- }
- $nattrs['objectClass'][]= "gosaAdministrativeUnitTag";
- $ldap->cd($dn);
- $ldap->modify($nattrs);
- show_ldap_error($ldap->get_error(), sprintf(_("Handle object tagging with dn '%s' failed."),$dn));
- } else {
- @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "Not tagging ($tag) $dn - seems to have moved away", "Tagging");
- }
-
- } else {
- /* Remove objectclass and attribute */
- $ldap= $this->config->get_ldap_link();
- $ldap->cat($dn, array('gosaUnitTag', 'objectClass'));
- $attrs= $ldap->fetch();
- if (isset($attrs['objectClass']) && !in_array_ics("gosaAdministrativeUnitTag", $attrs['objectClass'])){
- @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "$dn is not tagged", "Tagging");
- return;
- }
- if (count($attrs)){
- if ($show){
- echo sprintf(_("Removing tag from object '%s'"), @LDAP::fix($dn))."
";
- flush();
- }
- $nattrs= array("gosaUnitTag" => array());
- $nattrs['objectClass']= array();
- for ($i= 0; $i<$attrs['objectClass']['count']; $i++){
- $oc= $attrs['objectClass'][$i];
- if ($oc != "gosaAdministrativeUnitTag"){
- $nattrs['objectClass'][]= $oc;
- }
- }
- $ldap->cd($dn);
- $ldap->modify($nattrs);
- show_ldap_error($ldap->get_error(), sprintf(_("Handle object tagging with dn '%s' failed."),$dn));
- } else {
- @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "Not removing tag ($tag) $dn - seems to have moved away", "Tagging");
- }
+ add_objectClass("gosaAdministrativeUnitTag", &$at);
+ $at['gosaUnitTag']= $tag;
}
-
}
@@ -1212,7 +1145,7 @@ class plugin
/* Check if the snapshot_base is defined */
if(!isset($tmp['SNAPSHOT_BASE'])){
- print_red(sprintf(_("The snapshot functionality is enabled, but the required variable '%s' is not configured in your gosa.conf."),"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);
}
@@ -1224,7 +1157,7 @@ class plugin
foreach(array("SNAPSHOT_SERVER","SNAPSHOT_USER","SNAPSHOT_PASSWORD","SNAPSHOT_BASE") as $var){
if(!isset($tmp[$var])){
$missing .= $var." ";
- print_red(sprintf(_("The snapshot functionality is enabled, but the required variable(s) '%s' is not configured in your gosa.conf."),$missing));
+ msg_dialog::display(_("Configuration error"), sprintf(_("The snapshot functionality is enabled, but the required variable '%s' is not set."), $missing), ERROR_DIALOG);
return(FALSE);
}
}
@@ -1449,7 +1382,7 @@ class plugin
$msgs = $this->snapDialog->check();
if(count($msgs)){
foreach($msgs as $msg){
- print_red($msg);
+ msg_dialog::display(_("Error"), $msg, ERROR_DIALOG);
}
}else{
$this->dn = $this->snapDialog->dn;
@@ -1575,12 +1508,12 @@ class plugin
if(isset($this->base) && isset($this->config->idepartments[$this->base])){
$deps[$this->base] = $this->config->idepartments[$this->base];
}else{
- echo "No default base found. ".$this->base."
";
+ trigger_error("No default base found in class ".get_class($this).". ".$this->base);
}
-
return($deps);
}
+
/* This function modifies object acls too, if an object is moved.
* $old_dn specifies the actually used dn
* $new_dn specifies the destiantion dn
@@ -1594,8 +1527,10 @@ class plugin
}
/* Update userinfo if necessary */
- if($_SESSION['ui']->dn == $old_dn){
- $_SESSION['ui']->dn = $new_dn;
+ $ui = session::get('ui');
+ if($ui->dn == $old_dn){
+ $ui->dn = $new_dn;
+ session::set('ui',$ui);
new log("view","acl/".get_class($this),$this->dn,array(),"Updated current user dn from '".$old_dn."' to '".$new_dn."'");
}
@@ -1656,14 +1591,10 @@ class plugin
/* Acls for this object must be adjusted */
if($found){
- if($output_changes){
- echo "".
- _("Changing ACL dn")." :
-"._("from")." ".
- $old_dn.
- "
-"._("to")." ".
- $new_dn.
- "
";
- }
+ $debug_info= _("Changing ACL dn")." :
-"._("from")." ".
+ $old_dn."
-"._("to")." ".$new_dn."
";
+ @DEBUG (DEBUG_ACL, __LINE__, __FUNCTION__, __FILE__,$debug_info,"ACL");
+
$update[$attrs['dn']] =array();
foreach($acls as $acl){
$update[$attrs['dn']]['gosaAclEntry'][] = $acl;