monerowp/include/admin/class-monero-admin-interface.php
2018-09-22 07:57:35 -07:00

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