From 4d0c574bed852f78735d46950764c874e2f8d6ee Mon Sep 17 00:00:00 2001 From: ryan Date: Tue, 16 Jun 2009 02:44:28 +0000 Subject: [PATCH] Don't write to htaccess every time page is saved. Add hard/soft flush flag to flush_rules(). Make sure fopen is successful and silence errors. Props Viper007Bond. fixes #10181 for trunk git-svn-id: http://svn.automattic.com/wordpress/trunk@11578 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/admin.php | 2 +- wp-admin/includes/misc.php | 4 +++- wp-includes/post.php | 4 ++-- wp-includes/rewrite.php | 7 ++++--- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/wp-admin/admin.php b/wp-admin/admin.php index 2c216386d..f8405f9a0 100644 --- a/wp-admin/admin.php +++ b/wp-admin/admin.php @@ -146,7 +146,7 @@ if (isset($plugin_page)) { // Make sure rules are flushed global $wp_rewrite; - $wp_rewrite->flush_rules(); + $wp_rewrite->flush_rules(false); exit(); } else { diff --git a/wp-admin/includes/misc.php b/wp-admin/includes/misc.php index d020e74ad..b717f65a5 100644 --- a/wp-admin/includes/misc.php +++ b/wp-admin/includes/misc.php @@ -72,7 +72,9 @@ function insert_with_markers( $filename, $marker, $insertion ) { $markerdata = explode( "\n", implode( '', file( $filename ) ) ); } - $f = fopen( $filename, 'w' ); + if ( !$f = @fopen( $filename, 'w' ) ) + return false; + $foundit = false; if ( $markerdata ) { $state = true; diff --git a/wp-includes/post.php b/wp-includes/post.php index 407b33c57..0c0ba46d6 100644 --- a/wp-includes/post.php +++ b/wp-includes/post.php @@ -1192,7 +1192,7 @@ function wp_delete_post($postid = 0) { foreach ( (array) $children as $child ) clean_page_cache($child->ID); - $wp_rewrite->flush_rules(); + $wp_rewrite->flush_rules(false); } else { clean_post_cache($postid); } @@ -3354,7 +3354,7 @@ function _save_post_hook($post_id, $post) { // Avoid flushing rules for every post during import. if ( !defined('WP_IMPORTING') ) { global $wp_rewrite; - $wp_rewrite->flush_rules(); + $wp_rewrite->flush_rules(false); } } else { clean_post_cache($post_id); diff --git a/wp-includes/rewrite.php b/wp-includes/rewrite.php index c84b5205e..3486c4a5b 100644 --- a/wp-includes/rewrite.php +++ b/wp-includes/rewrite.php @@ -1822,13 +1822,14 @@ class WP_Rewrite { * * @since 2.0.1 * @access public + * @param $hard bool Whether to update .htaccess (hard flush) or just update rewrite_rules transient (soft flush). Default is true (hard). */ - function flush_rules() { + function flush_rules($hard = true) { delete_transient('rewrite_rules'); $this->wp_rewrite_rules(); - if ( function_exists('save_mod_rewrite_rules') ) + if ( $hard && function_exists('save_mod_rewrite_rules') ) save_mod_rewrite_rules(); - if ( function_exists('iis7_save_url_rewrite_rules') ) + if ( $hard && function_exists('iis7_save_url_rewrite_rules') ) iis7_save_url_rewrite_rules(); }