balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

site-settings.php (5571B)


      1 <?php
      2 /**
      3  * Edit Site Settings Administration Screen
      4  *
      5  * @package WordPress
      6  * @subpackage Multisite
      7  * @since 3.1.0
      8  */
      9 
     10 /** Load WordPress Administration Bootstrap */
     11 require_once __DIR__ . '/admin.php';
     12 
     13 if ( ! current_user_can( 'manage_sites' ) ) {
     14 	wp_die( __( 'Sorry, you are not allowed to edit this site.' ) );
     15 }
     16 
     17 get_current_screen()->add_help_tab( get_site_screen_help_tab_args() );
     18 get_current_screen()->set_help_sidebar( get_site_screen_help_sidebar_content() );
     19 
     20 $id = isset( $_REQUEST['id'] ) ? (int) $_REQUEST['id'] : 0;
     21 
     22 if ( ! $id ) {
     23 	wp_die( __( 'Invalid site ID.' ) );
     24 }
     25 
     26 $details = get_site( $id );
     27 if ( ! $details ) {
     28 	wp_die( __( 'The requested site does not exist.' ) );
     29 }
     30 
     31 if ( ! can_edit_network( $details->site_id ) ) {
     32 	wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );
     33 }
     34 
     35 $is_main_site = is_main_site( $id );
     36 
     37 if ( isset( $_REQUEST['action'] ) && 'update-site' === $_REQUEST['action'] && is_array( $_POST['option'] ) ) {
     38 	check_admin_referer( 'edit-site' );
     39 
     40 	switch_to_blog( $id );
     41 
     42 	$skip_options = array( 'allowedthemes' ); // Don't update these options since they are handled elsewhere in the form.
     43 	foreach ( (array) $_POST['option'] as $key => $val ) {
     44 		$key = wp_unslash( $key );
     45 		$val = wp_unslash( $val );
     46 		if ( 0 === $key || is_array( $val ) || in_array( $key, $skip_options, true ) ) {
     47 			continue; // Avoids "0 is a protected WP option and may not be modified" error when editing blog options.
     48 		}
     49 		update_option( $key, $val );
     50 	}
     51 
     52 	/**
     53 	 * Fires after the site options are updated.
     54 	 *
     55 	 * @since 3.0.0
     56 	 * @since 4.4.0 Added `$id` parameter.
     57 	 *
     58 	 * @param int $id The ID of the site being updated.
     59 	 */
     60 	do_action( 'wpmu_update_blog_options', $id );
     61 
     62 	restore_current_blog();
     63 	wp_redirect(
     64 		add_query_arg(
     65 			array(
     66 				'update' => 'updated',
     67 				'id'     => $id,
     68 			),
     69 			'site-settings.php'
     70 		)
     71 	);
     72 	exit;
     73 }
     74 
     75 if ( isset( $_GET['update'] ) ) {
     76 	$messages = array();
     77 	if ( 'updated' === $_GET['update'] ) {
     78 		$messages[] = __( 'Site options updated.' );
     79 	}
     80 }
     81 
     82 /* translators: %s: Site title. */
     83 $title = sprintf( __( 'Edit Site: %s' ), esc_html( $details->blogname ) );
     84 
     85 $parent_file  = 'sites.php';
     86 $submenu_file = 'sites.php';
     87 
     88 require_once ABSPATH . 'wp-admin/admin-header.php';
     89 
     90 ?>
     91 
     92 <div class="wrap">
     93 <h1 id="edit-site"><?php echo $title; ?></h1>
     94 <p class="edit-site-actions"><a href="<?php echo esc_url( get_home_url( $id, '/' ) ); ?>"><?php _e( 'Visit' ); ?></a> | <a href="<?php echo esc_url( get_admin_url( $id ) ); ?>"><?php _e( 'Dashboard' ); ?></a></p>
     95 
     96 <?php
     97 
     98 network_edit_site_nav(
     99 	array(
    100 		'blog_id'  => $id,
    101 		'selected' => 'site-settings',
    102 	)
    103 );
    104 
    105 if ( ! empty( $messages ) ) {
    106 	foreach ( $messages as $msg ) {
    107 		echo '<div id="message" class="updated notice is-dismissible"><p>' . $msg . '</p></div>';
    108 	}
    109 }
    110 ?>
    111 <form method="post" action="site-settings.php?action=update-site">
    112 	<?php wp_nonce_field( 'edit-site' ); ?>
    113 	<input type="hidden" name="id" value="<?php echo esc_attr( $id ); ?>" />
    114 	<table class="form-table" role="presentation">
    115 		<?php
    116 		$blog_prefix = $wpdb->get_blog_prefix( $id );
    117 		$sql         = "SELECT * FROM {$blog_prefix}options
    118 			WHERE option_name NOT LIKE %s
    119 			AND option_name NOT LIKE %s";
    120 		$query       = $wpdb->prepare(
    121 			$sql,
    122 			$wpdb->esc_like( '_' ) . '%',
    123 			'%' . $wpdb->esc_like( 'user_roles' )
    124 		);
    125 		$options     = $wpdb->get_results( $query );
    126 
    127 		foreach ( $options as $option ) {
    128 			if ( 'default_role' === $option->option_name ) {
    129 				$editblog_default_role = $option->option_value;
    130 			}
    131 
    132 			$disabled = false;
    133 			$class    = 'all-options';
    134 
    135 			if ( is_serialized( $option->option_value ) ) {
    136 				if ( is_serialized_string( $option->option_value ) ) {
    137 					$option->option_value = esc_html( maybe_unserialize( $option->option_value ) );
    138 				} else {
    139 					$option->option_value = 'SERIALIZED DATA';
    140 					$disabled             = true;
    141 					$class                = 'all-options disabled';
    142 				}
    143 			}
    144 
    145 			if ( strpos( $option->option_value, "\n" ) !== false ) {
    146 				?>
    147 				<tr class="form-field">
    148 					<th scope="row"><label for="<?php echo esc_attr( $option->option_name ); ?>"><?php echo ucwords( str_replace( '_', ' ', $option->option_name ) ); ?></label></th>
    149 					<td><textarea class="<?php echo $class; ?>" rows="5" cols="40" name="option[<?php echo esc_attr( $option->option_name ); ?>]" id="<?php echo esc_attr( $option->option_name ); ?>"<?php disabled( $disabled ); ?>><?php echo esc_textarea( $option->option_value ); ?></textarea></td>
    150 				</tr>
    151 				<?php
    152 			} else {
    153 				?>
    154 				<tr class="form-field">
    155 					<th scope="row"><label for="<?php echo esc_attr( $option->option_name ); ?>"><?php echo esc_html( ucwords( str_replace( '_', ' ', $option->option_name ) ) ); ?></label></th>
    156 					<?php if ( $is_main_site && in_array( $option->option_name, array( 'siteurl', 'home' ), true ) ) { ?>
    157 					<td><code><?php echo esc_html( $option->option_value ); ?></code></td>
    158 					<?php } else { ?>
    159 					<td><input class="<?php echo $class; ?>" name="option[<?php echo esc_attr( $option->option_name ); ?>]" type="text" id="<?php echo esc_attr( $option->option_name ); ?>" value="<?php echo esc_attr( $option->option_value ); ?>" size="40" <?php disabled( $disabled ); ?> /></td>
    160 					<?php } ?>
    161 				</tr>
    162 				<?php
    163 			}
    164 		} // End foreach.
    165 
    166 		/**
    167 		 * Fires at the end of the Edit Site form, before the submit button.
    168 		 *
    169 		 * @since 3.0.0
    170 		 *
    171 		 * @param int $id Site ID.
    172 		 */
    173 		do_action( 'wpmueditblogaction', $id );
    174 		?>
    175 	</table>
    176 	<?php submit_button(); ?>
    177 </form>
    178 
    179 </div>
    180 <?php
    181 require_once ABSPATH . 'wp-admin/admin-footer.php';