ui = get_userinfo(); $filter = "(|(objectClass=FAIscript)(objectClass=FAItemplate)(objectClass=FAIhook)". "(objectClass=FAIvariable)(objectClass=FAIpartitionTable)(objectClass=FAIpackageList))"; $FAI_objects = FAI::get_all_objects_for_given_base($base,$filter,true); /* Create array with categories to be able to sort different types of objects */ $categories = array("FAIscript" => "faiScript", "FAItemplate" => "faiTemplate", "FAIhook" => "faiHook", "FAIvariable" => "faiVariable", "FAIpartitionTable" => "faiPartitionTable", "FAIpackageList" => "faiPackage"); /* Read out all objects from fai tree */ $ldap= $this->config->get_ldap_link(); $ldap->cd($base); $sort=array(); foreach($FAI_objects as $obj){ $ldap->cat($obj['dn']); $attrs = $ldap->fetch(); /* Only use objects which have cn set */ if((isset($attrs['cn'][0]))&&(!in_array($attrs['cn'][0],$used))){ foreach($categories as $cat => $acl){ if(in_array($cat,$attrs['objectClass'])){ $acl = $this->ui->get_permissions($attrs['dn'],"fai/".$acl); /* Append different types of objects */ $this->FAIAllclasses[$attrs['cn'][0]]['objects'][$cat]=$cat; if(!isset($this->FAIAllclasses[$attrs['cn'][0]]['acl'])){ $this->FAIAllclasses[$attrs['cn'][0]]['acl']=""; } $this->FAIAllclasses[$attrs['cn'][0]]['acl'].=$acl; /* Set selected status to false */ $this->FAIAllclasses[$attrs['cn'][0]]['status']=false; $sort[strtolower($attrs['cn'][0])] = $attrs['cn'][0]; } } } } $tmp = array(); ksort($sort); foreach($sort as $name){ $tmp[$name] =$this->FAIAllclasses[$name]; } $this->FAIAllclasses = array(); $this->FAIAllclasses = $tmp; /* If no search filter is set, create one */ if (!session::is_set("SUBfaifilter")){ $SUBfaifilter= array("base" => get_ou('faiBaseRDN').session::get('CurrentMainBase'), "Sregex" => "*"); $SUBfaifilter['SShowTemplates'] = true; $SUBfaifilter['SShowScripts'] = true; $SUBfaifilter['SShowHooks'] = true; $SUBfaifilter['SShowVariables'] = true; $SUBfaifilter['SShowPackages'] = true; $SUBfaifilter['SShowPartitions']= true; session::set("SUBfaifilter", $SUBfaifilter); } } function execute() { /* Call parent execute */ plugin::execute(); /* Fill templating stuff */ $smarty = get_smarty(); $display = ""; $SUBfaifilter = session::get('SUBfaifilter'); /* Get alphabet selection */ if(isset($_GET['search'])){ $SUBfaifilter['Sregex'] = strtolower($_GET['search'])."*"; } /* If someone used the apply button, update searchfilter */ if(isset($_POST['Sregex'])){ foreach($SUBfaifilter as $key => $val){ if(!isset($_POST[$key])){ $SUBfaifilter[$key] = false; }else{ $SUBfaifilter[$key] =$_POST[$key]; } } $SUBfaifilter['Sregex']= $_POST['Sregex']; if(!strstr($SUBfaifilter['Sregex'],"*")){ $SUBfaifilter['Sregex'] = $SUBfaifilter['Sregex']."*"; } } /* Save current searchfilter in session*/ session::set('SUBfaifilter',$SUBfaifilter); /* Check if we used a checkboxe from the list, to select dselect an entry */ foreach($_POST as $name => $value){ foreach($this->FAIAllclasses as $class => $obj){ $bclass = base64_encode($class); if(isset($_POST["ON_PAGE_".$bclass])){ if(isset($_POST['USE_'.$bclass])){ $this->FAIAllclasses[$class]['status']=true; }else{ $this->FAIAllclasses[$class]['status']=false; } } } } /* Create different picture for each object type */ $objTypes['FAIhook'] = " "; $objTypes['FAItemplate'] = " "; $objTypes['FAIscript'] = " "; $objTypes['FAIvariable'] = " "; $objTypes['FAIpackageList'] = " "; $objTypes['FAIpartitionTable'] = " "; /* Magic quotes GPC, escapes every ' " \, to solve some security risks * If we post the escaped strings they will be escaped again */ foreach($this->attributes as $attrs){ if(get_magic_quotes_gpc()){ $smarty->assign($attrs,stripslashes($this->$attrs)); }else{ $smarty->assign($attrs,($this->$attrs)); } } /* Assign all filter attributes to smarty */ foreach($SUBfaifilter as $key => $val){ if(($key != "base")&&($key != "Sregex")){ if($val){ $smarty->assign($key."CHK", " checked "); }else{ $smarty->assign($key."CHK", ""); } }else{ $smarty->assign($key,$val); } } /* Create a divlist to display all available class names with the depending object types */ $divlist = new divlist("ProfileEntry"); $divlist->SetPluginMode(); $divlist->SetSummary(_("This list displays all assigned class names for this profile.")); $divlist->SetEntriesPerPage(0); $divlist->SetHeader(array(array("string"=> _("Class name")), array("string"=> _("Objects"),"attach"=>"style='border-right:0px;'"))); /* Action button allows us to delete an entry */ $action = " "; /* Check every single class name to match the current search filter */ foreach($this->FAIAllclasses as $usedClass => $classes){ /* Skip those entries that we are not allowed to read. */ if(!preg_match("/r/",$classes['acl'])){ continue; } $fi = str_replace("*",".*",$SUBfaifilter['Sregex']); $abort = true; if(!preg_match("/^".$fi."/i",$usedClass)){ $abort = false; continue; } if((isset($classes['objects']['FAIscript']))&&($SUBfaifilter['SShowScripts'])){ $abort = false; } if((isset($classes['objects']['FAItemplate']))&&($SUBfaifilter['SShowTemplates'])){ $abort = false; } if((isset($classes['objects']['FAIhook']))&&($SUBfaifilter['SShowHooks'])){ $abort = false; } if((isset($classes['objects']['FAIvariable']))&&($SUBfaifilter['SShowVariables'])){ $abort = false; } if((isset($classes['objects']['FAIpartitionTable']))&&($SUBfaifilter['SShowPartitions'])){ $abort = false; } if((isset($classes['objects']['FAIpackageList']))&&($SUBfaifilter['SShowPackages'])){ $abort = false; } if(!$abort){ $str = ""; foreach($classes['objects'] as $class => $obj){ $str.= $objTypes[$obj]; } /* Is this entry selected */ if($classes['status']==true){ $action_check = preg_replace("/%CHECK%/"," checked ",$action); }else{ $action_check = preg_replace("/%CHECK%/","",$action); } /* Append to list */ $field1 = array("string"=> str_replace("%KEY%",base64_encode($usedClass),$action_check).$usedClass,"attach"=>""); $field2 = array("string"=> $str,"attach"=>"style='border-right:0px;'"); $divlist->AddEntry(array($field1,$field2)); } } $smarty->assign("faihead" , ""); $smarty->assign("failist" , $divlist->DrawList()); $smarty->assign("infoimage" , get_template_path('images/info_small.png')); $smarty->assign("launchimage" , get_template_path('images/lists/action.png')); $smarty->assign("alphabet" , generate_alphabet()); $smarty->assign("apply" , apply_filter(TRUE)); $smarty->assign("search_image" , get_template_path('images/lists/search.png')); $display.= $smarty->fetch(get_template_path('faiProfileEntry.tpl', TRUE)); return($display); } /* Save data to object */ function save_object() { } /* Check supplied data */ function check() { /* Call common method to give check the hook */ $message= plugin::check(); return ($message); } function save() { $tmp = array(); foreach($this->FAIAllclasses as $class => $obj){ if($obj['status']==true){ $tmp[$class]=$class; } } return($tmp); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>