Overview
  • Namespace
  • Class

Namespaces

  • None
  • WC_POS
    • Admin
      • Settings
        • Receipt
    • API
    • Gateways
    • Integrations
    • Products

Classes

  • WC_POS\Activator
  • WC_POS\Admin
  • WC_POS\Admin\Gateways
  • WC_POS\Admin\Menu
  • WC_POS\Admin\Notices
  • WC_POS\Admin\Orders
  • WC_POS\Admin\Page
  • WC_POS\Admin\Permalink
  • WC_POS\Admin\Plugins
  • WC_POS\Admin\Products
  • WC_POS\Admin\Settings
  • WC_POS\Admin\Settings\Access
  • WC_POS\Admin\Settings\Checkout
  • WC_POS\Admin\Settings\Customers
  • WC_POS\Admin\Settings\Gateways
  • WC_POS\Admin\Settings\General
  • WC_POS\Admin\Settings\HotKeys
  • WC_POS\Admin\Settings\Page
  • WC_POS\Admin\Settings\Receipt\Options
  • WC_POS\Admin\Settings\Receipt\Template
  • WC_POS\Admin\Settings\Receipts
  • WC_POS\Admin\Settings\Status
  • WC_POS\Admin\Settings\Tools
  • WC_POS\Admin\Status
  • WC_POS\Ajax
  • WC_POS\API
  • WC_POS\API\Coupons
  • WC_POS\API\Customers
  • WC_POS\API\Gateways
  • WC_POS\API\i18n
  • WC_POS\API\Orders
  • WC_POS\API\Params
  • WC_POS\API\Payload
  • WC_POS\API\Products
  • WC_POS\API\Settings
  • WC_POS\API\Support
  • WC_POS\API\Templates
  • WC_POS\Customers
  • WC_POS\Deactivator
  • WC_POS\Gateways
  • WC_POS\Gateways\Card
  • WC_POS\Gateways\Cash
  • WC_POS\i18n
  • WC_POS\Integrations\Bookings
  • WC_POS\Products
  • WC_POS\Products\Visibility
  • WC_POS\Setup
  • WC_POS\Status
  • WC_POS\Tax
  • WC_POS\Template

Functions

  • is_pos
  • is_pos_admin
  • wc_pos_get_option
  • wc_pos_json_encode
  • wc_pos_locate_template
  • wc_pos_trim_html_string
  • wc_pos_update_option
  • wc_pos_url
 1 <?php
 2 
 3 /**
 4 * WP Checkout Settings Class
 5 *
 6 * @class    WC_POS_Admin_Settings_Checkout
 7 * @package  WooCommerce POS
 8 * @author   Paul Kilmurray <paul@kilbot.com.au>
 9 * @link     http://www.woopos.com.au
10 */
11 
12 namespace WC_POS\Admin\Settings;
13 
14 use WC_Payment_Gateways;
15 
16 class Checkout extends Page {
17 
18   protected static $instance;
19 
20   /**
21    * Each settings tab requires an id and label
22    */
23   public function __construct() {
24     $this->id    = 'checkout';
25     /* translators: woocommerce */
26     $this->label = __( 'Checkout', 'woocommerce' );
27 
28     $this->defaults = array(
29       'order_status'    => 'wc-completed',
30       'default_gateway' => 'pos_cash',
31       'enabled' => array(
32         'pos_cash'  => true,
33         'pos_card'  => true,
34         'paypal'    => true
35       )
36     );
37   }
38 
39   /**
40    * @return mixed|void
41    */
42   public function load_gateways() {
43     $gateways = WC_Payment_Gateways::instance()->payment_gateways;
44     $order = $this->get('gateway_order');
45     
46     // some poorly written plugins will init WC_Payment_Gateways before WP init
47     // check to see if POS Cash Gateway is present, if not: re-init WC_Payment_Gateways
48     if( ! in_array( 'WC_POS\Gateways\Cash', array_map( 'get_class', $gateways ) ) ){
49       WC_Payment_Gateways::instance()->init();
50       $gateways = WC_Payment_Gateways::instance()->payment_gateways;
51     }
52 
53     // reorder
54     $i = count($gateways);
55     foreach( $gateways as $gateway ) {
56       if( isset( $order[$gateway->id] ) ) {
57         $ordered_gateways[ $order[$gateway->id] ] = $gateway;
58       } else {
59         $ordered_gateways[ ++$i ] = $gateway;
60       }
61       $settings = new Gateways($gateway->id);
62       $settings->merge_settings($gateway); // @todo remove this, use get_title() etc
63     }
64 
65     ksort( $ordered_gateways, SORT_NUMERIC );
66     return apply_filters( 'woocommerce_pos_load_gateways', $ordered_gateways );
67   }
68 
69   /**
70    * @return mixed|void
71    */
72   public function load_enabled_gateways() {
73     $gateways = $this->load_gateways();
74     $enabled = $this->get_enabled_gateway_ids();
75     $default = $this->get( 'default_gateway' );
76     $enabled_gateways = array();
77 
78     if ( $gateways ): foreach ( $gateways as $gateway ):
79       $id = $gateway->id;
80       if ( in_array( $id, $enabled ) && isset( $gateway->pos ) && $gateway->pos ) {
81         $gateway->default = $id == $default;
82         // $gateway->enabled = 'yes'; // gets stomped later by init_settings()
83         $enabled_gateways[ $id ] = $gateway;
84       }
85     endforeach; endif;
86 
87     return apply_filters( 'woocommerce_pos_load_enabled_gateways', $enabled_gateways );
88   }
89 
90   /**
91    * Convenience function, returns POS enabled gateway ids
92    * @return array
93    */
94   public function get_enabled_gateway_ids(){
95     return array_keys( (array) $this->get('enabled'), true);
96   }
97 
98 }
99 
API documentation generated by ApiGen