CRM-19201 - Search - Add support for searching CiviCampaign and CiviCase activities.
authorBob Silvern <bobs00@cox.net>
Wed, 10 Aug 2016 00:33:02 +0000 (17:33 -0700)
committerBob Silvern <bobs00@cox.net>
Wed, 10 Aug 2016 00:33:02 +0000 (17:33 -0700)
----------------------------------------
* CRM-19201: Cannot search CiviCampaign/CiviCase activities or report CiviCampaign activities
  https://issues.civicrm.org/jira/browse/CRM-19201

CRM/Activity/Selector/Search.php

index c7822ab62b6ae2c444a0d8c220e5c3c805334ddc..2e6543e9f0fb959dd664fc34478b3c1dc94cc884 100644 (file)
@@ -174,7 +174,26 @@ class CRM_Activity_Selector_Search extends CRM_Core_Selector_Base implements CRM
     $components = CRM_Core_Component::getNames();
     $componentClause = array();
     foreach ($components as $componentID => $componentName) {
-      if (!CRM_Core_Permission::check("access $componentName")) {
+      // CRM-19201: Add support for searching CiviCampaign and CiviCase
+      // activities.
+      // "access all cases and activities" is used here rather than
+      // "access my cases and activities" to prevent those with only the later
+      // permission to see a list of all cases which might present a privacy
+      // issue.
+      switch ($componentName) {
+        case 'CiviCase':
+          $perm = "access all cases and activities";
+          break;
+
+        case 'CiviCampaign':
+          $perm = "administer $componentName";
+          break;
+
+        default:
+          $perm = "access $componentName";
+          break;
+      }
+      if (!CRM_Core_Permission::check($perm)) {
         $componentClause[] = " (activity_type.component_id IS NULL OR activity_type.component_id <> {$componentID}) ";
       }
     }