diff --git a/gosa-plugins/goto/addons/goto/class_filterGotoEvents.inc b/gosa-plugins/goto/addons/goto/class_filterGotoEvents.inc
index fdb665c1476b4ef72af9fb77688ff1e188319991..55416a8f76c51be5541e2c024d1a13a013ae6216 100644 (file)
class filterGotoEvents extends filterLDAP {
static function query($base, $scope, $filter, $attributes, $category, $objectStorage= "")
{
-
+ global $config;
$o_queue = new gosaSupportDaemon(TRUE,5);
$events = DaemonEvent::get_event_types( SYSTEM_EVENT);
+ /* Get tags that will be used in queue searches */
+ $event_tags = array("none");
+ foreach($events['SCHEDULED'] as $evt){
+ $event_tags[] = $evt['s_Queued_Action'];
+ }
$entries = $o_queue->get_queued_entries($event_tags,0,9999999,"id");
if ($o_queue->is_error()){
/* Assign entries by id.
*/
$data= array();
+ $ui = get_userinfo();
+
+
+ $ui= get_userinfo();
+ $acl_base = $config->current['BASE'];
+ $acl_is_writeable = preg_match('/w/', $ui->get_permissions($acl_base, "gotomasses/gotomasses", "0"));
+ $acl_is_removeable = preg_match('/d/', $ui->get_permissions($acl_base, "gotomasses/gotomasses", "0"));
+ $acl_is_readable = preg_match('/r/', $ui->get_permissions($acl_base, "gotomasses/gotomasses", "0"));
+
foreach($entries as $entry){
+ // Detect entry status
+ $entry['objectClass'][] = "FAKE_OC__gotoEvent";
+
+ /* If WAITING add priority action
+ */
+ if(in_array($entry['STATUS'],array("waiting")) && $acl_is_writeable){
+ $entry['objectClass'][] = "FAKE_OC__prioUp";
+ $entry['objectClass'][] = "FAKE_OC__prioDown";
+ $entry['objectClass'][] = "FAKE_OC__prioPause";
+ }
+
+ /* If PAUSED add resume action
+ */
+ if(in_array($entry['STATUS'],array("paused")) && $acl_is_writeable){
+ $entry['objectClass'][] = "FAKE_OC__prioResume";
+ }
+
+ /* If PAUSED or WAITING add execution action
+ */
+ if(in_array($entry['STATUS'],array("paused","waiting")) && $acl_is_writeable){
+ $entry['objectClass'][] = "FAKE_OC__processNow";
+ }
+
+ /* Add logview button, currently ever.
+ */
+ if($acl_is_readable){
+ $entry['objectClass'][] = "FAKE_OC__viewLogs";
+ }
+
+ /* If PAUSED or WAITING add edit action
+ */
+ if(in_array($entry['STATUS'],array("waiting")) && $acl_is_writeable){
+ $entry['objectClass'][] = "FAKE_OC__edit";
+ }
+
+
+ /* If PROCESSING add abort action
+ */
+ if(in_array($entry['STATUS'],array("processing")) && preg_match("/install/",$entry['HEADERTAG']) && $acl_is_writeable){
+ $entry['objectClass'][] = "FAKE_OC__abort";
+ }
+
+ /* If WAITING or ERROR add remove action
+ */
+ if( $acl_is_removeable && in_array($entry['STATUS'],array("waiting","error","processed"))){
+ $entry['objectClass'][] = "FAKE_OC__remove";
+ }
+ if($acl_is_writeable && in_array($entry['STATUS'],array("processing")) && !preg_match("/install/",$entry['HEADERTAG'])){
+ $entry['objectClass'][] = "FAKE_OC__remove";
+ }
+
$item = array();
-
$item['count'] = 0;
- $item['dn']= implode($entry,", item=");
+ $item['EVENT'] = $entry;
+ $item['dn']= $entry['MACADDRESS'].",".$entry['TIMESTAMP'];
foreach($entry as $name => $value){
$item[] = $name;
- $item[$name]=array('count' => 1, $value);
+ if(!is_array($value)){
+ $item[$name]=array('count' => 1, $value);
+ }else{
+ $item[$name] = $value;
+ $item[$name]['count'] = count($value);
+ }
$item['count'] ++;
}
# /* Skip entries which will be removed within the next seconds */
-# if(isset($entry['MACADDRESS']) && in_array($entry['MACADDRESS'],$this->recently_removed)){
+# if(isset($entry['MACADDRESS']) && in_array($entry['MACADDRESS'],$recently_removed)){
# continue;
# }
$data[] = $item;
}
+
return($data);
}
}