LLMS_Payment_Gateways
Manage and access LifterLMS payment gateways.
Contents
Source Source
File: includes/class.llms.payment.gateways.php
class LLMS_Payment_Gateways {
use LLMS_Trait_Singleton;
/**
* Payment Gateways
*
* @var LLMS_Payment_Gateway[]
*/
public $payment_gateways = array();
/**
* Constructor.
*
* @since 3.0.0
*
* @return void
*/
public function __construct() {
add_filter( 'lifterlms_payment_gateways', array( $this, 'add_core_gateways' ) );
/**
* Filters the list of registered LifterLMS Payment Gateway classes.
*
* @since 3.0.0
*
* @param string[] $gateways Array of payment gateway class names.
*/
$gateways = apply_filters( 'lifterlms_payment_gateways', $this->payment_gateways );
foreach ( $gateways as $gateway ) {
$load_gateway = new $gateway();
$order = absint( $load_gateway->get_display_order() );
// If the order already exists create a new order for it.
if ( isset( $this->payment_gateways[ $order ] ) ) {
$order = max( array_keys( $this->payment_gateways ) ) + 1;
}
$this->payment_gateways[ $order ] = $load_gateway;
}
ksort( $this->payment_gateways );
}
/**
* Register core gateways.
*
* @since 3.0.0
*
* @param string[] $gateways Array of gateway class names.
* @return string[]
*/
public function add_core_gateways( $gateways ) {
$gateways[] = 'LLMS_Payment_Gateway_Manual';
return $gateways;
}
/**
* Get only enabled payment gateways.
*
* @since 3.0.0
*
* @return array
*/
public function get_enabled_payment_gateways() {
$gateways = array();
foreach ( $this->get_payment_gateways() as $gateway ) {
if ( $gateway->is_enabled() ) {
$gateways[ $gateway->get_id() ] = $gateway;
}
}
/**
* Filters the registered LifterLMS Payment Gateways which are explicitly enabled.
*
* @since 3.0.0
*
* @param LLMS_Payment_Gateway[] $gateways List of enabled gateways.
*/
return apply_filters( 'lifterlms_enabled_payment_gateways', $gateways );
}
/**
* Retrieves the default payment gateway ID.
*
* The default gateway is the first gateway in the list of enabled gateways.
*
* @since 3.0.0
*
* @return string
*/
public function get_default_gateway() {
$gateways = $this->get_enabled_payment_gateways();
$ids = array_keys( $gateways );
return array_shift( $ids );
}
/**
* Retrieves a payment gateway object by the gateway ID.
*
* @since 2.5.0
*
* @param string $id id of the gateway (paypal, stripe, etc...)
* @return LLMS_Payment_Gateway|boolean Returns the gateway if it's registered, otherwise `false`.
*/
public function get_gateway_by_id( $id ) {
$gateways = $this->get_payment_gateways();
if ( array_key_exists( $id, $gateways ) ) {
return $gateways[ $id ];
}
return false;
}
/**
* Retrieves all registered payment gateways.
*
* @since 3.0.0
*
* @return LLMS_Payment_Gateway[]
*/
public function get_payment_gateways() {
$gateways = array();
foreach ( $this->payment_gateways as $gateway ) {
$gateways[ $gateway->id ] = $gateway;
}
return $gateways;
}
/**
* Retrieves all enabled gateways which support the specified gateway feature.
*
* @since 3.10.0
*
* @see LLMS_Payment_Gateway::get_supported_features()
*
* @param string $feature A gateway feature string.
* @return array
*/
public function get_supporting_gateways( $feature ) {
$gateways = array();
foreach ( $this->get_enabled_payment_gateways() as $id => $gateway ) {
if ( $gateway->supports( $feature ) ) {
$gateways[ $id ] = $gateway;
}
}
/**
* Filters the list of gateways supporting the specified feature.
*
* Hook description.
*
* @since 3.10.0
*
* @param LLMS_Payment_Gateway[] $gateways Array of supporting gateways.
* @param string $feature The requested gateway feature string.
*/
return apply_filters( 'lifterlms_supporting_payment_gateways', $gateways, $feature );
}
/**
* Determines if any payment gateways are registered.
*
* @since 3.0.0
* @since 6.5.0 Refactor for code simplicity.
*
* @param boolean $enabled Whether or not to check against only enabled gateways.
* @return boolean
*/
public function has_gateways( $enabled = false ) {
$method = $enabled ? 'get_enabled_payment_gateways' : 'get_payment_gateways';
return count( $this->{$method}() ) >= 1;
}
}
Expand full source code Collapse full source code View on GitHub
Methods Methods
- __construct — Constructor.
- add_core_gateways — Register core gateways.
- get_default_gateway — Retrieves the default payment gateway ID.
- get_enabled_payment_gateways — Get only enabled payment gateways.
- get_gateway_by_id — Retrieves a payment gateway object by the gateway ID.
- get_payment_gateways — Retrieves all registered payment gateways.
- get_supporting_gateways — Retrieves all enabled gateways which support the specified gateway feature.
- has_gateways — Determines if any payment gateways are registered.
- instance — Create instance of class
Changelog Changelog
| Version | Description |
|---|---|
| 6.0.0 | Removed the deprecated LLMS_Payment_Gateways::$_instance property. |
| 5.3.0 | Replace singleton code with LLMS_Trait_Singleton. |
| 3.0.0 | Unknown. |
| 1.0.0 | Introduced. |