[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-admin/network/ -> site-themes.php (source)

   1  <?php
   2  /**
   3   * Edit Site Themes Administration Screen
   4   *
   5   * @package WordPress
   6   * @subpackage Multisite
   7   * @since 3.1.0
   8   */
   9  
  10  /** Load WordPress Administration Bootstrap */
  11  require_once ( './admin.php' );
  12  
  13  if ( ! is_multisite() )
  14      wp_die( __( 'Multisite support is not enabled.' ) );
  15  
  16  $menu_perms = get_site_option( 'menu_items', array() );
  17  
  18  if ( empty( $menu_perms['themes'] ) && ! is_super_admin() )
  19      wp_die( __( 'Cheatin&#8217; uh?' ) );
  20  
  21  if ( ! current_user_can( 'manage_sites' ) )
  22      wp_die( __( 'You do not have sufficient permissions to manage themes for this site.' ) );
  23  
  24  get_current_screen()->add_help_tab( array(
  25      'id'      => 'overview',
  26      'title'   => __('Overview'),
  27      'content' =>
  28          '<p>' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '</p>' .
  29          '<p>' . __('<strong>Info</strong> - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
  30          '<p>' . __('<strong>Users</strong> - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
  31          '<p>' . sprintf( __('<strong>Themes</strong> - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site&#8217;s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
  32          '<p>' . __('<strong>Settings</strong> - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
  33  ) );
  34  
  35  get_current_screen()->set_help_sidebar(
  36      '<p><strong>' . __('For more information:') . '</strong></p>' .
  37      '<p>' . __('<a href="http://codex.wordpress.org/Network_Admin_Sites_Screen" target="_blank">Documentation on Site Management</a>') . '</p>' .
  38      '<p>' . __('<a href="http://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
  39  );
  40  
  41  $wp_list_table = _get_list_table('WP_MS_Themes_List_Table');
  42  
  43  $action = $wp_list_table->current_action();
  44  
  45  $s = isset($_REQUEST['s']) ? $_REQUEST['s'] : '';
  46  
  47  // Clean up request URI from temporary args for screen options/paging uri's to work as expected.
  48  $temp_args = array( 'enabled', 'disabled', 'error' );
  49  $_SERVER['REQUEST_URI'] = remove_query_arg( $temp_args, $_SERVER['REQUEST_URI'] );
  50  $referer = remove_query_arg( $temp_args, wp_get_referer() );
  51  
  52  $id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
  53  
  54  if ( ! $id )
  55      wp_die( __('Invalid site ID.') );
  56  
  57  $wp_list_table->prepare_items();
  58  
  59  $details = get_blog_details( $id );
  60  if ( !can_edit_network( $details->site_id ) )
  61      wp_die( __( 'You do not have permission to access this page.' ) );
  62  
  63  $is_main_site = is_main_site( $id );
  64  
  65  if ( $action ) {
  66      switch_to_blog( $id );
  67      $allowed_themes = get_option( 'allowedthemes' );
  68  
  69      switch ( $action ) {
  70          case 'enable':
  71              check_admin_referer( 'enable-theme_' . $_GET['theme'] );
  72              $theme = $_GET['theme'];
  73              $action = 'enabled';
  74              $n = 1;
  75              if ( !$allowed_themes )
  76                  $allowed_themes = array( $theme => true );
  77              else
  78                  $allowed_themes[$theme] = true;
  79              break;
  80          case 'disable':
  81              check_admin_referer( 'disable-theme_' . $_GET['theme'] );
  82              $theme = $_GET['theme'];
  83              $action = 'disabled';
  84              $n = 1;
  85              if ( !$allowed_themes )
  86                  $allowed_themes = array();
  87              else
  88                  unset( $allowed_themes[$theme] );
  89              break;
  90          case 'enable-selected':
  91              check_admin_referer( 'bulk-themes' );
  92              if ( isset( $_POST['checked'] ) ) {
  93                  $themes = (array) $_POST['checked'];
  94                  $action = 'enabled';
  95                  $n = count( $themes );
  96                  foreach( (array) $themes as $theme )
  97                      $allowed_themes[ $theme ] = true;
  98              } else {
  99                  $action = 'error';
 100                  $n = 'none';
 101              }
 102              break;
 103          case 'disable-selected':
 104              check_admin_referer( 'bulk-themes' );
 105              if ( isset( $_POST['checked'] ) ) {
 106                  $themes = (array) $_POST['checked'];
 107                  $action = 'disabled';
 108                  $n = count( $themes );
 109                  foreach( (array) $themes as $theme )
 110                      unset( $allowed_themes[ $theme ] );
 111              } else {
 112                  $action = 'error';
 113                  $n = 'none';
 114              }
 115              break;
 116      }
 117  
 118      update_option( 'allowedthemes', $allowed_themes );
 119      restore_current_blog();
 120  
 121      wp_safe_redirect( add_query_arg( array( 'id' => $id, $action => $n ), $referer ) );
 122      exit;
 123  }
 124  
 125  if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) {
 126      wp_safe_redirect( $referer );
 127      exit();
 128  }
 129  
 130  add_thickbox();
 131  add_screen_option( 'per_page', array( 'label' => _x( 'Themes', 'themes per page (screen options)' ) ) );
 132  
 133  $site_url_no_http = preg_replace( '#^http(s)?://#', '', get_blogaddress_by_id( $id ) );
 134  $title_site_url_linked = sprintf( __('Edit Site: <a href="%1$s">%2$s</a>'), get_blogaddress_by_id( $id ), $site_url_no_http );
 135  $title = sprintf( __('Edit Site: %s'), $site_url_no_http );
 136  
 137  $parent_file = 'sites.php';
 138  $submenu_file = 'sites.php';
 139  
 140  require ('../admin-header.php'); ?>
 141  
 142  <div class="wrap">
 143  <?php screen_icon('ms-admin'); ?>
 144  <h2 id="edit-site"><?php echo $title_site_url_linked ?></h2>
 145  <h3 class="nav-tab-wrapper">
 146  <?php
 147  $tabs = array(
 148      'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
 149      'site-users'    => array( 'label' => __( 'Users' ),    'url' => 'site-users.php'    ),
 150      'site-themes'   => array( 'label' => __( 'Themes' ),   'url' => 'site-themes.php'   ),
 151      'site-settings' => array( 'label' => __( 'Settings' ), 'url' => 'site-settings.php' ),
 152  );
 153  foreach ( $tabs as $tab_id => $tab ) {
 154      $class = ( $tab['url'] == $pagenow ) ? ' nav-tab-active' : '';
 155      echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
 156  }
 157  ?>
 158  </h3><?php
 159  
 160  if ( isset( $_GET['enabled'] ) ) {
 161      $_GET['enabled'] = absint( $_GET['enabled'] );
 162      echo '<div id="message" class="updated"><p>' . sprintf( _n( 'Theme enabled.', '%s themes enabled.', $_GET['enabled'] ), number_format_i18n( $_GET['enabled'] ) ) . '</p></div>';
 163  } elseif ( isset( $_GET['disabled'] ) ) {
 164      $_GET['disabled'] = absint( $_GET['disabled'] );
 165      echo '<div id="message" class="updated"><p>' . sprintf( _n( 'Theme disabled.', '%s themes disabled.', $_GET['disabled'] ), number_format_i18n( $_GET['disabled'] ) ) . '</p></div>';
 166  } elseif ( isset( $_GET['error'] ) && 'none' == $_GET['error'] ) {
 167      echo '<div id="message" class="error"><p>' . __( 'No theme selected.' ) . '</p></div>';
 168  } ?>
 169  
 170  <p><?php _e( 'Network enabled themes are not shown on this screen.' ) ?></p>
 171  
 172  <form method="get" action="">
 173  <?php $wp_list_table->search_box( __( 'Search Installed Themes' ), 'theme' ); ?>
 174  <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
 175  </form>
 176  
 177  <?php $wp_list_table->views(); ?>
 178  
 179  <form method="post" action="site-themes.php?action=update-site">
 180      <?php wp_nonce_field( 'edit-site' ); ?>
 181      <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
 182  
 183  <?php $wp_list_table->display(); ?>
 184  
 185  </form>
 186  
 187  </div>
 188  <?php include (ABSPATH . 'wp-admin/admin-footer.php'); ?>


Generated: Fri May 25 03:56:23 2012 Hosted by follow the white rabbit.