From d059df45f5c97d49c16beab79bc450b3b4497df6 Mon Sep 17 00:00:00 2001 From: Andrew Hunt Date: Thu, 13 Jun 2019 13:26:08 -0400 Subject: [PATCH] [REF] CRM_Case_BAO_Case::addcaseActivityLinks to CRM_Case_Selector_Search --- CRM/Case/BAO/Case.php | 76 +----------------------------------- CRM/Case/Selector/Search.php | 73 ++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 75 deletions(-) diff --git a/CRM/Case/BAO/Case.php b/CRM/Case/BAO/Case.php index f25f917749..fa542ac761 100644 --- a/CRM/Case/BAO/Case.php +++ b/CRM/Case/BAO/Case.php @@ -1093,7 +1093,7 @@ SELECT civicrm_case.id, case_status.label AS case_status, status_id, civicrm_cas $caseActivity['no_attachments'] = count($attachmentIDs); } - $caseActivities[$caseActivityId]['links'] = self::addCaseActivityLinks($caseID, $contactID, $userID, $context, $dao); + $caseActivities[$caseActivityId]['links'] = CRM_Case_Selector_Search::addCaseActivityLinks($caseID, $contactID, $userID, $context, $dao); } $caseActivitiesDT = array(); @@ -1104,80 +1104,6 @@ SELECT civicrm_case.id, case_status.label AS case_status, status_id, civicrm_cas return $caseActivitiesDT; } - /** - * FIXME: This is a transitional function to facilitate a refactor of this to use CRM_Core_Action and actionLinks - * Add the set of "actionLinks" to the case activity - * - * @param int $caseID - * @param int $contactID - * @param int $userID - * @param string $context - * @param \CRM_Core_DAO $dao - * - * @return string - * HTML formatted Link - */ - private static function addCaseActivityLinks($caseID, $contactID, $userID, $context, $dao) { - // FIXME: Why are we not using CRM_Core_Action for these links? This is too much manual work and likely to get out-of-sync with core markup. - $caseActivityId = $dao->id; - $allowView = self::checkPermission($caseActivityId, 'view', $dao->activity_type_id, $userID); - $allowEdit = self::checkPermission($caseActivityId, 'edit', $dao->activity_type_id, $userID); - $allowDelete = self::checkPermission($caseActivityId, 'delete', $dao->activity_type_id, $userID); - $emailActivityTypeIDs = [ - 'Email' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Email'), - 'Inbound Email' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Inbound Email'), - ]; - $url = CRM_Utils_System::url("civicrm/case/activity", - "reset=1&cid={$contactID}&caseid={$caseID}", FALSE, NULL, FALSE - ); - $contextUrl = ''; - if ($context == 'fulltext') { - $contextUrl = "&context={$context}"; - } - $editUrl = "{$url}&action=update{$contextUrl}"; - $deleteUrl = "{$url}&action=delete{$contextUrl}"; - $restoreUrl = "{$url}&action=renew{$contextUrl}"; - $viewTitle = ts('View activity'); - $caseDeleted = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_Case', $caseID, 'is_deleted'); - - $url = ""; - $css = 'class="action-item crm-hover-button"'; - if ($allowView) { - $viewUrl = CRM_Utils_System::url('civicrm/case/activity/view', array('cid' => $contactID, 'aid' => $caseActivityId)); - $url = '' . ts('View') . ''; - } - $additionalUrl = "&id={$caseActivityId}"; - if (!$dao->deleted) { - //hide edit link of activity type email.CRM-4530. - if (!in_array($dao->type, $emailActivityTypeIDs)) { - //hide Edit link if activity type is NOT editable (special case activities).CRM-5871 - if ($allowEdit) { - $url .= '' . ts('Edit') . ' '; - } - } - if ($allowDelete) { - $url .= ' ' . ts('Delete') . ''; - } - } - elseif (!$caseDeleted) { - $url = ' ' . ts('Restore') . ''; - } - - //check for operations. - if (self::checkPermission($caseActivityId, 'Move To Case', $dao->activity_type_id)) { - $url .= ' ' . ts('Move To Case') . ' '; - } - if (self::checkPermission($caseActivityId, 'Copy To Case', $dao->activity_type_id)) { - $url .= ' ' . ts('Copy To Case') . ' '; - } - // if there are file attachments we will return how many and, if only one, add a link to it - if (!empty($dao->attachment_ids)) { - $url .= implode(' ', CRM_Core_BAO_File::paperIconAttachment('civicrm_activity', $caseActivityId)); - } - - return $url; - } - /** * Helper function to generate a formatted contact link/name for display in the Case activities tab * diff --git a/CRM/Case/Selector/Search.php b/CRM/Case/Selector/Search.php index 5a4ab88c8e..c1a4e68536 100644 --- a/CRM/Case/Selector/Search.php +++ b/CRM/Case/Selector/Search.php @@ -479,4 +479,77 @@ class CRM_Case_Selector_Search extends CRM_Core_Selector_Base { return ts('Case Search'); } + /** + * Add the set of "actionLinks" to the case activity + * + * @param int $caseID + * @param int $contactID + * @param int $userID + * @param string $context + * @param \CRM_Core_DAO $dao + * + * @return string + * HTML formatted Link + */ + public static function addCaseActivityLinks($caseID, $contactID, $userID, $context, $dao) { + // FIXME: Why are we not using CRM_Core_Action for these links? This is too much manual work and likely to get out-of-sync with core markup. + $caseActivityId = $dao->id; + $allowView = CRM_Case_BAO_Case::checkPermission($caseActivityId, 'view', $dao->activity_type_id, $userID); + $allowEdit = CRM_Case_BAO_Case::checkPermission($caseActivityId, 'edit', $dao->activity_type_id, $userID); + $allowDelete = CRM_Case_BAO_Case::checkPermission($caseActivityId, 'delete', $dao->activity_type_id, $userID); + $emailActivityTypeIDs = [ + 'Email' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Email'), + 'Inbound Email' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Inbound Email'), + ]; + $url = CRM_Utils_System::url("civicrm/case/activity", + "reset=1&cid={$contactID}&caseid={$caseID}", FALSE, NULL, FALSE + ); + $contextUrl = ''; + if ($context == 'fulltext') { + $contextUrl = "&context={$context}"; + } + $editUrl = "{$url}&action=update{$contextUrl}"; + $deleteUrl = "{$url}&action=delete{$contextUrl}"; + $restoreUrl = "{$url}&action=renew{$contextUrl}"; + $viewTitle = ts('View activity'); + $caseDeleted = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_Case', $caseID, 'is_deleted'); + + $url = ""; + $css = 'class="action-item crm-hover-button"'; + if ($allowView) { + $viewUrl = CRM_Utils_System::url('civicrm/case/activity/view', array('cid' => $contactID, 'aid' => $caseActivityId)); + $url = '' . ts('View') . ''; + } + $additionalUrl = "&id={$caseActivityId}"; + if (!$dao->deleted) { + //hide edit link of activity type email.CRM-4530. + if (!in_array($dao->type, $emailActivityTypeIDs)) { + //hide Edit link if activity type is NOT editable (special case activities).CRM-5871 + if ($allowEdit) { + $url .= '' . ts('Edit') . ' '; + } + } + if ($allowDelete) { + $url .= ' ' . ts('Delete') . ''; + } + } + elseif (!$caseDeleted) { + $url = ' ' . ts('Restore') . ''; + } + + //check for operations. + if (CRM_Case_BAO_Case::checkPermission($caseActivityId, 'Move To Case', $dao->activity_type_id)) { + $url .= ' ' . ts('Move To Case') . ' '; + } + if (CRM_Case_BAO_Case::checkPermission($caseActivityId, 'Copy To Case', $dao->activity_type_id)) { + $url .= ' ' . ts('Copy To Case') . ' '; + } + // if there are file attachments we will return how many and, if only one, add a link to it + if (!empty($dao->attachment_ids)) { + $url .= implode(' ', CRM_Core_BAO_File::paperIconAttachment('civicrm_activity', $caseActivityId)); + } + + return $url; + } + } -- 2.25.1