Current File : /home/resuelf/www/wp-content/plugins/starbox/controllers/Menu.php |
<?php defined('ABSPATH') || die('Cheatin\' uh?'); ?>
<?php
class ABH_Controllers_Menu extends ABH_Classes_FrontController {
/** @var array themes */
/** @var array snippet */
public $options = array();
private $_keys = array();
//
function init() {
}
function upgradeRedirect() {
// Bail if no activation redirect
if (!get_transient('abh_upgrade'))
return;
// Delete the redirect transient
delete_transient('abh_upgrade');
ABH_Classes_Tools::emptyCache();
wp_safe_redirect(admin_url('admin.php?page=abh_settings'));
exit();
}
/*
* Creates the Setting menu in Wordpress
*/
public function hookMenu() {
$this->upgradeRedirect();
ABH_Classes_Tools::checkErrorSettings(true);
/* add the plugin menu in admin */
if (current_user_can('administrator')) {
$this->model->addSubmenu(array('options-general.php',
__('StarBox Settings', _ABH_PLUGIN_NAME_),
__('StarBox', _ABH_PLUGIN_NAME_) . ABH_Classes_Tools::showNotices(ABH_Classes_Tools::$errors_count, 'errors_count'),
'edit_posts',
'abh_settings',
array($this, 'showMenu')
));
}
add_action('edit_user_profile', array(ABH_Classes_ObjController::getBlock('ABH_Core_UserSettings'), 'init'));
add_action('show_user_profile', array(ABH_Classes_ObjController::getBlock('ABH_Core_UserSettings'), 'init'));
add_action('personal_options_update', array(ABH_Classes_ObjController::getBlock('ABH_Core_UserSettings'), 'action'));
add_action('edit_user_profile_update', array(ABH_Classes_ObjController::getBlock('ABH_Core_UserSettings'), 'action'));
}
public function showMenu() {
ABH_Classes_Tools::checkErrorSettings();
/* Force call of error display */
ABH_Classes_ObjController::getController('ABH_Classes_Error')->hookNotices();
parent::init();
}
/**
* Called when Post action is triggered
*
* @return void
*/
public function action() {
parent::action();
switch (ABH_Classes_Tools::getValue('action')) {
case 'abh_settings_update':
if (!current_user_can('edit_users')) {
return;
}
$this->saveValues($_POST);
ABH_Classes_Tools::emptyCache();
break;
case 'abh_settings_subscribe':
if (!current_user_can('edit_users')) {
return;
}
ABH_Classes_Tools::saveOptions('abh_subscribe', 1);
break;
case 'abh_powered_by':
if (!current_user_can('edit_users')) {
return;
}
ABH_Classes_Tools::saveOptions('abh_powered_by', ABH_Classes_Tools::getValue('abh_powered_by'));
break;
}
}
private function saveValues($params) {
$this->_keys = array(
'abh_inposts' => 'integer',
'abh_inpages' => 'integer',
'abh_ineachpost' => 'integer',
'abh_showopengraph' => 'integer',
'abh_shortcode' => 'integer',
'abh_strictposts' => 'integer',
'abh_position' => 'string',
'abh_theme' => 'string',
'abh_titlefontsize' => 'string',
'abh_descfontsize' => 'string',
'abh_achposttheme' => 'string',
);
if (!empty($params)) {
foreach ($params as $key => $value) {
if (in_array($key, array_keys($this->_keys))) {
if ($this->_keys[$key] == 'integer') {
ABH_Classes_Tools::saveOptions($key, (int)$value);
}
if ($this->_keys[$key] == 'string') {
ABH_Classes_Tools::saveOptions($key, sanitize_text_field($value));
}
}
}
if (!isset($params['abh_strictposts'])) {
ABH_Classes_Tools::saveOptions('abh_strictposts', 0);
}
}
}
}