Code

Updated gotomasses
[gosa.git] / gosa-plugins / goto / addons / goto / class_filterGotoEvents.inc
1 <?php
2 class filterGotoEvents extends  filterLDAP {
3   static function query($base, $scope, $filter, $attributes, $category, $objectStorage= "")
4   {
5     global $config;
7     $o_queue = new gosaSupportDaemon(TRUE,5);
8     $events  = DaemonEvent::get_event_types( SYSTEM_EVENT);
10     /* Get tags that will be used in queue searches */
11     $event_tags = array("none");
12     foreach($events['SCHEDULED'] as $evt){
13       $event_tags[] = $evt['s_Queued_Action'];
14     }
16     $entries = $o_queue->get_queued_entries($event_tags,0,9999999,"id");
17     if ($o_queue->is_error()){
18       msg_dialog::display(_("Error"), sprintf(_("Cannot load queue entries: %s"), "<br><br>".$o_queue->get_error()), ERROR_DIALOG);
19     }
21     /* Assign entries by id.
22      */
23     $data= array();
24     $ui = get_userinfo();
27     $ui= get_userinfo();
28     $acl_base = $config->current['BASE'];
29     $acl_is_writeable = preg_match('/w/', $ui->get_permissions($acl_base, "gotomasses/gotomasses", "0"));
30     $acl_is_removeable = preg_match('/d/', $ui->get_permissions($acl_base, "gotomasses/gotomasses", "0"));
31     $acl_is_readable = preg_match('/r/', $ui->get_permissions($acl_base, "gotomasses/gotomasses", "0"));
33     foreach($entries as $entry){
35       // Detect entry status 
36       $entry['objectClass'][] = "FAKE_OC__gotoEvent";
38       /* If WAITING add priority action
39        */
40       if(in_array($entry['STATUS'],array("waiting")) && $acl_is_writeable){
41         $entry['objectClass'][] = "FAKE_OC__prioUp";
42         $entry['objectClass'][] = "FAKE_OC__prioDown";
43         $entry['objectClass'][] = "FAKE_OC__prioPause";
44       }
46       /* If PAUSED add resume action
47        */
48       if(in_array($entry['STATUS'],array("paused")) && $acl_is_writeable){
49         $entry['objectClass'][] = "FAKE_OC__prioResume";
50       }
52       /* If PAUSED or WAITING add execution action
53        */
54       if(in_array($entry['STATUS'],array("paused","waiting")) && $acl_is_writeable){
55         $entry['objectClass'][] = "FAKE_OC__processNow";
56       }
58       /* Add logview button, currently ever.
59        */
60       if($acl_is_readable){
61         $entry['objectClass'][] = "FAKE_OC__viewLogs";
62       }
64       /* If PAUSED or WAITING add edit action
65        */
66       if(in_array($entry['STATUS'],array("waiting")) && $acl_is_writeable){
67         $entry['objectClass'][] = "FAKE_OC__edit";
68       }
71       /* If PROCESSING add abort action
72        */
73       if(in_array($entry['STATUS'],array("processing")) && preg_match("/install/",$entry['HEADERTAG']) && $acl_is_writeable){
74         $entry['objectClass'][] = "FAKE_OC__abort";
75       }
77       /* If WAITING or ERROR add remove action
78        */
79       if( $acl_is_removeable && in_array($entry['STATUS'],array("waiting","error","processed"))){
80         $entry['objectClass'][] = "FAKE_OC__remove";
81       }
82       if($acl_is_writeable && in_array($entry['STATUS'],array("processing")) && !preg_match("/install/",$entry['HEADERTAG'])){
83         $entry['objectClass'][] = "FAKE_OC__remove";
84       }
86       $item = array();
87       $item['count'] = 0;
88       $item['dn']= $entry['MACADDRESS'].",".$entry['TIMESTAMP'];
90       foreach($entry as $name => $value){
91         $item[] = $name;
92         if(!is_array($value)){
93           $item[$name]=array('count' => 1, $value);
94         }else{
95           $item[$name] = $value;
96           $item[$name]['count'] = count($value);
97         }
98         $item['count'] ++;
99       }
102 #     /* Skip entries which will be removed within the next seconds */
103 #     if(isset($entry['MACADDRESS']) && in_array($entry['MACADDRESS'],$recently_removed)){
104 #       continue;
105 #     }
106       $data[] = $item;
107     }
109     return($data);
110   }
112 ?>