localize_strings();
$this->init_hooks();
}
public function init_hooks() {
// Register backend ajax action
add_action('wp_ajax_labb_admin_ajax', array($this, 'labb_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 labb_check_nonce() {
// retrieve nonce
$nonce = (isset($_POST['nonce'])) ? $_POST['nonce'] : $_GET['nonce'];
// nonce action for the grid
$action = 'labb_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.', 'livemesh-bb-addons'));
// die and send json error response
wp_send_json($response);
}
}
public function labb_admin_ajax() {
// check the nonce
$this->labb_check_nonce();
// retrieve data
$this->ajax_data = (isset($_POST)) ? $_POST : $_GET;
// retrieve function
$func = $this->ajax_data['func'];
switch ($func) {
case 'labb_save_settings':
$response = $this->save_settings_callback();
break;
case 'labb_reset_settings':
$response = $this->save_settings_callback();
break;
default:
$response = ajax_response(false, __('Sorry, an unknown error occurred...', 'livemesh-bb-addons'), 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'];
labb_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(
'labb_save_settings' => array(
'before' => __('Saving plugin settings', 'livemesh-bb-addons'),
'success' => __('Plugin settings Saved', 'livemesh-bb-addons'),
'error' => __('Sorry, an error occurs while saving settings...', 'livemesh-bb-addons')
),
'labb_reset_settings' => array(
'before' => __('Resetting plugin settings', 'livemesh-bb-addons'),
'success' => __('Plugin settings resetted', 'livemesh-bb-addons'),
'error' => __('Sorry, an error occurred while resetting settings', 'livemesh-bb-addons')
),
)
);
}
public function admin_nonce() {
return array(
'url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('labb_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 LABB_SCRIPT_DEBUG is turned off
$suffix = (defined('LABB_SCRIPT_DEBUG') && LABB_SCRIPT_DEBUG) ? '' : '.min';
// register and localize script for ajax methods
wp_register_script('labb-admin-ajax-scripts', LABB_PLUGIN_URL . 'admin/assets/js/labb-admin-ajax' . $suffix . '.js', array(), LABB_VERSION, true);
wp_enqueue_script('labb-admin-ajax-scripts');
wp_localize_script('labb-admin-ajax-scripts', 'labb_admin_global_var', $strings);
}
}
}
new LABB_Admin_Ajax;