Report/SendEventErrors.php
[Pman.Admin] / Report / SendEventErrors.php
index 41d3930..3f8909f 100644 (file)
@@ -43,13 +43,15 @@ class Pman_Admin_Report_SendEventErrors extends Pman_Roo
     
     function get($args, $opts)
     {
-        $this->opts = $opts;
+        $mailOptions = PEAR::getStaticProperty('Mail','options');
+        
         
-        $this->transObj = DB_DataObject::Factory('core_enum');
+        HTML_FlexyFramework::get()->Mail['helo'] = 'test';
         
-        $this->transObj->query('BEGIN');
+        $pg = HTML_FlexyFramework::get()->Mail;
+        print_R($pg);exit;
         
-        PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
+        $this->opts = $opts;
         
         if(empty($this->opts['group'])){
             $this->jerr('Missing group - try add [-t {group name}]');
@@ -61,52 +63,53 @@ 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->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');
+        
+        $summary = $events->fetchAll('action', 'total');
+        
+        if(empty($summary)){
+            $this->jerr('Nothing to be sent');
+        }
+        
+        $subject = array();
+        
+        foreach ($summary 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("
+            Events.id AS id,
             Events.event_when AS event_when,
             Events.action AS action,
-            Events.remarks AS remarks
+            Events.remarks AS remarks,
             CASE WHEN Events.person_id != 0 THEN
                 join_person_id_id.email
             WHEN Events.hydra_person_id != 0 THEN
@@ -118,15 +121,32 @@ class Pman_Admin_Report_SendEventErrors extends Pman_Roo
         
         $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');
         }
         
-        $events->groupBy('Events.action');
-        $events->orderBy('Events.action ASC');
+        if(!$events->count()){
+            $this->jerr('Nothing to be sent');
+        }
+        
+        $errors = $events->fetchAll();
         
+        $content = array(
+            'template'      => 'EVENT_ERRORS_REPORT',
+            'rcpts'         => $rcpts,
+            'errors'        => $errors,
+            'subject'       => $subject
+        );
+
+        $sent = DB_DataObject::factory('core_email')->send($content);
+        
+        if(!is_object($sent)){
+            $this->jok("Done");
+        }
         
-        $this->jok("Done");
+        $this->jerr($sent);
         
     }