X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=trunk%2Fgosa-plugins%2Fgoto%2Fadmin%2Fsystems%2Fgoto%2Fclass_workstationStartup.inc;h=7b67379d7aaa7243a8db9dbc6bc29db005707e6b;hb=e19e94a723def6eda85858cb40a1d02ed610eebe;hp=d4349fa278fa84d1da840cf1e47aa835e1a7a24b;hpb=1cf7eb88e95722fbbb4edf0e450893cee8afcd93;p=gosa.git diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationStartup.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationStartup.inc index d4349fa27..7b67379d7 100644 --- a/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationStartup.inc +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationStartup.inc @@ -694,6 +694,18 @@ class workstartup extends plugin function remove_from_parent() { + /* Cancel if there's nothing to do here */ + if ((!$this->acl_is_removeable())){ + return; + } + + /* Remove and write to LDAP */ + plugin::remove_from_parent(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $this->attrs['gotoModules'] = array(); + $ldap->modify($this->attrs); $this->handle_post_events("remove"); new log("remove","workstation/".get_class($this),$this->dn); } @@ -991,7 +1003,7 @@ class workstartup extends plugin plugin::PrepareForCopyPaste($source); $source_o = new workstartup ($this->config, $source['dn']); foreach(array("FAIclass","gotoModules", "gotoAutoFs", "gotoFilesystem", - "gotoKernelParameters","gotoShares") as $attr){ + "gotoKernelParameters","gotoShares","gotoLdapServers", "gotoLdap_inherit") as $attr){ $this->$attr = $source_o->$attr; } } @@ -1044,6 +1056,44 @@ class workstartup extends plugin )); } + /* Function to find bad classes */ + function update_bad_classes($release) + { + + if(!isset($this->cache['BAD_CLASSES'][$release])) { + /* Find "bad" classes */ + $ui = get_userinfo(); + $ldap = $this->config->get_ldap_link(); + + /* Convert release name to a valid ldap uri component */ + $release_components = split('/', $release); + $release_components = array_reverse($release_components); + for($i=0;$iconfig->current['BASE']); + + /* Build a list of all fai classes, that don't have the unittag of the user + * and are not freezed or removed. The classes will be filtered by this + * list. Its needed to specify each objectClass (FAIpackageList etc.) because + * FAIClass would match sub-objects, too, which would lead to an array that + * is much bigger then needed */ + $filter = sprintf('(&(|(objectClass=FAItemplate)(objectClass=FAIpackageList)(objectClass=FAIprofile)(objectClass=FAIscript)(objectClass=FAIpartitionTable)(objectClass=FAIHook)(objectClass=FAIvariable)(objectClass=FAItemplate))(&(!(gosaUnitTag=%s))(&(!(FAIstate=*removed*))(!(FAIstate=*freeze*)))))', $ui->gosaUnitTag); + $ldap->cd($base); + $ldap->search(sprintf("$filter", $ui->gosaUnitTag)); + + $this->cache['BAD_CLASSES'][$release] = array(); + while ($entry = $ldap->fetch()) { + $classname = $entry['cn'][0]; + if (!in_array($classname, $this->cache['BAD_CLASSES'][$release])) { + array_push($this->cache['BAD_CLASSES'][$release], $classname); + } + } + } + } /* Updates release dns * and reads all classes for the current release, @@ -1072,16 +1122,15 @@ class workstartup extends plugin return; }else{ + $base = $this->config->current['BASE']; + $ldap = $this->config->get_ldap_link(); foreach($servers as $server){ - if ($this->attrs['gosaUnitTag'][0] != $server['TAG']) { - echo "Skipping server " . $server['SERVER'] . "
"; + /* Dont show servers that have a different unittag as the user*/ + $ui = get_userinfo(); + if ($ui->gosaUnitTag != $server['TAG']) { continue; } - - echo "My unittag: ". $this->attrs['gosaUnitTag'][0] ."
"; - echo "

" . print_a($server); - echo "

"; $rel = $server['FAI_RELEASE']; $this->cache['SERVERS']['auto'][$rel] = $rel; $this->cache['SERVERS'][$server['SERVER']][$rel] = $rel; @@ -1142,7 +1191,13 @@ class workstartup extends plugin }else{ foreach($classes as $class){ $classname = $class['CLASS']; - var_dump($class); + $this->update_bad_classes($release); + if(isset($this->cache['BAD_CLASSES'][$release])){ + /* Skip classes that are in the array of bad classes */ + if (in_array($classname, $this->cache['BAD_CLASSES'][$release])) { + continue; + } + } if (!isset($this->cache['CLASSES'][$release][$classname])) { $this->cache['CLASSES'][$release][$classname] = array(); } @@ -1253,14 +1308,14 @@ class workstartup extends plugin # everything looks fine if the type in this position # doesn't exist in that class for ($i=0; $i<6; $i++) { - $result[$i] = ""; + $result[$i] = " "; } } foreach($classes[$class_name] as $type) { $index = $type['index']; if ($image) { - $string = "".$type[ "; + $string = " "; } else { $string = $type['Abbr']; @@ -1295,53 +1350,54 @@ class workstartup extends plugin function analyse_fai_object($attr) { $result = array(); - $result['desc'] = 'Placeholder'; switch($attr['TYPE']){ case 'FAIpartitionTable': $result["Type"]= 'FAIpartitionTable'; $result["Abbr"]= 'Pt'; $result["img"]= 'plugins/fai/images/fai_partitionTable.png'; - $result["desc"] = "_('Partition table')"; + $result["desc"] = _('Partition table'); $result["index"]= 0; break; case 'FAIpackageList': $result["Type"]= 'FAIpackageList'; $result["Abbr"]= 'Pl'; $result["img"] = 'plugins/fai/images/fai_packages.png'; - $result["desc"] = "_('Package list')"; + $result["desc"] = _('Package list'); $result["index"] = 1; break; case 'FAIscript': $result["Type"]= 'FAIscript'; $result["Abbr"]= 'S'; $result["img"]= 'plugins/fai/images/fai_script.png'; - $result["desc"] = "_('Script')"; + $result["desc"] = _('Scripts'); $result["index"] = 2; break; case 'FAIvariable': $result["Type"]= 'FAIvariable'; $result["Abbr"]= 'V'; $result["img"]= 'plugins/fai/images/fai_variable.png'; - $result["desc"] = "_('Variables')"; + $result["desc"] = _('Variables'); $result["index"]= 3; break; case 'FAIhook': $result["Type"]= 'FAIhook'; $result["Abbr"]= 'H'; $result["img"]= 'plugins/fai/images/fai_hook.png'; - $result["desc"] = "_('Hooks')"; + $result["desc"] = _('Hooks'); $result["index"]= 4; break; case 'FAIprofile': $result["Type"]= 'FAIprofile'; $result["Abbr"]= 'P'; $result["img"]= 'plugins/fai/images/fai_profile.png'; + $result["desc"]= _('Profile'); $result["index"] = 5; break; case 'FAItemplate': $result["Type"]= 'FAItemplate'; $result["Abbr"]= 'T'; $result["img"] = 'plugins/fai/images/fai_template.png'; + $result["desc"]= _('Templates'); $result["index"] = 6; break; default: trigger_error("Unknown FAI object type!");;