1 <?php
3 class filterFAIClass {
5 static function query($base, $scope, $filter, $attributes, $category, $objectStorage= "")
6 {
7 global $config;
9 $base = session::get('filterFAIClass_base');
10 $objectFilter = "(|(objectClass=FAIscript)(objectClass=FAItemplate)(objectClass=FAIhook)".
11 "(objectClass=FAIvariable)(objectClass=FAIpartitionTable)(objectClass=FAIpackageList))";
13 $FAI_objects = FAI::get_all_objects_for_given_base($base,$objectFilter,true);
15 /* Create array with categories to be able to sort different types of objects */
16 $categories = array("FAIscript" => "faiScript",
17 "FAItemplate" => "faiTemplate",
18 "FAIhook" => "faiHook",
19 "FAIvariable" => "faiVariable",
20 "FAIpartitionTable" => "faiPartitionTable",
21 "FAIpackageList" => "faiPackage");
23 /* Read out all objects from fai tree */
24 $ldap= $config->get_ldap_link();
25 $ldap->cd($base);
26 $ui = get_userinfo();
27 $sort=array();
28 $FAIAllclasses = array();
30 foreach($FAI_objects as $obj){
32 $ldap->cat($obj['dn']);
33 $attrs = $ldap->fetch();
35 /* Only use objects which have cn set */
36 if(isset($attrs['cn'][0]) && preg_match("/".preg_quote($filter,'/')."/i", $attrs['cn'][0])){
37 foreach($categories as $cat => $acl){
38 if(in_array($cat,$attrs['objectClass'])){
39 $acl = $ui->get_permissions($attrs['dn'],"fai/".$acl);
40 if(!isset($FAIAllclasses[$attrs['cn'][0]])){
41 $FAIAllclasses[$attrs['cn'][0]] = $attrs ;
42 }else{
43 $FAIAllclasses[$attrs['cn'][0]]['objectClass'] =
44 array_merge($attrs['objectClass'],$FAIAllclasses[$attrs['cn'][0]]['objectClass']);
45 }
46 }
47 }
48 }
49 }
50 return(filterFAIClass::filterByBlacklist(array_values($FAIAllclasses)));
51 }
53 static function filterByBlacklist($entries)
54 {
55 if(session::is_set('filterBlacklist')){
56 $blist = session::get('filterBlacklist');
57 foreach($blist as $attr_name => $attr_values){
58 foreach($attr_values as $match){
59 foreach($entries as $id => $entry){
60 if(isset($entry[$attr_name])){
61 $test = $entry[$attr_name];
62 if(!is_array($test)) $test = array($test);
63 if(in_array($match, $test)) unset($entries[$id]);
64 }
65 }
66 }
67 }
68 }
69 return(array_values($entries));
70 }
71 }
72 ?>