/home/arranoyd/telegastro/wp-content/plugins/restrict-user-access/admin/admin.php
<?php
/**
* @package Restrict User Access
* @author Joachim Jensen <joachim@dev.institute>
* @license GPLv3
* @copyright 2020 by Joachim Jensen
*/
defined('ABSPATH') || exit;
abstract class RUA_Admin
{
/**
* Screen identifier
* @var string
*/
protected $_screen;
public function __construct()
{
if (is_admin()) {
$this->add_action('admin_menu', 'add_menu', 99);
$this->admin_hooks();
} else {
$this->frontend_hooks();
}
}
/**
* Set up screen and menu if necessary
*
* @since 0.15
*/
public function add_menu()
{
$this->_screen = $this->get_screen();
$this->add_action('load-'.$this->_screen, 'load_screen');
}
/**
* Add filters and actions for admin dashboard
* e.g. AJAX calls
*
* @since 0.15
* @return void
*/
abstract public function admin_hooks();
/**
* Add filters and actions for frontend
*
* @since 0.15
* @return void
*/
abstract public function frontend_hooks();
/**
* Get current screen
*
* @since 0.15
* @return string
*/
abstract public function get_screen();
/**
* Prepare screen load
*
* @since 0.15
* @return void
*/
abstract public function prepare_screen();
/**
* Authorize user for screen
*
* @since 0.15
* @return boolean
*/
abstract public function authorize_user();
/**
* Register and enqueue scripts styles
* for screen
*
* @since 0.15
*/
abstract public function add_scripts_styles();
/**
* Prepare plugin upgrade modal
*
* @since 0.15
* @return void
*/
public function load_screen()
{
if (!$this->authorize_user()) {
wp_die(
'<p>' . __('You do not have access to this screen.', 'restrict-user-access') . '</p>',
403
);
}
$this->prepare_screen();
$this->add_action('admin_enqueue_scripts', 'add_general_scripts_styles', 11);
}
/**
* Add general scripts to admin screens
*
* @since 1.2
*/
public function add_general_scripts_styles()
{
$this->enqueue_style('rua/admin/style', 'style');
$this->add_scripts_styles();
}
/**
* @since 1.2
* @param string $tag
* @param string $callback
* @param int $priority
* @param int $accepted_args
*
* @return void
*/
protected function add_action($tag, $callback, $priority = 10, $accepted_args = 1)
{
if (is_string($callback)) {
$callback = array($this, $callback);
}
add_action($tag, $callback, $priority, $accepted_args);
}
/**
* @since 1.2
* @param string $tag
* @param string $callback
* @param int $priority
* @param int $accepted_args
*
* @return void
*/
protected function add_filter($tag, $callback, $priority = 10, $accepted_args = 1)
{
if (is_string($callback)) {
$callback = array($this, $callback);
}
add_filter($tag, $callback, $priority, $accepted_args);
}
/**
* @since 1.2
* @param string $handle
* @param string $filename
* @param array $deps
* @param bool $in_footer
* @param string $ver
*
* @return void
*/
protected function enqueue_script($handle, $filename, $deps = array(), $ver = '', $in_footer = false)
{
$this->register_script($handle, $filename, $deps, $ver, $in_footer);
wp_enqueue_script($handle);
}
/**
* @since 1.2
* @param string $handle
* @param string $filename
* @param array $deps
* @param bool $in_footer
* @param string $ver
*
* @return void
*/
protected function register_script($handle, $filename, $deps = array(), $ver = '', $in_footer = false)
{
$suffix = '.min.js';
if ($ver === '') {
$ver = RUA_App::PLUGIN_VERSION;
}
wp_register_script($handle, plugins_url('assets/js/'.$filename.$suffix, dirname(__FILE__)), $deps, $ver, $in_footer);
}
/**
* @since 1.2
* @param string $handle
* @param string $filename
* @param array $deps
* @param string $ver
*
* @return void
*/
protected function enqueue_style($handle, $filename, $deps = array(), $ver = '')
{
$this->register_style($handle, $filename, $deps, $ver);
wp_enqueue_style($handle);
}
/**
* @since 1.2
* @param string $handle
* @param string $filename
* @param array $deps
* @param string $ver
*
* @return void
*/
protected function register_style($handle, $filename, $deps = array(), $ver = '')
{
$suffix = '.css';
if ($ver === '') {
$ver = RUA_App::PLUGIN_VERSION;
}
wp_enqueue_style($handle, plugins_url('assets/css/'.$filename.$suffix, dirname(__FILE__)), $deps, $ver);
}
}