Remove undefined property userName
authorEileen McNaughton <emcnaughton@wikimedia.org>
Fri, 15 Sep 2023 23:35:35 +0000 (11:35 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Sun, 17 Sep 2023 23:10:38 +0000 (11:10 +1200)
This is causing issues on a bunch of classes - but in fact
is only used on the ContributionForm

CRM/Contribute/Form/AbstractEditPayment.php
CRM/Contribute/Form/AdditionalPayment.php
CRM/Contribute/Form/Contribution.php

index b9ff55e169882bb33325a82a6e2f0eba8b15676b..442b056c293caccf76516f0452918d238afffc80 100644 (file)
@@ -673,7 +673,7 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task {
 
   protected function assignContactEmailDetails() {
     if ($this->getContactID()) {
-      [$displayName, $this->userEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->getContactID());
+      [$displayName] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->getContactID());
       if (!$displayName) {
         $displayName = civicrm_api3('contact', 'getvalue', ['id' => $this->getContactID(), 'return' => 'display_name']);
       }
index de5821dc04f30b4cb92a7b6008f363582ef1cb39..259fc2f89e3a29448aa65a9d40dcec68a1440577 100644 (file)
@@ -369,9 +369,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract
 
     // we need to retrieve email address
     if ($this->_context === 'standalone' && !empty($this->_params['is_email_receipt'])) {
-      list($displayName,
-        $this->userEmail
-        ) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactId);
+      [$displayName] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactId);
       $this->assign('displayName', $displayName);
     }
 
index 8065dc28bc3a4a02fac5960389668b010e1aad70..6e2ea4ff0653a3731c0031f7f8862786dae8b3d0 100644 (file)
@@ -17,6 +17,8 @@ use Civi\Payment\Exception\PaymentProcessorException;
  * This class generates form components for processing a contribution.
  */
 class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditPayment {
+  use CRM_Contact_Form_ContactFormTrait;
+
   /**
    * The id of the contribution that we are processing.
    *
@@ -146,11 +148,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
    * @var array
    */
   public $_paymentFields = [];
-  /**
-   * Logged in user's email.
-   * @var string
-   */
-  public $userEmail;
 
   /**
    * Price set ID.
@@ -165,13 +162,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
    */
   public $_priceSet;
 
-  /**
-   * User display name
-   *
-   * @var string
-   */
-  public $userDisplayName;
-
   /**
    * Status message to be shown to the user.
    *
@@ -504,7 +494,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
       }
     }
 
-    $this->assign('email', $this->userEmail);
     $this->assign('is_pay_later', !empty($defaults['is_pay_later']));
 
     $this->assign('contribution_status_id', CRM_Utils_Array::value('contribution_status_id', $defaults));
@@ -704,8 +693,8 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     //need to assign custom data type and subtype to the template
     $this->assign('customDataType', 'Contribution');
     $this->assign('customDataSubType', $this->getFinancialTypeID());
-    $this->assign('entityID', $this->_id);
-
+    $this->assign('entityID', $this->getContributionID());
+    $this->assign('email', $this->getContactValue('email_primary.email'));
     $contactField = $this->addEntityRef('contact_id', ts('Contributor'), ['create' => TRUE, 'api' => ['extra' => ['email']]], TRUE);
     if ($this->_context !== 'standalone') {
       $contactField->freeze();
@@ -1128,7 +1117,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
 
     $now = date('YmdHis');
 
-    $this->_contributorEmail = $this->userEmail;
+    $this->_contributorEmail = $this->getContactValue('email_primary.email');
     $this->_contributorContactID = $contactID;
     $this->processBillingAddress();
     if (!empty($params['source'])) {
@@ -1178,7 +1167,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     $paymentParams['contributionPageID'] = NULL;
 
     if (!empty($this->_params['is_email_receipt'])) {
-      $paymentParams['email'] = $this->userEmail;
+      $paymentParams['email'] = $this->getContactValue('email_primary.email');
       $paymentParams['is_email_receipt'] = 1;
     }
     else {
@@ -2045,7 +2034,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
   public function setUserContext(): void {
     $session = CRM_Core_Session::singleton();
     $buttonName = $this->controller->getButtonName();
-    if ($this->_context == 'standalone') {
+    if ($this->_context === 'standalone') {
       if ($buttonName == $this->getButtonName('upload', 'new')) {
         $session->replaceUserContext(CRM_Utils_System::url('civicrm/contribute/add',
           'reset=1&action=add&context=standalone'
@@ -2208,4 +2197,22 @@ WHERE  contribution_id = {$id}
     }
   }
 
+  /**
+   * Get the contact ID in use.
+   *
+   * Ideally override this as appropriate to the form.
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   * @noinspection PhpDocSignatureIsNotCompleteInspection
+   */
+  public function getContactID(): ?int {
+    if ($this->_contactID === NULL) {
+      $this->_contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $this);
+      if (empty($this->_contactID) && !empty($this->_id) && $this->entity) {
+        $this->_contactID = civicrm_api3($this->entity, 'getvalue', ['id' => $this->_id, 'return' => 'contact_id']);
+      }
+    }
+    return $this->_contactID ? (int) $this->_contactID : NULL;
+  }
+
 }