Code

Updated defaultFaiRelease property
[gosa.git] / gosa-plugins / systems / admin / systems / class_filterSYSTEMS.inc
1 <?php
3 class filterSYSTEMS {
5     static function query($base, $scope, $filter, $attributes, $category, $objectStorage= "")
6     {
7         $ui = get_userinfo();
8         global $config;
10         // Check whether the arp handling active or not
11         $arp_handling_active = ($config->search("ArpNewDevice","CLASS",array('tabs')) != "");
13         $entries = filterLDAP::query($base, $scope, $filter, $attributes, $category, $objectStorage);
16         foreach($entries as $key => $entry){
17             if(preg_match("/".preg_quote(get_ou('systemIncomingRDN'),'/')."/i", $entry['dn'])){
19                 // Detect incoming types
20                 if(in_array('gotoWorkstation', $entry['objectClass'])){
21                     $entries[$key]['objectClass'][] = 'FAKE_OC_NewWorkstation';
22                     $entries[$key]['cn'][0].= " <i>("._("New workstation").")</i>";
23                 }elseif(in_array('gotoTerminal', $entry['objectClass'])){
24                     $entries[$key]['objectClass'][] = 'FAKE_OC_NewTerminal';
25                     $entries[$key]['cn'][0].= " <i>("._("New terminal").")</i>";
26                 }elseif($arp_handling_active && 
27                         in_array('GOhard', $entry['objectClass']) && 
28                         !isset($entry['gotoMode'][0])){ 
29                     $entries[$key]['objectClass'][] = 'FAKE_OC_ArpNewDevice';
30                     $entries[$key]['cn'][0].= " <i>("._("New unknown device").")</i>";
31                 }elseif(in_array('GOhard', $entry['objectClass'])){
32                     $entries[$key]['objectClass'][] = 'FAKE_OC_NewDevice';
33                     $entries[$key]['cn'][0].= " <i>("._("New device").")</i>";
34                 }
36                 // Detect SAMBA machines
37             }elseif(in_array('sambaSamAccount', $entry['objectClass']) && preg_match("/\$$/", $entry['cn'][0])){
38                 $entries[$key]['objectClass'][] = 'FAKE_OC_winstation';
40                 // Detect Workstation & templates
41             }elseif(in_array('gotoWorkstation', $entry['objectClass'])){
42                 if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
43                     unset($entries[$key]);
44                     continue; // We do not need templates anymore, we've ogroups now.
45                     //$entries[$key]['objectClass'][] = 'FAKE_OC_WorkstationTemplate';
46                 }
47                 $pwd_acl = $ui->get_permissions($entry['dn'],'workstation/workgeneric','userPassword');
48                 if(preg_match("/w/",$pwd_acl)){
49                     $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
50                 }
52                 // Detect Terminal & templates
53             }elseif(in_array('gotoTerminal', $entry['objectClass'])){
54                 if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
55                     unset($entries[$key]);
56                     continue; // We do not need templates anymore, we've ogroups now.
57                     //$entries[$key]['objectClass'][] = 'FAKE_OC_TerminalTemplate';
58                 }
59                 $pwd_acl = $ui->get_permissions($entry['dn'],'terminal/termgeneric','userPassword');
60                 if(preg_match("/w/",$pwd_acl)){
61                     $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
62                 }
64                 // Detect Server & templates
65             }elseif(in_array('goServer', $entry['objectClass'])){
66                 if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
67                     unset($entries[$key]);
68                     continue; // We do not need templates anymore, we've ogroups now.
69                     //$entries[$key]['objectClass'][] = 'FAKE_OC_ServerTemplate';
70                 }
71                 $pwd_acl = $ui->get_permissions($entry['dn'],'server/servgeneric','userPassword');
72                 if(preg_match("/w/",$pwd_acl)){
73                     $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
74                 }
76                 // Detect ieee802Device
77             }elseif(in_array('ieee802Device', $entry['objectClass'])){
78                 $pwd_acl = $ui->get_permissions($entry['dn'],'component/componentGeneric','userPassword');
79                 if(preg_match("/w/",$pwd_acl)){
80                     $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
81                 }
82             }
84             // Detect object states
85             $state = 'none';
86             foreach(array('gotoWorkstation','gotoTerminal','goServer') as $type){
87                 if(in_array($type, $entry['objectClass'])){
89                     if(isset($entry['FAIstate'][0])){
90                         switch (preg_replace('/:.*$/', '', $entry['FAIstate'][0])) {
91                             case 'error':
92                                 $state= 'error';
93                                 break;
94                             case 'installing':
95                             case 'install':
96                             case 'sysinfo':
97                             case 'softupdate':
98                             case 'scheduledupdate':
99                                 $state= 'busy';
100                                 break;
101                         }
102                     }elseif(isset($entry['gotoMode'][0]) && preg_match("/locked/i", $entry['gotoMode'][0])){
103                         $state = "locked";
104                     }
105                 }
106             }
107         
108             if(isset($entries[$key])){    
109                 $entries[$key][$entries[$key]['count']]= 'state';
110                 $entries[$key]['state']= $state;
111                 $entries[$key]['count'] ++;
112             }
114             
116         }
117         return($entries);
118     }
121 ?>