X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/11be8dc178e77d0b46189bbd8e33a216a9b90942..refs/tags/wordpress-2.8-scripts:/wp-includes/rewrite.php diff --git a/wp-includes/rewrite.php b/wp-includes/rewrite.php index 116c7f93..c84b5205 100644 --- a/wp-includes/rewrite.php +++ b/wp-includes/rewrite.php @@ -178,6 +178,9 @@ define('EP_ALL', 8191); * The endpoints are added to the end of the request. So a request matching * "/2008/10/14/my_post/myep/", the endpoint will be "/myep/". * + * Be sure to flush the rewrite rules (wp_rewrite->flush()) when your plugin gets + * activated (register_activation_hook()) and deactivated (register_deactivation_hook()) + * * @since 2.1.0 * @see WP_Rewrite::add_endpoint() Parameters and more description. * @uses $wp_rewrite @@ -1344,6 +1347,12 @@ class WP_Rewrite { $commentmatch = $match . $commentregex; $commentquery = $index . '?' . $query . '&cpage=' . $this->preg_index($num_toks + 1); + if ( get_option('page_on_front') ) { + //create query for Root /comment-page-xx + $rootcommentmatch = $match . $commentregex; + $rootcommentquery = $index . '?' . $query . '&page_id=' . get_option('page_on_front') . '&cpage=' . $this->preg_index($num_toks + 1); + } + //create query for /feed/(feed|atom|rss|rss2|rdf) $feedmatch = $match . $feedregex; $feedquery = $feedindex . '?' . $query . '&feed=' . $this->preg_index($num_toks + 1); @@ -1368,6 +1377,8 @@ class WP_Rewrite { //only on pages with comments add ../comment-page-xx/ if ( EP_PAGES & $ep_mask || EP_PERMALINK & $ep_mask || EP_NONE & $ep_mask ) $rewrite = array_merge($rewrite, array($commentmatch => $commentquery)); + else if ( EP_ROOT & $ep_mask && get_option('page_on_front') ) + $rewrite = array_merge($rewrite, array($rootcommentmatch => $rootcommentquery)); //do endpoints if ($endpoints) { @@ -1596,11 +1607,11 @@ class WP_Rewrite { * @return array Rewrite rules. */ function wp_rewrite_rules() { - $this->rules = get_option('rewrite_rules'); + $this->rules = get_transient('rewrite_rules'); if ( empty($this->rules) ) { $this->matches = 'matches'; $this->rewrite_rules(); - update_option('rewrite_rules', $this->rules); + set_transient('rewrite_rules', $this->rules); } return $this->rules; @@ -1693,6 +1704,36 @@ class WP_Rewrite { return $rules; } + /** + * Retrieve IIS7 URL Rewrite formatted rewrite rules to write to web.config file. + * + * Does not actually write to the web.config file, but creates the rules for + * the process that will. + * + * @since 2.8.0 + * @access public + * + * @return string + */ + function iis7_url_rewrite_rules(){ + + if ( ! $this->using_permalinks()) { + return ''; + } + $rules = "\n"; + $rules .= " \n"; + $rules .= " \n"; + $rules .= " \n"; + $rules .= " \n"; + $rules .= " \n"; + $rules .= " \n"; + $rules .= ""; + + $rules = apply_filters('iis7_url_rewrite_rules', $rules); + + return $rules; + } + /** * Add a straight rewrite rule. * @@ -1783,17 +1824,19 @@ class WP_Rewrite { * @access public */ function flush_rules() { - delete_option('rewrite_rules'); + delete_transient('rewrite_rules'); $this->wp_rewrite_rules(); if ( function_exists('save_mod_rewrite_rules') ) save_mod_rewrite_rules(); + if ( function_exists('iis7_save_url_rewrite_rules') ) + iis7_save_url_rewrite_rules(); } /** * Sets up the object's properties. * - * The 'use_verbose_page_rules' object property will be turned on, if the - * permalink structure includes the following: '%postname%', '%category%', + * The 'use_verbose_page_rules' object property will be set to true if the + * permalink structure begins with one of the following: '%postname%', '%category%', * '%tag%', or '%author%'. * * @since 1.5.0 @@ -1819,13 +1862,7 @@ class WP_Rewrite { $this->use_trailing_slashes = ( substr($this->permalink_structure, -1, 1) == '/' ) ? true : false; // Enable generic rules for pages if permalink structure doesn't begin with a wildcard. - $structure = ltrim($this->permalink_structure, '/'); - if ( $this->using_index_permalinks() ) - $structure = ltrim($this->permalink_structure, $this->index . '/'); - if ( 0 === strpos($structure, '%postname%') || - 0 === strpos($structure, '%category%') || - 0 === strpos($structure, '%tag%') || - 0 === strpos($structure, '%author%') ) + if ( preg_match("/^[^%]*%(?:postname|category|tag|author)%/", $this->permalink_structure) ) $this->use_verbose_page_rules = true; else $this->use_verbose_page_rules = false; @@ -1838,6 +1875,9 @@ class WP_Rewrite { * between the current permalink structure and the parameter value. Calls * {@link WP_Rewrite::init()} after the option is updated. * + * Fires the 'permalink_structure_changed' action once the init call has + * processed passing the old and new values + * * @since 1.5.0 * @access public * @@ -1847,6 +1887,7 @@ class WP_Rewrite { if ($permalink_structure != $this->permalink_structure) { update_option('permalink_structure', $permalink_structure); $this->init(); + do_action('permalink_structure_changed', $this->permalink_structure, $permalink_structure); } }