/**
  * 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"));
 }