From 7cf7fa55f9034f58083da1b2ec7c9e0c0da6fd22 Mon Sep 17 00:00:00 2001 From: yashodha Date: Tue, 17 Jan 2017 12:32:22 +0530 Subject: [PATCH] CRM-19883 - Activity Priority Field is Not Included in Advanced Search or Activity Reports --- CRM/Activity/BAO/Activity.php | 6 +++++ CRM/Activity/BAO/Query.php | 25 ++++++++++++++++++- CRM/Activity/Form/Search.php | 4 +-- CRM/Contact/BAO/Query.php | 3 +++ CRM/Contact/Form/Search/Advanced.php | 3 ++- CRM/Report/Form/Activity.php | 18 +++++++++++++ CRM/Report/Form/ActivitySummary.php | 14 ++++++++++- templates/CRM/Activity/Form/Search/Common.tpl | 6 +++-- 8 files changed, 72 insertions(+), 7 deletions(-) diff --git a/CRM/Activity/BAO/Activity.php b/CRM/Activity/BAO/Activity.php index 0dd53100ec..99bc8d8db2 100644 --- a/CRM/Activity/BAO/Activity.php +++ b/CRM/Activity/BAO/Activity.php @@ -2182,6 +2182,12 @@ AND cl.modified_id = c.id 'name' => 'activity_status', 'type' => CRM_Utils_Type::T_STRING, ), + 'activity_priority' => array( + 'title' => ts('Activity Priority'), + 'name' => 'activity_priority', + 'type' => CRM_Utils_Type::T_STRING, + 'searchByLabel' => TRUE, + ), ); $fields = array_merge($Activityfields, $exportableFields); } diff --git a/CRM/Activity/BAO/Query.php b/CRM/Activity/BAO/Query.php index 14661ed3fd..12176e85e4 100644 --- a/CRM/Activity/BAO/Query.php +++ b/CRM/Activity/BAO/Query.php @@ -153,6 +153,15 @@ class CRM_Activity_BAO_Query { $query->_whereTables['parent_id'] = 1; $query->_element['parent_id'] = 1; } + + if (!empty($query->_returnProperties['activity_priority'])) { + $query->_select['activity_priority'] = 'activity_priority.label as activity_priority, + civicrm_activity.priority_id as priority_id'; + $query->_element['activity_priority'] = 1; + $query->_tables['activity_priority'] = 1; + $query->_whereTables['activity_priority'] = 1; + $query->_tables['civicrm_activity'] = $query->_whereTables['civicrm_activity'] = 1; + } } /** @@ -197,11 +206,12 @@ class CRM_Activity_BAO_Query { case 'activity_engagement_level': case 'activity_subject': case 'activity_id': + case 'activity_priority_id': $qillName = $name; if (in_array($name, array('activity_engagement_level', 'activity_id'))) { $name = $qillName = str_replace('activity_', '', $name); } - if (in_array($name, array('activity_status_id', 'activity_subject'))) { + if (in_array($name, array('activity_status_id', 'activity_subject', 'activity_priority_id'))) { $name = str_replace('activity_', '', $name); $qillName = str_replace('_id', '', $qillName); } @@ -214,6 +224,7 @@ class CRM_Activity_BAO_Query { case 'activity_type': case 'activity_status': + case 'activity_priority': $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("$name.label", $op, $value, 'String'); list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Activity_DAO_Activity', $name, $value, $op); $query->_qill[$grouping][] = ts('%1 %2 %3', array(1 => $fields[$name]['title'], 2 => $op, 3 => $value)); @@ -383,6 +394,12 @@ class CRM_Activity_BAO_Query { AND option_group_activity_type.id = activity_type.option_group_id ) "; break; + case 'activity_priority': + $from .= " $side JOIN civicrm_option_group option_group_activity_priority ON (option_group_activity_priority.name = 'priority')"; + $from .= " $side JOIN civicrm_option_value activity_priority ON (civicrm_activity.priority_id = activity_priority.value + AND option_group_activity_priority.id = activity_priority.option_group_id ) "; + break; + case 'civicrm_activity_tag': $from .= " $side JOIN civicrm_entity_tag as civicrm_activity_tag ON ( civicrm_activity_tag.entity_table = 'civicrm_activity' AND civicrm_activity_tag.entity_id = civicrm_activity.id ) "; break; @@ -456,6 +473,11 @@ class CRM_Activity_BAO_Query { } } + $priority = CRM_Core_PseudoConstant::get('CRM_Activity_DAO_Activity', 'priority_id'); + $form->addSelect('priority_id', + array('entity' => 'activity', 'label' => ts('Priority'), 'multiple' => 'multiple', 'option_url' => NULL, 'placeholder' => ts('- any -')) + ); + $parentNames = CRM_Core_BAO_Tag::getTagSet('civicrm_activity'); CRM_Core_Form_Tag::buildQuickForm($form, $parentNames, 'civicrm_activity', NULL, TRUE, TRUE); @@ -544,6 +566,7 @@ class CRM_Activity_BAO_Query { 'activity_location' => 1, 'activity_details' => 1, 'activity_status' => 1, + 'activity_priority' => 1, 'source_contact' => 1, 'source_record_id' => 1, 'activity_is_test' => 1, diff --git a/CRM/Activity/Form/Search.php b/CRM/Activity/Form/Search.php index ba25b59755..0e3c51b288 100644 --- a/CRM/Activity/Form/Search.php +++ b/CRM/Activity/Form/Search.php @@ -205,11 +205,11 @@ class CRM_Activity_Form_Search extends CRM_Core_Form_Search { if (!empty($_POST)) { $this->_formValues = $this->controller->exportValues($this->_name); - foreach (array('activity_type_id', 'status_id', 'activity_subject') as $element) { + foreach (array('activity_type_id', 'status_id', 'activity_subject', 'priority_id') as $element) { $value = CRM_Utils_Array::value($element, $this->_formValues); if ($value) { if (is_array($value)) { - if ($element == 'status_id') { + if ($element == 'status_id' || $element == 'priority_id') { unset($this->_formValues[$element]); $this->_formValues['activity_' . $element] = $value; } diff --git a/CRM/Contact/BAO/Query.php b/CRM/Contact/BAO/Query.php index 6a94a784f1..b57409d8e3 100644 --- a/CRM/Contact/BAO/Query.php +++ b/CRM/Contact/BAO/Query.php @@ -1823,6 +1823,8 @@ class CRM_Contact_BAO_Query { case 'activity_role': case 'activity_status_id': case 'activity_status': + case 'activity_priority': + case 'activity_priority_id': case 'followup_parent_id': case 'parent_id': case 'source_contact_id': @@ -2627,6 +2629,7 @@ class CRM_Contact_BAO_Query { case 'parent_id': case 'civicrm_activity_contact': case 'source_contact': + case 'activity_priority': $from .= CRM_Activity_BAO_Query::from($name, $mode, $side); continue; diff --git a/CRM/Contact/Form/Search/Advanced.php b/CRM/Contact/Form/Search/Advanced.php index 7d06fc0a2e..46a84780cd 100644 --- a/CRM/Contact/Form/Search/Advanced.php +++ b/CRM/Contact/Form/Search/Advanced.php @@ -376,13 +376,14 @@ class CRM_Contact_Form_Search_Advanced extends CRM_Contact_Form_Search { 'contribution_trxn_id', 'activity_type_id', 'status_id', + 'priority_id', 'activity_subject', ); foreach ($specialParams as $element) { $value = CRM_Utils_Array::value($element, $this->_formValues); if ($value) { if (is_array($value)) { - if ($element == 'status_id') { + if ($element == 'status_id' || $element == 'priority_id') { unset($this->_formValues[$element]); $element = 'activity_' . $element; } diff --git a/CRM/Report/Form/Activity.php b/CRM/Report/Form/Activity.php index d07400a291..27ff5f266c 100644 --- a/CRM/Report/Form/Activity.php +++ b/CRM/Report/Form/Activity.php @@ -216,6 +216,11 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { 'details' => array( 'title' => ts('Activity Details'), ), + 'priority_id' => array( + 'title' => ts('Priority'), + 'default' => TRUE, + 'type' => CRM_Utils_Type::T_STRING, + ), ), 'filters' => array( 'activity_date_time' => array( @@ -237,6 +242,11 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { 'title' => ts('Activity Details'), 'type' => CRM_Utils_Type::T_TEXT, ), + 'priority_id' => array( + 'title' => ts('Activity Priority'), + 'operatorType' => CRM_Report_Form::OP_MULTISELECT, + 'options' => CRM_Core_PseudoConstant::get('CRM_Activity_DAO_Activity', 'priority_id'), + ), ), 'order_bys' => array( 'activity_date_time' => array( @@ -790,6 +800,7 @@ GROUP BY civicrm_activity_id {$this->_having} {$this->_orderBy} {$this->_limit}" $entryFound = FALSE; $activityType = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'label', TRUE); $activityStatus = CRM_Core_PseudoConstant::activityStatus(); + $priority = CRM_Core_PseudoConstant::get('CRM_Activity_DAO_Activity', 'priority_id'); $viewLinks = FALSE; $context = CRM_Utils_Request::retrieve('context', 'String', $this, FALSE, 'report'); $actUrl = ''; @@ -943,6 +954,13 @@ GROUP BY civicrm_activity_id {$this->_having} {$this->_orderBy} {$this->_limit}" } } + if (array_key_exists('civicrm_activity_priority_id', $row)) { + if ($value = $row['civicrm_activity_priority_id']) { + $rows[$rowNum]['civicrm_activity_priority_id'] = $priority[$value]; + $entryFound = TRUE; + } + } + $entryFound = $this->alterDisplayAddressFields($row, $rows, $rowNum, 'activity', 'List all activities for this ') ? TRUE : $entryFound; if (!$entryFound) { diff --git a/CRM/Report/Form/ActivitySummary.php b/CRM/Report/Form/ActivitySummary.php index 84ddef1291..78bc428145 100644 --- a/CRM/Report/Form/ActivitySummary.php +++ b/CRM/Report/Form/ActivitySummary.php @@ -113,6 +113,11 @@ class CRM_Report_Form_ActivitySummary extends CRM_Report_Form { 'sum' => ts('Total Duration'), ), ), + 'priority_id' => array( + 'title' => ts('Priority'), + 'default' => TRUE, + 'type' => CRM_Utils_Type::T_STRING, + ), 'id' => array( 'title' => 'Total Activities', 'required' => TRUE, @@ -470,6 +475,7 @@ class CRM_Report_Form_ActivitySummary extends CRM_Report_Form { $entryFound = FALSE; $activityType = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'label', TRUE); + $priority = CRM_Core_PseudoConstant::get('CRM_Activity_DAO_Activity', 'priority_id'); $flagContact = 0; $onHover = ts('View Contact Summary for this Contact'); @@ -517,7 +523,6 @@ class CRM_Report_Form_ActivitySummary extends CRM_Report_Form { if (array_key_exists('civicrm_activity_activity_type_id', $row)) { if ($value = $row['civicrm_activity_activity_type_id']) { - $value = explode(',', $value); foreach ($value as $key => $id) { $value[$key] = $activityType[$id]; @@ -528,6 +533,13 @@ class CRM_Report_Form_ActivitySummary extends CRM_Report_Form { } } + if (array_key_exists('civicrm_activity_priority_id', $row)) { + if ($value = $row['civicrm_activity_priority_id']) { + $rows[$rowNum]['civicrm_activity_priority_id'] = $priority[$value]; + $entryFound = TRUE; + } + } + if (!$entryFound) { break; } diff --git a/templates/CRM/Activity/Form/Search/Common.tpl b/templates/CRM/Activity/Form/Search/Common.tpl index 4b7cf99e6d..81bda329e9 100644 --- a/templates/CRM/Activity/Form/Search/Common.tpl +++ b/templates/CRM/Activity/Form/Search/Common.tpl @@ -105,8 +105,10 @@ - {* td intentionally left blank to align the 'is test' widget on the right *} - + + {$form.priority_id.label}
+ {$form.priority_id.html} + {$form.activity_test.label} {help id="is-test" file="CRM/Contact/Form/Search/Advanced"}   {$form.activity_test.html} -- 2.25.1