Esempio n. 1
0
/**
 * Runs the process_recurring() method on a currently active gateway
 * @param  string $gateway_id Identifier of currently active gateway
 * @param  APP_Order $order   Order to be processed
 * @return boolean            False on error
 */
function appthemes_process_recurring_gateway($gateway_id, $order)
{
    $receipt_order = APP_Order_Receipt::retrieve($order->get_id());
    $options = APP_Gateway_Registry::get_gateway_options($gateway_id);
    $gateway = APP_Gateway_Registry::get_gateway($gateway_id);
    if (!appthemes_is_recurring_available()) {
        return false;
    }
    if (APP_Gateway_Registry::is_gateway_enabled($gateway_id) || current_user_can('manage_options')) {
        if (!$gateway->is_recurring()) {
            return false;
        }
        $gateway->process_recurring($receipt_order, $options);
        return true;
    } else {
        return false;
    }
}
Esempio n. 2
0
 /**
  * Retrieves an existing order by ID.
  *
  * @param int $order_id Order ID
  *
  * @return object|bool APP_Order Object representing the order. Boolean False on failure.
  */
 public static function retrieve($order_id)
 {
     if (!is_numeric($order_id)) {
         trigger_error('Invalid order id given. Must be an integer', E_USER_WARNING);
         return false;
     }
     $order_data = get_post($order_id);
     if (!$order_data || $order_data->post_type != APPTHEMES_ORDER_PTYPE) {
         return false;
     }
     // retrieve an escrow order instead if the order is flagged as escrow
     if (appthemes_is_escrow_order($order_id)) {
         return APP_Escrow_Order_Factory::retrieve($order_id);
     }
     if (appthemes_is_recurring_available()) {
         return new APP_Recurring_Order($order_data, self::get_order_items($order_id));
     }
     $order = new APP_Instant_Order($order_data, self::get_order_items($order_id));
     return $order;
 }
Esempio n. 3
0
/**
 * Checks if a given order is an escrow order or a normal order without loading the order
 *
 * @param mixed $order_id The Order ID or Order object to check
 *
 * @return bool True if is an escrow Order, False if is a normal Order
 */
function appthemes_is_recurring_order($order_id)
{
    if (!appthemes_is_recurring_available()) {
        return false;
    } else {
        return _appthemes_is_recurring_order($order_id);
    }
}