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_Ats if needed * * @return object Klick_Ats */ public static function instance() { if (empty(self::$_instance)) { self::$_instance = new self(); } return self::$_instance; } /** * Instantiate Klick_Ats_Db_Operations if needed * * @return object Klick_Ats */ public static function db_operations() { if (empty(self::$_db_operations_instance)) { if (!class_exists('Klick_Ats_Db_Operations')) include_once(KLICK_ATS_PLUGIN_MAIN_PATH . '/includes/class-klick-ats-db-operations.php'); self::$_db_operations_instance = new Klick_Ats_Db_Operations(); } return self::$_db_operations_instance; } /** * Instantiate Klick_Ats_Options if needed * * @return object Klick_Ats_Options */ public static function get_options() { if (empty(self::$_options_instance)) { if (!class_exists('Klick_Ats_Options')) include_once(KLICK_ATS_PLUGIN_MAIN_PATH . '/includes/class-klick-ats-options.php'); self::$_options_instance = new Klick_Ats_Options(); } return self::$_options_instance; } /** * Instantiate Klick_Ats_Dashboard if needed * * @return object Klick_Ats_Dashboard */ public static function get_dashboard() { if (empty(self::$_dashboard_instance)) { if (!class_exists('Klick_Ats_Dashboard')) include_once(KLICK_ATS_PLUGIN_MAIN_PATH . '/includes/class-klick-ats-dashboard.php'); self::$_dashboard_instance = new Klick_Ats_Dashboard(); } return self::$_dashboard_instance; } /** * Instantiate Klick_Ats_Logger if needed * * @return object Klick_Ats_Logger */ public static function get_logger() { if (empty(self::$_logger_instance)) { if (!class_exists('Klick_Ats_Logger')) include_once(KLICK_ATS_PLUGIN_MAIN_PATH . '/includes/class-klick-ats-logger.php'); self::$_logger_instance = new Klick_Ats_Logger(); } return self::$_logger_instance; } /** * Instantiate Klick_Ats_Notifier if needed * * @return object Klick_Ats_Notifier */ public static function get_notifier() { if (empty(self::$_notifier_instance)) { include_once(KLICK_ATS_PLUGIN_MAIN_PATH . '/includes/class-klick-ats-notifier.php'); self::$_notifier_instance = new Klick_Ats_Notifier(); } return self::$_notifier_instance; } /** * Establish Capability * * @return string */ public function capability_required() { return apply_filters('klick_ats_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-ats', false, dirname(plugin_basename(__FILE__)) . '/languages'); } /** * To enqueue js at user side * * @return void */ public function klick_ats_ui_scripts() { $dashboard = $this->get_dashboard(); $dashboard->init_user_end(); } /** * To enqueue css at user side * * @return void */ public function klick_ats_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-ats', 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_ats_get_loggers(); $logger->activate_logs($loggers); $logger->add_loggers($loggers); } /** * Ajax Handler */ public function klick_ats_ajax_handler() { $nonce = empty($_POST['nonce']) ? '' : $_POST['nonce']; if (!wp_verify_nonce($nonce, 'klick_ats_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_ats_build_theme_table': $data['remaining_themes'] = sanitize_text_field($parsed_data['remaining_themes']); $data['page_count'] = sanitize_text_field($parsed_data['page_count']); break; case 'klick_ats_install_theme': $data['install_this_theme'] = $parsed_data['install_this_theme']; break; case 'klick_ats_save_settings': $data['ats_advance_search_toggle'] = sanitize_text_field($parsed_data['ats_advance_search_toggle']); break; default: error_log("Klick_Ats_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_Ats_Commands')) include_once(KLICK_ATS_PLUGIN_MAIN_PATH . 'includes/class-klick-ats-commands.php'); $commands = new Klick_Ats_Commands(); if (!method_exists($commands, $subaction)) { error_log("Klick_Ats_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_ats_activation_actions(){ $this->get_options()->set_default_options(); } /** * Plugin deactivation actions. * * @return void */ public function klick_ats_deactivation_actions(){ $this->get_options()->delete_all_options(); $this->db_operations()->drop_table("all_themes"); } /** * Define Pagination same as WP default * * @return void */ public function klick_ats_pagination($page_number) { ?>
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')) { ?>
get_options()->delete_all_options(); } /** * Instantiates the main plugin class * * @return instance */ function Klick_Ats(){ return Klick_Ats::instance(); } endif; $GLOBALS['Klick_Ats'] = Klick_Ats();