Report/SendEventErrors.php
[Pman.Admin] / Report / SendEventErrors.php
index 9925455..52607aa 100644 (file)
@@ -14,6 +14,20 @@ class Pman_Admin_Report_SendEventErrors extends Pman_Roo
             'min' => 1,
             'max' => 1,
         ),
+        'exclude' => array(
+            'desc' => 'list of actions to exclude from report',
+            'short' => 'e',
+            'default' => '',
+            'min' => 1,
+            'max' => 1,
+        ),
+        'subject' => array(
+            'desc' => 'email subject',
+            'short' => 's',
+            'default' => '',
+            'min' => 1,
+            'max' => 1,
+        ),
     );
     
     function getAuth()
@@ -47,15 +61,72 @@ class Pman_Admin_Report_SendEventErrors extends Pman_Roo
             $this->jerr("{$this->opts['group']} does not has any memeber");
         }
         
+//        $events = DB_DataObject::factory('Events');
+//        $events->selectAdd();
+//        $events->selectAdd("
+//            DISTINCT(Events.action) AS action,
+//            COUNT(Events.id) AS total
+//        ");
+//        
+//        $events->whereAdd("Events.event_when > NOW() - INTERVAL 1 DAY");
+//        
+//        if(!empty($this->opts['exclude'])){
+//            $exclude = array_unique(array_filter(array_map('trim', explode(',', $this->opts['exclude']))));
+//            
+//            if(!empty($exclude)){
+//                $events->whereAddIn('!Events.action', $exclude, 'string');
+//            }
+//        }
+//        
+//        $events->groupBy('Events.action');
+//        $events->orderBy('Events.action ASC');
+//        
+//        $totals = $events->fetchAll('action', 'total');
+//        
+//        if(empty($totals)){
+//            $this->jerr('Nothing to be sent');
+//        }
+//        
+//        $subject = array();
+//        
+//        foreach ($totals as $k => $v){
+//            $subject[] = "{$v} {$k}";
+//        }
+//        
+//        $subject = implode(', ', $subject);
+//        
+//        if(!empty($this->opts['subject'])){
+//            $subject = "{$this->opts['subject']} $subject";
+//        }
+        
         $events = DB_DataObject::factory('Events');
+        $events->autoJoin();
+        
         $events->selectAdd();
         $events->selectAdd("
-            DISTINCT(Events.action) AS action,
-            COUNT(Events.id) AS count
+            Events.event_when AS event_when,
+            Events.action AS action,
+            Events.remarks AS remarks
+            CASE WHEN Events.person_id != 0 THEN
+                join_person_id_id.email
+            WHEN Events.hydra_person_id != 0 THEN
+                join_hydra_person_id_id.email
+            ELSE
+                ''
+            END AS email
         ");
         
         $events->whereAdd("Events.event_when > NOW() - INTERVAL 1 DAY");
         
+        $exclude = array_unique(array_filter(array_map('trim', explode(',', $this->opts['exclude']))));
+        
+        if(!empty($exclude)){
+            $events->whereAddIn('!Events.action', $exclude, 'string');
+        }
+        
+        print_R($exclude);exit;
+        
+        
         $this->jok("Done");
         
     }