Example #1
0
/**
 * Function which needs to be explained.
 *
 * @param array $params
 *
 * @return array
 * @throws \API_Exception
 */
function civicrm_api3_mailing_stats($params)
{
    civicrm_api3_verify_mandatory($params, 'CRM_Mailing_DAO_MailingJob', array('mailing_id'), FALSE);
    if ($params['date'] == 'now') {
        $params['date'] = date('YmdHis');
    } else {
        $params['date'] = CRM_Utils_Date::processDate($params['date'] . ' ' . $params['date_time']);
    }
    $stats[$params['mailing_id']] = array();
    if (empty($params['job_id'])) {
        $params['job_id'] = NULL;
    }
    foreach (array('Delivered', 'Bounces', 'Unsubscribers', 'Unique Clicks', 'Opened') as $detail) {
        switch ($detail) {
            case 'Delivered':
                $stats[$params['mailing_id']] += array($detail => CRM_Mailing_Event_BAO_Delivered::getTotalCount($params['mailing_id'], $params['job_id'], FALSE, $params['date']));
                break;
            case 'Bounces':
                $stats[$params['mailing_id']] += array($detail => CRM_Mailing_Event_BAO_Bounce::getTotalCount($params['mailing_id'], $params['job_id'], FALSE, $params['date']));
                break;
            case 'Unsubscribers':
                $stats[$params['mailing_id']] += array($detail => CRM_Mailing_Event_BAO_Unsubscribe::getTotalCount($params['mailing_id'], $params['job_id'], FALSE, NULL, $params['date']));
                break;
            case 'Unique Clicks':
                $stats[$params['mailing_id']] += array($detail => CRM_Mailing_Event_BAO_TrackableURLOpen::getTotalCount($params['mailing_id'], $params['job_id'], FALSE, NULL, $params['date']));
                break;
            case 'Opened':
                $stats[$params['mailing_id']] += array($detail => CRM_Mailing_Event_BAO_Opened::getTotalCount($params['mailing_id'], $params['job_id'], FALSE, $params['date']));
                break;
        }
    }
    return civicrm_api3_create_success($stats);
}
Example #2
0
 /**
  * Returns total number of rows for the query.
  *
  * @param
  *
  * @return int Total number of rows
  * @access public
  */
 function getTotalCount($action)
 {
     switch ($this->_event_type) {
         case 'queue':
             $event = new CRM_Mailing_Event_BAO_Queue();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id);
             break;
         case 'delivered':
             $event = new CRM_Mailing_Event_BAO_Delivered();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct);
             break;
         case 'opened':
             $event = new CRM_Mailing_Event_BAO_Opened();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct);
             break;
         case 'bounce':
             $event = new CRM_Mailing_Event_BAO_Bounce();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct);
             break;
         case 'forward':
             $event = new CRM_Mailing_Event_BAO_Forward();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct);
             break;
         case 'reply':
             $event = new CRM_Mailing_Event_BAO_Reply();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct);
             break;
         case 'unsubscribe':
             $event = new CRM_Mailing_Event_BAO_Unsubscribe();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct);
             break;
         case 'optout':
             $event = new CRM_Mailing_Event_BAO_Unsubscribe();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct, FALSE);
             break;
         case 'click':
             $event = new CRM_Mailing_Event_BAO_TrackableURLOpen();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct, $this->_url_id);
             break;
         default:
             return 0;
     }
 }
Example #3
0
 /**
  * Returns total number of rows for the query.
  *
  * @param 
  * @return int Total number of rows 
  * @access public
  */
 function getTotalCount($action)
 {
     switch ($this->_event_type) {
         case 'queue':
             require_once 'CRM/Mailing/Event/BAO/Queue.php';
             $event = new CRM_Mailing_Event_BAO_Queue();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id);
             break;
         case 'delivered':
             require_once 'CRM/Mailing/Event/BAO/Delivered.php';
             $event = new CRM_Mailing_Event_BAO_Delivered();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct);
             break;
         case 'opened':
             require_once 'CRM/Mailing/Event/BAO/Opened.php';
             $event = new CRM_Mailing_Event_BAO_Opened();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct);
             break;
         case 'bounce':
             require_once 'CRM/Mailing/Event/BAO/Bounce.php';
             $event = new CRM_Mailing_Event_BAO_Bounce();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct);
             break;
         case 'forward':
             require_once 'CRM/Mailing/Event/BAO/Forward.php';
             $event = new CRM_Mailing_Event_BAO_Forward();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct);
             break;
         case 'reply':
             require_once 'CRM/Mailing/Event/BAO/Reply.php';
             $event = new CRM_Mailing_Event_BAO_Reply();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct);
             break;
         case 'unsubscribe':
             require_once 'CRM/Mailing/Event/BAO/Unsubscribe.php';
             $event = new CRM_Mailing_Event_BAO_Unsubscribe();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct);
             break;
         case 'click':
             require_once 'CRM/Mailing/Event/BAO/TrackableURLOpen.php';
             $event = new CRM_Mailing_Event_BAO_TrackableURLOpen();
             return $event->getTotalCount($this->_mailing_id, $this->_job_id, $this->_is_distinct, $this->_url_id);
             break;
         default:
             return 0;
     }
 }