From: eileenmcnaugton Date: Mon, 29 Feb 2016 05:48:46 +0000 (+1300) Subject: CRM-18120 make acl query less debilitating X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=0f765440522a78052e9dc73cdac568d2e24fb6b9;hp=98445ac505bda04132a23bb4a4732c773947e5ef;p=civicrm-core.git CRM-18120 make acl query less debilitating --- diff --git a/CRM/Contact/BAO/Contact/Permission.php b/CRM/Contact/BAO/Contact/Permission.php index 432339166b..bbdc30ea2c 100644 --- a/CRM/Contact/BAO/Contact/Permission.php +++ b/CRM/Contact/BAO/Contact/Permission.php @@ -234,19 +234,14 @@ AND $operationClause $permission = CRM_ACL_API::whereClause($type, $tables, $whereTables, $userID); $from = CRM_Contact_BAO_Query::fromClause($whereTables); - - // FIXME: don't use 'ON DUPLICATE KEY UPDATE' CRM_Core_DAO::executeQuery(" INSERT INTO civicrm_acl_contact_cache ( user_id, contact_id, operation ) -SELECT $userID as user_id, contact_a.id as contact_id, '$operation' as operation +SELECT DISTINCT $userID as user_id, contact_a.id as contact_id, '{$operation}' as operation $from + LEFT JOIN civicrm_acl_contact_cache ac ON ac.user_id = $userID AND ac.contact_id = contact_a.id AND ac.operation = '{$operation}' WHERE $permission -GROUP BY contact_a.id -ON DUPLICATE KEY UPDATE - user_id=VALUES(user_id), - contact_id=VALUES(contact_id), - operation=VALUES(operation)" - ); +AND ac.user_id IS NULL +"); $_processed[$type][$userID] = 1; }