From f351bf7b94cfd30c3029a014be1cf7253f91a526 Mon Sep 17 00:00:00 2001 From: hickert Date: Mon, 21 Apr 2008 10:31:52 +0000 Subject: [PATCH] Updated ogroup tabs - Skip initializing unavailable classes git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@10580 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../plugins/admin/ogroups/tabs_ogroups.inc | 259 +++++++++++------- 1 file changed, 153 insertions(+), 106 deletions(-) diff --git a/gosa-core/plugins/admin/ogroups/tabs_ogroups.inc b/gosa-core/plugins/admin/ogroups/tabs_ogroups.inc index ecd43d2db..5cd066577 100644 --- a/gosa-core/plugins/admin/ogroups/tabs_ogroups.inc +++ b/gosa-core/plugins/admin/ogroups/tabs_ogroups.inc @@ -43,60 +43,75 @@ class ogrouptabs extends tabs } } } - 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']); + + if(class_available("phonequeue")){ + 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((!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("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']); + } } - + /* 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("termgroup")){ + 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(!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']); + if(class_available("termservice")){ + if(!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 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((!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((!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']); + } } /* 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(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($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(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; + } } } } @@ -104,99 +119,123 @@ 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'])){ - $this->by_name['mailogroup']= _("Mail"); - $this->by_object['mailogroup']= new mailogroup($this->config, $this->dn); - $this->by_object['mailogroup']->parent= &$this; + if(class_available("mailogroup")){ + 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'])){ + $this->by_name['mailogroup']= _("Mail"); + $this->by_object['mailogroup']= new mailogroup($this->config, $this->dn); + $this->by_object['mailogroup']->parent= &$this; + } } } } /* 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']= _("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("termgroup")){ + if(((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(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']); + if(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']); + } } } /* Add Workstation tabs */ - if((preg_match("/S/",$objects) || preg_match("/W/",$objects))&&(!isset($this->by_object['workstartup']))){ + if(class_available("workstartup")){ + 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#"; + } } - if((preg_match("/W/",$objects))&&(!isset($this->by_object['workservice']))){ + if(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['faiSummary']))){ + if(class_available("faiSummary")){ + if((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; + if(class_available("appgroup")){ + 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; + } } /* 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']); + 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']); + } } /* 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; + 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 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']); + 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']); + } } /* 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; + } - /* 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); + /* 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); + } } } @@ -223,12 +262,16 @@ class ogrouptabs extends tabs switch ($objects[$n]){ case "T": /* Add a terminal tab */ - $this->by_name['termgroup']= _("Terminals"); - $this->by_object['termgroup']= new termgroup($this->config, $this->dn); - $this->by_object['termgroup']->parent= &$this; + if(class_available("termgroup")){ + $this->by_name['termgroup']= _("Terminals"); + $this->by_object['termgroup']= new termgroup($this->config, $this->dn); + $this->by_object['termgroup']->parent= &$this; + } - $this->by_name['termservice']= _("Devices"); - $this->by_object['termservice']= new termservice($this->config, $this->dn,$this->by_object['ogroup']); + if(class_available("termservice")){ + $this->by_name['termservice']= _("Devices"); + $this->by_object['termservice']= new termservice($this->config, $this->dn,$this->by_object['ogroup']); + } break; case "U": @@ -246,18 +289,22 @@ class ogrouptabs extends tabs } /* 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; + if(class_available("phonequeue")){ + 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; + if(class_available("mailogroup")){ + 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; + } } } -- 2.30.2