Example #1
0
 /**
  * Handler for awpcp-transaction-status-updated action
  *
  * XXX: Make sure the user has enough credit to pay for the plans.
  *  We already check that at the beginning of the transaction but I
  *  think is necessary to check again here.
  *  We need a way to mark individual items as paid or unpaid so
  *  other parts of the plugin can decide what to do.
  */
 public function update_account_balance($transaction)
 {
     if (awpcp_user_is_admin($transaction->user_id)) {
         return;
     }
     if ($transaction->payment_is_completed() || $transaction->payment_is_pending()) {
         $this->maybe_increase_account_balance($transaction);
     }
     if ($transaction->was_payment_successful() && $transaction->is_completed()) {
         $this->maybe_decrease_account_balance($transaction);
     }
 }
 public function user_has_enough_credit(&$balance = null)
 {
     if (awpcp_current_user_is_admin()) {
         return true;
     }
     if (awpcp_user_is_admin($this->user_id)) {
         return true;
     }
     $totals = $this->get_totals();
     $credits = $totals['credits'];
     // no need for credits
     if ($credits === 0) {
         return true;
     }
     $payments = awpcp_payments_api();
     if (!$payments->is_credit_accepted()) {
         return false;
     }
     $balance = $payments->get_account_balance($this->user_id);
     $plan = $payments->get_credit_plan($this->get('credit-plan'));
     $balance = $balance - $credits;
     if ($balance < 0) {
         if (is_null($plan)) {
             return false;
         }
         $balance = $balance + $plan->credits;
         if ($balance < 0) {
             return false;
         }
     }
     return true;
 }