X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=gosa-core%2Fplugins%2Fadmin%2Fogroups%2Ftabs_ogroups.inc;h=bea1067d843ef66cfd6ef26bf4e66d62154df018;hb=ed78890a0b417c288d33f20487d35b57223451ff;hp=6d3c018af5701249122f96eaa6bbeb1385339804;hpb=429b220dc60fd6744c286f1ba5833aabfd33e276;p=gosa.git diff --git a/gosa-core/plugins/admin/ogroups/tabs_ogroups.inc b/gosa-core/plugins/admin/ogroups/tabs_ogroups.inc index 6d3c018af..bea1067d8 100644 --- a/gosa-core/plugins/admin/ogroups/tabs_ogroups.inc +++ b/gosa-core/plugins/admin/ogroups/tabs_ogroups.inc @@ -1,77 +1,140 @@ by_object['ogroup']->memberList as $dn => $val){ + if(class_available("phonequeue")){ - if(isset($this->by_object['ogroup']->objcache[$dn])){ - $obj = $this->by_object['ogroup']->objcache[$dn]; - if(isset($obj['objectClass'])){ - if(in_array("goFonAccount",$obj['objectClass'])){ - $usePhoneTab = true; + foreach($this->by_object['ogroup']->memberList as $dn => $val){ + if(isset($this->by_object['ogroup']->objcache[$dn])){ + $obj = $this->by_object['ogroup']->objcache[$dn]; + if(isset($obj['objectClass'])){ + if(in_array("goFonAccount",$obj['objectClass'])){ + $usePhoneTab = true; + } } } } + if((!$usePhoneTab && isset($this->by_object['phonequeue']))|| + (!preg_match("/U/",$objects) && isset($this->by_object['phonequeue']))){ + $this->by_object['phonequeue']->remove_from_parent(); + unset($this->by_object['phonequeue']); + unset($this->by_name['phonequeue']); + } + } + + /* Remove mail group if there is no user anymore + */ + if(class_available("mailogroup")){ + if(!preg_match("/U/",$objects) && isset($this->by_object['mailogroup'])){ + $this->by_object['mailogroup']->remove_from_parent(); + unset($this->by_object['mailogroup']); + unset($this->by_name['mailogroup']); + } } - if(((!$usePhoneTab)&&(isset($this->by_object['phonequeue'])))||((!preg_match("/U/",$objects))&&(isset($this->by_object['phonequeue'])))){ - $this->by_object['phonequeue']->remove_from_parent(); - unset($this->by_object['phonequeue']); - unset($this->by_name['phonequeue']); + + /* Remove terminal group, if theres no terminal left in the object list + */ + if(class_available("termgroup")){ + if(($mixed_type && isset($this->by_object['termgroup'])) || + !preg_match("/T/",$objects) && !preg_match("/W/",$objects) && isset($this->by_object['termgroup'])){ + $this->by_object['termgroup']->remove_from_parent(); + unset($this->by_object['termgroup']); + unset($this->by_name['termgroup']); + } } - /* Remove mail group if there is no user anymore */ - if((!preg_match("/U/",$objects))&&(isset($this->by_object['mailogroup']))){ - $this->by_object['mailogroup']->remove_from_parent(); - unset($this->by_object['mailogroup']); - unset($this->by_name['mailogroup']); + if(class_available("termservice")){ + if(($mixed_type && isset($this->by_object['termservice'])) || + !preg_match("/T/",$objects) &&(isset($this->by_object['termservice']))){ + $this->by_object['termservice']->remove_from_parent(); + unset($this->by_object['termservice']); + unset($this->by_name['termservice']); + } } - - /* Remove terminal group, if theres no terminal left in the object list */ - if(((!preg_match("/T/",$objects)) && (!preg_match("/W/",$objects)))&&(isset($this->by_object['termgroup']))){ - $this->by_object['termgroup']->remove_from_parent(); - unset($this->by_object['termgroup']); - unset($this->by_name['termgroup']); + if(class_available("termstartup")){ + if(($mixed_type && isset($this->by_object['termstartup'])) || + !preg_match("/T/",$objects)&&(isset($this->by_object['termstartup']))){ + $this->by_object['termstartup']->remove_from_parent(); + unset($this->by_object['termstartup']); + unset($this->by_name['termstartup']); + } } - + /* Remove ws tabs, if theres no ws left in the object list */ - if((!preg_match("/W/",$objects))&&(isset($this->by_object['workservice']))){ - $this->by_object['workservice']->remove_from_parent(); - unset($this->by_object['workservice']); - unset($this->by_name['workservice']); + if(class_available("workservice")){ + if(($mixed_type && isset($this->by_object['workservice'])) || + (!preg_match("/W/",$objects))&&(isset($this->by_object['workservice']))){ + $this->by_object['workservice']->remove_from_parent(); + unset($this->by_object['workservice']); + unset($this->by_name['workservice']); + } } - if((!preg_match("/S/",$objects) && !preg_match("/W/",$objects))&&(isset($this->by_object['workstartup']))){ - $this->by_object['workstartup']->remove_from_parent(); - unset($this->by_object['workstartup']); - unset($this->by_name['workstartup']); - $this->by_object['faiSummary']->remove_from_parent(); - unset($this->by_object['faiSummary']); - unset($this->by_name['faiSummary']); + if(class_available("workstartup")){ + if(($mixed_type && isset($this->by_object['workstartup'])) || + (!preg_match("/S/",$objects) && !preg_match("/W/",$objects))&&(isset($this->by_object['workstartup']))){ + $this->by_object['workstartup']->remove_from_parent(); + unset($this->by_object['workstartup']); + unset($this->by_name['workstartup']); + if (isset($this->by_object['faiSummary'])){ + $this->by_object['faiSummary']->remove_from_parent(); + unset($this->by_object['faiSummary']); + unset($this->by_name['faiSummary']); + } + } } /* Create goPhoneAccount if theres an user with goPhoneAccount * but only if there is currently no queue enabled. */ - if(!isset($this->by_object['phonequeue'])){ - foreach($this->by_object['ogroup']->memberList as $dn => $val){ - - if(isset($this->by_object['ogroup']->objcache[$dn])){ - $obj = $this->by_object['ogroup']->objcache[$dn]; - - if(isset($obj['objectClass'])){ - if(in_array("goFonAccount",$obj['objectClass'])){ - $this->by_name['phonequeue']= _("Phone queue"); - $this->by_object['phonequeue']= new phonequeue($this->config, $this->dn); - $this->by_object['phonequeue']->parent= &$this; - break; + if(class_available("phonequeue")){ + if(!isset($this->by_object['phonequeue'])){ + foreach($this->by_object['ogroup']->memberList as $dn => $val){ + if(isset($this->by_object['ogroup']->objcache[$dn])){ + $obj = $this->by_object['ogroup']->objcache[$dn]; + if(isset($obj['objectClass'])){ + if(in_array("goFonAccount",$obj['objectClass'])){ + $this->by_name['phonequeue']= _("Phone queue"); + $this->by_object['phonequeue']= new phonequeue($this->config, $this->dn); + $this->by_object['phonequeue']->parent= &$this; + break; + } } } } @@ -79,9 +142,9 @@ class ogrouptabs extends tabs } /* Add mail group tab , if there is curerntly no mail tab defined */ - if((preg_match("/U/",$objects))&&(!isset($this->by_object['mailogroup']))){ - if(isset($this->config->current['MAILMETHOD'])){ - if (preg_match('/kolab/i', $this->config->current['MAILMETHOD'])){ + if(class_available("mailogroup")){ + if((preg_match("/U/",$objects))&&(!isset($this->by_object['mailogroup']))){ + if ($this->config->get_cfg_value("mailmethod") == "kolab"){ $this->by_name['mailogroup']= _("Mail"); $this->by_object['mailogroup']= new mailogroup($this->config, $this->dn); $this->by_object['mailogroup']->parent= &$this; @@ -90,80 +153,133 @@ class ogrouptabs extends tabs } /* Add Terminal tab */ - if(((preg_match("/T/",$objects)) || (preg_match("/W/",$objects)))&&(!isset($this->by_object['termgroup']))){ - if(!isset($this->by_object['termgroup'])){ - $this->by_name['termgroup']= _("System"); - $this->by_object['termgroup']= new termgroup($this->config, $this->dn); - $this->by_object['termgroup']->inheritTimeServer = false; - $this->by_object['termgroup']->parent= &$this; + if(class_available("termgroup")){ + if(!$mixed_type && + ((preg_match("/T/",$objects)) || (preg_match("/W/",$objects)))&&(!isset($this->by_object['termgroup']))){ + if(!isset($this->by_object['termgroup'])){ + $this->by_name['termgroup']= _("Systems"); + $this->by_object['termgroup']= new termgroup($this->config, $this->dn); + $this->by_object['termgroup']->inheritTimeServer = false; + $this->by_object['termgroup']->parent= &$this; + } } } - + if(class_available("termstartup")){ + if(!$mixed_type && + preg_match("/T/",$objects) &&(!isset($this->by_object['termstartup']))){ + if(!isset($this->by_object['termstartup'])){ + $this->by_name['termstartup']= _("Startup"); + $this->by_object['termstartup']= new termstartup($this->config, $this->dn,$this->by_object['ogroup']); + $this->by_object['termstartup']->parent= &$this; + $this->by_object['termstartup']->acl = "#all#"; + } + } + } + if(!$mixed_type && + class_available("termservice")){ + if(preg_match("/T/",$objects) &&(!isset($this->by_object['termservice']))){ + if(!isset($this->by_object['termservice'])){ + $this->by_name['termservice']= _("Devices"); + $this->by_object['termservice']= new termservice($this->config, $this->dn,$this->by_object['ogroup']); + $this->by_object['termservice']->parent= &$this; + $this->by_object['termservice']->acl = "#all#"; + } + } + } + /* Add Workstation tabs */ - if((preg_match("/W/",$objects))&&(!isset($this->by_object['workservice']))){ + if(class_available("workstartup")){ + if(!$mixed_type && + (preg_match("/S/",$objects) || preg_match("/W/",$objects))&&(!isset($this->by_object['workstartup']))){ + $this->by_name['workstartup']= _("Startup"); + $this->by_object['workstartup']= new workstartup($this->config, $this->dn); + $this->by_object['workstartup']->parent= &$this; + $this->by_object['workstartup']->acl = "#all#"; + } + } + if(!$mixed_type && + class_available("workservice")){ + if((preg_match("/W/",$objects))&&(!isset($this->by_object['workservice']))){ $this->by_name['workservice']= _("Devices"); $this->by_object['workservice']= new workservice($this->config, $this->dn); $this->by_object['workservice']->inheritTimeServer = false; $this->by_object['workservice']->parent= &$this; $this->by_object['workservice']->acl = "#all#"; + } } - if((preg_match("/S/",$objects) || preg_match("/W/",$objects))&&(!isset($this->by_object['workstartup']))){ - $this->by_name['workstartup']= _("Startup"); - $this->by_object['workstartup']= new workstartup($this->config, $this->dn); - $this->by_object['workstartup']->parent= &$this; - $this->by_object['workstartup']->acl = "#all#"; - $this->by_name['faiSummary']= _("Summary"); + if(class_available("faiSummary")){ + if(!$mixed_type && + (preg_match("/S/",$objects) || preg_match("/W/",$objects))&&(!isset($this->by_object['faiSummary']))){ + $this->by_name['faiSummary']= _("FAI summary"); $this->by_object['faiSummary']= new faiSummaryTab($this->config, $this->dn); $this->by_object['faiSummary']->parent= &$this; + } } - /* Add application tab if user or group is member in this object group*/ - if((preg_match("/G/",$objects) || preg_match("/U/",$objects)) && !isset($this->by_name['appgroup'])){ - $this->by_name['appgroup']= _("Application"); - $this->by_object['appgroup']= new appgroup($this->config, $this->dn); - $this->by_object['appgroup']->acl = "#all#"; - $this->by_object['appgroup']->parent= &$this; + /* Add environment tab if user or group is member in this object group*/ + if(class_available("environment")){ + if((preg_match("/G/",$objects) || preg_match("/U/",$objects)) && !isset($this->by_name['environment'])){ + $this->by_name['environment']= _("Environment"); + $this->by_object['environment']= new environment($this->config, $this->dn); + $this->by_object['environment']->acl = "#all#"; + $this->by_object['environment']->parent= &$this; + } } - /* Remove application tab if not required any longer */ - if(!preg_match("/G/",$objects) && !preg_match("/U/",$objects) && isset($this->by_name['appgroup'])){ - $this->by_object['appgroup']->remove_from_parent(); - unset($this->by_name['appgroup']); - unset($this->by_object['appgroup']); + /* Remove environment tab if not required any longer */ + if(class_available("environment")){ + if(!preg_match("/G/",$objects) && !preg_match("/U/",$objects) && isset($this->by_name['environment'])){ + $this->by_object['environment']->remove_from_parent(); + unset($this->by_name['environment']); + unset($this->by_object['environment']); + } } - /* Add environment tab if user or group is member in this object group*/ - if((preg_match("/G/",$objects) || preg_match("/U/",$objects)) && !isset($this->by_name['environment'])){ - $this->by_name['environment']= _("Environment"); - $this->by_object['environment']= new environment($this->config, $this->dn); - $this->by_object['environment']->acl = "#all#"; - $this->by_object['environment']->parent= &$this; + /* Add application tab if user or group is member in this object group*/ + if(class_available("appgroup")){ + if((preg_match("/G/",$objects) || preg_match("/U/",$objects)) && !isset($this->by_name['appgroup'])){ + $this->by_name['appgroup']= _("Applications"); + $this->by_object['appgroup']= new appgroup($this->config, $this->dn); + $this->by_object['appgroup']->acl = "#all#"; + $this->by_object['appgroup']->parent= &$this; + } } - /* Remove environment tab if not required any longer */ - if(!preg_match("/G/",$objects) && !preg_match("/U/",$objects) && isset($this->by_name['environment'])){ - $this->by_object['environment']->remove_from_parent(); - unset($this->by_name['environment']); - unset($this->by_object['environment']); + /* Remove application tab if not required any longer */ + if(class_available("appgroup")){ + if(!preg_match("/G/",$objects) && !preg_match("/U/",$objects) && isset($this->by_name['appgroup'])){ + $this->by_object['appgroup']->remove_from_parent(); + unset($this->by_name['appgroup']); + unset($this->by_object['appgroup']); + } } + /* Move reference tab to second position from right */ - if(isset($this->by_name['acl'])){ - $tmp = $this->by_name['acl']; - unset($this->by_name['acl']); - $this->by_name['acl'] = $tmp; - } - - /* Move reference tab to last position*/ - if(isset($this->by_name['reference'])){ - $tmp = $this->by_name['reference']; - unset($this->by_name['reference']); - $this->by_name['reference'] = $tmp; - } + if(class_available("acl")){ + if(isset($this->by_name['acl'])){ + $tmp = $this->by_name['acl']; + unset($this->by_name['acl']); + $this->by_name['acl'] = $tmp; + } + + /* Move reference tab to last position*/ + if(class_available("reference")){ + if(isset($this->by_name['reference'])){ + $tmp = $this->by_name['reference']; + unset($this->by_name['reference']); + $this->by_name['reference'] = $tmp; + } + } - /* Reset acls */ - $this->set_acl_base($this->base); - foreach($this->by_object as $name => $obj){ - $this->by_object[$name]->set_acl_category($this->acl_category); + /* Reset acls */ + if($this->dn == "new"){ + $this->set_acl_base($this->base); + }else{ + $this->set_acl_base($this->dn); + } + foreach($this->by_object as $name => $obj){ + $this->by_object[$name]->set_acl_category($this->acl_category); + } } } @@ -175,61 +291,13 @@ class ogrouptabs extends tabs return ( $str); } - function ogrouptabs($config, $data, $dn,$category ="ogroups") + function ogrouptabs($config, $data, $dn,$category ="ogroups",$hide_refs = FALSE, $hide_acls = FALSE) { - tabs::tabs($config, $data, $dn, $category); + tabs::tabs($config, $data, $dn, $category,$hide_refs, $hide_acls); $this->base= $this->by_object['ogroup']->base; $this->acl_category = $category; - /* Insert extra tabs for several object types - if present */ - - $objects= preg_replace('/[\[\]]/', '', $this->by_object['ogroup']->gosaGroupObjects); - - for ($n= 0; $nby_name['termgroup']= _("Terminals"); - $this->by_object['termgroup']= new termgroup($this->config, $this->dn); - $this->by_object['termgroup']->parent= &$this; - - break; - - case "U": - /* Append a PhoneQueue, if objectClass = goFonAccount */ - $use = false; - foreach($this->by_object['ogroup']->memberList as $dn => $val){ - - $obj = $this->by_object['ogroup']->objcache[$dn]; - - if(isset($obj['objectClass'])){ - if(in_array("goFonAccount",$obj['objectClass'])){ - $use = true; - } - } - } - - /* We found goFonAccount in users objectClasses*/ - if($use){ - $this->by_name['phonequeue']= _("Phone queue"); - $this->by_object['phonequeue']= new phonequeue($this->config, $this->dn); - $this->by_object['phonequeue']->parent= &$this; - } - - /* Add a user tab used for mail distribution lists */ - if(isset($this->config->current['MAILMETHOD'])){ - if (preg_match('/kolab/i', $this->config->current['MAILMETHOD'])){ - $this->by_name['mailogroup']= _("Mail"); - $this->by_object['mailogroup']= new mailogroup($this->config, $this->dn); - $this->by_object['mailogroup']->parent= &$this; - } - } - - break; - } - } - /* Add references/acls/snapshots */ $this->reload($this->by_object['ogroup']->gosaGroupObjects); $this->addSpecialTabs(); @@ -272,10 +340,10 @@ class ogrouptabs extends tabs /* Check for new 'dn', in order to propagate the 'dn' to all plugins */ - $new_dn= 'cn='.$baseobject->cn.','.get_ou('ogroupou').$baseobject->base; + $new_dn= 'cn='.$baseobject->cn.','.get_ou('ogroupRDN').$baseobject->base; /* Move group? */ - if ($this->dn != $new_dn){ + if (LDAP::fix($this->dn) != LDAP::fix($new_dn)){ /* Write entry on new 'dn' */ if ($this->dn != "new"){ @@ -288,14 +356,10 @@ class ogrouptabs extends tabs } if ($this->dn == "new"){ - $this->dn= 'cn='.$baseobject->cn.','.get_ou('ogroupou').$baseobject->base; + $this->dn= 'cn='.$baseobject->cn.','.get_ou('ogroupRDN').$baseobject->base; } tabs::save(); - - /* Fix tagging if needed */ - $baseobject->dn= $new_dn; - $baseobject->handle_object_tagging(); } function getCopyDialog()