1 <?php
3 class filterSYSTEMS {
5 static function query($base, $scope, $filter, $attributes, $category, $objectStorage= "")
6 {
7 $entries = filterLDAP::query($base, $scope, $filter, $attributes, $category, $objectStorage);
9 foreach($entries as $key => $entry){
10 if(preg_match("/".preg_quote(get_ou('systemIncomingRDN'),'/')."/i", $entry['dn'])){
12 // Detect incoming types
13 if(in_array('gotoWorkstation', $entry['objectClass'])){
14 $entries[$key]['objectClass'][] = 'FAKE_OC_NewWorkstation';
15 $entries[$key]['cn'][0].= " <i>("._("New workstation").")</i>";
16 }elseif(in_array('gotoTerminal', $entry['objectClass'])){
17 $entries[$key]['objectClass'][] = 'FAKE_OC_NewTerminal';
18 $entries[$key]['cn'][0].= " <i>("._("New terminal").")</i>";
19 }elseif(in_array('GOhard', $entry['objectClass']) && !isset($entry['gotoMode'][0])){
20 $entries[$key]['objectClass'][] = 'FAKE_OC_NewUnknownDevice';
21 $entries[$key]['cn'][0].= " <i>("._("New unknown device").")</i>";
22 }elseif(in_array('GOhard', $entry['objectClass'])){
23 $entries[$key]['objectClass'][] = 'FAKE_OC_NewDevice';
24 $entries[$key]['cn'][0].= " <i>("._("New device").")</i>";
25 }
27 // Detect SAMBA machines
28 }elseif(in_array('sambaSamAccount', $entry['objectClass']) && preg_match("/\$$/", $entry['cn'][0])){
29 $entries[$key]['objectClass'][] = 'FAKE_OC_winstation';
31 // Detect Workstation templates
32 }elseif(in_array('gotoWorkstation', $entry['objectClass'])){
33 if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
34 $entries[$key]['objectClass'][] = 'FAKE_OC_WorkstationTemplate';
35 }
37 // Detect Terminal templates
38 }elseif(in_array('gotoTerminal', $entry['objectClass'])){
39 if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
40 $entries[$key]['objectClass'][] = 'FAKE_OC_TerminalTemplate';
41 }
43 // Detect Server templates
44 }elseif(in_array('goServer', $entry['objectClass'])){
45 if(!isset($entry['macAddress'][0]) || $entry['macAddress'][0] == "-"){
46 $entries[$key]['objectClass'][] = 'FAKE_OC_ServerTemplate';
47 }
48 }
50 // Detect object states
51 foreach(array('gotoWorkstation','gotoTerminal','goServer') as $type){
52 if(in_array($type, $entry['objectClass'])){
54 if(isset($entry['gotoMode'][0]) && preg_match("/locked/i", $entry['gotoMode'][0])){
55 $entries[$key]['objectClass'][] = $type."__IS_LOCKED";
56 }elseif(isset($entry['FAIstate'][0])){
57 switch (preg_replace('/:.*$/', '', $entry['FAIstate'][0])) {
58 case 'error':
59 $state= '__IS_ERROR';
60 break;
61 case 'installing':
62 case 'install':
63 case 'sysinfo':
64 case 'softupdate':
65 case 'scheduledupdate':
66 $state= '__IS_BUSY';
67 break;
68 default: $state ="";
69 }
70 if(!empty($state)) $entries[$key]['objectClass'][] = $type.$state;
71 }
72 }
73 }
74 }
76 return($entries);
77 }
79 }
81 ?>