134 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/*
 | 
						|
 * Copyright (c) 2018, Ryo Currency Project
 | 
						|
 * Admin interface for Monero gateway
 | 
						|
 * Authors: mosu-forge
 | 
						|
 */
 | 
						|
 | 
						|
defined( 'ABSPATH' ) || exit;
 | 
						|
 | 
						|
require_once('class-monero-admin-payments-list.php');
 | 
						|
 | 
						|
if (class_exists('Monero_Admin_Interface', false)) {
 | 
						|
    return new Monero_Admin_Interface();
 | 
						|
}
 | 
						|
 | 
						|
class Monero_Admin_Interface {
 | 
						|
 | 
						|
    public function __construct() {
 | 
						|
        add_action('add_meta_boxes', array($this, 'meta_boxes'));
 | 
						|
        add_action('admin_menu', array($this, 'admin_menu'));
 | 
						|
        add_action('admin_head', array( $this, 'admin_menu_update'));
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Add meta boxes.
 | 
						|
     */
 | 
						|
    public function meta_boxes() {
 | 
						|
        add_meta_box(
 | 
						|
            'monero_admin_order_details',
 | 
						|
            __('Monero Gateway','monero_gateway'),
 | 
						|
            array($this, 'meta_box_order_details'),
 | 
						|
            'shop_order',
 | 
						|
            'normal',
 | 
						|
            'high'
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Meta box for order page
 | 
						|
     */
 | 
						|
    public function meta_box_order_details($order) {
 | 
						|
        Monero_Gateway::admin_order_page($order);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Add menu items.
 | 
						|
     */
 | 
						|
    public function admin_menu() {
 | 
						|
        add_menu_page(
 | 
						|
            __('Monero', 'monero_gateway'),
 | 
						|
            __('Monero', 'monero_gateway'),
 | 
						|
            'manage_woocommerce',
 | 
						|
            'monero_gateway',
 | 
						|
            array($this, 'orders_page'),
 | 
						|
            MONERO_GATEWAY_PLUGIN_URL.'/assets/images/monero-icon-admin.png',
 | 
						|
            56 // Position on menu, woocommerce has 55.5, products has 55.6
 | 
						|
        );
 | 
						|
 | 
						|
        add_submenu_page(
 | 
						|
            'monero_gateway',
 | 
						|
            __('Payments', 'monero_gateway'),
 | 
						|
            __('Payments', 'monero_gateway'),
 | 
						|
            'manage_woocommerce',
 | 
						|
            'monero_gateway_payments',
 | 
						|
            array($this, 'payments_page')
 | 
						|
        );
 | 
						|
 | 
						|
        $settings_page = add_submenu_page(
 | 
						|
            'monero_gateway',
 | 
						|
            __('Settings', 'monero_gateway'),
 | 
						|
            __('Settings', 'monero_gateway'),
 | 
						|
            'manage_options',
 | 
						|
            'monero_gateway_settings',
 | 
						|
            array($this, 'settings_page')
 | 
						|
        );
 | 
						|
        add_action('load-'.$settings_page, array($this, 'settings_page_init'));
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Remove duplicate sub-menu item
 | 
						|
     */
 | 
						|
    public function admin_menu_update() {
 | 
						|
        global $submenu;
 | 
						|
        if (isset($submenu['monero_gateway'])) {
 | 
						|
            unset($submenu['monero_gateway'][0]);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Monero payments page
 | 
						|
     */
 | 
						|
    public function payments_page() {
 | 
						|
        $payments_list = new Monero_Admin_Payments_List();
 | 
						|
        $payments_list->prepare_items();
 | 
						|
        $payments_list->display();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Monero settings page
 | 
						|
     */
 | 
						|
    public function settings_page() {
 | 
						|
        WC_Admin_Settings::output();
 | 
						|
    }
 | 
						|
 | 
						|
    public function settings_page_init() {
 | 
						|
        global $current_tab, $current_section;
 | 
						|
 | 
						|
        $current_section = 'monero_gateway';
 | 
						|
        $current_tab = 'checkout';
 | 
						|
 | 
						|
        // Include settings pages.
 | 
						|
        WC_Admin_Settings::get_settings_pages();
 | 
						|
 | 
						|
        // Save settings if data has been posted.
 | 
						|
        if (apply_filters("woocommerce_save_settings_{$current_tab}_{$current_section}", !empty($_POST))) {
 | 
						|
            WC_Admin_Settings::save();
 | 
						|
        }
 | 
						|
 | 
						|
        // Add any posted messages.
 | 
						|
        if (!empty($_GET['wc_error'])) {
 | 
						|
            WC_Admin_Settings::add_error(wp_kses_post(wp_unslash($_GET['wc_error'])));
 | 
						|
        }
 | 
						|
 | 
						|
        if (!empty($_GET['wc_message'])) {
 | 
						|
            WC_Admin_Settings::add_message(wp_kses_post(wp_unslash($_GET['wc_message'])));
 | 
						|
        }
 | 
						|
 | 
						|
        do_action('woocommerce_settings_page_init');
 | 
						|
    }
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
return new Monero_Admin_Interface();
 |