/** * 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; } }
/** * 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; }
/** * 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); } }