<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.4 |
+ | CiviCRM version 4.5 |
+--------------------------------------------------------------------+
| Copyright (C) 2011 Marty Wright |
| Licensed to CiviCRM under the Academic Free License version 3.0. |
/**
*
* @package CRM
- * @copyright CiviCRM LLC (c) 2004-2013
+ * @copyright CiviCRM LLC (c) 2004-2014
* $Id$
*
*/
/**
* Retrieve list of Scheduled Reminders
*
- * @param bool $namesOnly return simple list of names
+ * @param bool $namesOnly return simple list of names
+ *
+ * @param null $entityValue
+ * @param null $id
*
* @return array (reference) reminder list
* @static
* @access public
*/
static function &getList($namesOnly = FALSE, $entityValue = NULL, $id = NULL) {
- $activity_type = CRM_Core_PseudoConstant::activityType(FALSE) + CRM_Core_PseudoConstant::activityType(FALSE, TRUE);
+ $activity_type = CRM_Core_PseudoConstant::activityType(TRUE, TRUE);
$activity_status = CRM_Core_PseudoConstant::activityStatus();
$event_type = CRM_Event_PseudoConstant::eventType();
$auto_renew_options = CRM_Core_OptionGroup::values('auto_renew_options');
$civicrm_membership_type = CRM_Member_PseudoConstant::membershipType();
- asort($activity_type);
$entity = array(
'civicrm_activity' => 'Activity',
'civicrm_participant' => 'Event',
foreach ($matches[1] as $token) {
list($type, $name) = preg_split('/\./', $token, 2);
if ($name) {
- if (!isset($subjectToken['contact'])) {
- $subjectToken['contact'] = array();
+ if (!isset($subjectToken[$type])) {
+ $subjectToken[$type] = array();
}
- $subjectToken['contact'][] = $name;
+ $subjectToken[$type][] = $name;
}
}
}
$messageSubject = CRM_Utils_Token::replaceContactTokens($body_subject, $contact, FALSE, $subjectToken);
- $messageSubject = CRM_Utils_Token::replaceDomainTokens($messageSubject, $domain, TRUE, $tokens[$value]);
- $messageSubject = CRM_Utils_Token::replaceComponentTokens($messageSubject, $contact, $tokens[$value], TRUE);
+ $messageSubject = CRM_Utils_Token::replaceDomainTokens($messageSubject, $domain, TRUE, $subjectToken);
+ $messageSubject = CRM_Utils_Token::replaceComponentTokens($messageSubject, $contact, $subjectToken, TRUE);
$messageSubject = CRM_Utils_Token::replaceHookTokens($messageSubject, $contact, $categories, TRUE);
$messageSubject = $smarty->fetch("string:{$messageSubject}");
}
elseif ($field == 'balance') {
$info = CRM_Contribute_BAO_Contribution::getPaymentInfo($dao->entityID, 'event');
- $entityTokenParams["{$tokenEntity}." . $field] = CRM_Utils_Array::value('balance', $info);
+ $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;
}
}
- static function buildRecipientContacts($mappingID, $now) {
+ static function buildRecipientContacts($mappingID, $now, $params = array()) {
$actionSchedule = new CRM_Core_DAO_ActionSchedule();
$actionSchedule->mapping_id = $mappingID;
$actionSchedule->is_active = 1;
+ if(!empty($params)) {
+ _civicrm_api3_dao_set_filter($actionSchedule, $params, FALSE, 'ActionSchedule');
+ }
$actionSchedule->find();
while ($actionSchedule->fetch()) {
$insertAdditionalSql ="
INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_schedule_id)
{$addSelect}
-FROM ({$contactTable}, {$table})
+FROM ({$contactTable})
LEFT JOIN {$additionReminderClause}
{$addGroup}
-{$additionWhere} c.is_deleted = 0 AND c.is_deceased = 0
+WHERE c.is_deleted = 0 AND c.is_deceased = 0
{$addWhereClause}
-AND {$dateClause}
+
AND c.id NOT IN (
SELECT rem.contact_id
FROM civicrm_action_log rem INNER JOIN {$mapping->entity} e ON rem.entity_id = e.id
elseif ($actionSchedule->repetition_frequency_unit == 'week') {
$hrs = 24 * $actionSchedule->repetition_frequency_interval * 7;
}
+ elseif ($actionSchedule->repetition_frequency_unit == 'month') {
+ $hrs = "24*(DATEDIFF(DATE_ADD(latest_log_time, INTERVAL 1 MONTH ), latest_log_time))";
+ }
+ elseif ($actionSchedule->repetition_frequency_unit == 'year') {
+ $hrs = "24*(DATEDIFF(DATE_ADD(latest_log_time, INTERVAL 1 YEAR ), latest_log_time))";
+ }
else {
$hrs = $actionSchedule->repetition_frequency_interval;
}
return NULL;
}
- static function processQueue($now = NULL) {
+ static function processQueue($now = NULL, $params = array()) {
$now = $now ? CRM_Utils_Time::setTime($now) : CRM_Utils_Time::getTime();
$mappings = self::getMapping();
foreach ($mappings as $mappingID => $mapping) {
- self::buildRecipientContacts($mappingID, $now);
+ self::buildRecipientContacts($mappingID, $now, $params);
self::sendMailings($mappingID, $now);
}