/** * Main function. * * @return bool */ public function main() { $objects = $ids = $input = array(); $component = $this->retrieve('module', 'String'); $input['component'] = $component; $ids['contact'] = $this->retrieve('contactID', 'Integer', TRUE); $ids['contribution'] = $this->retrieve('contributionID', 'Integer', TRUE); $this->getInput($input, $ids); if ($component == 'event') { $ids['event'] = $this->retrieve('eventID', 'Integer', TRUE); $ids['participant'] = $this->retrieve('participantID', 'Integer', TRUE); } else { // get the optional ids $ids['membership'] = $this->retrieve('membershipID', 'Integer', FALSE); $ids['contributionRecur'] = $this->retrieve('contributionRecurID', 'Integer', FALSE); $ids['contributionPage'] = $this->retrieve('contributionPageID', 'Integer', FALSE); $ids['related_contact'] = $this->retrieve('relatedContactID', 'Integer', FALSE); $ids['onbehalf_dupe_alert'] = $this->retrieve('onBehalfDupeAlert', 'Integer', FALSE); } $paymentProcessorID = $this->retrieve('processor_id', 'Integer', FALSE); if (empty($paymentProcessorID)) { $processorParams = array('user_name' => $this->retrieve('receiver_email', 'String', FALSE), 'payment_processor_type_id' => CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessorType', 'PayPal_Standard', 'id', 'name'), 'is_test' => empty($input['is_test']) ? 0 : 1); $processorInfo = array(); if (!CRM_Financial_BAO_PaymentProcessor::retrieve($processorParams, $processorInfo)) { return FALSE; } $paymentProcessorID = $processorInfo['id']; } if (!$this->validateData($input, $ids, $objects, TRUE, $paymentProcessorID)) { return FALSE; } self::$_paymentProcessor =& $objects['paymentProcessor']; if ($component == 'contribute') { if ($ids['contributionRecur']) { // check if first contribution is completed, else complete first contribution $first = TRUE; if ($objects['contribution']->contribution_status_id == 1) { $first = FALSE; } return $this->recur($input, $ids, $objects, $first); } else { return $this->single($input, $ids, $objects, FALSE, FALSE); } } else { return $this->single($input, $ids, $objects, FALSE, FALSE); } }