WordPress.org

Make WordPress Core

Ticket #24205: 24205.diff

File 24205.diff, 3.9 KB (added by swissspidy, 5 years ago)
  • src/wp-admin/includes/plugin.php

    diff --git src/wp-admin/includes/plugin.php src/wp-admin/includes/plugin.php
    index 415ef5b..9f3e7a5 100644
    function _get_dropins() { 
    427427 * Check whether the plugin is active by checking the active_plugins list.
    428428 *
    429429 * @since 2.5.0
     430 * @since 4.5.0 Now also checks for must-use plugins and drop-ins.
    430431 *
    431432 * @param string $plugin Base plugin path from plugins directory.
    432433 * @return bool True, if in the active plugins list. False, not in the list.
    433434 */
    434435function is_plugin_active( $plugin ) {
    435         return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || is_plugin_active_for_network( $plugin );
     436        return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) ||
     437               is_plugin_active_for_network( $plugin ) ||
     438               // Check whether the plugin is a must-use plugin.
     439               in_array( WPMU_PLUGIN_DIR . '/' . $plugin, wp_get_mu_plugins(), true ) ||
     440               // Check whether the plugin is a drop-in plugin.
     441               array_key_exists( $plugin, get_dropins() );
    436442}
    437443
    438444/**
  • tests/phpunit/tests/admin/includesPlugin.php

    diff --git tests/phpunit/tests/admin/includesPlugin.php tests/phpunit/tests/admin/includesPlugin.php
    index b7ed20d..6770fa6 100644
    class Tests_Admin_includesPlugin extends WP_UnitTestCase { 
    8686        }
    8787
    8888        /**
     89         * @ticket 24205
     90         */
     91        function test_is_plugin_active_dropin_true() {
     92                $this->_back_up_drop_ins();
     93
     94                $p1 = $this->_create_plugin( "<?php\n//Test", 'db.php', WP_CONTENT_DIR );
     95
     96                $test = is_plugin_active( 'db.php', true );
     97                $this->assertTrue( $test );
     98
     99                // Clean up.
     100                unlink( $p1[1] );
     101                $this->_restore_drop_ins();
     102        }
     103
     104        /**
     105         * @ticket 24205
     106         */
     107        function test_is_plugin_inactive_dropin_false() {
     108                $this->_back_up_drop_ins();
     109
     110                $p1 = $this->_create_plugin( "<?php\n//Test", 'db.php', WP_CONTENT_DIR );
     111
     112                $test = is_plugin_inactive( 'db.php', true );
     113                $this->assertFalse( $test );
     114
     115                // Clean up.
     116                unlink( $p1[1] );
     117                $this->_restore_drop_ins();
     118        }
     119
     120        /**
     121         * @ticket 24205
     122         */
     123        function test_is_plugin_active_mustuse_true() {
     124                if ( is_dir( WPMU_PLUGIN_DIR ) ) {
     125                        $exists = true;
     126                        $this->_back_up_mu_plugins();
     127                } else {
     128                        $exists = false;
     129                        mkdir( WPMU_PLUGIN_DIR );
     130                }
     131
     132                $p1 = $this->_create_plugin( "<?php\n//Test", 'foobar.php', WPMU_PLUGIN_DIR );
     133
     134                $test = is_plugin_active( 'foobar.php', true );
     135                $this->assertTrue( $test );
     136
     137                // Clean up.
     138                unlink( $p1[1] );
     139                if ( $exists ) {
     140                        $this->_restore_mu_plugins();
     141                } else {
     142                        rmdir( WPMU_PLUGIN_DIR );
     143                }
     144        }
     145
     146        /**
     147         * @ticket 24205
     148         */
     149        function test_is_plugin_inactive_mustuse_false() {
     150                if ( is_dir( WPMU_PLUGIN_DIR ) ) {
     151                        $exists = true;
     152                        $this->_back_up_mu_plugins();
     153                } else {
     154                        $exists = false;
     155                        mkdir( WPMU_PLUGIN_DIR );
     156                }
     157                $p1 = $this->_create_plugin( "<?php\n//Test", 'foobar.php', WPMU_PLUGIN_DIR );
     158
     159                $test = is_plugin_active( 'foobar.php', true );
     160                $this->assertTrue( $test );
     161
     162                // Clean up.
     163                unlink( $p1[1] );
     164                if ( $exists ) {
     165                        $this->_restore_mu_plugins();
     166                } else {
     167                        rmdir( WPMU_PLUGIN_DIR );
     168                }
     169        }
     170
     171        /**
     172         * @ticket 24205
     173         */
     174        function test_is_plugin_active_mustuse_subfolder_false() {
     175                if ( is_dir( WPMU_PLUGIN_DIR ) ) {
     176                        $exists = true;
     177                        $this->_back_up_mu_plugins();
     178                } else {
     179                        $exists = false;
     180                        mkdir( WPMU_PLUGIN_DIR );
     181                }
     182
     183                mkdir( WPMU_PLUGIN_DIR . '/foo' );
     184
     185                $p1 = $this->_create_plugin( "<?php\n//Test", 'bar.php', WPMU_PLUGIN_DIR . '/foo' );
     186
     187                $test = is_plugin_active( 'foo/bar.php', true );
     188                $this->assertFalse( $test );
     189
     190                // Clean up.
     191                unlink( $p1[1] );
     192                rmdir( WPMU_PLUGIN_DIR . '/foo' );
     193                if ( $exists ) {
     194                        $this->_restore_mu_plugins();
     195                } else {
     196                        rmdir( WPMU_PLUGIN_DIR );
     197                }
     198        }
     199
     200        /**
    89201         * @covers ::get_plugin_files
    90202         */
    91203        public function test_get_plugin_files_single() {