CRM-17645 - add hook_civicrm_selectWhereClause
authorColeman Watts <coleman@civicrm.org>
Fri, 15 Jan 2016 01:30:44 +0000 (20:30 -0500)
committerColeman Watts <coleman@civicrm.org>
Fri, 15 Jan 2016 04:57:00 +0000 (23:57 -0500)
CRM/Case/BAO/CaseContact.php
CRM/Contact/BAO/Contact.php
CRM/Contact/BAO/Relationship.php
CRM/Core/BAO/UFMatch.php
CRM/Core/DAO.php
CRM/Utils/Hook.php

index 3329017ff6723231a03d397ed38bdf5583453d56..dbb50a0287015be3e5d27bca91afefd2e2d63337 100644 (file)
@@ -101,6 +101,7 @@ class CRM_Case_BAO_CaseContact extends CRM_Case_DAO_CaseContact {
     if ($caseSubclauses) {
       $clauses['case_id'][] = 'IN (SELECT id FROM civicrm_case WHERE ' . implode(' AND ', $caseSubclauses) . ')';
     }
+    CRM_Utils_Hook::selectWhereClause($this, $clauses);
     return $clauses;
   }
 
index 45d7c01fd432e9053778f89d607f67de8fc67474..5d7819955dbbcd752b9be2ed732ab74c1d621abe 100644 (file)
@@ -3429,9 +3429,11 @@ LEFT JOIN civicrm_address add2 ON ( add1.master_id = add2.id )
    * @inheritDoc
    */
   public function apiWhereClause() {
-    return array(
+    $clauses = array(
       'id' => CRM_Contact_BAO_Contact_Permission::cacheSubquery(),
     );
+    CRM_Utils_Hook::selectWhereClause($this, $clauses);
+    return $clauses;
   }
 
 }
index 0d0dad70a9bf3e73de7cc351329f4b80380c6c93..cf5b9402510857f550bdc7c4394524beca86f59c 100644 (file)
@@ -2106,10 +2106,12 @@ AND cc.sort_name LIKE '%$name%'";
    */
   public function apiWhereClause() {
     // Generate an acl clause for both contacts in the relationship
-    return array(
+    $clauses = array(
       'contact_id_a' => CRM_Contact_BAO_Contact_Permission::cacheSubquery(),
       'contact_id_b' => CRM_Contact_BAO_Contact_Permission::cacheSubquery(),
     );
+    CRM_Utils_Hook::selectWhereClause($this, $clauses);
+    return $clauses;
   }
 
 }
index bd837e81b7a1a7a3b96cd7a4628688050bac0f86..af8d7f35137cf5f8d73287f2a3f9cc62d9fb6ccf 100644 (file)
@@ -638,7 +638,9 @@ AND    domain_id    = %4
    */
   public function apiWhereClause() {
     // Prevent default behavior of joining ACLs onto the contact_id field
-    return array();
+    $clauses = array();
+    CRM_Utils_Hook::selectWhereClause($this, $clauses);
+    return $clauses;
   }
 
 }
index abc3eecc0d085c1789e60df4897bf2b171f05bca..43e88b961035ec9a671813dc6a34be110b667427 100644 (file)
@@ -2467,14 +2467,14 @@ SELECT contact_id
    * @return array
    */
   public function apiWhereClause() {
+    $clauses = array();
     $fields = $this->fields();
     $cidField = CRM_Utils_Array::value('contact_id', $fields);
     if (CRM_Utils_Array::value('FKClassName', $cidField) == 'CRM_Contact_DAO_Contact') {
-      return array(
-        'contact_id' => CRM_Contact_BAO_Contact_Permission::cacheSubquery(),
-      );
+      $clauses['contact_id'] = CRM_Contact_BAO_Contact_Permission::cacheSubquery();
     }
-    return array();
+    CRM_Utils_Hook::selectWhereClause($this, $clauses);
+    return $clauses;
   }
 
   /**
index ced92c3d6d69b10b616e831bd737b23bb662fb62..243f04d430a66b1395270ab6717ad417c9368763 100644 (file)
@@ -489,6 +489,19 @@ abstract class CRM_Utils_Hook {
       ->invoke(5, $type, $contactID, $tableName, $allGroups, $currentGroups, self::$_nullObject, 'civicrm_aclGroup');
   }
 
+  /**
+   * @param string|CRM_Core_DAO $entity
+   * @param array $clauses
+   * @return mixed
+   */
+  public static function selectWhereClause($entity, &$clauses) {
+    $entityName = is_object($entity) ? _civicrm_api_get_entity_name_from_dao($entity) : $entity;
+    return self::singleton()->invoke(2, $entityName, $clauses,
+      self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject,
+      'civicrm_selectWhereClause'
+    );
+  }
+
   /**
    * This hook is called when building the menu table.
    *