in visual return $init; } /** * Establish Capability * * @return string */ public function capability_required() { return apply_filters('klick_apv_capability_required', 'manage_options'); } /** * Init dashboard with menu and layout * * @return void */ public function init_dashboard() { $dashboard = $this->get_dashboard(); $dashboard->init_menu(); load_plugin_textdomain('klick-apv', false, dirname(plugin_basename(__FILE__)) . '/languages'); } /** * To enqueue js at user side * * @return void */ public function klick_apv_ui_scripts(){ $dashboard = $this->get_dashboard(); $dashboard->init_user_end(); } /** * To enqueue css at user side * * @return void */ public function klick_apv_ui_css(){ $dashboard = $this->get_dashboard(); $dashboard->init_user_css(); $this->get_plugins(); } /** * Perform post plugin loaded setup * * @return void */ public function setup_translation() { load_plugin_textdomain('klick-apv', false, dirname(plugin_basename(__FILE__)) . '/languages'); } /** * Creates an array of loggers, Activate and Adds * * @return void */ public function setup_loggers() { $logger = $this->get_logger(); $loggers = $logger->klick_apv_get_loggers(); $logger->activate_logs($loggers); $logger->add_loggers($loggers); } /** * Ajax Handler */ public function klick_apv_ajax_handler() { $nonce = empty($_POST['nonce']) ? '' : $_POST['nonce']; if (!wp_verify_nonce($nonce, 'klick_apv_ajax_nonce') || empty($_POST['subaction'])) die('Security check'); $parsed_data = array(); $data = array(); $subaction = sanitize_key($_POST['subaction']); $post_data = isset($_POST['data']) ? $_POST['data'] : null; parse_str(html_entity_decode($post_data), $parsed_data); // convert string to array switch ($subaction) { case "klick_apv_save_settings": $data['name'] = isset($parsed_data['name']) ? sanitize_text_field($parsed_data['name']) : null; $data['slug'] = isset($parsed_data['slug']) ? sanitize_text_field($parsed_data['slug']) : null; break; case "klick_apv_delete_row": $data['name'] = isset($parsed_data['name']) ? sanitize_text_field($parsed_data['name']) : null; case "klick_apv_reload": $data['reload'] = isset($parsed_data['reload']) ? sanitize_text_field($parsed_data['reload']) : null; break; // Add more cases here if you add subaction in plugin default: error_log("klick_apv_Commands: ajax_handler: no such sub-action (" . esc_html($subaction) . ")"); die('No such sub-action/command'); } $results = array(); // Get sub-action class if (!class_exists('klick_apv_Commands')) include_once(KLICK_APV_PLUGIN_MAIN_PATH . 'includes/class-klick-apv-commands.php'); $commands = new klick_apv_Commands(); if (!method_exists($commands, $subaction)) { error_log("klick_apv_Commands: ajax_handler: no such sub-action (" . esc_html($subaction) . ")"); die('No such sub-action/command'); } else { $results = call_user_func(array($commands, $subaction), $data); if (is_wp_error($results)) { $results = array( 'result' => false, 'error_code' => $results->get_error_code(), 'error_message' => $results->get_error_message(), 'error_data' => $results->get_error_data(), ); } } echo json_encode($results); die; } /** * Plugin activation actions. * * @return void */ public function klick_apv_activation_actions(){ $this->get_options()->set_default_options(); } /** * Plugin deactivation actions. * * @return void */ public function klick_apv_deactivation_actions(){ $this->get_options()->delete_all_options(); } } register_uninstall_hook(__FILE__,'klick_apv_uninstall_option'); /** * Delete data when uninstall * * @return void */ function klick_apv_uninstall_option(){ klick_apv()->get_options()->delete_all_options(); } /** * Instantiates the main plugin class * * @return instance */ function klick_apv(){ return klick_apv::instance(); } endif; $GLOBALS['klick_apv'] = Klick_Apv();