Location: PHPKode > scripts > ColorShop > colorshop/classes/class-cs-payment-gateways.php
<?php
/**
 * ColorShop Payment Gateways class
 *
 * Loads payment gateways via hooks for use in the store.
 *
 * @class 		CS_Payment_Gateways
 * @version		1.0.0
 * @package		ColorShop/Classes/Payment
 * @category	Class
 * @author 		ColorVila
 */
class CS_Payment_Gateways {

	/** @var array Array of payment gateway classes. */
	var $payment_gateways;

	/**
	 * __construct function.
	 *
	 * @access public
	 * @return void
	 */
	public function __construct() {
		$this->init();
	}

    /**
     * Load gateways and hook in functions.
     *
     * @access public
     * @return void
     */
    function init() {

    	$load_gateways = apply_filters( 'colorshop_payment_gateways', array() );

		// Get order option
		$ordering 	= (array) get_option('colorshop_gateway_order');
		$order_end 	= 999;

		// Load gateways in order
		foreach ($load_gateways as $gateway) :

			$load_gateway = new $gateway();

			if (isset($ordering[$load_gateway->id]) && is_numeric($ordering[$load_gateway->id])) :
				// Add in position
				$this->payment_gateways[$ordering[$load_gateway->id]] = $load_gateway;
			else :
				// Add to end of the array
				$this->payment_gateways[$order_end] = $load_gateway;
				$order_end++;
			endif;

		endforeach;

		ksort( $this->payment_gateways );
    }


    /**
     * Get gateways.
     *
     * @access public
     * @return array
     */
    function payment_gateways() {

		$_available_gateways = array();

		if ( sizeof( $this->payment_gateways ) > 0 )
			foreach ( $this->payment_gateways as $gateway )
				$_available_gateways[ $gateway->id ] = $gateway;

		return $_available_gateways;
	}


	/**
	 * Get available gateways.
	 *
	 * @access public
	 * @return array
	 */
	function get_available_payment_gateways() {

		$_available_gateways = array();

		foreach ( $this->payment_gateways as $gateway ) :

			if ($gateway->is_available()) $_available_gateways[$gateway->id] = $gateway;

		endforeach;

		return apply_filters( 'colorshop_available_payment_gateways', $_available_gateways );
	}


	/**
	 * Save options in admin.
	 *
	 * @access public
	 * @return void
	 */
	function process_admin_options() {

		$default_gateway = ( isset( $_POST['default_gateway'] ) ) ? esc_attr( $_POST['default_gateway'] ) : '';
		$gateway_order = ( isset( $_POST['gateway_order'] ) ) ? $_POST['gateway_order'] : '';

		$order = array();

		if ( is_array( $gateway_order ) && sizeof( $gateway_order ) > 0 ) {
			$loop = 0;
			foreach ( $gateway_order as $gateway_id ) {
				$order[ esc_attr( $gateway_id ) ] = $loop;
				$loop++;
			}
		}

		update_option( 'colorshop_default_gateway', $default_gateway );
		update_option( 'colorshop_gateway_order', $order );
	}
}
Return current item: ColorShop