localize_strings();
$this->init_hooks();
}
public function init_hooks()
{
// register backend ajax action
add_action('wp_ajax_cortex_admin_ajax', array($this, 'cortex_admin_ajax'));
// load admin ajax js script
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
}
public function ajax_response($success = true, $message = null, $content = null)
{
$response = array(
'success' => $success,
'message' => $message,
'content' => $content
);
return $response;
}
public function cortex_check_nonce()
{
// retrieve nonce
$nonce = (isset($_POST['nonce'])) ? $_POST['nonce'] : $_GET['nonce'];
// nonce action for the grid
$action = 'cortex_admin_nonce';
// check ajax nounce
if (!wp_verify_nonce($nonce, $action)) {
// build response
$response = $this->ajax_response(false, __('Sorry, an error occurred. Please refresh the page.', 'cortex'));
// die and send json error response
wp_send_json($response);
}
}
public function cortex_admin_ajax()
{
// check the nonce
$this->cortex_check_nonce();
// retrieve data
$this->ajax_data = (isset($_POST)) ? $_POST : $_GET;
// retrieve function
$func = $this->ajax_data['func'];
switch ($func) {
case 'cortex_save_settings':
$response = $this->save_settings_callback();
break;
case 'cortex_reset_settings':
$response = $this->save_settings_callback();
break;
default:
$response = ajax_response(false, __('Sorry, an unknown error occurred...', 'cortex'), null);
break;
}
// send json response and die
wp_send_json($response);
}
public function save_settings_callback()
{
// retrieve data from jquery
$setting_data = $this->ajax_data['setting_data'];
cortex_update_options($setting_data);
$template = false;
// get new restore global settings panel
if ($this->ajax_data['reset']) {
ob_start();
require_once('views/settings.php');
$template = ob_get_clean();
}
$response = $this->ajax_response(true, $this->ajax_data['reset'], $template);
return $response;
}
public function localize_strings()
{
$this->ajax_msg = array(
'box_icons' => array(
'before' => '',
'success' => '',
'error' => ''
),
'box_messages' => array(
'cortex_save_settings' => array(
'before' => __('Saving settings ...', 'cortex'),
'success' => __('Settings saved!', 'cortex'),
'error' => __('Error occured while saving settings!', 'cortex')
),
'cortex_reset_settings' => array(
'before' => __('Resetting plugin settings ...', 'cortex'),
'success' => __('Plugin settings reset!', 'cortex'),
'error' => __('Error occurred while resetting settings!', 'cortex')
),
)
);
}
public function admin_nonce()
{
return array(
'url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('cortex_admin_nonce')
);
}
public function enqueue_admin_scripts()
{
$screen = get_current_screen();
// enqueue only in grid panel
if (strpos($screen->id, $this->plugin_slug) !== false) {
// merge nonce to translatable strings
$strings = array_merge($this->admin_nonce(), $this->ajax_msg);
// Use minified libraries if CORTEX_SCRIPT_DEBUG is turned off
$suffix = (defined('CORTEX_SCRIPT_DEBUG') && CORTEX_SCRIPT_DEBUG) ? '' : '.min';
// register and localize script for ajax methods
wp_register_script('cortex-admin-ajax-scripts', CORTEX_PLUGIN_URL . 'admin/assets/js/cortex-admin-ajax' . $suffix . '.js', array(), CORTEX_VERSION, true);
wp_enqueue_script('cortex-admin-ajax-scripts');
wp_localize_script('cortex-admin-ajax-scripts', 'cortex_admin_global_var', $strings);
}
}
}
new Cortex_Admin_Ajax;