db_operations()->drop_table($table_name); } unset($res->plugins); $res->plugins = array(); $advanced_search_toggle = $this->get_options()->get_option('advanced-search-toggle'); // If advance search enable if (isset($advanced_search_toggle) && $advanced_search_toggle == 1 ) { if ($this->db_operations()->check_table_exist($table_name) == true) { $results = $this->db_operations()->get_table_data($table_name); $res->plugins = $results; } $this->get_options()->update_option('advanced-search-notice',''); return $res; } $this->get_options()->update_option('advanced-search-notice', __('Your advanced search is turned off, Turn on','klick-aps')); } return $res; } /** * Set args for advanced tab response (the response is regenerated adv_response * * @return object array */ public function add_klick_adv_tab_args($args) { $args['per_page'] = ''; $args['fields'] = array( 'icons' => true, 'active_installs' => false, 'tested' => true, 'sections' => false, 'versions' => false, 'screenshots' => false, 'tags' => false, ); return $args; } /** * Draw the advanced tab including the table of plugins * * @return object array */ public function klick_adv_tab_render() { $number_of_plugins = $this->get_number_of_plugins(); // total number of plugins in repo $table_name = "all_plugins"; $aps_create_db = isset( $_REQUEST['aps_create_db']) ? wp_strip_all_tags($_REQUEST['aps_create_db']) : ""; if(isset($aps_create_db)){ // Create new table if needed $klick_aps_plugin_data = isset($aps_create_db) ? $aps_create_db : "0"; if ($klick_aps_plugin_data != 0) { $this->db_operations()->create_table($table_name); $this->db_operations()->fill_table($table_name, $klick_aps_plugin_data); } } if ($this->db_operations()->check_table_exist($table_name) == false) { ?>











get_options()->get_option('data-loaded'); ?>

klick_aps_time_elapsed_string($data_loaded_time) . __(' to re-download','klick-aps'); ?> )

