CRM-17636 fix for items not being recorded correctly (modified_date, invoice_id,...
[civicrm-core.git] / CRM / Member / Form.php
index 0cae51203ad42812cf0305afad2b6f56db16a052..cea4b87d49c3e08292ce631b0b15a5e21c9a9cf1 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.6                                                |
+ | CiviCRM version 4.7                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2015                                |
  +--------------------------------------------------------------------+
@@ -84,6 +84,13 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment {
    */
   public $_priceSet;
 
+  /**
+   * Values submitted to the form, processed along the way.
+   *
+   * @var array
+   */
+  protected $_params = array();
+
   public function preProcess() {
     // Check for edit permission.
     if (!CRM_Core_Permission::checkActionPermission('CiviMember', $this->_action)) {
@@ -323,13 +330,13 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment {
     $contributionRecurParams = array(
       'contact_id' => $paymentParams['contactID'],
       'amount' => $paymentParams['total_amount'],
+      'contribution_status_id' => 'Pending',
       'payment_processor_id' => $paymentParams['payment_processor_id'],
-      'campaign_id' => CRM_Utils_Array::value('campaign_id', $paymentParams),
+      'campaign_id' => $paymentParams['campaign_id'],
       'financial_type_id' => $paymentParams['financial_type_id'],
-      'is_email_receipt' => CRM_Utils_Array::value('is_email_receipt', $paymentParams),
-      // This is not great as it could also be direct debit - but is consistent with elsewhere & all need fixing.
-      'payment_instrument_id' => 1,
-      'invoice_id' => CRM_Utils_Array::value('invoiceID ', $paymentParams),
+      'is_email_receipt' => $paymentParams['is_email_receipt'],
+      'payment_instrument_id' => $paymentParams['payment_instrument_id'],
+      'invoice_id' => $paymentParams['invoice_id'],
     );
 
     $mapping = array(
@@ -341,15 +348,14 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment {
       'return' => $mapping,
     ));
 
+    $returnParams = array('is_recur' => TRUE);
     foreach ($mapping as $recurringFieldName => $membershipTypeFieldName) {
       $contributionRecurParams[$recurringFieldName] = $membershipType[$membershipTypeFieldName];
+      $returnParams[$recurringFieldName] = $membershipType[$membershipTypeFieldName];
     }
 
     $contributionRecur = civicrm_api3('ContributionRecur', 'create', $contributionRecurParams);
-    $returnParams = array(
-      'contributionRecurID' => $contributionRecur['id'],
-      'is_recur' => TRUE,
-    );
+    $returnParams['contributionRecurID'] = $contributionRecur['id'];
     return $returnParams;
   }
 
@@ -429,4 +435,34 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment {
     return $formValues;
   }
 
+  /**
+   * Assign billing name to the template.
+   */
+  protected function assignBillingName() {
+    $name = '';
+    if (!empty($this->_params['billing_first_name'])) {
+      $name = $this->_params['billing_first_name'];
+    }
+
+    if (!empty($this->_params['billing_middle_name'])) {
+      $name .= " {$this->_params['billing_middle_name']}";
+    }
+
+    if (!empty($this->_params['billing_last_name'])) {
+      $name .= " {$this->_params['billing_last_name']}";
+    }
+    $this->assign('billingName', $name);
+  }
+
+  /**
+   * Wrapper function for unit tests.
+   *
+   * @param array $formValues
+   */
+  public function testSubmit($formValues) {
+    $this->_memType = $formValues['membership_type_id'][1];
+    $this->_params = $formValues;
+    $this->submit();
+  }
+
 }