本文整理汇总了PHP中CRM_Core_BAO_ActionSchedule::sendReminder方法的典型用法代码示例。如果您正苦于以下问题:PHP CRM_Core_BAO_ActionSchedule::sendReminder方法的具体用法?PHP CRM_Core_BAO_ActionSchedule::sendReminder怎么用?PHP CRM_Core_BAO_ActionSchedule::sendReminder使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CRM_Core_BAO_ActionSchedule
的用法示例。
在下文中一共展示了CRM_Core_BAO_ActionSchedule::sendReminder方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: sendMailings
//.........这里部分代码省略.........
$extraJoin = "\nINNER JOIN civicrm_event ev ON e.event_id = ev.id\nINNER JOIN civicrm_option_group og ON og.name = 'event_type'\nINNER JOIN civicrm_option_value ov ON ev.event_type_id = ov.value AND ov.option_group_id = og.id\nLEFT JOIN civicrm_loc_block lb ON lb.id = ev.loc_block_id\nLEFT JOIN civicrm_address address ON address.id = lb.address_id\nLEFT JOIN civicrm_email email ON email.id = lb.email_id\nLEFT JOIN civicrm_phone phone ON phone.id = lb.phone_id\n";
if ($actionSchedule->limit_to == 0) {
$extraJoin = "\nLEFT JOIN civicrm_event ev ON e.event_id = ev.id\nLEFT JOIN civicrm_option_group og ON og.name = 'event_type'\nLEFT JOIN civicrm_option_value ov ON ev.event_type_id = ov.value AND ov.option_group_id = og.id\nLEFT JOIN civicrm_loc_block lb ON lb.id = ev.loc_block_id\nLEFT JOIN civicrm_address address ON address.id = lb.address_id\nLEFT JOIN civicrm_email email ON email.id = lb.email_id\nLEFT JOIN civicrm_phone phone ON phone.id = lb.phone_id\n";
}
}
if ($mapping->entity == 'civicrm_membership') {
$tokenEntity = 'membership';
$tokenFields = array('fee', 'id', 'join_date', 'start_date', 'end_date', 'status', 'type');
$extraSelect = ', mt.minimum_fee as fee, e.id as id , e.join_date, e.start_date, e.end_date, ms.name as status, mt.name as type';
$extraJoin = '
INNER JOIN civicrm_membership_type mt ON e.membership_type_id = mt.id
INNER JOIN civicrm_membership_status ms ON e.status_id = ms.id';
if ($actionSchedule->limit_to == 0) {
$extraJoin = '
LEFT JOIN civicrm_membership_type mt ON e.membership_type_id = mt.id
LEFT JOIN civicrm_membership_status ms ON e.status_id = ms.id';
}
}
if ($mapping->entity == 'civicrm_contact') {
$tokenEntity = 'contact';
//TODO: get full list somewhere!
$tokenFields = array('birth_date', 'last_name');
//TODO: is there anything to add here?
}
$entityJoinClause = "INNER JOIN {$mapping->entity} e ON e.id = reminder.entity_id";
if ($actionSchedule->limit_to == 0) {
$entityJoinClause = "LEFT JOIN {$mapping->entity} e ON e.id = reminder.entity_id";
$extraWhere .= " AND (e.id = reminder.entity_id OR reminder.entity_table = 'civicrm_contact')";
}
$entityJoinClause .= $extraOn;
$query = "\nSELECT reminder.id as reminderID, reminder.contact_id as contactID, reminder.*, e.id as entityID, e.* {$extraSelect}\nFROM civicrm_action_log reminder\n{$entityJoinClause}\n{$extraJoin}\nWHERE reminder.action_schedule_id = %1 AND reminder.action_date_time IS NULL\n{$extraWhere}";
$dao = CRM_Core_DAO::executeQuery($query, array(1 => array($actionSchedule->id, 'Integer')));
while ($dao->fetch()) {
$entityTokenParams = array();
foreach ($tokenFields as $field) {
if ($field == 'location') {
$loc = array();
$stateProvince = CRM_Core_PseudoConstant::stateProvince();
$loc['street_address'] = $dao->street_address;
$loc['city'] = $dao->city;
$loc['state_province'] = CRM_Utils_Array::value($dao->state_province_id, $stateProvince);
$loc['postal_code'] = $dao->postal_code;
$entityTokenParams["{$tokenEntity}." . $field] = CRM_Utils_Address::format($loc);
} elseif ($field == 'info_url') {
$entityTokenParams["{$tokenEntity}." . $field] = CRM_Utils_System::url('civicrm/event/info', 'reset=1&id=' . $dao->event_id, TRUE, NULL, FALSE);
} elseif ($field == 'registration_url') {
$entityTokenParams["{$tokenEntity}." . $field] = CRM_Utils_System::url('civicrm/event/register', 'reset=1&id=' . $dao->event_id, TRUE, NULL, FALSE);
} elseif (in_array($field, array('start_date', 'end_date', 'join_date', 'activity_date_time'))) {
$entityTokenParams["{$tokenEntity}." . $field] = CRM_Utils_Date::customFormat($dao->{$field});
} elseif ($field == 'balance') {
$info = CRM_Contribute_BAO_Contribution::getPaymentInfo($dao->entityID, 'event');
$balancePay = CRM_Utils_Array::value('balance', $info);
$balancePay = CRM_Utils_Money::format($balancePay);
$entityTokenParams["{$tokenEntity}." . $field] = $balancePay;
} elseif ($field == 'fee_amount') {
$entityTokenParams["{$tokenEntity}." . $field] = CRM_Utils_Money::format($dao->{$field});
} else {
$entityTokenParams["{$tokenEntity}." . $field] = $dao->{$field};
}
}
$isError = 0;
$errorMsg = $toEmail = $toPhoneNumber = '';
if ($actionSchedule->mode == 'SMS' or $actionSchedule->mode == 'User_Preference') {
$filters = array('is_deceased' => 0, 'is_deleted' => 0, 'do_not_sms' => 0);
$toPhoneNumbers = CRM_Core_BAO_Phone::allPhones($dao->contactID, FALSE, 'Mobile', $filters);
//to get primary mobile ph,if not get a first mobile phONE
if (!empty($toPhoneNumbers)) {
$toPhoneNumberDetails = reset($toPhoneNumbers);
$toPhoneNumber = CRM_Utils_Array::value('phone', $toPhoneNumberDetails);
//contact allows to send sms
$toDoNotSms = 0;
}
}
if ($actionSchedule->mode == 'Email' or $actionSchedule->mode == 'User_Preference') {
$toEmail = CRM_Contact_BAO_Contact::getPrimaryEmail($dao->contactID);
}
if ($toEmail || !(empty($toPhoneNumber) or $toDoNotSms)) {
$to['email'] = $toEmail;
$to['phone'] = $toPhoneNumber;
$result = CRM_Core_BAO_ActionSchedule::sendReminder($dao->contactID, $to, $actionSchedule->id, $fromEmailAddress, $entityTokenParams);
if (!$result || is_a($result, 'PEAR_Error')) {
// we could not send an email, for now we ignore, CRM-3406
$isError = 1;
}
} else {
$isError = 1;
$errorMsg = "Couldn\\'t find recipient\\'s email address.";
}
// update action log record
$logParams = array('id' => $dao->reminderID, 'is_error' => $isError, 'message' => $errorMsg ? $errorMsg : "null", 'action_date_time' => $now);
CRM_Core_BAO_ActionLog::create($logParams);
// insert activity log record if needed
if ($actionSchedule->record_activity) {
$activityParams = array('subject' => $actionSchedule->title, 'details' => $actionSchedule->body_html, 'source_contact_id' => $session->get('userID') ? $session->get('userID') : $dao->contactID, 'target_contact_id' => $dao->contactID, 'activity_date_time' => date('YmdHis'), 'status_id' => $activityStatusID, 'activity_type_id' => $activityTypeID, 'source_record_id' => $dao->entityID);
$activity = CRM_Activity_BAO_Activity::create($activityParams);
}
}
$dao->free();
}
}