<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.3 |
+ | CiviCRM version 4.4 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2013 |
+--------------------------------------------------------------------+
$storeRecipients = FALSE,
$dedupeEmail = FALSE,
$mode = NULL) {
- $mailingGroup = new CRM_Mailing_DAO_Group();
+ $mailingGroup = new CRM_Mailing_DAO_MailingGroup();
$mailing = CRM_Mailing_BAO_Mailing::getTableName();
- $job = CRM_Mailing_BAO_Job::getTableName();
- $mg = CRM_Mailing_DAO_Group::getTableName();
+ $job = CRM_Mailing_BAO_MailingJob::getTableName();
+ $mg = CRM_Mailing_DAO_MailingGroup::getTableName();
$eq = CRM_Mailing_Event_DAO_Queue::getTableName();
$ed = CRM_Mailing_Event_DAO_Delivered::getTableName();
$eb = CRM_Mailing_Event_DAO_Bounce::getTableName();
$limitString = NULL;
if ($limit && $offset !== NULL) {
$offset = CRM_Utils_Type::escape($offset, 'Int');
- $rowCount = CRM_Utils_Type::escape($rowCount, 'Int');
+ $limit = CRM_Utils_Type::escape($limit, 'Int');
$limitString = "LIMIT $offset, $limit";
}
}
private function _getMailingGroupIds($type = 'Include') {
- $mailingGroup = new CRM_Mailing_DAO_Group();
+ $mailingGroup = new CRM_Mailing_DAO_MailingGroup();
$group = CRM_Contact_DAO_Group::getTableName();
- if (!isset($thi->sid)) {
+ if (!isset($this->id)) {
// we're just testing tokens, so return any group
$query = "SELECT id AS entity_id
FROM $group
)) {
$textBody = join('', $text);
if ($useSmarty) {
- $smarty->security = TRUE;
- $textBody = $smarty->fetch("string:$textBody");
- $smarty->security = FALSE;
+ $textBody = $smarty->fetch("string:$textBody");
}
$mailParams['text'] = $textBody;
}
))) {
$htmlBody = join('', $html);
if ($useSmarty) {
- $smarty->security = TRUE;
- $htmlBody = $smarty->fetch("string:$htmlBody");
- $smarty->security = FALSE;
+ $htmlBody = $smarty->fetch("string:$htmlBody");
}
$mailParams['html'] = $htmlBody;
}
* domain and mailing tokens
*
*/
- static function tokenReplace(&$mailing) {
+ public static function tokenReplace(&$mailing) {
$domain = CRM_Core_BAO_Domain::getDomain();
foreach (array('text', 'html') as $type) {
if (!isset($this->id)) {
return array();
}
- $mg = new CRM_Mailing_DAO_Group();
- $mgtable = CRM_Mailing_DAO_Group::getTableName();
+ $mg = new CRM_Mailing_DAO_MailingGroup();
+ $mgtable = CRM_Mailing_DAO_MailingGroup::getTableName();
$group = CRM_Contact_BAO_Group::getTableName();
$mg->query("SELECT $group.title as name FROM $mgtable
$mailingTableName = CRM_Mailing_BAO_Mailing::getTableName();
/* Create the mailing group record */
- $mg = new CRM_Mailing_DAO_Group();
+ $mg = new CRM_Mailing_DAO_MailingGroup();
foreach (array('groups', 'mailings') as $entity) {
foreach (array('include', 'exclude', 'base') as $type) {
if (isset($params[$entity]) &&
* CRM_Mailing_Form_Schedule::postProcess() or via API.
*/
if (isset($params['approval_status_id']) && $params['approval_status_id']) {
- $job = new CRM_Mailing_BAO_Job();
+ $job = new CRM_Mailing_BAO_MailingJob();
$job->mailing_id = $mailing->id;
$job->status = 'Scheduled';
$job->is_test = 0;
$job->scheduled_date = $params['scheduled_date'];
$job->save();
// Populate the recipients.
- $mailing->getRecipients($job->id, $mailing->id, NULL, NULL, true, false);
+ $mailing->getRecipients($job->id, $mailing->id, NULL, NULL, TRUE, FALSE);
}
return $mailing;
$t = array(
'mailing' => self::getTableName(),
- 'mailing_group' => CRM_Mailing_DAO_Group::getTableName(),
+ 'mailing_group' => CRM_Mailing_DAO_MailingGroup::getTableName(),
'group' => CRM_Contact_BAO_Group::getTableName(),
- 'job' => CRM_Mailing_BAO_Job::getTableName(),
+ 'job' => CRM_Mailing_BAO_MailingJob::getTableName(),
'queue' => CRM_Mailing_Event_BAO_Queue::getTableName(),
'delivered' => CRM_Mailing_Event_BAO_Delivered::getTableName(),
'opened' => CRM_Mailing_Event_BAO_Opened::getTableName(),
$row['optout'] = CRM_Mailing_Event_BAO_Unsubscribe::getTotalCount($mailing_id, $mailing->id, TRUE, FALSE);
$report['event_totals']['optout'] += $row['optout'];
- foreach (array_keys(CRM_Mailing_BAO_Job::fields()) as $field) {
+ foreach (array_keys(CRM_Mailing_BAO_MailingJob::fields()) as $field) {
$row[$field] = $mailing->$field;
}
// get all the groups that this user can access
// if they dont have universal access
- $groups = CRM_Core_PseudoConstant::group(null, false);
+ $groups = CRM_Core_PseudoConstant::group(NULL, FALSE);
if (!empty($groups)) {
$groupIDs = implode(',', array_keys($groups));
- $selectClause = ($count) ? 'COUNT( DISTINCT m.id) as count' : 'DISTINCT( m.id ) as id';
// get all the mailings that are in this subset of groups
$query = "
-SELECT $selectClause
+SELECT DISTINCT( m.id ) as id
FROM civicrm_mailing m
LEFT JOIN civicrm_mailing_group g ON g.mailing_id = m.id
WHERE ( ( g.entity_table like 'civicrm_group%' AND g.entity_id IN ( $groupIDs ) )
*/
public function &getRows($offset, $rowCount, $sort, $additionalClause = NULL, $additionalParams = NULL) {
$mailing = self::getTableName();
- $job = CRM_Mailing_BAO_Job::getTableName();
- $group = CRM_Mailing_DAO_Group::getTableName();
+ $job = CRM_Mailing_BAO_MailingJob::getTableName();
+ $group = CRM_Mailing_DAO_MailingGroup::getTableName();
$session = CRM_Core_Session::singleton();
$mailingACL = self::mailingACL();
CRM_Core_Error::fatal();
}
+ CRM_Utils_Hook::pre('delete', 'Mailing', $id, CRM_Core_DAO::$_nullArray);
+
// delete all file attachments
CRM_Core_BAO_File::deleteEntityFile('civicrm_mailing',
$id
$dao->delete();
CRM_Core_Session::setStatus(ts('Selected mailing has been deleted.'), ts('Deleted'), 'success');
+
+ CRM_Utils_Hook::post('delete', 'Mailing', $id, $dao);
}
/**
CRM_Core_Error::fatal();
}
- $dao = new CRM_Mailing_BAO_Job();
+ $dao = new CRM_Mailing_BAO_MailingJob();
$dao->id = $id;
$dao->delete();
}
);
- $form->_templates = CRM_Core_BAO_MessageTemplates::getMessageTemplates(FALSE);
+ $form->_templates = CRM_Core_BAO_MessageTemplate::getMessageTemplates(FALSE);
if (!empty($form->_templates)) {
$form->assign('templates', TRUE);
$form->add('select', 'template', ts('Use Template'),
if (CRM_Utils_System::getClassName($form) == 'CRM_Mailing_Form_Upload') {
$tokens = array_merge(CRM_Core_SelectValues::mailingTokens(), $tokens);
}
-
+ //@todo move this fn onto the form
if (CRM_Utils_System::getClassName($form) == 'CRM_Contribute_Form_Task_PDFLetter') {
$tokens = array_merge(CRM_Core_SelectValues::contributionTokens(), $tokens);
}
+ if(method_exists($form, 'listTokens')) {
+ $tokens = array_merge($form->listTokens(), $tokens);
+ }
+
//sorted in ascending order tokens by ignoring word case
natcasesort($tokens);
)
);
- $form->_templates = CRM_Core_BAO_MessageTemplates::getMessageTemplates(FALSE);
+ $form->_templates = CRM_Core_BAO_MessageTemplate::getMessageTemplates(FALSE);
if (!empty($form->_templates)) {
$form->assign('templates', TRUE);
$form->add('select', 'template', ts('Select Template'),
* @access public
*/
public function searchMailingIDs() {
- $group = CRM_Mailing_DAO_Group::getTableName();
+ $group = CRM_Mailing_DAO_MailingGroup::getTableName();
$mailing = self::getTableName();
$query = "
// CRM_Core_Error::debug_log_message("Beginning processQueue run: {$config->mailerJobsMax}, {$config->mailerJobSize}");
if ($mode == NULL && CRM_Core_BAO_MailSettings::defaultDomain() == "EXAMPLE.ORG") {
- CRM_Core_Error::fatal(ts('The <a href="%1">default mailbox</a> has not been configured. You will find <a href="%2">more info in the online user and administrator guide</a>', array(1 => CRM_Utils_System::url('civicrm/admin/mailSettings', 'reset=1'), 2 => "http://book.civicrm.org/user/initial-set-up/email-system-configuration")));
+ CRM_Core_Error::fatal(ts('The <a href="%1">default mailbox</a> has not been configured. You will find <a href="%2">more info in the online user and administrator guide</a>', array(1 => CRM_Utils_System::url('civicrm/admin/mailSettings', 'reset=1'), 2 => "http://book.civicrm.org/user/advanced-configuration/email-system-configuration/")));
}
// check if we are enforcing number of parallel cron jobs
shuffle($lockArray);
// check if we are using global locks
- $serverWideLock = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME,
+ $serverWideLock = CRM_Core_BAO_Setting::getItem(
+ CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME,
'civimail_server_wide_lock'
);
foreach ($lockArray as $lockID) {
// load bootstrap to call hooks
// Split up the parent jobs into multiple child jobs
- CRM_Mailing_BAO_Job::runJobs_pre($config->mailerJobSize, $mode);
- CRM_Mailing_BAO_Job::runJobs(NULL, $mode);
- CRM_Mailing_BAO_Job::runJobs_post($mode);
+ CRM_Mailing_BAO_MailingJob::runJobs_pre($config->mailerJobSize, $mode);
+ CRM_Mailing_BAO_MailingJob::runJobs(NULL, $mode);
+ CRM_Mailing_BAO_MailingJob::runJobs_post($mode);
// lets release the global cron lock if we do have one
if ($gotCronLock) {
return TRUE;
}
- private function addMultipleEmails($mailingID) {
+ private static function addMultipleEmails($mailingID) {
$sql = "
INSERT INTO civicrm_mailing_recipients
(mailing_id, email_id, contact_id)
$params = array( 1 => array( $mid, 'Integer' ) );
return CRM_Core_DAO::singleValueQuery($sql, $params);
}
+
+ /**
+ * This function is a wrapper for ajax activity selector
+ *
+ * @param array $params associated array for params record id.
+ *
+ * @return array $contactActivities associated array of contact activities
+ * @access public
+ */
+ public static function getContactMailingSelector(&$params) {
+ // format the params
+ $params['offset'] = ($params['page'] - 1) * $params['rp'];
+ $params['rowCount'] = $params['rp'];
+ $params['sort'] = CRM_Utils_Array::value('sortBy', $params);
+ $params['caseId'] = NULL;
+
+ // get contact mailings
+ $mailings = CRM_Mailing_BAO_Mailing::getContactMailings($params);
+
+ // add total
+ $params['total'] = CRM_Mailing_BAO_Mailing::getContactMailingsCount($params);
+
+ //CRM-12814
+ if (!empty($mailings)) {
+ $openCounts = CRM_Mailing_Event_BAO_Opened::getMailingTotalCount(array_keys($mailings));
+ $clickCounts = CRM_Mailing_Event_BAO_TrackableURLOpen::getMailingTotalCount(array_keys($mailings));
+ }
+
+ // format params and add links
+ $contactMailings = array();
+ foreach ($mailings as $mailingId => $values) {
+ $contactMailings[$mailingId]['subject'] = $values['subject'];
+ $contactMailings[$mailingId]['start_date'] = CRM_Utils_Date::customFormat($values['start_date']);
+ $contactMailings[$mailingId]['recipients'] = CRM_Utils_System::href(ts('(recipients)'), 'civicrm/mailing/report/event',
+ "mid={$values['mailing_id']}&reset=1&cid={$params['contact_id']}&event=queue&context=mailing");
+
+ $contactMailings[$mailingId]['mailing_creator'] = CRM_Utils_System::href(
+ $values['creator_name'],
+ 'civicrm/contact/view',
+ "reset=1&cid={$values['creator_id']}");
+
+ //CRM-12814
+ $contactMailings[$mailingId]['openstats'] = ts('Opens') . ': ' . $openCounts[$values['mailing_id']] .
+ '<br />' . ts('Clicks') . ': ' . $clickCounts[$values['mailing_id']];
+
+ $actionLinks = array(
+ CRM_Core_Action::VIEW => array(
+ 'name' => ts('View'),
+ 'url' => 'civicrm/mailing/view',
+ 'qs' => "reset=1&id={$values['mailing_id']}",
+ 'title' => ts('View Mailing'),
+ 'class' => 'crm-mailing-view',
+ ),
+ CRM_Core_Action::BROWSE => array(
+ 'name' => ts('Mailing Report'),
+ 'url' => 'civicrm/mailing/report',
+ 'qs' => "mid={$values['mailing_id']}&reset=1&cid={$params['contact_id']}&context=mailing",
+ 'title' => ts('View Mailing Report'),
+ )
+ );
+
+ $contactMailings[$mailingId]['links'] = CRM_Core_Action::formLink($actionLinks);
+ }
+
+ return $contactMailings;
+ }
+
+ /**
+ * Function to retrieve contact mailing
+ *
+ * @param array $params associated array
+ *
+ * @return array of mailings for a contact
+ *
+ * @static
+ * @access public
+ */
+ static public function getContactMailings(&$params) {
+ $params['version'] = 3;
+ $params['offset'] = ($params['page'] - 1) * $params['rp'];
+ $params['limit'] = $params['rp'];
+ $params['sort'] = CRM_Utils_Array::value('sortBy', $params);
+
+ $result = civicrm_api('MailingContact', 'get', $params);
+ return $result['values'];
+ }
+
+ /**
+ * Function to retrieve contact mailing count
+ *
+ * @param array $params associated array
+ *
+ * @return int count of mailings for a contact
+ *
+ * @static
+ * @access public
+ */
+ static public function getContactMailingsCount(&$params) {
+ $params['version'] = 3;
+ return civicrm_api('MailingContact', 'getcount', $params);
+ }
}