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" => "faiPackageList");
/* 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('faiou').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');
/* 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."/",$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:
?>