From 986ac294804a0907bd3f3389be8990f62b4377e2 Mon Sep 17 00:00:00 2001 From: hickert Date: Thu, 21 Feb 2008 14:52:16 +0000 Subject: [PATCH] Updated Terminal and Workstation classes. -Performance improvements git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@9028 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../systems/goto/class_terminalService.inc | 55 ++++++++---- .../systems/goto/class_workstationService.inc | 88 +++++++++++++++---- 2 files changed, 108 insertions(+), 35 deletions(-) diff --git a/gosa-plugins/goto/admin/systems/goto/class_terminalService.inc b/gosa-plugins/goto/admin/systems/goto/class_terminalService.inc index a243f8882..792752765 100644 --- a/gosa-plugins/goto/admin/systems/goto/class_terminalService.inc +++ b/gosa-plugins/goto/admin/systems/goto/class_terminalService.inc @@ -186,32 +186,52 @@ class termservice extends plugin /* Load phone hardware list */ $ldap= $this->config->get_ldap_link(); - $ldap->cd($this->config->current['BASE']); - $ldap->search("(objectClass=goFonHardware)", array('cn', 'description')); - while ($attrs= $ldap->fetch()){ - $cn= $attrs['cn'][0]; - if (isset($attrs['description'])){ - $description= " - ".$attrs['description'][0]; - } else { - $description= ""; + $deps = array(); + $ou = preg_replace("/,.*$/","",get_ou("phoneou")); + if(!empty($ou)){ + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=organizationalUnit)(".$ou."))",array("dn")); + while($attrs = $ldap->fetch()){ + $deps[] = $attrs['dn']; } - $this->hardware_list[$cn]= "$cn$description"; - } - - - + }else{ + /* Phone ou seems to be empty, fall back to overall base . + */ + $deps[] = $this->config->current['BASE']; + } + foreach($deps as $dep){ + $ldap->cd($dep); + $ldap->search("(objectClass=goFonHardware)", array('cn', 'description')); + while ($attrs= $ldap->fetch()){ + $cn= $attrs['cn'][0]; + if (isset($attrs['description'])){ + $description= " - ".$attrs['description'][0]; + } else { + $description= ""; + } + $this->hardware_list[$cn]= "$cn$description"; + } + } /* Eventually colorize phones */ - $deps = array(); - $ou = preg_replace("/,.*$/","",get_ou("phoneou")); - + $ou = preg_replace("/,.*$/","",get_ou("systemsou")); + $deps_a = array(get_ou("ogroupou"), + get_ou("serverou"), + get_ou("terminalou"), + get_ou("workstationou"), + get_ou("printerou"), + get_ou("componentou"), + get_ou("phoneou")); if(!empty($ou)){ $ldap->cd($this->config->current['BASE']); $ldap->search("(&(objectClass=organizationalUnit)(".$ou."))",array("dn")); while($attrs = $ldap->fetch()){ - $deps[] = $attrs['dn']; + foreach($deps_a as $allowed){ + $to_add = preg_replace("/".get_ou('systemsou')."$/","",$allowed); + $deps[] = $to_add.$attrs['dn']; + } } }else{ @@ -231,7 +251,6 @@ class termservice extends plugin } } $this->hardware_list["automatic"]= _("automatic"); - ksort($this->hardware_list); /* Convert gotoLpdEnable diff --git a/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc b/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc index 87e9400b0..6d3809e42 100644 --- a/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc +++ b/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc @@ -146,29 +146,86 @@ class workservice extends plugin $this->orig_dn= $this->dn; - /* Load hardware list */ + + + + + + + + + + /* Load phone hardware list + */ $ldap= $this->config->get_ldap_link(); - $ldap->cd($this->config->current['BASE']); - $ldap->search("(objectClass=goFonHardware)", array('cn', 'description')); - while ($attrs= $ldap->fetch()){ - $cn= $attrs['cn'][0]; - if (isset($attrs['description'])){ - $description= " - ".$attrs['description'][0]; - } else { - $description= ""; + $deps = array(); + $ou = preg_replace("/,.*$/","",get_ou("phoneou")); + if(!empty($ou)){ + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=organizationalUnit)(".$ou."))",array("dn")); + while($attrs = $ldap->fetch()){ + $deps[] = $attrs['dn']; } - $this->hardware_list[$cn]= "$cn$description"; + }else{ + + /* Phone ou seems to be empty, fall back to overall base . + */ + $deps[] = $this->config->current['BASE']; } + foreach($deps as $dep){ + $ldap->cd($dep); + $ldap->search("(objectClass=goFonHardware)", array('cn', 'description')); + while ($attrs= $ldap->fetch()){ + $cn= $attrs['cn'][0]; + if (isset($attrs['description'])){ + $description= " - ".$attrs['description'][0]; + } else { + $description= ""; + } + $this->hardware_list[$cn]= "$cn$description"; + } + } + + /* Eventually colorize phones */ - $ldap->cd($this->config->current['BASE']); - $ldap->search("(goFonHardware=*)",array('cn','dn','goFonHardware')); - while($attrs = $ldap->fetch()){ + $deps = array(); + $ou = preg_replace("/,.*$/","",get_ou("systemsou")); + $deps_a = array(get_ou("ogroupou"), + get_ou("serverou"), + get_ou("terminalou"), + get_ou("workstationou"), + get_ou("printerou"), + get_ou("componentou"), + get_ou("phoneou")); + if(!empty($ou)){ + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=organizationalUnit)(".$ou."))",array("dn")); + while($attrs = $ldap->fetch()){ + foreach($deps_a as $allowed){ + $to_add = preg_replace("/".get_ou('systemsou')."$/","",$allowed); + $deps[] = $to_add.$attrs['dn']; + } + } + }else{ + + /* Phone ou seems to be empty, fall back to overall base . + */ + $deps[] = $this->config->current['BASE']; + } + + foreach($deps as $dep){ + $ldap->cd($dep); + $ldap->search("(goFonHardware=*)",array('cn','dn','goFonHardware')); + while($attrs = $ldap->fetch()){ $cn = $attrs['goFonHardware'][0]; if(isset($this->hardware_list[$cn])){ $this->used_hardware[$cn]= $cn; } + } } + $this->hardware_list["automatic"]= _("automatic"); + ksort($this->hardware_list); if(preg_match("/\+/",$this->gotoXHsync)){ $this->AutoSync = true; @@ -176,9 +233,6 @@ class workservice extends plugin $this->gotoXVsync = preg_replace("/\+/","-",$this->gotoXVsync); } - $this->hardware_list["automatic"]= _("automatic"); - ksort($this->hardware_list); - /* Load hardware list */ $ldap= $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); @@ -308,7 +362,7 @@ class workservice extends plugin $smarty->assign ("goFonHardware", $this->goFonHardware); $perms = ""; - if($this->acl_is_writeable("goFonHardware")){ + if(!$this->acl_is_writeable("goFonHardware")){ $perms = " disabled "; } -- 2.30.2