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 Admin Menu Class
  5 *
  6 * @class    WC_POS_Admin_Menu
  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;
 13 
 14 class Menu {
 15 
 16   /** @vars string Unique menu identifier */
 17   private $toplevel_screen_id;
 18 
 19   /**
 20    * Constructor
 21    */
 22   public function __construct() {
 23     add_action( 'admin_menu', array( $this, 'admin_menu' ) );
 24     add_filter( 'menu_order', array( $this, 'menu_order' ), 9, 1 );
 25   }
 26 
 27   /**
 28    * Add POS to admin menu
 29    */
 30   public function admin_menu() {
 31     if(!current_user_can('manage_woocommerce_pos')){
 32       return;
 33     }
 34 
 35     $this->toplevel_screen_id = add_menu_page(
 36       __( 'POS', 'woocommerce-pos' ),
 37       __( 'POS', 'woocommerce-pos' ),
 38       'manage_woocommerce_pos',
 39       \WC_POS\PLUGIN_NAME,
 40       array( $this, 'display_upgrade_page' ),
 41         'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjEyMDAiIHZpZXdCb3g9IjAgMCAxMjAwIDEyMDAiPjxwYXRoIGZpbGw9IiM5OTkiIGQ9Ik0xMTE0LjI4NiAwSDg1LjdDMzguMzc1IDAgMCAzOC40IDAgODUuNzE0VjIxNC4xNGMwIDQ3LjMgMzguNCA4NS43IDg1LjcgODUuNyA0Ny4zNCAwIDg1LjcxNC0zOC4zNzUgODUuNzE0LTg1LjcxM1Y2MGgxNzEuNDN2MTU0LjE0YzAgNDcuMyAzOC40IDg1LjcgODUuNyA4NS43IDQ3LjMzOCAwIDg1LjcxMy0zOC4zNzUgODUuNzEzLTg1LjcxM1Y2MGgxNzEuNDI4djE1NC4xNGMwIDQ3LjMgMzguNCA4NS43IDg1LjcgODUuNyA0Ny4zNCAwIDg1LjcxNC0zOC4zNzUgODUuNzE0LTg1LjcxM1Y2MGgxNzEuNDI4djE1NC4xNGMwIDQ3LjMgMzguNCA4NS43IDg1LjcgODUuNyA0Ny4zNCAwIDg1LjcxNC0zOC4zNzQgODUuNzE0LTg1LjcxM1Y4NS43MTRDMTIwMCAzOC40IDExNjEuNiAwIDExMTQuMyAwek0yNzUuODkzIDUzMS43NzdjLTUyLjI5IDAtOTIuNjEgNDAuOTUtOTIuNjEgOTMuMjRzNDAuMzIgOTMuMiA5Mi42IDkzLjI0YzUyLjI5IDAgOTMuMjQtNDAuOTUgOTMuMjQtOTMuMjQuMDEtNTIuMzE3LTQwLjkyMy05My4yMTctOTMuMjIzLTkzLjI0eiIvPjxwYXRoIGZpbGw9IiM5OTkiIGQ9Ik0xMTE0LjI4NiAzMzkuODU1Yy0zMi4xMDQgMC02Mi4zNjgtMTEuOTUtODUuNzE1LTMzLjc1LTIzLjM0NyAyMS43OTgtNTMuNjEgMzMuNzUtODUuNzEzIDMzLjctMzIuMTA0IDAtNjIuMzY4LTExLjk1LTg1LjcxNS0zMy43NDgtMjMuMzQ4IDIxLjc5Ny01My42MTIgMzMuNzUtODUuNzE1IDMzLjc1cy02Mi4zNjctMTEuOTUyLTg1LjcxNS0zMy43NWMtMjMuMzQ3IDIxLjc5Ny01My42MSAzMy43NS04NS43MTQgMzMuNzUtMzIuMTAyIDAtNjIuMzY3LTExLjk1My04NS43MTQtMzMuNzUtMjMuMzQ3IDIxLjc5Ny01My42MTMgMzMuNzUtODUuNzE0IDMzLjc1LTMyLjEwMiAwLTYyLjM2Ny0xMS45NTMtODUuNzE0LTMzLjc1LTIzLjM0OCAyMS43OTctNTMuNjEyIDMzLjc1LTg1LjcxNCAzMy43NXMtNjIuMzY3LTExLjk1My04NS43MTQtMzMuNzVjLTIzLjM0NyAyMS43OTctNTMuNjEzIDMzLjc1LTg1LjcxNCAzMy43LTMyLjEwNCAwLTYyLjM2Ni0xMS45Ni04NS43MTQtMzMuNzZWMTIwMGwzNDMtMjM4LjY3aDc3MS4xODhjNDcuMzkzIDAgODUuODEyLTM4LjQyIDg1LjgxMi04NS44MTJWMzA2LjA5NGMtMjMuMzQ4IDIxLjgwNi01My42IDMzLjgwNi04NS43IDMzLjc2ek0yNzUuODkzIDc4Ni45M2MtMzUuMjggMC02Ny40MS0xMS4zNC05My4yNC0zMC4yNHYxMTUuMjljMCAyNC41Ny0xNS43NSAzOS4wNjItMzQuNjUgMzkuMDYyLTIxLjQyIDAtMzQuNjUtMTYuMzgtMzQuNjUtMzkuMDZWNTAzLjQyNmMwLTIyLjA1IDE1LjEyLTM4LjQzIDM0LjY1LTM4LjQzIDE0LjQ5IDAgMjcuMSA2LjkgMzEuNSAyOS42MSAyNS44My0xOS41MyA1OS4yMi0zMi4xMyA5Ni4zOS0zMi4xMyA5MC4wOSAwIDE2My4yIDcyLjUgMTYzLjIgMTYyLjVDNDM5LjA2MyA3MTQuNSAzNjYgNzg2LjkgMjc1LjkgNzg2Ljkzem0zODUuNTUuNjNjLTkwLjcyMiAwLTE2My4xNzItNzIuNDUtMTYzLjE3Mi0xNjMuMTcgMC04OS40NjIgNzIuNDUtMTYxLjkxMyAxNjMuMTczLTE2MS45MTMgODkuNDYgMCAxNjEuOSA3Mi41IDE2MS45IDE2MS45MTIuMDEgOTAuNzEtNzIuNDQzIDE2My4yMS0xNjEuOTQzIDE2My4yMXptMzIxLjkyNyAwYy01OS44NTIgMC0xMDIuMDYyLTMxLjUtMTAyLjA2Mi02MyAwLTE2LjM4IDEyLjYwMi0yOS42MSAzMS41LTI5LjYxIDI3LjcyMiAwIDM4LjQgMjguNCA3My4xIDI4LjM1IDIzLjk0IDAgMzQuNjUtMTIuNiAzNC42NS0yNS4yIDAtMTEuOTctOC44Mi0yNS4xOTgtNDEuNTgtNDIuMjFsLTI5LjYxLTE1LjEyYy00OC41MS0yNC41NjgtNjQuODktNTIuOTItNjQuODktOTAuMDkgMC00NC43MyA0MC4zMi04Ny41NyAxMDUuMjEtODcuNTcgNjguMDQgMCA5NS4xIDQxLjYgOTUuMSA2MC41IDAgMTUuNzUtMTEuOTcgMjguMzUtMzAuODcgMjguMzUtMjUuMiAwLTQwLjMxOC0yMi4wNS03MS44Mi0yMi4wNS0xNi4zOCAwLTI0LjU3IDExLjM0LTI0LjU3IDIxLjQgMCAxMy4yIDYuOSAyMC4yIDM0IDM1LjkxbDcuNTYyIDQuNDFjMTAuMDggNi4zIDIyLjcgMTEuMyAzMy40IDE3LjY0IDQ3Ljg4IDI1LjggNTkuOSA1Ni43IDU5LjkgODguMi0uMDMgNDUuMzMtMzUuODkgOTAuMTMtMTA4Ljk5IDkwLjA5eiIvPjxwYXRoIGZpbGw9IiM5OTkiIGQ9Ik02NjEuNDQzIDUzMi40MDhjLTUyLjI5IDAtOTMuMjQgNDAuOTUtOTMuMjQgOTEuOTggMCA1Mi4zIDQxIDkzLjIgOTMuMiA5My4yNCA1MS4wMyAwIDkxLjk4LTQwLjk1IDkxLjk4LTkzLjI0LjA0Mi01MC45ODgtNDAuODgzLTkxLjk4OC05MS45ODMtOTEuOTh6Ii8+PC9zdmc+'
 42     );
 43 
 44     add_submenu_page(
 45       \WC_POS\PLUGIN_NAME,
 46       __( 'View POS', 'woocommerce-pos' ),
 47       __( 'View POS', 'woocommerce-pos' ),
 48       'manage_woocommerce_pos',
 49       null
 50     );
 51 
 52     // adjust submenu
 53     global $submenu;
 54     $pos_submenu = &$submenu[\WC_POS\PLUGIN_NAME];
 55     $pos_submenu[0][0] = __( 'Upgrade to Pro', 'woocommerce-pos' );
 56     $pos_submenu[1][2] = wc_pos_url();
 57   }
 58 
 59   /**
 60    * @param $menu_order
 61    *
 62    * @return mixed
 63    */
 64   public function menu_order( $menu_order ) {
 65     $woo = array_search( 'woocommerce', $menu_order );
 66     $pos = array_search( \WC_POS\PLUGIN_NAME, $menu_order );
 67 
 68     if( $woo !== false && $pos !== false) {
 69       // rearrange menu
 70       unset( $menu_order[$pos] );
 71       array_splice( $menu_order, ++$woo, 0, \WC_POS\PLUGIN_NAME );
 72 
 73       // rearrange submenu
 74       global $submenu;
 75       $pos_submenu = &$submenu[\WC_POS\PLUGIN_NAME];
 76       $pos_submenu[500] = $pos_submenu[1];
 77       unset( $pos_submenu[1] );
 78     };
 79 
 80     return $menu_order;
 81   }
 82 
 83   /**
 84    * Render the upgrade page.
 85    */
 86   public function display_upgrade_page() {
 87 
 88     // Check for transient, if none, grab remote HTML file
 89     if ( false === ( $upgrade = get_transient( 'remote_pro_page' ) ) ) {
 90       // Get remote HTML file
 91       $response = wp_remote_get( 'http://woopos.com.au/pro/?wp-admin=woocommerce-pos' );
 92       // Check for error
 93       if ( is_wp_error( $response ) ) {
 94         return;
 95       }
 96       // Parse remote HTML file
 97       $upgrade = wp_remote_retrieve_body( $response );
 98       // Check for error
 99       if ( is_wp_error( $upgrade ) ) {
100         return;
101       }
102       // Store remote HTML file in transient, expire after 24 hours
103       set_transient( 'remote_pro_page', $upgrade, 24 * \HOUR_IN_SECONDS );
104     }
105     include_once 'views/upgrade.php';
106   }
107 
108 }
API documentation generated by ApiGen