Submit
Path:
~
/
/
usr
/
local
/
sitepad
/
editor
/
site-data
/
plugins
/
kkart-pro
/
packages
/
kkart-admin
/
src
/
Features
/
Navigation
/
File Content:
Screen.php
<?php /** * Kkart Navigation Screen * * @package kkart Navigation */ namespace Automattic\Kkart\Admin\Features\Navigation; use Automattic\Kkart\Admin\Features\Navigation\Menu; /** * Contains logic for the Kkart Navigation menu. */ class Screen { /** * Class instance. * * @var Menu instance */ protected static $instance = null; /** * Screen IDs of registered pages. * * @var array */ protected static $screen_ids = array(); /** * Registered post types. * * @var array */ protected static $post_types = array(); /** * Get class instance. */ final public static function instance() { if ( ! static::$instance ) { static::$instance = new static(); } return static::$instance; } /** * Init. */ public function init() { add_filter( 'admin_body_class', array( $this, 'add_body_class' ) ); } /** * Returns an array of filtered screen ids. */ public static function get_screen_ids() { return apply_filters( 'kkart_navigation_screen_ids', self::$screen_ids ); } /** * Returns an array of registered post types. */ public static function get_post_types() { return apply_filters( 'kkart_navigation_post_types', self::$post_types ); } /** * Check if we're on a Kkart page * * @return bool */ public static function is_kkart_page() { global $pagenow; // Get post type if on a post screen. $post_type = ''; if ( in_array( $pagenow, array( 'edit.php', 'post.php', 'post-new.php' ), true ) ) { if ( isset( $_GET['post'] ) ) { // phpcs:ignore CSRF ok. $post_type = get_post_type( (int) $_GET['post'] ); // phpcs:ignore CSRF ok. } elseif ( isset( $_GET['post_type'] ) ) { // phpcs:ignore CSRF ok. $post_type = sanitize_text_field( wp_unslash( $_GET['post_type'] ) ); // phpcs:ignore CSRF ok. } } $post_types = self::get_post_types(); // Get current screen ID. $current_screen = get_current_screen(); $screen_ids = self::get_screen_ids(); $current_screen_id = $current_screen ? $current_screen->id : null; if ( in_array( $post_type, $post_types, true ) || in_array( $current_screen_id, $screen_ids, true ) ) { return true; } return false; } /** * Add navigation classes to body. * * @param string $classes Classes. * @return string */ public function add_body_class( $classes ) { if ( self::is_kkart_page() ) { $classes .= ' has-kkart-navigation'; } return $classes; } /** * Adds a screen ID to the list of screens that use the navigtion. * Finds the parent if none is given to grab the correct screen ID. * * @param string $callback Callback or URL for page. * @param string|null $parent Parent screen ID. */ public static function add_screen( $callback, $parent = null ) { global $submenu; $plugin_page = self::get_plugin_page( $callback ); if ( ! $parent ) { $parent = Menu::get_parent_key( $callback ); } $screen_id = get_plugin_page_hookname( $plugin_page, $parent ); // This screen has already been added. if ( in_array( $screen_id, self::$screen_ids, true ) ) { return; } self::$screen_ids[] = $screen_id; } /** * Get the plugin page slug. * * @param string $callback Callback. * @return string */ public static function get_plugin_page( $callback ) { $url = Menu::get_callback_url( $callback ); $parts = wp_parse_url( $url ); if ( ! isset( $parts['query'] ) ) { return $callback; } parse_str( $parts['query'], $query ); if ( ! isset( $query['page'] ) ) { return $callback; } $plugin_page = wp_unslash( $query['page'] ); $plugin_page = plugin_basename( $plugin_page ); return $plugin_page; } /** * Register post type for use in Kkart Navigation screens. * * @param string $post_type Post type to add. */ public static function register_post_type( $post_type ) { self::$post_types[] = $post_type; } }
Submit
FILE
FOLDER
Name
Size
Permission
Action
CoreMenu.php
5853 bytes
0644
Init.php
2762 bytes
0644
Menu.php
14750 bytes
0644
Screen.php
3893 bytes
0644
N4ST4R_ID | Naxtarrr