<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.5 |
+ | CiviCRM version 4.6 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2014 |
+--------------------------------------------------------------------+
class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_ContributionBase {
/**
- * the id of the contact associated with this contribution
+ * The id of the contact associated with this contribution
*
* @var int
- * @public
*/
public $_contactID;
* The id of the contribution object that is created when the form is submitted
*
* @var int
- * @public
*/
public $_contributionID;
*
* @param array $params
* @param integer $contactID
- * @param $financialTypeID
+ * @param int $financialTypeID
* @param $online
- * @param $contributionPageId
+ * @param int $contributionPageId
* @param $nonDeductibleAmount
- * @param $campaignId
- *
+ * @param int $campaignId
* @param $isMonetary
- *
* @param $pending
* @param $paymentProcessorOutcome
* @param $receiptDate
- *
- * @param $recurringContributionID
+ * @param int $recurringContributionID
* @param $isTest
+ * @param int $addressID
+ * @param int $softCreditToID
+ * @param array $lineItems
*
- * @param $addressID
- *
- * @param $softCreditToID
- *
- * @param $lineItems
- *
- * @internal param $financialType
* @return array
*/
public static function getContributionParams($params, $contactID, $financialTypeID, $online, $contributionPageId, $nonDeductibleAmount, $campaignId, $isMonetary, $pending,
}
/**
- * Function to set variables up before form is built
+ * Set variables up before form is built
*
* @return void
- * @access public
*/
public function preProcess() {
$config = CRM_Core_Config::singleton();
}
/**
- * Function to actually build the form
+ * Build the form object
*
* @return void
- * @access public
*/
public function buildQuickForm() {
$this->assignToTemplate();
// Recursively set defaults for nested fields
if (isset($contact[$name]) && is_array($contact[$name]) && ($name == 'onbehalf' || $name == 'honor')) {
foreach ($contact[$name] as $fieldName => $fieldValue) {
- $defaults["{$name}[{$fieldName}]"] = $fieldValue;
+ if (is_array($fieldValue) && !in_array($this->_fields[$name][$fieldName]['html_type'], array('Multi-Select','AdvMulti-Select'))) {
+ foreach ($fieldValue as $key => $value) {
+ $defaults["{$name}[{$fieldName}][{$key}]"] = $value;
+ }
+ }
+ else {
+ $defaults["{$name}[{$fieldName}]"] = $fieldValue;
+ }
}
}
elseif (isset($contact[$name])) {
}
/**
- * overwrite action, since we are only showing elements in frozen mode
+ * Overwrite action, since we are only showing elements in frozen mode
* no help display needed
*
* @return int
- * @access public
*/
- function getAction() {
+ public function getAction() {
if ($this->_action & CRM_Core_Action::PREVIEW) {
return CRM_Core_Action::VIEW | CRM_Core_Action::PREVIEW;
}
}
/**
- * This function sets the default values for the form. Note that in edit/view mode
+ * Set default values for the form. Note that in edit/view mode
* the default values are retrieved from the database
*
- * @access public
*
* @return void
*/
- function setDefaultValues() {}
+ public function setDefaultValues() {}
/**
* Process the form
*
* @return void
- * @access public
*/
public function postProcess() {
$contactID = $this->getContactID();
-
+ $isPayLater = $this->_params['is_pay_later'];
+ if ($this->_params['payment_processor'] == 0) {
+ $this->_params['is_pay_later'] = $isPayLater = TRUE;
+ }
// add a description field at the very beginning
$this->_params['description'] = ts('Online Contribution') . ': ' . (($this->_pcpInfo['title']) ? $this->_pcpInfo['title'] : $this->_values['title']);
//unset the billing parameters if it is pay later mode
//to avoid creation of billing location
- if ($params['is_pay_later'] && !$this->_isBillingAddressRequiredForPayLater) {
+ if ($isPayLater && !$this->_isBillingAddressRequiredForPayLater) {
$billingFields = array(
'billing_first_name',
'billing_middle_name',
}
}
}
- $this->processMembership($membershipParams, $contactID, $customFieldsFormatted, $fieldTypes, $premiumParams, $membershipLineItems);
+ $this->processMembership($membershipParams, $contactID, $customFieldsFormatted, $fieldTypes, $premiumParams, $membershipLineItems, $isPayLater);
if (!$this->_amount > 0.0 || !$membershipParams['amount']) {
// we need to explicitly create a CMS user in case of free memberships
// since it is done under processConfirm for paid memberships
}
$fieldTypes = array('Contact', 'Organization', 'Contribution');
}
+ $financialTypeID = $this->wrangleFinancialTypeID($contributionTypeId);
CRM_Contribute_BAO_Contribution_Utils::processConfirm($this, $paymentParams,
$premiumParams, $contactID,
- $contributionTypeId,
+ $financialTypeID,
'contribution',
- $fieldTypes
+ $fieldTypes,
+ ($this->_mode == 'test') ? 1 : 0,
+ $isPayLater
);
}
}
+ /**
+ * This wrangling of the financialType ID was happening in a shared function rather than in the form it relates to & hence has been moved to that form
+ * Pledges are not relevant to the membership code so that portion will not go onto the membership form.
+ *
+ * Comments from previous refactor indicate doubt as to what was going on
+ * @param int $contributionTypeId
+ *
+ * @return null|string
+ */
+ public function wrangleFinancialTypeID($contributionTypeId) {
+ if (isset($paymentParams['financial_type'])) {
+ $contributionTypeId = $paymentParams['financial_type'];
+ }
+ elseif (!empty($this->_values['pledge_id'])) {
+ $contributionTypeId = CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_Pledge',
+ $this->_values['pledge_id'],
+ 'financial_type_id'
+ );
+ }
+ return $contributionTypeId;
+ }
+
/**
* Process the form
*
- * @param $premiumParams
+ * @param array $premiumParams
* @param $contribution
*
* @return void
- * @access public
*/
public function postProcessPremium($premiumParams, $contribution) {
$hour = $minute = $second = 0;
/**
* Process the contribution
*
- * @param $form
+ * @param CRM_Core_Form $form
* @param array $params
* @param array $result
* @param integer $contactID
*
* @throws Exception
* @return CRM_Contribute_DAO_Contribution
- * @access public
*/
static function processContribution(
&$form,
*
* @return mixed
*/
- static function processRecurringContribution(&$form, &$params, $contactID, $contributionType, $online = TRUE) {
+ public static function processRecurringContribution(&$form, &$params, $contactID, $contributionType, $online = TRUE) {
// return if this page is not set for recurring
// or the user has not chosen the recurring option
}
/**
- * Function to add on behalf of organization and it's location
+ * Add on behalf of organization and it's location
*
* @param $behalfOrganization array array of organization info
* @param $contactID int individual contact id. One
* who is doing the process of signup / contribution.
*
* @param $values array form values array
- * @param $params
+ * @param array $params
* @param null $fields
*
* @return void
- * @access public
*/
- static function processOnBehalfOrganization(&$behalfOrganization, &$contactID, &$values, &$params, $fields = NULL) {
+ public static function processOnBehalfOrganization(&$behalfOrganization, &$contactID, &$values, &$params, $fields = NULL) {
$isCurrentEmployer = FALSE;
$dupeIDs = array();
$orgID = NULL;
* @param object $contribution contribution object
*
* @static
- * @access public
*/
- static function processPcpSoft(&$params, &$contribution) {
+ public static function processPcpSoft(&$params, &$contribution) {
//add soft contribution due to pcp or Submit Credit / Debit Card Contribution by admin.
if (!empty($params['soft_credit_to'])) {
$contributionSoftParams = array();
* Function used to se pcp related defaults / params
* This is used by contribution and also event pcps
*
- * @param object $page form object
+ * @param CRM_Core_Form $page form object
* @param array $params associated array
*
* @return array
* @static
- * @access public
*/
- static function processPcp(&$page, $params) {
+ public static function processPcp(&$page, $params) {
$params['pcp_made_through_id'] = $page->_pcpId;
$page->assign('pcpBlock', TRUE);
if (!empty($params['pcp_display_in_roll']) && empty($params['pcp_roll_nickname'])) {
* @param array $fieldTypes
* @param array $premiumParams
* @param array $membershipLineItems line items specifically relating to memberships
+ * @param $isPayLater
*/
- public function processMembership($membershipParams, $contactID, $customFieldsFormatted, $fieldTypes, $premiumParams, $membershipLineItems) {
+ public function processMembership($membershipParams, $contactID, $customFieldsFormatted, $fieldTypes, $premiumParams, $membershipLineItems, $isPayLater) {
try {
$membershipTypeIDs = (array) $membershipParams['selectMembership'];
$membershipTypes = CRM_Member_BAO_Membership::buildMembershipTypeValues($this, $membershipTypeIDs);
CRM_Member_BAO_Membership::postProcessMembership($membershipParams, $contactID,
$this, $premiumParams, $customFieldsFormatted, $fieldTypes, $membershipType, $membershipTypeIDs, $isPaidMembership, $this->_membershipId, $isProcessSeparateMembershipTransaction, $contributionTypeId,
- $membershipLineItems
+ $membershipLineItems, $isPayLater
);
$this->assign('membership_assign', TRUE);
$this->set('membershipTypeID', $membershipParams['selectMembership']);
* And under certain circumstances sets
* $this->_params['amount'] = null;
*
- * @param $priceSetID
+ * @param int $priceSetID
*
- * @internal param $isQuickConfig
- * @internal param $priceField
*/
public function setFormAmountFields($priceSetID) {
$isQuickConfig = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_params['priceSetId'], 'is_quick_config');
*
* @throws CiviCRM_API3_Exception
*/
- static function submit($params) {
+ public static function submit($params) {
$form = new CRM_Contribute_Form_Contribution_Confirm();
$form->_id = $params['id'];
if (!empty($params['contact_id'])) {
$form->_contributeMode = 'notify';
}
}
+ else {
+ $form->_params['payment_processor'] = 0;
+ }
$priceFields = $priceFields[$priceSetID]['fields'];
CRM_Price_BAO_PriceSet::processAmount($priceFields, $paramsProcessedForForm, $lineItems, 'civicrm_contribution');
$form->_lineItem = array($priceSetID => $lineItems);
/**
* Helper function for static submit function - set relevant params - help us to build up an array that we can pass in
- * @param $id
+ * @param int $id
* @param array $params
*
* @return array
* @throws CiviCRM_API3_Exception
*/
- static function getFormParams($id, array $params) {
+ public static function getFormParams($id, array $params) {
if(!isset($params['is_pay_later'])) {
if (!empty($params['payment_processor'])) {
$params['is_pay_later'] = 0;