/home/vianto5/heredit.mx/wp-content/plugins/code-snippets/php/Admin/Menus/Manage
NameSizeModeActions
Manage_Menu.php94690644editdlrm
Manage_Menu_Assets.php40760644editdlrm
Manage_Menu_Bulk_Download.php46880644editdlrm
Manage_Menu_Screen_Options.php71870644editdlrm
Edit: /home/vianto5/heredit.mx/wp-content/plugins/code-snippets/php/Admin/Menus/Manage/Manage_Menu.php (9469B)
is_compact_menu() ) { add_action( 'admin_menu', array( $this, 'register_compact_menu' ), 2 ); add_action( 'network_admin_menu', array( $this, 'register_compact_menu' ), 2 ); } $this->screen_options = new Manage_Menu_Screen_Options(); new Manage_Menu_Bulk_Download(); add_action( 'admin_menu', array( $this, 'register_upgrade_menu' ), 500 ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_menu_css' ) ); add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_menu_css' ] ); } /** * Register the top-level 'Snippets' menu and associated 'Manage' subpage */ public function register() { add_menu_page( __( 'Snippets', 'code-snippets' ), _x( 'Snippets', 'top-level menu label', 'code-snippets' ), code_snippets()->get_cap(), code_snippets()->get_menu_slug(), [ $this, 'render' ], 'none', // Added through CSS as a mask to prevent loading 'blinking'. apply_filters( 'code_snippets/admin/menu_position', is_network_admin() ? 21 : 67 ) ); parent::register(); } /** * Render the snippets table interface. * * @return void */ public function render() { echo '
'; } /** * Register the 'upgrade' menu item. * * @return void */ public function register_upgrade_menu() { if ( code_snippets()->licensing->is_licensed() || get_setting( 'general', 'hide_upgrade_menu' ) ) { return; } $menu_title = sprintf( '%s %s', _x( 'Go Pro', 'top-level menu label', 'code-snippets' ), '' ); $hook = add_submenu_page( code_snippets()->get_menu_slug(), __( 'Upgrade to Pro', 'code-snippets' ), $menu_title, code_snippets()->get_cap(), 'code_snippets_upgrade', '__return_empty_string', 100 ); add_action( "load-$hook", [ $this, 'load_upgrade_menu' ] ); } /** * Print CSS required for the admin menu icon. * * @return void */ public function enqueue_menu_css() { wp_enqueue_style( 'code-snippets-menu', plugins_url( 'dist/menu.css', PLUGIN_FILE ), [], PLUGIN_VERSION ); } /** * Redirect the user upon opening the upgrade menu. * * @return void */ public function load_upgrade_menu() { wp_safe_redirect( 'https://snipco.de/JE2f' ); exit; } /** * Retrieve every hookname registered by this menu, including the compact * Tools submenu hookname when compact mode is active. * * @return string[] */ public function get_hooknames(): array { $hooknames = parent::get_hooknames(); if ( code_snippets()->is_compact_menu() ) { $hooknames[] = get_plugin_page_hookname( $this->base_slug, 'tools.php' ); } return $hooknames; } /** * Add menu pages for the compact menu */ public function register_compact_menu() { if ( ! code_snippets()->is_compact_menu() ) { return; } // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Value is matched to known classes. $sub = code_snippets()->get_menu_slug( isset( $_GET['sub'] ) ? sanitize_key( $_GET['sub'] ) : 'snippets' ); $classmap = [ 'snippets' => 'manage', 'add-snippet' => 'edit', 'edit-snippet' => 'edit', 'import-code-snippets' => 'import', 'snippets-settings' => 'settings', ]; $menus = code_snippets()->admin->menus; $class = isset( $classmap[ $sub ], $menus[ $classmap[ $sub ] ] ) ? $menus[ $classmap[ $sub ] ] : $this; $hook = add_submenu_page( 'tools.php', __( 'Snippets', 'code-snippets' ), _x( 'Snippets', 'tools submenu label', 'code-snippets' ), code_snippets()->get_cap(), code_snippets()->get_menu_slug(), [ $class, 'render' ] ); add_action( 'load-' . $hook, [ $class, 'load' ] ); } /** * Nonce action guarding the run-once request. */ public const RUN_ONCE_NONCE = 'code_snippets_run_once'; /** * Run a single-use snippet, when asked to by the snippets list. * * Activating the snippet is all that is required: single-use snippets are * executed and then deactivated again on the next page load, so redirecting * afterwards both runs the code and returns the snippet to its resting * state. This mirrors what the list table did before the snippets list * moved to the REST API, at which point the button was left pointing at a * URL that nothing handled. * * @return void */ private function handle_run_once(): void { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Verified immediately below. $action = isset( $_REQUEST['action'] ) ? sanitize_key( wp_unslash( $_REQUEST['action'] ) ) : ''; if ( 'run-once' !== $action ) { return; } // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Verified immediately below. $nonce = isset( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ) : ''; if ( ! wp_verify_nonce( $nonce, self::RUN_ONCE_NONCE ) || ! code_snippets()->current_user_can() ) { return; } // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Verified above. $snippet_id = isset( $_REQUEST['snippet'] ) ? absint( wp_unslash( $_REQUEST['snippet'] ) ) : 0; if ( ! $snippet_id ) { return; } // The network context comes from the current screen, never the request, // so a subsite administrator cannot target a network snippet. $network = is_network_admin(); $snippet = get_snippet( $snippet_id, $network ); // Only single-use snippets are run this way. Activating anything else // would leave it permanently on while the notice claimed it ran once. if ( ! $snippet || 0 === $snippet->id || 'single-use' !== $snippet->scope ) { wp_safe_redirect( remove_query_arg( [ 'action', 'snippet', 'network', '_wpnonce', 'result' ] ) ); exit; } // Safe mode skips execution, so activating here would leave the snippet on // without ever running it, behind a false success notice. Report it instead. if ( \Code_Snippets\Integration\Evaluate_Functions::is_safe_mode_active() ) { wp_safe_redirect( add_query_arg( [ 'result' => 'run-once-safe-mode' ], remove_query_arg( [ 'action', 'snippet', 'network', '_wpnonce', 'result' ] ) ) ); exit; } // An already-active snippet has effectively run, so treat it as success. $result = $snippet->active ? $snippet : activate_snippet( $snippet_id, $network ); wp_safe_redirect( add_query_arg( [ 'result' => is_string( $result ) ? 'run-once-failed' : 'executed' ], remove_query_arg( [ 'action', 'snippet', 'network', '_wpnonce', 'result' ] ) ) ); exit; } /** * Executed when the admin page is loaded. */ public function load() { parent::load(); $this->handle_run_once(); $this->screen_options->load(); if ( $this->screen_options->is_upsell_view() ) { return; } $contextual_help = new Contextual_Help( 'edit' ); $contextual_help->load(); } /** * Enqueue scripts and stylesheets for the admin page. */ public function enqueue_assets() { $assets = new Manage_Menu_Assets( $this->screen_options ); $assets->enqueue( self::$script_deps, self::$style_deps ); } /** * Get the number of snippets to show per page in the cloud search. * * The value defaults to the user's local snippets-per-page preference but can * be overridden independently via the `code_snippets/cloud_search/per_page` filter. * The result is clamped to the REST API's per_page maximum of 100. * * @return int */ public static function get_cloud_search_per_page(): int { $per_page = intval( apply_filters( 'code_snippets/cloud_search/per_page', self::get_snippets_per_page() ) ); return min( Cloud_Search_Controller::MAX_RESULTS_PER_PAGE, max( 1, $per_page ) ); } /** * Get the default number of snippets to show per page. * * @return int */ public static function get_default_snippets_per_page(): int { $default = apply_filters( 'code_snippets/snippets_per_page_default', self::DEFAULT_SNIPPETS_PER_PAGE ); return max( 1, intval( $default ) ); } /** * Get the number of snippets to show per page. * * @return int */ public static function get_snippets_per_page(): int { $per_page = intval( get_user_option( 'snippets_per_page' ) ); return intval( apply_filters( 'snippets_per_page', $per_page > 0 ? $per_page : self::get_default_snippets_per_page() ) ); } }