*/
require_once 'Mail.php';
+
+/**
+ * Class CRM_Mailing_BAO_MailingJob
+ */
class CRM_Mailing_BAO_MailingJob extends CRM_Mailing_DAO_MailingJob {
CONST MAX_CONTACTS_TO_PROCESS = 1000;
/**
- * class constructor
+ * Class constructor
*/
function __construct() {
parent::__construct();
}
/**
- * @param $params
+ * @param array $params
*
* @return CRM_Mailing_BAO_MailingJob
*/
/**
* Initiate all pending/ready jobs
*
- * @param null $testParams
+ * @param array $testParams
* @param null $mode
*
* @return void
// post process to determine if the parent job
// as well as the mailing is complete after the run
+ /**
+ * @param null $mode
+ */
public static function runJobs_post($mode = NULL) {
$job = new CRM_Mailing_BAO_MailingJob();
// before we run jobs, we need to split the jobs
+ /**
+ * @param int $offset
+ * @param null $mode
+ */
public static function runJobs_pre($offset = 200, $mode = NULL) {
$job = new CRM_Mailing_BAO_MailingJob();
- $config = CRM_Core_Config::singleton();
$jobTable = CRM_Mailing_DAO_MailingJob::getTableName();
$mailingTable = CRM_Mailing_DAO_Mailing::getTableName();
// Split the parent job into n number of child job based on an offset
// If null or 0 , we create only one child job
+ /**
+ * @param int $offset
+ */
public function split_job($offset = 200) {
$recipient_count = CRM_Mailing_BAO_Recipients::mailingSize($this->mailing_id);
}
}
+ /**
+ * @param array $testParams
+ */
public function queue($testParams = NULL) {
$mailing = new CRM_Mailing_BAO_Mailing();
$mailing->id = $this->mailing_id;
/**
* Send the mailing
*
- * @param object $mailer A Mail object to send the messages
+ * @param object $mailer A Mail object to send the messages
+ *
+ * @param array $testParams
*
* @return void
* @access public
return $isDelivered;
}
+ /**
+ * @param $fields
+ * @param $mailing
+ * @param $mailer
+ * @param $job_date
+ * @param $attachments
+ *
+ * @return bool|null
+ * @throws Exception
+ */
public function deliverGroup(&$fields, &$mailing, &$mailer, &$job_date, &$attachments) {
static $smtpConnectionErrors = 0;
unset($errorScope);
}
- // FIXME: for now we skipping bounce handling for sms
if (is_a($result, 'PEAR_Error') && !$mailing->sms_provider_id) {
// CRM-9191
$message = $result->getMessage();
- if (strpos($message,
- 'Failed to write to socket'
- ) !== FALSE) {
+ if (
+ strpos($message, 'Failed to write to socket') !== FALSE ||
+ strpos($message, 'Failed to set sender') !== FALSE
+ ) {
// lets log this message and code
$code = $result->getCode();
- CRM_Core_Error::debug_log_message("SMTP Socket Error. Message: $message, Code: $code");
+ CRM_Core_Error::debug_log_message("SMTP Socket Error or failed to set sender error. Message: $message, Code: $code");
// these are socket write errors which most likely means smtp connection errors
// lets skip them
);
CRM_Mailing_Event_BAO_Bounce::create($params);
}
+ elseif (is_a($result, 'PEAR_Error') && $mailing->sms_provider_id) {
+ // Handle SMS errors: CRM-15426
+ $job_id = intval($this->id);
+ $mailing_id = intval($mailing->id);
+ CRM_Core_Error::debug_log_message("Failed to send SMS message. Vars: mailing_id: ${mailing_id}, job_id: ${job_id}. Error message follows.");
+ CRM_Core_Error::debug_log_message($result->getMessage());
+ }
else {
/* Register the delivery event */
$deliveredParams[] = $field['id'];
}
/**
- * cancel a mailing
+ * Cancel a mailing
*
* @param int $mailingId the id of the mailing to be canceled
* @static
return '';
}
+ /**
+ * @param array $deliveredParams
+ * @param array $targetParams
+ * @param $mailing
+ * @param $job_date
+ *
+ * @return bool
+ * @throws CRM_Core_Exception
+ * @throws Exception
+ */
public function writeToDB(
&$deliveredParams,
&$targetParams,