Php8.2 stop accessing undefined form Property isQuickConfig in PriceField:addQuickFor...
authorEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 28 Feb 2023 19:30:02 +0000 (08:30 +1300)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 28 Feb 2023 19:31:25 +0000 (08:31 +1300)
CRM/Price/BAO/PriceField.php
CRM/Price/BAO/PriceSet.php

index 163f553eab37158a2d1b47587300d4f5b1cbd4bf..b76d95c3211afe7e538b0bc135210b3d680f4c1c 100644 (file)
@@ -268,6 +268,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField {
     }
 
     $is_pay_later = 0;
+    $isQuickConfig = CRM_Price_BAO_PriceSet::isQuickConfig($field->price_set_id);
     if (isset($qf->_mode) && empty($qf->_mode)) {
       $is_pay_later = 1;
     }
@@ -324,13 +325,13 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField {
         ]);
 
         $extra = [];
-        if (!empty($qf->_membershipBlock) && !empty($qf->_quickConfig) && $field->name == 'other_amount' && empty($qf->_contributionAmount)) {
+        if (!empty($qf->_membershipBlock) && $isQuickConfig && $field->name == 'other_amount' && empty($qf->_contributionAmount)) {
           $useRequired = 0;
         }
         elseif (!empty($fieldOptions[$optionKey]['label'])) {
           //check for label.
           $label = $fieldOptions[$optionKey]['label'];
-          if (!empty($qf->_quickConfig) && !empty($qf->_contributionAmount) && strtolower($fieldOptions[$optionKey]['name']) == 'other_amount') {
+          if ($isQuickConfig && !empty($qf->_contributionAmount) && strtolower($fieldOptions[$optionKey]['name']) == 'other_amount') {
             $label .= '  ' . $currencySymbol;
             $qf->assign('priceset', $elementName);
             $extra = [
@@ -361,7 +362,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField {
         }
 
         //CRM-10117
-        if (!empty($qf->_quickConfig)) {
+        if ($isQuickConfig) {
           $message = ts('Please enter a valid amount.');
           $type = 'money';
         }
@@ -376,7 +377,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField {
       case 'Radio':
         $choice = [];
 
-        if (!empty($qf->_quickConfig) && !empty($qf->_contributionAmount)) {
+        if ($isQuickConfig && !empty($qf->_contributionAmount)) {
           $qf->assign('contriPriceset', $elementName);
         }
 
@@ -418,7 +419,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField {
             'data-price-field-values' => json_encode($customOption),
             'visibility' => $visibility_id,
           ];
-          if (!empty($qf->_quickConfig) && $field->name == 'contribution_amount') {
+          if ($isQuickConfig && $field->name == 'contribution_amount') {
             $extra += ['onclick' => 'clearAmountOther();'];
           }
           if ($field->name == 'membership_amount') {
index 30de2eaf3686ed0b943f2712d6281966e266115c..982115ed82c6fa8aff25ad6e7559b3edd909c2c9 100644 (file)
@@ -509,6 +509,20 @@ WHERE  id = %1";
     return $setTree;
   }
 
+  /**
+   * Is the price set 'quick config'.
+   *
+   * Quick config price sets have a simplified configuration on
+   * contribution and event pages.
+   *
+   * @param int $priceSetID
+   *
+   * @return bool
+   */
+  public static function isQuickConfig(int $priceSetID): bool {
+    return (bool) self::getCachedPriceSetDetail($priceSetID)['is_quick_config'];
+  }
+
   /**
    * Get the Price Field ID.
    *
@@ -1320,8 +1334,7 @@ WHERE       ps.id = %1
   public static function copyPriceSet($baoName, $id, $newId) {
     $priceSetId = CRM_Price_BAO_PriceSet::getFor($baoName, $id);
     if ($priceSetId) {
-      $isQuickConfig = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config');
-      if ($isQuickConfig) {
+      if (self::isQuickConfig($priceSetId)) {
         $copyPriceSet = CRM_Price_BAO_PriceSet::copy($priceSetId);
         CRM_Price_BAO_PriceSet::addTo($baoName, $newId, $copyPriceSet->id);
       }