*/ class Hurrytimer_Admin { /** * The ID of this plugin. * * @since 1.0.0 * @access private * @var string $plugin_name The ID of this plugin. */ private $plugin_name; /** * The version of this plugin. * * @since 1.0.0 * @access private * @var string $version The current version of this plugin. */ private $version; /** * Initialize the class and set its properties. * * @since 1.0.0 * * @param string $plugin_name The name of this plugin. * @param string $version The version of this plugin. */ public function __construct($plugin_name, $version) { $this->plugin_name = $plugin_name; $this->version = $version; add_action('wp_ajax_search_products', [$this, 'search_products']); add_action('admin_init', [$this, 'maybe_activate_countdown']); add_action('admin_init', [$this, 'maybe_deactivate_countdown']); add_filter('post_row_actions', [$this, 'countdown_list_row_actions']); add_filter('bulk_actions-edit-' . HURRYTIMER_COUNTDOWN_PT, [$this, 'countdown_list_bulk_actions']); add_filter('manage_' . HURRYTIMER_COUNTDOWN_PT . '_posts_columns', [$this, 'countdown_list_columns']); add_action('manage_' . HURRYTIMER_COUNTDOWN_PT . '_posts_custom_column', [$this, 'countdown_list_columns_content'], 10, 2); add_action('views_edit-' . HURRYTIMER_COUNTDOWN_PT, [$this, 'countdown_list_header_links'], 10); add_filter('bulk_post_updated_messages', [$this, 'custom_bulk_post_updated_messages'], 10, 2); add_action('admin_menu', [$this, 'help_tabs']); add_action('admin_notices', [$this, 'countdown_activation_notice']); add_filter( 'admin_footer_text', [$this, 'admin_footer_text']); } function admin_footer_text(){ $screen = get_current_screen(); if($screen->post_type === HURRYTIMER_COUNTDOWN_PT){ echo 'HurryTimer is made by Nabil Lemsieh | Leave a Review'; } } public function countdown_activation_notice() { $post_id = filter_input(INPUT_GET, 'post', \FILTER_VALIDATE_INT); $status = \filter_input(INPUT_GET, 'hrytmr_action'); if (!$post_id || !$status || !($post = get_post($post_id))) { return; } if ($status === "hrytmr-ct-deactivate" && !Hurrytimer_CT_Settings::is_active($post_id)) { ?>
[hurrytimer id="' . $post_id . '"]'; break; } } public function countdown_list_bulk_actions($actions) { unset($actions['edit']); return $actions; } public function countdown_list_columns($columns) { $columns = array_filter($columns, function ($column_name) { return in_array($column_name, ['cb', 'title', 'date']); }, ARRAY_FILTER_USE_KEY); $date = $columns['date']; unset($columns['date']); $columns = array_merge($columns, [ 'status' => __('Status', "hurrytimer"), 'mode' => __('Mode', "hurrytimer"), 'shortcode' => __('Shortcode', "hurrytimer"), ]); $columns['date'] = $date; return $columns; } /** * Register the stylesheets for the admin area. * * @since 1.0.0 */ public function enqueue_styles() { wp_enqueue_style('wp-color-picker'); wp_enqueue_style($this->plugin_name, HURRYTIMER_PLUGIN_URL . '/admin/css/admin.css', [], filemtime(HURRYTIMER_PLUGIN_DIR . '/admin/css/admin.css'), 'all'); } public function countdown_list_row_actions($actions) { global $post; if ($post->post_type === HURRYTIMER_COUNTDOWN_PT) { unset($actions['inline hide-if-no-js']); unset($actions['trash']); } $actions['delete'] = '' . __('Delete', "hurrytimer") . ''; return $actions; } /** * Register the JavaScript for the admin area. * * @since 1.0.0 */ public function enqueue_scripts() { wp_enqueue_script('wp-color-picker'); wp_enqueue_script( $this->plugin_name, HURRYTIMER_PLUGIN_URL . '/admin/js/admin.js', array('jquery', 'jquery-ui-core', 'jquery-ui-datepicker'), time(), true); wp_localize_script($this->plugin_name, 'ajax_object', array('ajax_url' => admin_url('admin-ajax.php'))); } public function menu() { add_menu_page('HurryTimer', 'HurryTimer', 'manage_options', 'hurrytimer', [ & $this, 'welcome_page_tpl']); add_submenu_page('hurrytimer', __('Add New Timer', 'hurrytimer'), __('Add New Timer', 'hurrytimer'), 'manage_options', 'post-new.php?post_type=hurrytimer_countdown' ); // add_submenu_page('hurrytimer', // __('Settings',"hurrytimer"), // __('Settings', "hurrytimer"), // 'manage_options', // 'hurrytimer_settings', // array(&$this, 'settings_page_tpl') // ); } public function maybe_activate_countdown() { if ( isset($_GET['hrytmr_action']) && $_GET['hrytmr_action'] === "hrytmr-ct-activate" && isset($_GET['_wpnonce']) && wp_verify_nonce($_GET['_wpnonce'], 'hrytmr-ct-activate') ) { $post_id = filter_input(INPUT_GET, 'post'); wp_update_post(['ID' => $post_id, 'post_status' => 'publish']); } } public function maybe_deactivate_countdown() { if ( isset($_GET['hrytmr_action']) && $_GET['hrytmr_action'] === "hrytmr-ct-deactivate" && isset($_GET['_wpnonce']) && wp_verify_nonce($_GET['_wpnonce'], 'hrytmr-ct-deactivate') ) { $post_id = filter_input(INPUT_GET, 'post'); wp_update_post(['ID' => $post_id, 'post_status' => 'draft']); } } public function welcome_page_tpl() { include plugin_dir_path(dirname(__FILE__)) . 'admin/templates/welcome.php'; } public function new_countdown_page_tpl() { include plugin_dir_path(dirname(__FILE__)) . 'admin/templates/new-countdown.php'; } public function meta_boxes() { require plugin_dir_path(dirname(__FILE__)) . 'admin/class-hurrytimer-metaboxes.php'; new Hurrytimer_MetaBoxes(); } /** * Search products * * @return void */ public function search_products() { $search = sanitize_text_field($_GET['search']); $products_selection = sanitize_text_field($_GET['productsSelection']); $results = []; $exclude = array_map('intval', $_GET['exclude']); if (in_array($products_selection, [WC_Product_Selection::SPECIFIC_CATEGORIES, WC_Product_Selection::ALL_CATEGORIES_EXCEPT])) { $args = [ "hide_empty" => false, "taxonomy" => "product_cat", "name__like" => $search, 'exclude' => $exclude, ]; $items = get_terms($args); $results = array_map(function ($item) { return [ "id" => $item->term_id, "text" => $item->name, ]; }, $items); } else { $args = ['s' => $search, 'post_type' => 'product', 'post__not_in' => $exclude, ]; $items = get_posts($args); $results = array_map(function ($item) { return [ "id" => $item->ID, "text" => $item->post_title, ]; }, $items); } exit(json_encode(["results" => $results, "pagination" => true])); } }