/** * Public function that creates a single instance */ public static function getInstance() { if (!isset(self::$_instance)) { self::$_instance = new self(); } return self::$_instance; }
/** * Add recurring payment for specified plan. * Returns true if new recurring payment was added for * specified transaction. * * @param integer $plan_id * @param float $amount * @param integer $status * @return boolean */ public function addRecurringPayment($plan_id, $amount, $status) { $result = false; // get managers $manager = ShopRecurringPaymentsManager::getInstance(); $plan_manager = ShopTransactionPlansManager::getInstance(); $buyer_manager = ShopBuyersManager::getInstance(); $transaction_manager = ShopTransactionsManager::getInstance(); // get transaction and associated plan $plan = $plan_manager->getSingleItem($plan_manager->getFieldNames(), array('id' => $plan_id)); // plan id is not valid if (!is_object($plan)) { return $result; } // insert new data $data = array('plan' => $plan->id, 'amount' => $amount, 'status' => $status); $manager->insertData($data); $payment_id = $manager->getInsertedID(); $result = true; // get newly inserted data $payment = $manager->getSingleItem($manager->getFieldNames(), array('id' => $payment_id)); // get transaction and buyer $transaction = $transaction_manager->getSingleItem($transaction_manager->getFieldNames(), array('id' => $plan->transaction)); // trigger event Events::trigger('shop', RecurringPayment::$signals[$status], $transaction, $plan, $payment); return $result; }