);
}
else {
- $q = "action=view&reset=1&id={$activity->id}&atype={$activity->activity_type_id}&cid={" . CRM_Utils_Array::value('source_contact_id', $params) . "}&context=home";
+ $q = "action=view&reset=1&id={$activity->id}&atype={$activity->activity_type_id}&cid=" . CRM_Utils_Array::value('source_contact_id', $params) . "&context=home";
if ($activity->activity_type_id != CRM_Core_OptionGroup::getValue('activity_type', 'Email', 'name')) {
$url = CRM_Utils_System::url('civicrm/activity', $q);
if ($activity->activity_type_id == CRM_Core_OptionGroup::getValue('activity_type', 'Print PDF Letter', 'name')) {
$url = CRM_Utils_System::url('civicrm/activity/view', $q);
if (CRM_Core_Permission::check('delete activities')) {
$recentOther['deleteUrl'] = CRM_Utils_System::url('civicrm/activity',
- "action=delete&reset=1&id={$activity->id}&atype={$activity->activity_type_id}&cid={" . CRM_Utils_Array::value('source_contact_id', $params) . "}&context=home"
+ "action=delete&reset=1&id={$activity->id}&atype={$activity->activity_type_id}&cid=" . CRM_Utils_Array::value('source_contact_id', $params) . "&context=home"
);
}
}
'name'
);
+ $activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name');
+ $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts);
+ $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts);
+ $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts);
+
$config = CRM_Core_Config::singleton();
$randomNum = md5(uniqid());
}
$input['count'] = FALSE;
-
- // skip bulk activities in activity tab
- $input['activity_type_exclude_id'][$bulkActivityTypeID] = $bulkActivityTypeID;
list($sqlClause, $params) = self::getActivitySQLClause($input);
$query = "{$insertSQL}
$activityContactTempTable = "civicrm_temp_activity_contact_{$randomNum}";
$query = "CREATE TEMPORARY TABLE {$activityContactTempTable} (
activity_id int unsigned, contact_id int unsigned, record_type_id varchar(16),
- contact_name varchar(255), is_deleted int unsigned, INDEX index_activity_id( activity_id ) )
+ contact_name varchar(255), is_deleted int unsigned, counter int unsigned, INDEX index_activity_id( activity_id ) )
ENGINE=MYISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci";
CRM_Core_DAO::executeQuery($query);
c.sort_name,
c.is_deleted
FROM {$activityTempTable}
-INNER JOIN civicrm_activity a ON ( a.id = {$activityTempTable}.activity_id )
+INNER JOIN civicrm_activity a ON ( a.id = {$activityTempTable}.activity_id )
INNER JOIN civicrm_activity_contact ac ON ( ac.activity_id = {$activityTempTable}.activity_id )
INNER JOIN civicrm_contact c ON c.id = ac.contact_id
+WHERE ac.record_type_id != %1
";
- CRM_Core_DAO::executeQuery($query);
+ $params = array(1 => array($targetID, 'Integer'));
+ CRM_Core_DAO::executeQuery($query, $params);
+
+ // for each activity insert one target contact
+ // if we load all target contacts the performance will suffer a lot for mass-activities;
+ $query = "
+INSERT INTO {$activityContactTempTable} ( activity_id, contact_id, record_type_id, contact_name, is_deleted, counter )
+SELECT ac.activity_id,
+ ac.contact_id,
+ ac.record_type_id,
+ c.sort_name,
+ c.is_deleted,
+ count(ac.contact_id)
+FROM {$activityTempTable}
+INNER JOIN civicrm_activity a ON ( a.id = {$activityTempTable}.activity_id )
+INNER JOIN civicrm_activity_contact ac ON ( ac.activity_id = {$activityTempTable}.activity_id )
+INNER JOIN civicrm_contact c ON c.id = ac.contact_id
+WHERE ac.record_type_id = %1
+GROUP BY ac.activity_id
+";
+
+ CRM_Core_DAO::executeQuery($query, $params);
// step 3: Combine all temp tables to get final query for activity selector
// sort by the original sort order, stored in fixed_sort_order
{$activityContactTempTable}.contact_id,
{$activityContactTempTable}.record_type_id,
{$activityContactTempTable}.contact_name,
- {$activityContactTempTable}.is_deleted
+ {$activityContactTempTable}.is_deleted,
+ {$activityContactTempTable}.counter
FROM {$activityTempTable}
INNER JOIN {$activityContactTempTable} on {$activityTempTable}.activity_id = {$activityContactTempTable}.activity_id
ORDER BY fixed_sort_order
";
-
$dao = CRM_Core_DAO::executeQuery($query);
//CRM-3553, need to check user has access to target groups.
//get all campaigns.
$allCampaigns = CRM_Campaign_BAO_Campaign::getCampaigns(NULL, NULL, FALSE, FALSE, FALSE, TRUE);
-
$values = array();
- $activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name');
- $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts);
- $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts);
- $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts);
-
-
while ($dao->fetch()) {
$activityID = $dao->activity_id;
$values[$activityID]['activity_id'] = $dao->activity_id;
if (empty($values[$activityID]['target_contact_name'])) {
$values[$activityID]['target_contact_name'] = array();
+ $values[$activityID]['target_contact_counter'] = $dao->counter;
}
// if deleted, wrap in <del>
$values[$activityID]['case_subject'] = $dao->case_subject;
}
else {
- $values[$activityID]['recipients'] = ts('(recipients)');
+ $values[$activityID]['recipients'] = ts('(%1 recipients)', array(1 => $dao->counter));
$values[$activityID]['mailingId'] = false;
if (
$accessCiviMail &&
* @static
*/
static function &getActivitiesCount($input) {
- // skip bulk activities in activity tab
- $bulkActivityTypeID = CRM_Core_OptionGroup::getValue(
- 'activity_type',
- 'Bulk Email',
- 'name'
- );
- $input['activity_type_exclude_id'][$bulkActivityTypeID] = $bulkActivityTypeID;
-
$input['count'] = TRUE;
list($sqlClause, $params) = self::getActivitySQLClause($input);
$activityParams['target_contact_id'][] = $activity->contact_id;
}
+ // CRM-14945
+ if (property_exists($activity, 'details')) {
+ $activityParams['details'] = $activity->details;
+ }
//CRM-4027
if ($targetContactID) {
$activityParams['target_contact_id'][] = $targetContactID;
elseif (!empty($values['recipients'])) {
$contactActivities[$activityId]['target_contact'] = $values['recipients'];
}
- elseif (!$values['target_contact_name']) {
- $contactActivities[$activityId]['target_contact'] = '<em>n/a</em>';
- }
- elseif (!empty($values['target_contact_name'])) {
- $count = 0;
- $contactActivities[$activityId]['target_contact'] = '';
+ elseif (isset($values['target_contact_counter']) && $values['target_contact_counter']) {
foreach ($values['target_contact_name'] as $tcID => $tcName) {
- if ($tcID && $count < 5) {
- $contactActivities[$activityId]['target_contact'] .= CRM_Utils_System::href($tcName,
- 'civicrm/contact/view', "reset=1&cid={$tcID}");
- $count++;
- if ($count) {
- $contactActivities[$activityId]['target_contact'] .= "; ";
- }
+ $contactActivities[$activityId]['target_contact'] .= CRM_Utils_System::href($tcName,
+ 'civicrm/contact/view', "reset=1&cid={$tcID}");
+ }
- if ($count == 4) {
- $contactActivities[$activityId]['target_contact'] .= "(" . ts('more') . ")";
- break;
- }
- }
+ if ($extraCount = $values['target_contact_counter'] - 1) {
+ $contactActivities[$activityId]['target_contact'] .= ";<br />" . "(" . ts('%1 more', array(1 => $extraCount)) . ")";
}
}
+ elseif (!$values['target_contact_name']) {
+ $contactActivities[$activityId]['target_contact'] = '<em>n/a</em>';
+ }
if (empty($values['assignee_contact_name'])) {
$contactActivities[$activityId]['assignee_contact'] = '<em>n/a</em>';