WordPress.org

Make WordPress Core

Ticket #28517: 28517.2.with-tests.patch

File 28517.2.with-tests.patch, 3.5 KB (added by numis, 6 years ago)

Second version of patch; includes tests and documentation modifications

  • src/wp-includes/rewrite.php

     
    20412041         * @since 2.0.1
    20422042         * @access public
    20432043         * @param bool $hard Whether to update .htaccess (hard flush) or just update rewrite_rules option (soft flush). Default is true (hard).
     2044         * @return bool True on a hard flush attempt. False on a soft flush attempt.
    20442045         */
    20452046        public function flush_rules($hard = true) {
    2046                 delete_option('rewrite_rules');
     2047                delete_option( 'rewrite_rules' );
    20472048                $this->wp_rewrite_rules();
    20482049                /**
    20492050                 * Filter whether a "hard" rewrite rule flush should be performed when requested.
     
    20522053                 *
    20532054                 * @since 3.7.0
    20542055                 *
    2055                  * @param bool $hard Whether to flush rewrite rules "hard". Default true.
     2056                 * @param bool $hard Whether to flush rewrite rules "hard".
     2057                 *                   Default value is contextual and is defined when flush_rules() is called.
    20562058                 */
    2057                 if ( ! $hard || ! apply_filters( 'flush_rewrite_rules_hard', true ) ) {
    2058                         return;
     2059                if ( ! apply_filters( 'flush_rewrite_rules_hard', $hard ) ) {
     2060                        return false;
    20592061                }
    2060                 if ( function_exists( 'save_mod_rewrite_rules' ) )
     2062                if ( function_exists( 'save_mod_rewrite_rules' ) ) {
    20612063                        save_mod_rewrite_rules();
    2062                 if ( function_exists( 'iis7_save_url_rewrite_rules' ) )
     2064                }
     2065                if ( function_exists( 'iis7_save_url_rewrite_rules' ) ) {
    20632066                        iis7_save_url_rewrite_rules();
     2067                }
     2068                return true;
    20642069        }
    20652070
    20662071        /**
  • tests/phpunit/tests/rewrite.php

     
    117117
    118118                restore_current_blog();
    119119        }
     120
     121        /**
     122         * @ticket 28517
     123         */
     124        function test_flush_rules_hard_true_no_filters() {
     125                // hard true - no filters
     126                $actual = $GLOBALS['wp_rewrite']->flush_rules( true );
     127                $this->assertTrue( $actual );
     128        }
     129
     130        /**
     131         * @ticket 28517
     132         */
     133        function test_flush_rules_hard_false_no_filters() {
     134                // hard false - no filters
     135                $actual = $GLOBALS['wp_rewrite']->flush_rules( false );
     136                $this->assertFalse( $actual );
     137        }
     138
     139        /**
     140         * @ticket 28517
     141         */
     142        function test_flush_rules_hard_true_with_filters_true() {
     143                // adding a filter that returns true
     144                add_filter( 'flush_rewrite_rules_hard', function() { return true; } );
     145
     146                // hard true - filter true
     147                $actual = $GLOBALS['wp_rewrite']->flush_rules( true );
     148                $this->assertTrue( $actual );
     149        }
     150
     151        /**
     152         * @ticket 28517
     153         */
     154        function test_flush_rules_hard_true_with_filters_false() {
     155                // adding a filter that returns true
     156                add_filter( 'flush_rewrite_rules_hard', function() { return false; } );
     157
     158                // hard true - filter true
     159                $actual = $GLOBALS['wp_rewrite']->flush_rules( true );
     160                $this->assertFalse( $actual );
     161        }
     162
     163        /**
     164         * @ticket 28517
     165         */
     166        function test_flush_rules_hard_false_with_filters_true() {
     167                // adding a filter that returns true
     168                add_filter( 'flush_rewrite_rules_hard', function() { return true; } );
     169
     170                // hard false - filter true
     171                $actual = $GLOBALS['wp_rewrite']->flush_rules( false );
     172                $this->assertTrue( $actual );
     173        }
     174
     175        /**
     176         * @ticket 28517
     177         */
     178        function test_flush_rules_hard_false_with_filters_false() {
     179                // adding a filter that returns true
     180                add_filter( 'flush_rewrite_rules_hard', function() { return false; } );
     181
     182                // hard false - filter false
     183                $actual = $GLOBALS['wp_rewrite']->flush_rules( false );
     184                $this->assertFalse( $actual );
     185        }
    120186}
     187 No newline at end of file