/** * Method to change state of reward. * * @throws Exception * @return void */ public function changeState() { // Check for request forgeries. JSession::checkToken("get") or jexit(JText::_('JINVALID_TOKEN')); $userId = JFactory::getUser()->get("id"); if (!$userId) { $redirectOptions = array("force_direction" => JRoute::_("index.php?option=com_users&view=login", false)); $this->displayNotice(JText::_("COM_CROWDFUNDING_ERROR_NOT_LOG_IN"), $redirectOptions); return; } $redirect = base64_decode($this->input->get("redirect")); $redirectOptions = array("force_direction" => JRoute::_($redirect, false)); $txnId = $this->input->get->getInt('txn_id'); $state = $this->input->get->getInt('state'); $state = !$state ? 0 : 1; if (!$txnId) { $this->displayWarning(JText::_("COM_CROWDFUNDING_ERROR_INVALID_TRANSACTION"), $redirectOptions); return; } $keys = array("id" => $txnId, "receiver_id" => $userId); jimport("crowdfunding.transaction"); /** @var $transaction CrowdFundingTransaction */ $transaction = new CrowdFundingTransaction(JFactory::getDbo()); $transaction->load($keys); if (!$transaction->getId()) { $this->displayWarning(JText::_("COM_CROWDFUNDING_ERROR_INVALID_TRANSACTION"), $redirectOptions); return; } try { $transaction->updateRewardState($state); } catch (Exception $e) { JLog::add($e->getMessage()); throw new Exception(JText::_('COM_CROWDFUNDING_ERROR_SYSTEM')); } if (!$state) { $msg = JText::_("COM_CROWDFUNDING_REWARD_HAS_BEEN_SET_AS_NOT_SENT"); } else { $msg = JText::_("COM_CROWDFUNDING_REWARD_HAS_BEEN_SET_AS_SENT"); } $this->displayMessage($msg, $redirectOptions); }
/** * Save transaction data. * * @param array $transactionData * @param object $project * * @return null|array */ protected function storeTransaction($transactionData, $project) { // Get transaction by txn ID jimport("crowdfunding.transaction"); $keys = array("txn_id" => JArrayHelper::getValue($transactionData, "txn_id")); $transaction = new CrowdFundingTransaction(JFactory::getDbo()); $transaction->load($keys); // DEBUG DATA JDEBUG ? $this->log->add(JText::_($this->textPrefix . "_DEBUG_TRANSACTION_OBJECT"), $this->debugType, $transaction->getProperties()) : null; // Check for existed transaction if ($transaction->getId()) { // If the current status if completed, // stop the process. if ($transaction->isCompleted()) { return null; } } // Store the new transaction data. $transaction->bind($transactionData); $transaction->store(); // If it is not completed (it might be pending or other status), // stop the process. Only completed transaction will continue // and will process the project, rewards,... if (!$transaction->isCompleted()) { return null; } // Set transaction ID. $transactionData["id"] = $transaction->getId(); // If the new transaction is completed, // update project funded amount. $amount = JArrayHelper::getValue($transactionData, "txn_amount"); $project->addFunds($amount); $project->updateFunds(); return $transactionData; }