From 7e49aa9306340ff901d8df7ba8633898fb01b2e1 Mon Sep 17 00:00:00 2001 From: Seamus Lee <seamuslee001@gmail.com> Date: Sat, 10 Jul 2021 08:35:45 +1000 Subject: [PATCH] [REF] Update Product Create to use hooks and also switch the manage product/premium page to use APIv4 Product Entity Update to use suggestion from Coleman Set Product permissions to be the same as contribution entity --- CRM/Contribute/BAO/Product.php | 4 +++- CRM/Contribute/Form/ManagePremiums.php | 9 +++++---- CRM/Core/Permission.php | 1 + 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CRM/Contribute/BAO/Product.php b/CRM/Contribute/BAO/Product.php index 5d0a6ff42dd..f39e4e124fc 100644 --- a/CRM/Contribute/BAO/Product.php +++ b/CRM/Contribute/BAO/Product.php @@ -79,6 +79,7 @@ class CRM_Contribute_BAO_Product extends CRM_Contribute_DAO_Product { */ public static function create($params) { $id = $params['id'] ?? NULL; + $op = !empty($id) ? 'edit' : 'create'; if (empty($id)) { $defaultParams = [ 'id' => $id, @@ -90,7 +91,7 @@ class CRM_Contribute_BAO_Product extends CRM_Contribute_DAO_Product { ]; $params = array_merge($defaultParams, $params); } - + CRM_Utils_Hook::pre($op, 'Product', $id, $params); // Modify the submitted values for 'image' and 'thumbnail' so that we use // local URLs for these images when possible. if (isset($params['image'])) { @@ -104,6 +105,7 @@ class CRM_Contribute_BAO_Product extends CRM_Contribute_DAO_Product { $premium = new CRM_Contribute_DAO_Product(); $premium->copyValues($params); $premium->save(); + CRM_Utils_Hook::post($op, 'Product', $id, $premium); return $premium; } diff --git a/CRM/Contribute/Form/ManagePremiums.php b/CRM/Contribute/Form/ManagePremiums.php index 45904ea49f2..9939eddc4dd 100644 --- a/CRM/Contribute/Form/ManagePremiums.php +++ b/CRM/Contribute/Form/ManagePremiums.php @@ -15,6 +15,8 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ +use Civi\Api4\Product; + /** * This class generates form components for Premiums. */ @@ -35,8 +37,7 @@ class CRM_Contribute_Form_ManagePremiums extends CRM_Contribute_Form { public function setDefaultValues() { $defaults = parent::setDefaultValues(); if ($this->_id) { - $params = ['id' => $this->_id]; - CRM_Contribute_BAO_Product::retrieve($params, $tempDefaults); + $tempDefaults = Product::get()->addWhere('id', '=', $this->_id)->execute()->first(); if (isset($tempDefaults['image']) && isset($tempDefaults['thumbnail'])) { $defaults['imageUrl'] = $tempDefaults['image']; $defaults['thumbnailUrl'] = $tempDefaults['thumbnail']; @@ -291,10 +292,10 @@ class CRM_Contribute_Form_ManagePremiums extends CRM_Contribute_Form { $this->_processImages($params); // Save the premium product to database - $premium = CRM_Contribute_BAO_Product::create($params); + $premium = Product::save()->addRecord($params)->execute()->first(); CRM_Core_Session::setStatus( - ts("The Premium '%1' has been saved.", [1 => $premium->name]), + ts("The Premium '%1' has been saved.", [1 => $premium['name']]), ts('Saved'), 'success'); } diff --git a/CRM/Core/Permission.php b/CRM/Core/Permission.php index 6e167ea48ae..5166b65466a 100644 --- a/CRM/Core/Permission.php +++ b/CRM/Core/Permission.php @@ -1135,6 +1135,7 @@ class CRM_Core_Permission { ], ]; $permissions['line_item'] = $permissions['contribution']; + $permissions['product'] = $permissions['contribution']; $permissions['financial_item'] = $permissions['contribution']; -- GitLab