$activityIDs = explode(',', $activityIDs);
}
+ // CRM-20441 Check if user has access to the activities.
+ // This is a temporary fix we need to figure out the rules around
+ // the right permissions to access Activities.
+ // This attpemts to reduce fatal errors in 4.7.19 RC.
+ if (!empty($activityIDs)) {
+ foreach ($activityIDs as $key => $activityId) {
+ try {
+ civicrm_api3('Activity', 'get', array('id' => $activityId, 'check_permissions' => 1));
+ }
+ catch (Exception $e) {
+ unset($activityIDs[$key]);
+ }
+ }
+ }
+
// fetch all active activity types
$activityTypes = CRM_Core_OptionGroup::values('activity_type');
$activityParams['activity_type_id'] = array('IN' => array_keys($activityTypes));
}
+ $excludeActivityIDs = array();
if (!empty($params['activity_type_exclude_id'])) {
if (is_array($params['activity_type_exclude_id'])) {
foreach ($params['activity_type_exclude_id'] as $idx => $value) {
- $params['activity_type_exclude_id'][$idx] = CRM_Utils_Type::escape($value, 'Positive');
+ $excludeActivityIDs[$idx] = CRM_Utils_Type::escape($value, 'Positive');
}
- $activityParams['activity_type_id'] = array('NOT IN' => $params['activity_type_exclude_id']);
}
else {
- $activityParams['activity_type_id'] = array('!=' => CRM_Utils_Type::escape($params['activity_type_exclude_id'], 'Positive'));
+ $excludeActivityIDs[] = CRM_Utils_Type::escape($params['activity_type_exclude_id'], 'Positive');
}
}
) {
$activityParams['options']['limit'] = $params['rowCount'];
}
+ // set limit = 0 if we need to fetch the activity count
+ elseif ($getCount) {
+ $activityParams['options']['limit'] = 0;
+ }
if (!empty($params['sort'])) {
if (is_a($params['sort'], 'CRM_Utils_Sort')) {
);
foreach ($result['values'] as $id => $activity) {
- // skip case activities if CiviCase is not enabled
- if (!empty($activity['case_id']) && !in_array('CiviCase', $enabledComponents)) {
+ // skip case activities if CiviCase is not enabled OR those actvities which are
+ if ((!empty($activity['case_id']) && !in_array('CiviCase', $enabledComponents)) ||
+ (count($excludeActivityIDs) && in_array($activity['activity_type_id'], $excludeActivityIDs))
+ ) {
continue;
}
$cc = NULL,
$bcc = NULL,
$contactIds = NULL,
- $additionalDetails = NULL
+ $additionalDetails = NULL,
+ $contributionIds = NULL
) {
// get the contact details of logged in contact, which we set as from email
if ($userID == NULL) {
$escapeSmarty = TRUE;
}
+ $contributionDetails = array();
+ if (!empty($contributionIds)) {
+ $contributionDetails = CRM_Contribute_BAO_Contribution::replaceContributionTokens(
+ $contributionIds,
+ $subject,
+ $subjectToken,
+ $text,
+ $html,
+ $messageToken,
+ $escapeSmarty
+ );
+ }
+
$sent = $notSent = array();
foreach ($contactDetails as $values) {
$contactId = $values['contact_id'];
$emailAddress = $values['email'];
+ if (!empty($contributionDetails)) {
+ $subject = $contributionDetails[$contactId]['subject'];
+ $text = $contributionDetails[$contactId]['text'];
+ $html = $contributionDetails[$contactId]['html'];
+ }
+
if (!empty($details) && is_array($details["{$contactId}"])) {
// unset email from details since it always returns primary email address
unset($details["{$contactId}"]['email']);
}
/**
+ * @deprecated - use the api instead.
+ *
* Get the Activities of a target contact.
*
* @param int $contactId
* array of activity fields
*/
public static function getContactActivity($contactId) {
+ // @todo remove this function entirely.
$activities = array();
$activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name');
$sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts);