From 28188a1ed392891faadb0176385571538622edb9 Mon Sep 17 00:00:00 2001 From: eileen Date: Mon, 31 Aug 2020 13:51:03 +1200 Subject: [PATCH] Move LineItem acl handling from v3 api to financialacls extension This makes it available for the v4 api --- CRM/Price/BAO/LineItem.php | 28 ---------------------------- api/v3/LineItem.php | 3 --- ext/financialacls/financialacls.php | 21 +++++++++++++++++++++ 3 files changed, 21 insertions(+), 31 deletions(-) diff --git a/CRM/Price/BAO/LineItem.php b/CRM/Price/BAO/LineItem.php index b299fc7ad5..286c12679d 100644 --- a/CRM/Price/BAO/LineItem.php +++ b/CRM/Price/BAO/LineItem.php @@ -116,34 +116,6 @@ class CRM_Price_BAO_LineItem extends CRM_Price_DAO_LineItem { return NULL; } - /** - * Modifies $params array for filtering financial types. - * - * @param array $params - * (reference ) an assoc array of name/value pairs. - * - */ - public static function getAPILineItemParams(&$params) { - CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($types); - if ($types && empty($params['financial_type_id'])) { - $params['financial_type_id'] = ['IN' => array_keys($types)]; - } - elseif ($types) { - if (is_array($params['financial_type_id'])) { - $invalidFts = array_diff($params['financial_type_id'], array_keys($types)); - } - elseif (!in_array($params['financial_type_id'], array_keys($types))) { - $invalidFts = $params['financial_type_id']; - } - if ($invalidFts) { - $params['financial_type_id'] = ['NOT IN' => $invalidFts]; - } - } - else { - $params['financial_type_id'] = 0; - } - } - /** * @param int $contributionId * diff --git a/api/v3/LineItem.php b/api/v3/LineItem.php index f5b47a5e86..35de20acd3 100644 --- a/api/v3/LineItem.php +++ b/api/v3/LineItem.php @@ -62,9 +62,6 @@ function _civicrm_api3_line_item_create_spec(&$params) { * Array of matching line_items */ function civicrm_api3_line_item_get($params) { - if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() && !empty($params['check_permissions'])) { - CRM_Price_BAO_LineItem::getAPILineItemParams($params); - } return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params); } diff --git a/ext/financialacls/financialacls.php b/ext/financialacls/financialacls.php index dda05b28f6..b079114d9f 100644 --- a/ext/financialacls/financialacls.php +++ b/ext/financialacls/financialacls.php @@ -168,6 +168,27 @@ function financialacls_civicrm_pre($op, $objectName, $id, &$params) { } } +/** + * Implements hook_civicrm_selectWhereClause(). + * + * @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_selectWhereClause + */ +function financialacls_civicrm_selectWhereClause($entity, &$clauses) { + if ($entity === 'LineItem') { + if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus()) { + $types = []; + CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($types); + if ($types) { + $clauses['financial_type_id'] = 'IN (' . implode(',', array_keys($types)) . ')'; + } + else { + $clauses['financial_type_id'] = '= 0'; + } + } + } + +} + // --- Functions below this ship commented out. Uncomment as required. --- /** -- 2.25.1