本文整理汇总了PHP中CRM_Core_BAO_ActionSchedule::prepareMailingQuery方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Core_BAO_ActionSchedule::prepareMailingQuery方法的具体用法?PHP CRM_Core_BAO_ActionSchedule::prepareMailingQuery怎么用?PHP CRM_Core_BAO_ActionSchedule::prepareMailingQuery使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRM_Core_BAO_ActionSchedule
的用法示例。
在下文中一共展示了CRM_Core_BAO_ActionSchedule::prepareMailingQuery方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: sendMailings
/**
* @param int $mappingID
* @param $now
*
* @throws CRM_Core_Exception
*/
public static function sendMailings($mappingID, $now)
{
$mapping = CRM_Utils_Array::first(self::getMappings(array('id' => $mappingID)));
$actionSchedule = new CRM_Core_DAO_ActionSchedule();
$actionSchedule->mapping_id = $mappingID;
$actionSchedule->is_active = 1;
$actionSchedule->find(FALSE);
while ($actionSchedule->fetch()) {
$query = CRM_Core_BAO_ActionSchedule::prepareMailingQuery($mapping, $actionSchedule);
$dao = CRM_Core_DAO::executeQuery($query, array(1 => array($actionSchedule->id, 'Integer')));
$multilingual = CRM_Core_I18n::isMultilingual();
while ($dao->fetch()) {
// switch language if necessary
if ($multilingual) {
$preferred_language = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $dao->contactID, 'preferred_language');
CRM_Core_BAO_ActionSchedule::setCommunicationLanguage($actionSchedule->communication_language, $preferred_language);
}
$errors = array();
try {
$tokenProcessor = self::createTokenProcessor($actionSchedule, $mapping);
$tokenProcessor->addRow()->context('contactId', $dao->contactID)->context('actionSearchResult', (object) $dao->toArray());
foreach ($tokenProcessor->evaluate()->getRows() as $tokenRow) {
if ($actionSchedule->mode == 'SMS' or $actionSchedule->mode == 'User_Preference') {
CRM_Utils_Array::extend($errors, self::sendReminderSms($tokenRow, $actionSchedule, $dao->contactID));
}
if ($actionSchedule->mode == 'Email' or $actionSchedule->mode == 'User_Preference') {
CRM_Utils_Array::extend($errors, self::sendReminderEmail($tokenRow, $actionSchedule, $dao->contactID));
}
}
} catch (\Civi\Token\TokenException $e) {
$errors['token_exception'] = $e->getMessage();
}
// update action log record
$logParams = array('id' => $dao->reminderID, 'is_error' => !empty($errors), 'message' => empty($errors) ? "null" : implode(' ', $errors), 'action_date_time' => $now);
CRM_Core_BAO_ActionLog::create($logParams);
// insert activity log record if needed
if ($actionSchedule->record_activity && empty($errors)) {
$caseID = empty($dao->case_id) ? NULL : $dao->case_id;
CRM_Core_BAO_ActionSchedule::createMailingActivity($actionSchedule, $mapping, $dao->contactID, $dao->entityID, $caseID);
}
}
$dao->free();
}
}