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('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();