get_options()->get_option('advanced-search-notice'); if (isset($aps_search_notice) && !empty($aps_search_notice)) { echo "

" . $aps_search_notice . "

"; } ?>
get_options()->get_option('affected-total-rows'); $advanced_search_toggle = $this->get_options()->get_option('advanced-search-toggle'); // If advanced search enable if(!empty($total_rows) && isset($advanced_search_toggle) && $advanced_search_toggle == 1){ $this->klick_aps_pagination($page_number); } ?> display();?>
get_options()->get_option('affected-total-rows'); ?> items of get_options()->get_option('total-pages'); ?> get_options()->get_option('total-pages')) { ?> get_options()->get_option('total-pages')) { ?>
1, 'fields' => array () ); $response = wp_remote_post( 'http://api.wordpress.org/plugins/info/1.0/', array( 'body' => array( 'action' => 'query_plugins', 'request' => serialize( (object) $args ) ) ) ); $res = unserialize(wp_remote_retrieve_body($response)); return $res->info['results']; } /** * Create string with 'ago' keywords * * @param string $datetime * @param boolean $full, Default false * @return string */ public function klick_aps_time_elapsed_string($datetime, $full = false) { $now = new DateTime; $ago = new DateTime($datetime); $diff = $now->diff($ago); $diff->w = floor($diff->d / 7); $diff->d -= $diff->w * 7; $string = array( 'y' => 'year', 'm' => 'month', 'w' => 'week', 'd' => 'day', 'h' => 'hour', 'i' => 'minute', 's' => 'second', ); foreach ($string as $k => &$v) { if ($diff->$k) { $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : ''); } else { unset($string[$k]); } } if (!$full) $string = array_slice($string, 0, 1); return $string ? implode(', ', $string) . ' ago' : 'just now'; } /** * Instantiate Klick_Aps if needed * * @return object Klick_Aps */ public static function instance() { if (empty(self::$_instance)) { self::$_instance = new self(); } return self::$_instance; } /** * Instantiate Klick_Aps_Db_Operations if needed * * @return object Klick_Aps */ public static function db_operations() { if (empty(self::$_db_operations_instance)) { if (!class_exists('Klick_Aps_Db_Operations')) include_once(KLICK_APS_PLUGIN_MAIN_PATH . '/includes/class-klick-aps-db-operations.php'); self::$_db_operations_instance = new Klick_Aps_Db_Operations(); } return self::$_db_operations_instance; } /** * Instantiate Klick_Aps_Options if needed * * @return object Klick_Aps_Options */ public static function get_options() { if (empty(self::$_options_instance)) { if (!class_exists('Klick_Aps_Options')) include_once(KLICK_APS_PLUGIN_MAIN_PATH . '/includes/class-klick-aps-options.php'); self::$_options_instance = new Klick_Aps_Options(); } return self::$_options_instance; } /** * Instantiate Klick_Aps_Dashboard if needed * * @return object Klick_Aps_Dashboard */ public static function get_dashboard() { if (empty(self::$_dashboard_instance)) { if (!class_exists('Klick_Aps_Dashboard')) include_once(KLICK_APS_PLUGIN_MAIN_PATH . '/includes/class-klick-aps-dashboard.php'); self::$_dashboard_instance = new Klick_Aps_Dashboard(); } return self::$_dashboard_instance; } /** * Instantiate Klick_Aps_Logger if needed * * @return object Klick_Aps_Logger */ public static function get_logger() { if (empty(self::$_logger_instance)) { if (!class_exists('Klick_Aps_Logger')) include_once(KLICK_APS_PLUGIN_MAIN_PATH . '/includes/class-klick-aps-logger.php'); self::$_logger_instance = new Klick_Aps_Logger(); } return self::$_logger_instance; } /** * Instantiate Klick_Aps_Notifier if needed * * @return object Klick_Aps_Notifier */ public static function get_notifier() { if (empty(self::$_notifier_instance)) { include_once(KLICK_APS_PLUGIN_MAIN_PATH . '/includes/class-klick-aps-notifier.php'); self::$_notifier_instance = new Klick_Aps_Notifier(); } return self::$_notifier_instance; } /** * Establish Capability * * @return string */ public function capability_required() { return apply_filters('klick_aps_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-aps', false, dirname(plugin_basename(__FILE__)) . '/languages'); } /** * Add advance (APS special tab) * * @return Array */ public function add_klick_adv_tab($tabs) { $tabs['adv'] = __( 'Advanced Search' ); return $tabs; } public function add_klick_adv_theme_tab($tabs) { error_log('here adding tba'); $tabs['adv'] = __( 'Advanced Search' ); return $tabs; } /** * To enqueue js at user side * * @return void */ public function klick_aps_ui_scripts() { $dashboard = $this->get_dashboard(); $dashboard->init_user_end(); } /** * To enqueue css at user side * * @return void */ public function klick_aps_ui_css(){ $dashboard = $this->get_dashboard(); $dashboard->init_user_css(); } /** * Perform post plugin loaded setup * * @return void */ public function setup_translation() { load_plugin_textdomain('klick-aps', 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_aps_get_loggers(); $logger->activate_logs($loggers); $logger->add_loggers($loggers); } /** * Ajax Handler */ public function klick_aps_ajax_handler() { $nonce = empty($_POST['nonce']) ? '' : $_POST['nonce']; if (!wp_verify_nonce($nonce, 'klick_aps_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($post_data, $parsed_data); // convert string to array switch ($subaction) { case 'klick_aps_build_plugin_table': $data['remaining_plugins'] = sanitize_text_field($parsed_data['remaining_plugins']); $data['page_count'] = sanitize_text_field($parsed_data['page_count']); break; case 'klick_aps_create_db': $data['how_many_plugins'] = sanitize_text_field($parsed_data['how_many_plugins']); break; case 'klick_aps_save_settings': $data['aps_advance_search_toggle'] = sanitize_text_field($parsed_data['aps_advance_search_toggle']); break; // Add more cases here if you add subaction in plugin default: error_log("Klick_Aps_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_Aps_Commands')) include_once(KLICK_APS_PLUGIN_MAIN_PATH . 'includes/class-klick-aps-commands.php'); $commands = new Klick_Aps_Commands(); if (!method_exists($commands, $subaction)) { error_log("Klick_Aps_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_aps_activation_actions(){ $this->get_options()->set_default_options(); } /** * Plugin deactivation actions. * * @return void */ public function klick_aps_deactivation_actions(){ $this->get_options()->delete_all_options(); $this->db_operations()->drop_table("all_plugins"); } } register_uninstall_hook(__FILE__,'klick_aps_uninstall_option'); /** * Delete data when uninstall * * @return void */ function klick_aps_uninstall_option(){ Klick_Aps()->get_options()->delete_all_options(); } /** * Instantiates the main plugin class * * @return instance */ function Klick_Aps(){ return Klick_Aps::instance(); } endif; $GLOBALS['Klick_Aps'] = Klick_Aps();