Code

Updated systems to display pwd change icon
[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();
9     $entries = filterLDAP::query($base, $scope, $filter, $attributes, $category, $objectStorage);
10     foreach($entries as $key => $entry){
11       if(preg_match("/".preg_quote(get_ou('systemIncomingRDN'),'/')."/i", $entry['dn'])){
13         // Detect incoming types
14         if(in_array('gotoWorkstation', $entry['objectClass'])){
15           $entries[$key]['objectClass'][] = 'FAKE_OC_NewWorkstation';
16           $entries[$key]['cn'][0].= " <i>("._("New workstation").")</i>";
17         }elseif(in_array('gotoTerminal', $entry['objectClass'])){
18           $entries[$key]['objectClass'][] = 'FAKE_OC_NewTerminal';
19           $entries[$key]['cn'][0].= " <i>("._("New terminal").")</i>";
20         }elseif(in_array('GOhard', $entry['objectClass']) && !isset($entry['gotoMode'][0])){ 
21           $entries[$key]['objectClass'][] = 'FAKE_OC_ArpNewDevice';
22           $entries[$key]['cn'][0].= " <i>("._("New unknown device").")</i>";
23         }elseif(in_array('GOhard', $entry['objectClass'])){
24           $entries[$key]['objectClass'][] = 'FAKE_OC_NewDevice';
25           $entries[$key]['cn'][0].= " <i>("._("New device").")</i>";
26         }
28       // Detect SAMBA machines
29       }elseif(in_array('sambaSamAccount', $entry['objectClass']) && preg_match("/\$$/", $entry['cn'][0])){
30         $entries[$key]['objectClass'][] = 'FAKE_OC_winstation';
32       // Detect Workstation & templates
33       }elseif(in_array('gotoWorkstation', $entry['objectClass'])){
34         if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
35           $entries[$key]['objectClass'][] = 'FAKE_OC_WorkstationTemplate';
36         }
37         $pwd_acl = $ui->get_permissions($entry['dn'],'workstation/workgeneric','userPassword');
38         if(preg_match("/w/",$pwd_acl)){
39           $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
40         }
42       // Detect Terminal & templates
43       }elseif(in_array('gotoTerminal', $entry['objectClass'])){
44         if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
45           $entries[$key]['objectClass'][] = 'FAKE_OC_TerminalTemplate';
46         }
47         $pwd_acl = $ui->get_permissions($entry['dn'],'terminal/termgeneric','userPassword');
48         if(preg_match("/w/",$pwd_acl)){
49           $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
50         }
52       // Detect Server & templates
53       }elseif(in_array('goServer', $entry['objectClass'])){
54         if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
55           $entries[$key]['objectClass'][] = 'FAKE_OC_ServerTemplate';
56         }
57         $pwd_acl = $ui->get_permissions($entry['dn'],'server/servgeneric','userPassword');
58         if(preg_match("/w/",$pwd_acl)){
59           $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
60         }
62       // Detect ieee802Device
63       }elseif(in_array('ieee802Device', $entry['objectClass'])){
64         $pwd_acl = $ui->get_permissions($entry['dn'],'component/componentGeneric','userPassword');
65         if(preg_match("/w/",$pwd_acl)){
66           $entries[$key]['objectClass'][] = 'FAKE_OC_PWD_changeAble';
67         }
68       }
70       // Detect object states
71       foreach(array('gotoWorkstation','gotoTerminal','goServer') as $type){
72         if(in_array($type, $entry['objectClass'])){
74           if(isset($entry['gotoMode'][0]) && preg_match("/locked/i", $entry['gotoMode'][0])){
75             $entries[$key]['objectClass'][] = $type."__IS_LOCKED";
76           }elseif(isset($entry['FAIstate'][0])){
77             switch (preg_replace('/:.*$/', '', $entry['FAIstate'][0])) {
78               case 'error':
79                 $state= '__IS_ERROR';
80                 break;
81               case 'installing':
82               case 'install':
83               case 'sysinfo':
84               case 'softupdate':
85               case 'scheduledupdate':
86                 $state= '__IS_BUSY';
87                 break;
88               default: $state ="";
89             }
90             if(!empty($state)) $entries[$key]['objectClass'][] = $type.$state;
91           }
92         }
93       }
94     }
96     // Append opsi stuff ...
97     global $config;
98     $ui = get_userinfo();
99     if(preg_match("/FAIstate=__NETBOOT__/", $filter) && 
100         class_available('opsi') &&
101         $base == $config->current['BASE']){
103       // Check ACLs and opsi handle
104       $opsi_acl = $ui->get_permissions($base,"opsi/opsiProperties");
105       $opsi = new opsi($config);
106       $objects = array();
107       if($opsi instanceof opsi && $opsi->enabled() && preg_match("/r/",$opsi_acl)){
109         // Get list of opsi hosts 
110         $opsi_clients = $opsi->get_hosts_for_system_management();
111         if($opsi->is_error()){
112           msg_dialog::display(_("Error"),msgPool::siError($opsi->get_error()),ERROR_DIALOG);
113         }else{
114           foreach($opsi_clients as $entry){
115             $entry['objectClass'] = array("FAKE_OC_OpsiHost");
116             $item = array('count' => count($entry));
117             foreach($entry as  $name => $value){
118               $item[] = $name;
119               $item[$name] = $value;
120             }
121             $entries[] = $item;
122           }
123         }
124       }
125     }
126     return($entries);
127   }
130 ?>