X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FMailing%2FBAO%2FMailing.php;h=18c7fd3f077a5ba80f3fd767e5bdc71022f5b469;hb=0bc483648ce59a68bb752827b218f6976689660e;hp=04b68ead1065ee61db9cf982b6383292fc536804;hpb=d4970f3d8e4a3bb128b84af96ff1b892b44b4fa6;p=civicrm-core.git diff --git a/CRM/Mailing/BAO/Mailing.php b/CRM/Mailing/BAO/Mailing.php index 04b68ead10..18c7fd3f07 100644 --- a/CRM/Mailing/BAO/Mailing.php +++ b/CRM/Mailing/BAO/Mailing.php @@ -312,7 +312,7 @@ WHERE c.group_id = {$groupDAO->id} AND $g2contact.status = 'Added' AND $contact.do_not_email = 0 AND $contact.is_opt_out = 0 - AND $contact.is_deceased = 0 + AND $contact.is_deceased <> 1 AND $location_filter AND $email.email IS NOT NULL AND $email.email != '' @@ -343,7 +343,7 @@ WHERE c.group_id = {$groupDAO->id} AND $g2contact.status = 'Added' AND $contact.do_not_sms = 0 AND $contact.is_opt_out = 0 - AND $contact.is_deceased = 0 + AND $contact.is_deceased <> 1 AND $phone.phone_type_id = {$phoneTypes['Mobile']} AND $phone.phone IS NOT NULL AND $phone.phone != '' @@ -372,7 +372,7 @@ WHERE c.group_id = {$groupDAO->id} ($mg.group_type = 'Include') AND $contact.do_not_email = 0 AND $contact.is_opt_out = 0 - AND $contact.is_deceased = 0 + AND $contact.is_deceased <> 1 AND $location_filter AND $email.on_hold = 0 AND $mg.mailing_id = {$mailing_id} @@ -398,7 +398,7 @@ WHERE c.group_id = {$groupDAO->id} ($mg.group_type = 'Include') AND $contact.do_not_sms = 0 AND $contact.is_opt_out = 0 - AND $contact.is_deceased = 0 + AND $contact.is_deceased <> 1 AND $phone.phone_type_id = {$phoneTypes['Mobile']} AND $mg.mailing_id = {$mailing_id} AND X_$job_id.contact_id IS null"; @@ -425,7 +425,7 @@ WHERE $mg.entity_table = '$group' } $smartGroupInclude = " -INSERT IGNORE INTO I_$job_id (email_id, contact_id) +REPLACE INTO I_$job_id (email_id, contact_id) SELECT civicrm_email.id as email_id, c.id as contact_id FROM civicrm_contact c INNER JOIN civicrm_email ON civicrm_email.contact_id = c.id @@ -434,7 +434,7 @@ LEFT JOIN X_$job_id ON X_$job_id.contact_id = c.id WHERE gc.group_id = {$groupDAO->id} AND c.do_not_email = 0 AND c.is_opt_out = 0 - AND c.is_deceased = 0 + AND c.is_deceased <> 1 AND $location_filter AND civicrm_email.on_hold = 0 AND X_$job_id.contact_id IS null @@ -442,7 +442,7 @@ $order_by "; if ($mode == 'sms') { $smartGroupInclude = " -INSERT IGNORE INTO I_$job_id (phone_id, contact_id) +REPLACE INTO I_$job_id (phone_id, contact_id) SELECT p.id as phone_id, c.id as contact_id FROM civicrm_contact c INNER JOIN civicrm_phone p ON p.contact_id = c.id @@ -451,7 +451,7 @@ LEFT JOIN X_$job_id ON X_$job_id.contact_id = c.id WHERE gc.group_id = {$groupDAO->id} AND c.do_not_sms = 0 AND c.is_opt_out = 0 - AND c.is_deceased = 0 + AND c.is_deceased <> 1 AND p.phone_type_id = {$phoneTypes['Mobile']} AND X_$job_id.contact_id IS null"; } @@ -498,7 +498,7 @@ AND $mg.mailing_id = {$mailing_id} AND $g2contact.status = 'Added' AND $contact.do_not_email = 0 AND $contact.is_opt_out = 0 - AND $contact.is_deceased = 0 + AND $contact.is_deceased <> 1 AND $location_filter AND $email.on_hold = 0 AND $mg.mailing_id = {$mailing_id} @@ -523,7 +523,7 @@ AND $mg.mailing_id = {$mailing_id} AND $g2contact.status = 'Added' AND $contact.do_not_sms = 0 AND $contact.is_opt_out = 0 - AND $contact.is_deceased = 0 + AND $contact.is_deceased <> 1 AND $phone.phone_type_id = {$phoneTypes['Mobile']} AND $mg.mailing_id = {$mailing_id} AND X_$job_id.contact_id IS null"; @@ -939,7 +939,7 @@ INNER JOIN civicrm_contact ON civicrm_email.contact_id = civicrm_contact.id WHERE (civicrm_email.is_bulkmail = 1 OR civicrm_email.is_primary = 1) AND civicrm_contact.id = {$groupContact} AND civicrm_contact.do_not_email = 0 -AND civicrm_contact.is_deceased = 0 +AND civicrm_contact.is_deceased <> 1 AND civicrm_email.on_hold = 0 AND civicrm_contact.is_opt_out = 0 GROUP BY civicrm_email.id @@ -1472,7 +1472,7 @@ ORDER BY civicrm_email.is_bulkmail DESC if ($this->url_tracking) { $data = CRM_Mailing_BAO_TrackableURL::getTrackerURL($token, $this->id, $event_queue_id); if (!empty($html)) { - $data = htmlentities($data); + $data = htmlentities($data, ENT_NOQUOTES); } } else { @@ -1752,7 +1752,7 @@ ORDER BY civicrm_email.is_bulkmail DESC // Populate the recipients. if (empty($params['_skip_evil_bao_auto_recipients_'])) { - self::getRecipients($job->id, $mailing->id, NULL, NULL, TRUE, FALSE); + self::getRecipients($job->id, $mailing->id, NULL, NULL, TRUE, $mailing->dedupe_email); } } @@ -2637,19 +2637,10 @@ LEFT JOIN civicrm_mailing_group g ON g.mailing_id = m.id */ public static function commonCompose(&$form) { //get the tokens. - $tokens = CRM_Core_SelectValues::contactTokens(); + $tokens = array(); - $className = CRM_Utils_System::getClassName($form); - if ($className == 'CRM_Mailing_Form_Upload') { - $tokens = array_merge(CRM_Core_SelectValues::mailingTokens(), $tokens); - } - elseif ($className == 'CRM_Admin_Form_ScheduleReminders') { - $tokens = array_merge(CRM_Core_SelectValues::activityTokens(), $tokens); - $tokens = array_merge(CRM_Core_SelectValues::eventTokens(), $tokens); - $tokens = array_merge(CRM_Core_SelectValues::membershipTokens(), $tokens); - } - elseif ($className == 'CRM_Event_Form_ManageEvent_ScheduleReminders') { - $tokens = array_merge(CRM_Core_SelectValues::eventTokens(), $tokens); + if (method_exists($form, 'listTokens')) { + $tokens = array_merge($form->listTokens(), $tokens); } //sorted in ascending order tokens by ignoring word case @@ -2660,6 +2651,8 @@ LEFT JOIN civicrm_mailing_group g ON g.mailing_id = m.id $textFields = array('text_message' => ts('HTML Format'), 'sms_text_message' => ts('SMS Message')); $modePrefixes = array('Mail' => NULL, 'SMS' => 'SMS'); + $className = CRM_Utils_System::getClassName($form); + if ($className != 'CRM_SMS_Form_Upload' && $className != 'CRM_Contact_Form_Task_SMS' && $className != 'CRM_Contact_Form_Task_SMS' ) { @@ -2704,7 +2697,6 @@ LEFT JOIN civicrm_mailing_group g ON g.mailing_id = m.id else { $templates[$prefix] = CRM_Core_BAO_MessageTemplate::getMessageTemplates(FALSE); } - if (!empty($templates[$prefix])) { $form->assign('templates', TRUE); @@ -2720,60 +2712,11 @@ LEFT JOIN civicrm_mailing_group g ON g.mailing_id = m.id ); $form->add('text', "{$prefix}saveTemplateName", ts('Template Title')); } - } - /** - * Build the compose PDF letter form. - * - * @param CRM_Core_Form $form - * - * @return void - */ - public static function commonLetterCompose(&$form) { - //get the tokens. - $tokens = CRM_Core_SelectValues::contactTokens(); - 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); - } - - $form->assign('tokens', CRM_Utils_Token::formatTokensForDisplay($tokens)); - - $form->_templates = CRM_Core_BAO_MessageTemplate::getMessageTemplates(FALSE); - if (!empty($form->_templates)) { - $form->assign('templates', TRUE); - $form->add('select', 'template', ts('Select Template'), - array( - '' => ts('- select -'), - ) + $form->_templates, FALSE, - array('onChange' => "selectValue( this.value,'' );") - ); - $form->add('checkbox', 'updateTemplate', ts('Update Template'), NULL); - } - - $form->add('checkbox', 'saveTemplate', ts('Save As New Template'), NULL, FALSE, - array('onclick' => "showSaveDetails(this);") - ); - $form->add('text', 'saveTemplateName', ts('Template Title')); - - $form->add('wysiwyg', 'html_message', - ts('Your Letter'), - array( - 'cols' => '80', - 'rows' => '8', - 'onkeyup' => "return verify(this)", - ) - ); + // I'm not sure this is ever called. $action = CRM_Utils_Request::retrieve('action', 'String', $form, FALSE); if ((CRM_Utils_System::getClassName($form) == 'CRM_Contact_Form_Task_PDF') && - $action == CRM_Core_Action::VIEW + $action == CRM_Core_Action::VIEW ) { $form->freeze('html_message'); } @@ -2906,17 +2849,13 @@ WHERE civicrm_mailing_job.id = %1 // CRM-8460 $gotCronLock = FALSE; - if (property_exists($config, 'mailerJobsMax') && $config->mailerJobsMax && $config->mailerJobsMax > 1) { + if (property_exists($config, 'mailerJobsMax') && $config->mailerJobsMax && $config->mailerJobsMax > 0) { $lockArray = range(1, $config->mailerJobsMax); shuffle($lockArray); // check if we are using global locks - $serverWideLock = CRM_Core_BAO_Setting::getItem( - CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, - 'civimail_server_wide_lock' - ); foreach ($lockArray as $lockID) { - $cronLock = new CRM_Core_Lock("civimail.cronjob.{$lockID}", NULL, $serverWideLock); + $cronLock = Civi\Core\Container::singleton()->get('lockManager')->acquire("worker.mailing.send.{$lockID}"); if ($cronLock->isAcquired()) { $gotCronLock = TRUE; break; @@ -2928,6 +2867,11 @@ WHERE civicrm_mailing_job.id = %1 CRM_Core_Error::debug_log_message('Returning early, since max number of cronjobs running'); return TRUE; } + + if (getenv('CIVICRM_CRON_HOLD')) { + // In testing, we may need to simulate some slow activities. + sleep(getenv('CIVICRM_CRON_HOLD')); + } } // load bootstrap to call hooks