/** * process the form after the input has been submitted and validated * * @access public * @return None */ public function postProcess() { $session = CRM_Core_Session::singleton(); if ($this->_action & CRM_Core_Action::DELETE) { // Delete the linked contributions $contribution = new CRM_Contribute_DAO_Contribution(); $contribution->contribution_recur_id = $this->_id; $contribution->find(); while ($contribution->fetch()) { CRM_Contribute_BAO_Contribution::deleteContribution($contribution->id); } // Delete recurring contribution record CRM_Contribute_BAO_ContributionRecur::deleteRecurContribution($this->_id); $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view', "reset=1&cid={$this->_contactID}&selectedChild=contribute-recur")); return NULL; } // get the submitted form values. $submittedValues = $this->controller->exportValues($this->_name); // get the required field value only. $formValues = $submittedValues; $ids = array(); if ($this->_contactID) { $params['contact_id'] = $this->_contactID; } $params['currency'] = CRM_Contribute_Form_AbstractEditPayment::getCurrency($submittedValues); $dates = array('start_date', 'end_date', 'cancel_date', 'next_sched_contribution_date'); foreach ($dates as $d) { $params[$d] = CRM_Utils_Date::processDate($formValues[$d], $formValues[$d . '_time'], TRUE); } if (empty($this->_id)) { $params['create_date'] = CRM_Utils_Date::processDate(date('Y-m-d')); } if ($this->_action & CRM_Core_Action::ADD) { $params['next_sched_contribution_date'] = $params['start_date']; } $fields = array('payment_processor_id', 'processor_id', 'trxn_id', 'financial_type_id', 'amount', 'payment_instrument_id', 'frequency_interval', 'frequency_unit', 'cycle_day', 'contribution_status_id'); foreach ($fields as $f) { $params[$f] = CRM_Utils_Array::value($f, $formValues); } $params['id'] = $this->_id; // build custom data getFields array $customFields = CRM_Core_BAO_CustomField::getFields('ContributionRecur', FALSE, FALSE, NULL, NULL, TRUE); $params['custom'] = CRM_Core_BAO_CustomField::postProcess($_POST, $this->_id, 'ContributionRecur'); $contributionRecur = CRM_Contribute_BAO_ContributionRecur::create($params); // Link the recurring contribution with membership record, if selected if ($this->_action == 1 && !empty($formValues['membership_id'])) { civicrm_api3('Membership', 'create', array('id' => $formValues['membership_id'], 'contribution_recur_id' => $contributionRecur->id)); } // Move the recurring record if (isset($submittedValues['move_recurring_record']) && $submittedValues['move_recurring_record'] == 1) { self::moveRecurringRecord($submittedValues); } $session->replaceUserContext(CRM_Utils_System::url('civicrm/contact/view', "reset=1&cid={$this->_contactID}&selectedChild=contribute-recur")); }