CIVI-28 Rewrote filtering for contribution and membership search results
[civicrm-core.git] / CRM / Contribute / Selector / Search.php
index 8162533533e9ae72c4648bee297148ee1fc6bf90..9d5fba445d0f9a3f6c319df58f05e09310420542 100644 (file)
@@ -358,13 +358,13 @@ class CRM_Contribute_Selector_Search extends CRM_Core_Selector_Base implements C
     $allCampaigns = CRM_Campaign_BAO_Campaign::getCampaigns(NULL, NULL, FALSE, FALSE, FALSE, TRUE);
 
     while ($result->fetch()) {
+      $links = self::links($componentId,
+          $componentAction,
+          $qfKey,
+          $componentContext
+      );
       $checkLineItem = FALSE;
       $row = array();
-      $permissions[] = CRM_Core_Permission::VIEW; 
-      $permissions[] = CRM_Core_Permission::EDIT; 
-      if (!CRM_Core_Permission::check('view contributions of type ' . CRM_Contribute_PseudoConstant::financialType($result->financial_type_id))) {
-        continue;
-      }
       // Now check for lineItems
       $lineItems = CRM_Price_BAO_LineItem::getLineItemsByContributionID($result->id);
       foreach ($lineItems as $items) { 
@@ -373,20 +373,23 @@ class CRM_Contribute_Selector_Search extends CRM_Core_Selector_Base implements C
           break;
         }
         if (!CRM_Core_Permission::check('edit contributions of type ' . CRM_Contribute_PseudoConstant::financialType($items['financial_type_id']))) {
+          unset($links[CRM_Core_Action::UPDATE]);
+          break;
         }
-        if (!CRM_Core_Permission::check('view contributions of type ' . CRM_Contribute_PseudoConstant::financialType($items['financial_type_id']))) {
+        if (!CRM_Core_Permission::check('delete contributions of type ' . CRM_Contribute_PseudoConstant::financialType($items['financial_type_id']))) {
+          unset($links[CRM_Core_Action::DELETE]);
+          break;
         }
       }
       if ($checkLineItem) {
         continue;
       }
       if (!CRM_Core_Permission::check('edit contributions of type ' . CRM_Contribute_PseudoConstant::financialType($result->financial_type_id))) {
-        unset($permissions[array_search(CRM_Core_Permission::EDIT, $permissions)]);
+        unset($links[CRM_Core_Action::UPDATE]);
       }
       if (!CRM_Core_Permission::check('delete contributions of type ' . CRM_Contribute_PseudoConstant::financialType($result->financial_type_id))) {
-        unset($permissions[array_search(CRM_Core_Permission::DELETE, $permissions)]);
+        unset($links[CRM_Core_Action::DELETE]);
       }
-      $mask = CRM_Core_Action::mask($permissions);
       // the columns we are interested in
       foreach (self::$_properties as $property) {
         if (property_exists($result, $property)) {
@@ -423,11 +426,7 @@ class CRM_Contribute_Selector_Search extends CRM_Core_Selector_Base implements C
       );
 
       $row['action'] = CRM_Core_Action::formLink(
-        self::links($componentId,
-          $componentAction,
-          $qfKey,
-          $componentContext
-        ),
+        $links,
         $mask, $actions,
         ts('more'),
         FALSE,