/wp-content/plugins/code-snippets/php/class-admin.php
PHP | 235 lines | 139 code | 34 blank | 62 comment | 10 complexity | 52b29695c6dd1e965dcfc74564a2f97d MD5 | raw file
Possible License(s): MIT, AGPL-1.0, GPL-2.0
- <?php
- /**
- * Functions specific to the administration interface
- *
- * @package Code_Snippets
- */
- class Code_Snippets_Admin {
- public $menus = array();
- function __construct() {
- if ( is_admin() ) {
- $this->run();
- }
- }
- public function load_classes() {
- $this->menus['manage'] = new Code_Snippets_Manage_Menu();
- $this->menus['edit'] = new Code_Snippets_Edit_Menu();
- $this->menus['import'] = new Code_Snippets_Import_Menu();
- if ( is_network_admin() === code_snippets_unified_settings() ) {
- $this->menus['settings'] = new Code_Snippets_Settings_Menu();
- }
- foreach ( $this->menus as $menu ) {
- $menu->run();
- }
- }
- public function run() {
- add_action( 'init', array( $this, 'load_classes' ), 11 );
- add_filter( 'mu_menu_items', array( $this, 'mu_menu_items' ) );
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_stylesheet' ) );
- add_filter( 'plugin_action_links_' . plugin_basename( CODE_SNIPPETS_FILE ), array( $this, 'plugin_settings_link' ) );
- add_filter( 'plugin_row_meta', array( $this, 'plugin_meta_links' ), 10, 2 );
- add_action( 'code_snippets/admin/manage', array( $this, 'survey_message' ) );
- if ( isset( $_POST['save_snippet'] ) && $_POST['save_snippet'] ) {
- add_action( 'code_snippets/allow_execute_snippet', array( $this, 'prevent_exec_on_save' ), 10, 3 );
- }
- }
- /**
- * Allow super admins to control site admin access to
- * snippet admin menus
- *
- * Adds a checkbox to the *Settings > Network Settings*
- * network admin menu
- *
- * @since 1.7.1
- *
- * @param array $menu_items The current mu menu items
- *
- * @return array The modified mu menu items
- */
- function mu_menu_items( $menu_items ) {
- $menu_items['snippets'] = __( 'Snippets', 'code-snippets' );
- $menu_items['snippets_settings'] = __( 'Snippets » Settings', 'code-snippets' );
- return $menu_items;
- }
- /**
- * Enqueue the stylesheet for a snippet menu
- *
- * @since 2.2.0
- * @uses wp_enqueue_style() to add the stylesheet to the queue
- * @uses get_user_option() to check if MP6 mode is active
- * @uses plugins_url() to retrieve a URL to assets
- *
- * @param string $hook the current page hook
- */
- function enqueue_admin_stylesheet( $hook ) {
- $pages = array( 'manage', 'add', 'edit', 'settings' );
- $hooks = array_map( 'code_snippets_get_menu_hook', $pages );
- /* First, load the menu icon stylesheet */
- wp_enqueue_style(
- 'menu-icon-snippets',
- plugins_url( 'css/min/menu-icon.css', CODE_SNIPPETS_FILE ),
- false,
- CODE_SNIPPETS_VERSION
- );
- /* Only load the stylesheet on the right snippets page */
- if ( ! in_array( $hook, $hooks ) ) {
- return;
- }
- $hooks = array_combine( $hooks, $pages );
- $page = $hooks[ $hook ];
- // add snippet page uses edit stylesheet
- 'add' === $page && $page = 'edit';
- wp_enqueue_style(
- "code-snippets-$page",
- plugins_url( "css/min/$page.css", CODE_SNIPPETS_FILE ),
- false,
- CODE_SNIPPETS_VERSION
- );
- }
- /**
- * Prevent the snippet currently being saved from being executed
- * so it is not run twice (once normally, once
- *
- * @param bool $exec Whether the snippet will be executed
- * @param int $exec_id The ID of the snippet being executed
- * @param string $table_name
- *
- * @return bool Whether the snippet will be executed
- */
- function prevent_exec_on_save( $exec, $exec_id, $table_name ) {
- if ( ! isset( $_POST['save_snippet'], $_POST['snippet_id'] ) ) {
- return $exec;
- }
- if ( code_snippets()->db->get_table_name() !== $table_name ) {
- return $exec;
- }
- $id = intval( $_POST['snippet_id'] );
- if ( $id === $exec_id ) {
- return false;
- }
- return $exec;
- }
- /**
- * Adds a link pointing to the Manage Snippets page
- *
- * @since 2.0
- *
- * @param array $links The existing plugin action links
- *
- * @return array The modified plugin action links
- */
- function plugin_settings_link( $links ) {
- array_unshift( $links, sprintf(
- '<a href="%1$s" title="%2$s">%3$s</a>',
- code_snippets()->get_menu_url(),
- __( 'Manage your existing snippets', 'code-snippets' ),
- __( 'Snippets', 'code-snippets' )
- ) );
- return $links;
- }
- /**
- * Adds extra links related to the plugin
- *
- * @since 2.0
- *
- * @param array $links The existing plugin info links
- * @param string $file The plugin the links are for
- *
- * @return array The modified plugin info links
- */
- function plugin_meta_links( $links, $file ) {
- /* We only want to affect the Code Snippets plugin listing */
- if ( plugin_basename( CODE_SNIPPETS_FILE ) !== $file ) {
- return $links;
- }
- $format = '<a href="%1$s" title="%2$s">%3$s</a>';
- /* array_merge appends the links to the end */
- return array_merge( $links, array(
- sprintf( $format,
- 'http://wordpress.org/plugins/code-snippets/',
- __( 'Visit the WordPress.org plugin page', 'code-snippets' ),
- __( 'About', 'code-snippets' )
- ),
- sprintf( $format,
- 'http://wordpress.org/support/plugin/code-snippets/',
- __( 'Visit the support forums', 'code-snippets' ),
- __( 'Support', 'code-snippets' )
- ),
- sprintf( $format,
- 'http://bungeshea.com/donate/',
- __( "Support this plugin's development", 'code-snippets' ),
- __( 'Donate', 'code-snippets' )
- ),
- ) );
- }
- /**
- * Print a notice inviting people to participate in the Code Snippets Survey
- *
- * @since 1.9
- * @return void
- */
- function survey_message() {
- global $current_user;
- $key = 'ignore_code_snippets_survey_message';
- /* Bail now if the user has dismissed the message */
- if ( get_user_meta( $current_user->ID, $key ) ) {
- return;
- } elseif ( isset( $_GET[ $key ], $_REQUEST['_wpnonce'] ) && wp_verify_nonce( $_REQUEST['_wpnonce'], $key ) ) {
- add_user_meta( $current_user->ID, $key, true, true );
- return;
- }
- ?>
- <br/>
- <div class="updated"><p>
- <?php _e( "<strong>Have feedback on Code Snippets?</strong> Please take the time to answer a short survey on how you use this plugin and what you'd like to see changed or added in the future.", 'code-snippets' ); ?>
- <a href="http://sheabunge.polldaddy.com/s/code-snippets-feedback" class="button secondary"
- target="_blank" style="margin: auto .5em;">
- <?php _e( 'Take the survey now', 'code-snippets' ); ?>
- </a>
- <a href="<?php echo esc_url( wp_nonce_url( add_query_arg( $key, true ), $key ) ); ?>"><?php esc_html_e( 'Dismiss', 'code-snippets' ); ?></a>
- </p></div>
- <?php
- }
- }