X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FMailing%2FBAO%2FMailing.php;h=373ab95bafff07da3a7e279b11eb71612e9f2c97;hb=73c37eb63179394e2195c642480eb0c13ed217bb;hp=a5bd167453df5b44066317c27f17d5021cec9e94;hpb=360269e5c3d8e900c6f404b882bafd6c331a4e06;p=civicrm-core.git diff --git a/CRM/Mailing/BAO/Mailing.php b/CRM/Mailing/BAO/Mailing.php index a5bd167453..373ab95baf 100644 --- a/CRM/Mailing/BAO/Mailing.php +++ b/CRM/Mailing/BAO/Mailing.php @@ -712,10 +712,12 @@ ORDER BY {$orderBy} } /** - * * Prepares the text and html templates * for generating the emails and returns a copy of the * prepared templates + * + * @deprecated + * This is used by CiviMail but will be made redundant by FlexMailer/TokenProcessor. */ private function getPreparedTemplates() { if (!$this->preparedTemplates) { @@ -789,7 +791,7 @@ ORDER BY {$orderBy} } // To check for an html part strip tags - if (trim(strip_tags($this->body_html))) { + if (trim(strip_tags($this->body_html, ''))) { $template = array(); if ($this->header) { @@ -1155,6 +1157,8 @@ ORDER BY civicrm_email.is_bulkmail DESC /** * Compose a message. * + * @deprecated + * This is used by CiviMail but will be made redundant by FlexMailer/TokenProcessor. * @param int $job_id * ID of the Job associated with this message. * @param int $event_queue_id @@ -1439,6 +1443,8 @@ ORDER BY civicrm_email.is_bulkmail DESC * * Get mailing object and replaces subscribeInvite, domain and mailing tokens. * + * @deprecated + * This is used by CiviMail but will be made redundant by FlexMailer/TokenProcessor. * @param CRM_Mailing_BAO_Mailing $mailing */ public static function tokenReplace(&$mailing) { @@ -1462,6 +1468,9 @@ ORDER BY civicrm_email.is_bulkmail DESC /** * Get data to resolve tokens. * + * @deprecated + * This is used by CiviMail but will be made redundant by FlexMailer/TokenProcessor. + * * @param array $token_a * @param bool $html * Whether to encode the token result for use in HTML email @@ -1605,11 +1614,19 @@ ORDER BY civicrm_email.is_bulkmail DESC ) { $params['replyto_email'] = $params['from_email']; } - $mailing->copyValues($params); + // CRM-20892 Unset Modifed Date here so that MySQL can correctly set an updated modfied date. + unset($mailing->modified_date); $result = $mailing->save(); + // CRM-20892 Re find record after saing so we can set the updated modified date in the result. + $mailing->find(TRUE); + + if (isset($mailing->modified_date)) { + $result->modified_date = $mailing->modified_date; + } + if (!empty($ids['mailing'])) { CRM_Utils_Hook::post('edit', 'Mailing', $mailing->id, $mailing); } @@ -1736,7 +1753,6 @@ ORDER BY civicrm_email.is_bulkmail DESC CRM_Contact_BAO_Contact_Utils::generateChecksum($mailing->id, NULL, NULL, NULL, 'mailing', 16); $groupTableName = CRM_Contact_BAO_Group::getTableName(); - $mailingTableName = CRM_Mailing_BAO_Mailing::getTableName(); /* Create the mailing group record */ $mg = new CRM_Mailing_DAO_MailingGroup(); @@ -1764,7 +1780,7 @@ ORDER BY civicrm_email.is_bulkmail DESC CRM_Core_BAO_File::processAttachment($params, 'civicrm_mailing', $mailing->id); // If we're going to autosend, then check validity before saving. - if (!empty($params['scheduled_date']) && $params['scheduled_date'] != 'null' && !empty($params['_evil_bao_validator_'])) { + if (empty($params['is_completed']) && !empty($params['scheduled_date']) && $params['scheduled_date'] != 'null' && !empty($params['_evil_bao_validator_'])) { $cb = Civi\Core\Resolver::singleton()->get($params['_evil_bao_validator_']); $errors = call_user_func($cb, $mailing); if (!empty($errors)) { @@ -1780,7 +1796,9 @@ ORDER BY civicrm_email.is_bulkmail DESC if (!empty($params['scheduled_date']) && $params['scheduled_date'] != 'null' && empty($params['_skip_evil_bao_auto_schedule_'])) { $job = new CRM_Mailing_BAO_MailingJob(); $job->mailing_id = $mailing->id; - $job->status = 'Scheduled'; + // If we are creating a new Completed mailing (e.g. import from another system) set the job to completed. + // Keeping former behaviour when an id is present is precautionary and may warrant reconsideration later. + $job->status = ((empty($params['is_completed']) || !empty($params['id'])) ? 'Scheduled' : 'Complete'); $job->is_test = 0; if (!$job->find(TRUE)) { @@ -1804,6 +1822,8 @@ ORDER BY civicrm_email.is_bulkmail DESC } /** + * @deprecated + * This is used by CiviMail but will be made redundant by FlexMailer. * @param CRM_Mailing_DAO_Mailing $mailing * The mailing which may or may not be sendable. * @return array @@ -2228,7 +2248,8 @@ ORDER BY civicrm_email.is_bulkmail DESC ON {$t['queue']}.job_id = {$t['job']}.id WHERE {$t['url']}.mailing_id = $mailing_id AND {$t['job']}.is_test = 0 - GROUP BY {$t['url']}.id"); + GROUP BY {$t['url']}.id + ORDER BY unique_clicks DESC"); $report['click_through'] = array(); @@ -2667,6 +2688,8 @@ LEFT JOIN civicrm_mailing_group g ON g.mailing_id = m.id } /** + * @deprecated + * This is used by CiviMail but will be made redundant by FlexMailer/TokenProcessor. * @return array */ public function getReturnProperties() { @@ -2912,9 +2935,9 @@ WHERE civicrm_mailing_job.id = %1 $config = CRM_Core_Config::singleton(); if ($mode == NULL && CRM_Core_BAO_MailSettings::defaultDomain() == "EXAMPLE.ORG") { - throw new CRM_Core_Exception(ts('The default mailbox has not been configured. You will find more info in the online user and administrator guide', array( + throw new CRM_Core_Exception(ts('The default mailbox has not been configured. You will find more info in the online system administrator guide', array( 1 => CRM_Utils_System::url('civicrm/admin/mailSettings', 'reset=1'), - 2 => "http://book.civicrm.org/user/advanced-configuration/email-system-configuration/", + 2 => "https://docs.civicrm.org/sysadmin/en/latest/setup/civimail/", ))); }