Current File : /home/resuelf/www/wp-content/plugins/starbox/classes/Action.php |
<?php defined('ABSPATH') || die('Cheatin\' uh?'); ?>
<?php
/**
* Set the ajax action and call for wordpress
*/
class ABH_Classes_Action extends ABH_Classes_FrontController {
/** @var array with all form and ajax actions */
var $actions = array();
/** @var array from core config */
private static $config;
/**
* The hookAjax is loaded as custom hook in hookController class
*
* @return void
*/
function hookInit() {
/* Only if ajax */
if (ABH_Classes_Tools::isAjax()) {
$this->getActions();
}
}
/**
* The hookSubmit is loaded when action si posted
*
* @return void
*/
function hookMenu() {
if(!ABH_Classes_Tools::isAjax()) {
$this->getActions();
}
}
/**
* The hookHead is loaded as admin hook in hookController class for script load
* Is needed for security check as nonce
*
* @return void
*/
function hookHead() {
echo '<script type="text/javascript">
var abh_Query = {
"ajaxurl": "' . admin_url('admin-ajax.php') . '",
"adminposturl": "' . admin_url('post.php') . '",
"adminlisturl": "' . admin_url('edit.php') . '",
"abh_nonce": "' . wp_create_nonce(_ABH_NONCE_ID_) . '"
}
</script>';
}
/**
* Get all actions from config.xml in core directory and add them in the WP
*
* @return void
*/
public function getActions() {
$this->actions = array();
$cur_action = ABH_Classes_Tools::getValue('action', false);
$nonce = ABH_Classes_Tools::getValue('abh_nonce', false);
if($cur_action && $nonce) {
/* if config allready in cache */
if (!isset(self::$config)) {
$config_file = _ABH_ROOT_DIR_ . 'config.json';
if (!file_exists($config_file))
return;
/* load configuration blocks data from core config files */
self::$config = json_decode(file_get_contents($config_file), 1);
}
if (is_array(self::$config))
foreach (self::$config['blocks']['block'] as $block) {
if (isset($block['active']) && $block['active'] == 1) {
/* if there is a single action */
if (isset($block['actions']['action']))
/* if there are more actions for the current block */
if (!is_array($block['actions']['action'])) {
/* add the action in the actions array */
if ($block['actions']['action'] == $cur_action)
$this->actions[] = array('class' => $block['name']);
} else {
/* if there are more actions for the current block */
foreach ($block['actions']['action'] as $action) {
/* add the actions in the actions array */
if ($action == $cur_action)
$this->actions[] = array('class' => $block['name']);
}
}
}
}
if (ABH_Classes_Tools::isAjax()) {
check_ajax_referer(_ABH_NONCE_ID_, 'abh_nonce');
} else {
check_admin_referer($cur_action, 'abh_nonce');
}
/* add the actions in WP */
foreach ($this->actions as $actions) {
ABH_Classes_ObjController::getController($actions['class'])->action();
}
}
}
}