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();
 |