/home/arranoyd/telegastro/wp-content/plugins/restrict-user-access/admin/settings.php
<?php
/**
* @package Restrict User Access
* @author Joachim Jensen <joachim@dev.institute>
* @license GPLv3
* @copyright 2020 by Joachim Jensen
*/
defined('ABSPATH') || exit;
final class RUA_Settings_Page
{
/**
* Settings slug
* @var string
*/
private $slug = "wprua-settings";
/**
* Settings option group
* @var string
*/
private $option_group = 'rua-group-main';
/**
* Settings prefix
* @var string
*/
private $prefix = "rua-";
/**
* Settings
* @var array
*/
private $settings;
public function __construct()
{
add_action(
"admin_init",
array($this, "init_settings"),
99
);
add_action(
"admin_menu",
array($this, "add_settings_menu"),
99
);
}
public function init_settings()
{
$this->settings = array(
"general" => array(
"name" => "general",
"title" => __("General", 'restrict-user-access'),
"callback" => "",
"fields" => array()
)
);
$this->settings["general"]["fields"][] = array(
"name" => "registration-level",
"title" => __("New User Default Level", 'restrict-user-access'),
"callback" => array($this,"dropdown_levels"),
"args" => array(
"label_for" => $this->prefix."registration-level"
)
);
$default_role = get_option("default_role");
$roles = get_editable_roles();
$this->settings["general"]["fields"][] = array(
"name" => "registration-role",
"title" => __("New User Default Role"),
"callback" => array($this,"setting_moved"),
"args" => array(
"option" => $roles[$default_role]["name"],
"title" => __("General Settings"),
"url" =>"options-general.php"
),
"register" => false
);
$this->settings["general"]["fields"][] = array(
"name" => "registration",
"title" => __("Enable Registration", 'restrict-user-access'),
"callback" => array($this,"setting_moved"),
"args" => array(
"option" => get_option("users_can_register") ? __("Yes") : __("No"),
"title" => __("General Settings"),
"url" =>"options-general.php"
),
"register" => false
);
foreach ($this->settings as $section) {
add_settings_section(
$this->prefix.$section["name"],
$section["title"],
$section["callback"],
$this->slug
);
foreach ($section["fields"] as $field) {
add_settings_field(
$this->prefix.$field["name"],
$field["title"],
$field["callback"],
$this->slug,
$this->prefix.$section["name"],
$field["args"]
);
if (!isset($field["register"]) || $field["register"]) {
register_setting($this->option_group, $this->prefix.$field["name"]);
}
}
}
}
/**
* Add Settings submenu and page
*
* @since 0.10
* @return void
*/
public function add_settings_menu()
{
add_submenu_page(
RUA_App::BASE_SCREEN,
__('User Access Settings', 'restrict-user-access'),
__('Settings'),
RUA_App::CAPABILITY,
$this->slug,
array($this, 'settings_page')
);
}
/**
* Render levels dropdown
* Skip synchronized levels
*
* @since 0.17
* @param array $args
* @return void
*/
public function dropdown_levels($args)
{
echo '<select name="'.$this->prefix.'registration-level" id="'.$this->prefix.'registration-level">';
echo '<option value="0">'.__("-- None --").'</option>';
foreach (RUA_App::instance()->get_levels() as $id => $level) {
$synced_role = get_post_meta($level->ID, RUA_App::META_PREFIX.'role', true);
if ($synced_role === '') {
echo '<option value="'.$level->ID.'" '.selected($level->ID, get_option($this->prefix."registration-level"), false).'>'.$level->post_title.'</option>';
}
}
echo '</select>';
}
/**
* Render checkbox
*
* @since 0.10
* @param array $args
* @return void
*/
public function checkbox($args)
{
$option = get_option($args["label_for"]);
echo '<input type="checkbox" name="'.$args["label_for"].'" value="1" '.checked($option, 1, 0).'/>';
}
/**
* Render moved setting
*
* @since 0.10
* @param array $args
* @return void
*/
public function setting_moved($args)
{
echo $args["option"];
echo '<p class="description">'.sprintf(
__("Setting can be changed in %s", 'restrict-user-access'),
'<a href="'.admin_url($args["url"]).'">'.$args["title"].'</a>'
).'</p>';
}
/**
* Render settings page
*
* @since 0.10
* @return void
*/
public function settings_page()
{
?>
<div class="wrap">
<h1><?php echo esc_html(get_admin_page_title()); ?></h1>
<?php
settings_errors(); ?>
<form method="post" action="options.php">
<?php
settings_fields($this->option_group);
do_settings_sections($this->slug);
submit_button(); ?>
</form>
</div>
<?php
}
}