X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/cc7b1505cd9fafd87c3672f669e13e98b0c544f7..febc815b2c9d85be5717da9e8d164bd2daa97e31:/wp-admin/options-permalink.php?ds=sidebyside diff --git a/wp-admin/options-permalink.php b/wp-admin/options-permalink.php index cf16d89b..b6c52c51 100644 --- a/wp-admin/options-permalink.php +++ b/wp-admin/options-permalink.php @@ -1,179 +1,268 @@ - -mod_rewrite_rules() ) ); + $update_required = ( $new_rules !== $existing_rules ); + } +} + +$using_index_permalinks = $wp_rewrite->using_index_permalinks(); if ( isset($_POST['permalink_structure']) || isset($_POST['category_base']) ) { check_admin_referer('update-permalink'); - if ( isset($_POST['permalink_structure']) ) { - $permalink_structure = $_POST['permalink_structure']; - if (! empty($permalink_structure) ) - $permalink_structure = preg_replace('#/+#', '/', '/' . $_POST['permalink_structure']); - $wp_rewrite->set_permalink_structure($permalink_structure); + if ( isset( $_POST['permalink_structure'] ) ) { + if ( isset( $_POST['selection'] ) && 'custom' != $_POST['selection'] ) + $permalink_structure = $_POST['selection']; + else + $permalink_structure = $_POST['permalink_structure']; + + if ( ! empty( $permalink_structure ) ) { + $permalink_structure = preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $permalink_structure ) ); + if ( $prefix && $blog_prefix ) + $permalink_structure = $prefix . preg_replace( '#^/?index\.php#', '', $permalink_structure ); + else + $permalink_structure = $blog_prefix . $permalink_structure; + } + + $permalink_structure = sanitize_option( 'permalink_structure', $permalink_structure ); + + $wp_rewrite->set_permalink_structure( $permalink_structure ); } - - if ( isset($_POST['category_base']) ) { + + if ( isset( $_POST['category_base'] ) ) { $category_base = $_POST['category_base']; - if (! empty($category_base) ) - $category_base = preg_replace('#/+#', '/', '/' . $_POST['category_base']); - $wp_rewrite->set_category_base($category_base); + if ( ! empty( $category_base ) ) + $category_base = $blog_prefix . preg_replace('#/+#', '/', '/' . str_replace( '#', '', $category_base ) ); + $wp_rewrite->set_category_base( $category_base ); } -} - -$permalink_structure = get_settings('permalink_structure'); -$category_base = get_settings('category_base'); -if ( (!file_exists($home_path.'.htaccess') && is_writable($home_path)) || is_writable($home_path.'.htaccess') ) - $writable = true; -else - $writable = false; + if ( isset( $_POST['tag_base'] ) ) { + $tag_base = $_POST['tag_base']; + if ( ! empty( $tag_base ) ) + $tag_base = $blog_prefix . preg_replace('#/+#', '/', '/' . str_replace( '#', '', $tag_base ) ); + $wp_rewrite->set_tag_base( $tag_base ); + } + + $message = __( 'Permalink structure updated.' ); + + if ( $iis7_permalinks ) { + if ( $permalink_structure && ! $using_index_permalinks && ! $writable ) { + $message = __( 'You should update your web.config now.' ); + } elseif ( $permalink_structure && ! $using_index_permalinks && $writable ) { + $message = __( 'Permalink structure updated. Remove write access on web.config file now!' ); + } + } elseif ( ! $is_nginx && $permalink_structure && ! $using_index_permalinks && ! $writable && $update_required ) { + $message = __( 'You should update your .htaccess now.' ); + } + + if ( ! get_settings_errors() ) { + add_settings_error( 'general', 'settings_updated', $message, 'updated' ); + } -if ($wp_rewrite->using_index_permalinks()) - $usingpi = true; -else - $usingpi = false; + set_transient( 'settings_errors', get_settings_errors(), 30 ); -$wp_rewrite->flush_rules(); + wp_redirect( admin_url( 'options-permalink.php?settings-updated=true' ) ); + exit; +} + +flush_rewrite_rules(); + +require( ABSPATH . 'wp-admin/admin-header.php' ); ?> +