3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.4 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2013 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
31 * @copyright CiviCRM LLC (c) 2004-2013
35 class CRM_Report_Form_Activity
extends CRM_Report_Form
{
36 protected $_selectAliasesTotal = array();
38 protected $_customGroupExtends = array(
42 function __construct() {
43 // There could be multiple contacts. We not clear on which contact id to display.
44 // Lets hide it for now.
45 $this->_exposeContactID
= FALSE;
47 $config = CRM_Core_Config
::singleton();
48 $campaignEnabled = in_array("CiviCampaign", $config->enableComponents
);
49 if ($campaignEnabled) {
50 $getCampaigns = CRM_Campaign_BAO_Campaign
::getPermissionedCampaigns(NULL, NULL, TRUE, FALSE, TRUE);
51 $this->activeCampaigns
= $getCampaigns['campaigns'];
52 asort($this->activeCampaigns
);
53 $this->engagementLevels
= CRM_Campaign_PseudoConstant
::engagementLevel();
55 $this->activityTypes
= CRM_Core_PseudoConstant
::activityType(TRUE, FALSE, FALSE, 'label', TRUE);
56 asort($this->activityTypes
);
58 $this->_columns
= array(
61 'dao' => 'CRM_Contact_DAO_Contact',
66 'name' => 'sort_name',
67 'title' => ts('Source Contact Name'),
68 'alias' => 'civicrm_contact_source',
73 'name' => 'sort_name',
74 'title' => ts('Assignee Contact Name'),
75 'alias' => 'civicrm_contact_assignee',
76 'dbAlias' => "civicrm_contact_assignee.sort_name",
81 'name' => 'sort_name',
82 'title' => ts('Target Contact Name'),
83 'alias' => 'civicrm_contact_target',
84 'dbAlias' => "civicrm_contact_target.sort_name",
87 'contact_source_id' =>
90 'alias' => 'civicrm_contact_source',
91 'dbAlias' => "civicrm_contact_source.id",
96 'contact_assignee_id' =>
99 'alias' => 'civicrm_contact_assignee',
100 'dbAlias' => "civicrm_contact_assignee.id",
101 'no_display' => TRUE,
105 'contact_target_id' =>
108 'alias' => 'civicrm_contact_target',
109 'dbAlias' => "civicrm_contact_target.id",
110 'no_display' => TRUE,
119 'name' => 'sort_name',
120 'alias' => 'civicrm_contact_source',
121 'title' => ts('Source Contact Name'),
122 'operator' => 'like',
123 'type' => CRM_Report_Form
::OP_STRING
,
125 'contact_assignee' =>
127 'name' => 'sort_name',
128 'alias' => 'civicrm_contact_assignee',
129 'title' => ts('Assignee Contact Name'),
130 'operator' => 'like',
131 'type' => CRM_Report_Form
::OP_STRING
,
135 'name' => 'sort_name',
136 'alias' => 'civicrm_contact_target',
137 'title' => ts('Target Contact Name'),
138 'operator' => 'like',
139 'type' => CRM_Report_Form
::OP_STRING
,
143 'name' => 'current_user',
144 'title' => ts('Limit To Current User'),
145 'type' => CRM_Utils_Type
::T_INT
,
146 'operatorType' => CRM_Report_Form
::OP_SELECT
,
147 'options' => array('0' => ts('No'), '1' => ts('Yes')),
150 'grouping' => 'contact-fields',
154 'dao' => 'CRM_Core_DAO_Email',
157 'contact_source_email' =>
160 'title' => ts('Source Contact Email'),
161 'alias' => 'civicrm_email_source',
163 'contact_assignee_email' =>
166 'title' => ts('Assignee Contact Email'),
167 'alias' => 'civicrm_email_assignee',
169 'contact_target_email' =>
172 'title' => ts('Target Contact Email'),
173 'alias' => 'civicrm_email_target',
178 'source_contact_email' =>
181 'title' => ts('Source Contact Email'),
182 'dbAlias' => 'civicrm_email_contact_source_email',
186 'civicrm_activity' =>
188 'dao' => 'CRM_Activity_DAO_Activity',
193 'no_display' => TRUE,
194 'title' => ts('Activity ID'),
197 'source_record_id' =>
199 'no_display' => TRUE,
202 'activity_type_id' =>
203 array('title' => ts('Activity Type'),
205 'type' => CRM_Utils_Type
::T_STRING
,
207 'activity_subject' =>
208 array('title' => ts('Subject'),
211 'activity_date_time' =>
212 array('title' => ts('Activity Date'),
216 array('title' => ts('Activity Status'),
218 'type' => CRM_Utils_Type
::T_STRING
,
221 array('title' => ts('Duration'),
222 'type' => CRM_Utils_Type
::T_INT
,
227 'activity_date_time' =>
229 'default' => 'this.month',
230 'operatorType' => CRM_Report_Form
::OP_DATE
,
232 'activity_subject' =>
233 array('title' => ts('Activity Subject')),
234 'activity_type_id' =>
235 array('title' => ts('Activity Type'),
236 'operatorType' => CRM_Report_Form
::OP_MULTISELECT
,
237 'options' => $this->activityTypes
,
240 array('title' => ts('Activity Status'),
241 'operatorType' => CRM_Report_Form
::OP_MULTISELECT
,
242 'options' => CRM_Core_PseudoConstant
::activityStatus(),
247 'activity_date_time' =>
248 array('title' => ts('Activity Date'), 'default_weight' => '1', 'dbAlias' => 'civicrm_activity_activity_date_time'),
249 'activity_type_id' =>
250 array('title' => ts('Activity Type'), 'default_weight' => '2', 'dbAlias' => 'civicrm_activity_activity_type_id'),
252 'grouping' => 'activity-fields',
253 'alias' => 'activity',
255 'civicrm_activity_contact' =>
257 'dao' => 'CRM_Activity_DAO_ActivityContact',
260 // so we have $this->_alias populated
263 ) +
$this->addAddressFields(FALSE, TRUE);
265 if ($campaignEnabled) {
266 // Add display column and filter for Survey Results, Campaign and Engagement Index if CiviCampaign is enabled
268 $this->_columns
['civicrm_activity']['fields']['result'] = array(
269 'title' => 'Survey Result',
270 'default' => 'false',
272 $this->_columns
['civicrm_activity']['filters']['result'] = array('title' => ts('Survey Result'),
273 'operator' => 'like',
274 'type' => CRM_Utils_Type
::T_STRING
,
276 if (!empty($this->activeCampaigns
)) {
277 $this->_columns
['civicrm_activity']['fields']['campaign_id'] = array(
278 'title' => 'Campaign',
279 'default' => 'false',
281 $this->_columns
['civicrm_activity']['filters']['campaign_id'] = array('title' => ts('Campaign'),
282 'operatorType' => CRM_Report_Form
::OP_MULTISELECT
,
283 'options' => $this->activeCampaigns
,
286 if (!empty($this->engagementLevels
)) {
287 $this->_columns
['civicrm_activity']['fields']['engagement_level'] = array(
288 'title' => 'Engagement Index',
289 'default' => 'false',
291 $this->_columns
['civicrm_activity']['filters']['engagement_level'] = array('title' => ts('Engagement Index'),
292 'operatorType' => CRM_Report_Form
::OP_MULTISELECT
,
293 'options' => $this->engagementLevels
,
297 $this->_groupFilter
= TRUE;
298 $this->_tagFilter
= TRUE;
299 parent
::__construct();
302 function select($recordType = NULL) {
305 if (empty($this->_selectAliasesTotal
)) {
306 $this->_selectAliasesTotal
= $this->_selectAliases
;
309 $removeKeys = array();
310 if ($recordType == 'target') {
311 foreach ($this->_selectClauses
as $key => $clause) {
312 if (strstr($clause, 'civicrm_contact_assignee.') ||
313 strstr($clause, 'civicrm_contact_source.') ||
314 strstr($clause, 'civicrm_email_assignee.') ||
315 strstr($clause, 'civicrm_email_source.')
317 $removeKeys[] = $key;
318 unset($this->_selectClauses
[$key]);
321 } else if ($recordType == 'assignee') {
322 foreach ($this->_selectClauses
as $key => $clause) {
323 if (strstr($clause, 'civicrm_contact_target.') ||
324 strstr($clause, 'civicrm_contact_source.') ||
325 strstr($clause, 'civicrm_email_target.') ||
326 strstr($clause, 'civicrm_email_source.')
328 $removeKeys[] = $key;
329 unset($this->_selectClauses
[$key]);
332 } else if ($recordType == 'source') {
333 foreach ($this->_selectClauses
as $key => $clause) {
334 if (strstr($clause, 'civicrm_contact_target.') ||
335 strstr($clause, 'civicrm_contact_assignee.') ||
336 strstr($clause, 'civicrm_email_target.') ||
337 strstr($clause, 'civicrm_email_assignee.')
339 $removeKeys[] = $key;
340 unset($this->_selectClauses
[$key]);
343 } else if ($recordType == 'final') {
344 $this->_selectClauses
= $this->_selectAliasesTotal
;
345 foreach ($this->_selectClauses
as $key => $clause) {
346 if (strstr($clause, 'civicrm_contact_contact_target') ||
347 strstr($clause, 'civicrm_contact_contact_assignee') ||
348 strstr($clause, 'civicrm_contact_contact_source') ) {
349 $this->_selectClauses
[$key] = "GROUP_CONCAT($clause SEPARATOR ';') as $clause";
355 foreach ($removeKeys as $key) {
356 unset($this->_selectAliases
[$key]);
359 $this->_select
= "SELECT " . implode(', ', $this->_selectClauses
) . " ";
363 function from($recordType) {
364 $activityContacts = CRM_Core_OptionGroup
::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name');
365 $assigneeID = CRM_Utils_Array
::key('Activity Assignees', $activityContacts);
366 $targetID = CRM_Utils_Array
::key('Activity Targets', $activityContacts);
367 $sourceID = CRM_Utils_Array
::key('Activity Source', $activityContacts);
369 if ($recordType == 'target') {
371 FROM civicrm_activity {$this->_aliases['civicrm_activity']}
372 INNER JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_contact']}
373 ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_contact']}.activity_id AND
374 {$this->_aliases['civicrm_activity_contact']}.record_type_id = {$targetID}
375 INNER JOIN civicrm_contact civicrm_contact_target
376 ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_contact_target.id
379 if ($this->isTableSelected('civicrm_email')) {
381 LEFT JOIN civicrm_email civicrm_email_target
382 ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_email_target.contact_id AND
383 civicrm_email_target.is_primary = 1";
385 $this->_aliases
['civicrm_contact'] = 'civicrm_contact_target';
388 if ($recordType == 'assignee') {
390 FROM civicrm_activity {$this->_aliases['civicrm_activity']}
391 INNER JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_contact']}
392 ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_contact']}.activity_id AND
393 {$this->_aliases['civicrm_activity_contact']}.record_type_id = {$assigneeID}
394 INNER JOIN civicrm_contact civicrm_contact_assignee
395 ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_contact_assignee.id
398 if ($this->isTableSelected('civicrm_email')) {
400 LEFT JOIN civicrm_email civicrm_email_assignee
401 ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_email_assignee.contact_id AND
402 civicrm_email_assignee.is_primary = 1";
404 $this->_aliases
['civicrm_contact'] = 'civicrm_contact_assignee';
407 if ($recordType == 'source') {
409 FROM civicrm_activity {$this->_aliases['civicrm_activity']}
410 INNER JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_contact']}
411 ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_contact']}.activity_id AND
412 {$this->_aliases['civicrm_activity_contact']}.record_type_id = {$sourceID}
413 INNER JOIN civicrm_contact civicrm_contact_source
414 ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_contact_source.id
417 if ($this->isTableSelected('civicrm_email')) {
419 LEFT JOIN civicrm_email civicrm_email_source
420 ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_email_source.contact_id AND
421 civicrm_email_source.is_primary = 1";
423 $this->_aliases
['civicrm_contact'] = 'civicrm_contact_source';
425 $this->addAddressFromClause();
428 function where($recordType) {
429 $this->_where
= " WHERE {$this->_aliases['civicrm_activity']}.is_test = 0 AND
430 {$this->_aliases['civicrm_activity']}.is_deleted = 0 AND
431 {$this->_aliases['civicrm_activity']}.is_current_revision = 1";
434 foreach ($this->_columns
as $tableName => $table) {
435 if (array_key_exists('filters', $table)) {
437 foreach ($table['filters'] as $fieldName => $field) {
439 if ($fieldName != 'contact_' . $recordType &&
440 (strstr($fieldName, '_target') ||
441 strstr($fieldName, '_assignee') ||
442 strstr($fieldName, '_source')
445 if ($recordType == 'final') {
446 if (CRM_Utils_Array
::value("{$fieldName}_value", $this->_params
)) {
447 $field['dbAlias'] = "civicrm_contact_{$fieldName}";
448 $clauses[] = $this->whereClause($field,
449 CRM_Utils_Array
::value("{$fieldName}_op", $this->_params
),
450 CRM_Utils_Array
::value("{$fieldName}_value", $this->_params
), NULL, NULL
456 if ($recordType == 'final') {
459 if (CRM_Utils_Array
::value('type', $field) & CRM_Utils_Type
::T_DATE
) {
460 $relative = CRM_Utils_Array
::value("{$fieldName}_relative", $this->_params
);
461 $from = CRM_Utils_Array
::value("{$fieldName}_from", $this->_params
);
462 $to = CRM_Utils_Array
::value("{$fieldName}_to", $this->_params
);
464 $clause = $this->dateClause($field['name'], $relative, $from, $to, $field['type']);
467 $op = CRM_Utils_Array
::value("{$fieldName}_op", $this->_params
);
469 $clause = $this->whereClause($field,
471 CRM_Utils_Array
::value("{$fieldName}_value", $this->_params
),
472 CRM_Utils_Array
::value("{$fieldName}_min", $this->_params
),
473 CRM_Utils_Array
::value("{$fieldName}_max", $this->_params
)
478 if ($field['name'] == 'current_user') {
479 if (CRM_Utils_Array
::value("{$fieldName}_value", $this->_params
) == 1) {
481 $session = CRM_Core_Session
::singleton();
482 if ($contactID = $session->get('userID')) {
483 $clause = "( civicrm_contact_source.id = " . $contactID . " OR civicrm_contact_assignee.id = " . $contactID . " OR civicrm_contact_target.id = " . $contactID . " )";
493 if (!empty($clause)) {
494 $clauses[] = $clause;
500 if (empty($clauses)) {
501 if ($recordType == 'final') {
505 $this->_where
.= " ";
509 if ($recordType == 'final') {
510 $this->_where
= "WHERE " . implode(' AND ', $clauses);
513 $this->_where
.= " AND " . implode(' AND ', $clauses);
517 if ($this->_aclWhere
) {
518 $this->_where
.= " AND {$this->_aclWhere} ";
523 $this->_groupBy
= "GROUP BY {$this->_aliases['civicrm_activity']}.id";
526 function buildACLClause($tableAlias = 'contact_a') {
527 //override for ACL( Since Contact may be source
528 //contact/assignee or target also it may be null )
530 if (CRM_Core_Permission
::check('view all contacts')) {
531 $this->_aclFrom
= $this->_aclWhere
= NULL;
535 $session = CRM_Core_Session
::singleton();
536 $contactID = $session->get('userID');
540 $contactID = CRM_Utils_Type
::escape($contactID, 'Integer');
542 CRM_Contact_BAO_Contact_Permission
::cache($contactID);
544 foreach ($tableAlias as $k => $alias) {
545 $clauses[] = " INNER JOIN civicrm_acl_contact_cache aclContactCache_{$k} ON ( {$alias}.id = aclContactCache_{$k}.contact_id OR {$alias}.id IS NULL ) AND aclContactCache_{$k}.user_id = $contactID ";
548 $this->_aclFrom
= implode(" ", $clauses);
549 $this->_aclWhere
= NULL;
552 function postProcess() {
553 $this->buildACLClause(array('civicrm_contact_source', 'civicrm_contact_target', 'civicrm_contact_assignee'));
554 $this->beginPostProcess();
556 // 1. fill temp table with target results
557 $this->select('target');
558 $this->from('target');
559 $this->where('target');
560 $insertCols = implode(',', $this->_selectAliases
);
561 $tempQuery = "CREATE TEMPORARY TABLE civireport_activity_temp_target CHARACTER SET utf8 COLLATE utf8_unicode_ci AS
562 {$this->_select} {$this->_from} {$this->_where} ";
563 CRM_Core_DAO
::executeQuery($tempQuery);
565 // 2. add new columns to hold assignee and source results
566 // fixme: add when required
568 ALTER TABLE civireport_activity_temp_target
569 ADD COLUMN civicrm_contact_contact_assignee VARCHAR(128),
570 ADD COLUMN civicrm_contact_contact_source VARCHAR(128),
571 ADD COLUMN civicrm_contact_contact_assignee_id VARCHAR(128),
572 ADD COLUMN civicrm_contact_contact_source_id VARCHAR(128),
573 ADD COLUMN civicrm_email_contact_assignee_email VARCHAR(128),
574 ADD COLUMN civicrm_email_contact_source_email VARCHAR(128)";
575 CRM_Core_DAO
::executeQuery($tempQuery);
577 // 3. fill temp table with assignee results
578 if (CRM_Utils_Array
::value("contact_assignee", $this->_params
['fields']) ||
579 CRM_Utils_Array
::value("contact_assignee_email", $this->_params
['fields'])) {
580 $this->select('assignee');
581 $this->from('assignee');
582 $this->where('assignee');
583 $insertCols = implode(',', $this->_selectAliases
);
584 $tempQuery = "INSERT INTO civireport_activity_temp_target ({$insertCols})
586 {$this->_from} {$this->_where}";
587 CRM_Core_DAO
::executeQuery($tempQuery);
590 // 4. fill temp table with source results
591 if (CRM_Utils_Array
::value("contact_source", $this->_params
['fields']) ||
592 CRM_Utils_Array
::value("contact_source_email", $this->_params
['fields'])) {
593 $this->select('source');
594 $this->from('source');
595 $this->where('source');
596 $insertCols = implode(',', $this->_selectAliases
);
597 $tempQuery = "INSERT INTO civireport_activity_temp_target ({$insertCols})
599 {$this->_from} {$this->_where}";
600 CRM_Core_DAO
::executeQuery($tempQuery);
603 // 5. show final result set from temp table
605 $this->select('final');
606 $this->where('final');
609 $sql = "{$this->_select}
610 FROM civireport_activity_temp_target tar
612 GROUP BY civicrm_activity_id {$this->_orderBy} {$this->_limit}";
613 $this->buildRows($sql, $rows);
615 // format result set.
616 $this->formatDisplay($rows);
618 // assign variables to templates
619 $this->doTemplateAssignment($rows);
621 // do print / pdf / instance stuff if needed
622 $this->endPostProcess($rows);
625 function alterDisplay(&$rows) {
626 // custom code to alter rows
629 $activityType = CRM_Core_PseudoConstant
::activityType(TRUE, TRUE, FALSE, 'label', TRUE);
630 $activityStatus = CRM_Core_PseudoConstant
::activityStatus();
632 $seperator = CRM_CORE_DAO
::VALUE_SEPARATOR
;
633 $context = CRM_Utils_Request
::retrieve('context', 'String', $this, FALSE, 'report');
635 if (CRM_Core_Permission
::check('access CiviCRM')) {
637 $onHover = ts('View Contact Summary for this Contact');
638 $onHoverAct = ts('View Activity Record');
641 foreach ($rows as $rowNum => $row) {
642 if (array_key_exists('civicrm_contact_contact_source', $row)) {
643 if ($value = $row['civicrm_contact_contact_source_id']) {
645 $url = CRM_Utils_System
::url("civicrm/contact/view",
646 'reset=1&cid=' . $value,
649 $rows[$rowNum]['civicrm_contact_contact_source_link'] = $url;
650 $rows[$rowNum]['civicrm_contact_contact_source_hover'] = $onHover;
656 if (array_key_exists('civicrm_contact_contact_assignee', $row)) {
657 $assigneeNames = explode(';', $row['civicrm_contact_contact_assignee']);
658 if ($value = $row['civicrm_contact_contact_assignee_id']) {
659 $assigneeContactIds = explode(';', $value);
662 foreach ($assigneeContactIds as $id => $value) {
663 if (isset($value) && isset($assigneeNames[$id])) {
664 $url = CRM_Utils_System
::url("civicrm/contact/view",
665 'reset=1&cid=' . $value,
668 $link[] = "<a title='" . $onHover . "' href='" . $url . "'>{$assigneeNames[$id]}</a>";
671 $rows[$rowNum]['civicrm_contact_contact_assignee'] = implode('; ', $link);
677 if (array_key_exists('civicrm_contact_contact_target', $row)) {
678 $targetNames = explode(';', $row['civicrm_contact_contact_target']);
679 if ($value = $row['civicrm_contact_contact_target_id']) {
680 $targetContactIds = explode(';', $value);
683 foreach ($targetContactIds as $id => $value) {
684 if (isset($value) && isset($targetNames[$id])) {
685 $url = CRM_Utils_System
::url("civicrm/contact/view",
686 'reset=1&cid=' . $value,
689 $link[] = "<a title='" . $onHover . "' href='" . $url . "'>{$targetNames[$id]}</a>";
692 $rows[$rowNum]['civicrm_contact_contact_target'] = implode('; ', $link);
698 if (array_key_exists('civicrm_activity_activity_type_id', $row)) {
699 if ($value = $row['civicrm_activity_activity_type_id']) {
700 $rows[$rowNum]['civicrm_activity_activity_type_id'] = $activityType[$value];
702 // Check for target contact id(s) and use the first contact id in that list for view activity link if found,
703 // else use source contact id
704 if (!empty($rows[$rowNum]['civicrm_contact_contact_target_id'])) {
705 $targets = explode(';', $rows[$rowNum]['civicrm_contact_contact_target_id']);
709 $cid = $rows[$rowNum]['civicrm_contact_contact_source_id'];
712 $actionLinks = CRM_Activity_Selector_Activity
::actionLinks($row['civicrm_activity_activity_type_id'],
713 CRM_Utils_Array
::value('civicrm_activity_source_record_id', $rows[$rowNum]),
715 $rows[$rowNum]['civicrm_activity_id']
719 'id' => $rows[$rowNum]['civicrm_activity_id'],
723 $url = CRM_Utils_System
::url($actionLinks[CRM_Core_Action
::VIEW
]['url'],
724 CRM_Core_Action
::replace($actionLinks[CRM_Core_Action
::VIEW
]['qs'], $linkValues), TRUE
726 $rows[$rowNum]['civicrm_activity_activity_type_id_link'] = $url;
727 $rows[$rowNum]['civicrm_activity_activity_type_id_hover'] = $onHoverAct;
733 if (array_key_exists('civicrm_activity_status_id', $row)) {
734 if ($value = $row['civicrm_activity_status_id']) {
735 $rows[$rowNum]['civicrm_activity_status_id'] = $activityStatus[$value];
740 if (array_key_exists('civicrm_activity_campaign_id', $row)) {
741 if ($value = $row['civicrm_activity_campaign_id']) {
742 $rows[$rowNum]['civicrm_activity_campaign_id'] = $this->activeCampaigns
[$value];
747 if (array_key_exists('civicrm_activity_engagement_level', $row)) {
748 if ($value = $row['civicrm_activity_engagement_level']) {
749 $rows[$rowNum]['civicrm_activity_engagement_level'] = $this->engagementLevels
[$value];
754 if (array_key_exists('civicrm_activity_activity_date_time', $row) && array_key_exists('civicrm_activity_status_id', $row)) {
755 if (CRM_Utils_Date
::overdue($rows[$rowNum]['civicrm_activity_activity_date_time']) &&
756 $activityStatus[$row['civicrm_activity_status_id']] != 'Completed'
758 $rows[$rowNum]['class'] = "status-overdue";
763 $entryFound = $this->alterDisplayAddressFields($row, $rows, $rowNum, 'activity', 'List all activities for this ') ?
TRUE : $entryFound;