Code

Updated server-service dialog
[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           continue; // We do not need templates anymore, we've ogroups now.
44           //$entries[$key]['objectClass'][] = 'FAKE_OC_WorkstationTemplate';
45         }
46         $pwd_acl = $ui->get_permissions($entry['dn'],'workstation/workgeneric','userPassword');
47         if(preg_match("/w/",$pwd_acl)){
48           $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
49         }
51       // Detect Terminal & templates
52       }elseif(in_array('gotoTerminal', $entry['objectClass'])){
53         if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
54           continue; // We do not need templates anymore, we've ogroups now.
55           //$entries[$key]['objectClass'][] = 'FAKE_OC_TerminalTemplate';
56         }
57         $pwd_acl = $ui->get_permissions($entry['dn'],'terminal/termgeneric','userPassword');
58         if(preg_match("/w/",$pwd_acl)){
59           $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
60         }
62       // Detect Server & templates
63       }elseif(in_array('goServer', $entry['objectClass'])){
64         if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
65           continue; // We do not need templates anymore, we've ogroups now.
66           //$entries[$key]['objectClass'][] = 'FAKE_OC_ServerTemplate';
67         }
68         $pwd_acl = $ui->get_permissions($entry['dn'],'server/servgeneric','userPassword');
69         if(preg_match("/w/",$pwd_acl)){
70           $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
71         }
73       // Detect ieee802Device
74       }elseif(in_array('ieee802Device', $entry['objectClass'])){
75         $pwd_acl = $ui->get_permissions($entry['dn'],'component/componentGeneric','userPassword');
76         if(preg_match("/w/",$pwd_acl)){
77           $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
78         }
79       }
81       // Detect object states
82       foreach(array('gotoWorkstation','gotoTerminal','goServer') as $type){
83         if(in_array($type, $entry['objectClass'])){
85           if(isset($entry['gotoMode'][0]) && preg_match("/locked/i", $entry['gotoMode'][0])){
86             $entries[$key]['objectClass'][] = $type."__IS_LOCKED";
87           }elseif(isset($entry['FAIstate'][0])){
88             switch (preg_replace('/:.*$/', '', $entry['FAIstate'][0])) {
89               case 'error':
90                 $state= '__IS_ERROR';
91                 break;
92               case 'installing':
93               case 'install':
94               case 'sysinfo':
95               case 'softupdate':
96               case 'scheduledupdate':
97                 $state= '__IS_BUSY';
98                 break;
99               default: $state ="";
100             }
101             if(!empty($state)) $entries[$key]['objectClass'][] = $type.$state;
102           }
103         }
104       }
105     }
107     return($entries);
108   }
111 ?>