Skip to content

Commit 710675d

Browse files
committed
Upgrade/Install: Move Hello Dolly plugin to directory structure.
Changes the Hello Dolly plugin from a single file structure to a proper plugin directory structure, moving from `hello.php` to `hello-dolly/hello.php` to align with Plugin Handbook Best Practices. - Adds proper `Text Domain: hello-dolly` header to Hello Dolly plugin - Updates core files to remove special case handling for `hello.php` - Updates plugin dependency system to handle new directory structure - Adds upgrade routine to migrate active plugin references and keep plugin active - Updates all tests to use new plugin path format `hello-dolly/hello.php` - Updates build configuration and .gitignore for new directory structure - Adds `hello.php` to old files list for cleanup during core updates - Adds `plugins/hello-dolly/` to new bundled directories list Props afragen, SergeyBiryukov, peterwilsoncc, SirLouen, matt, davidbaumwald, desrosj, hellofromtonya, justinahinon,audrasjb, oglekler, whyisjake. Fixes #53323. git-svn-id: https://develop.svn.wordpress.org/trunk@60666 602fd350-edb4-49c9-b593-d223f7449a82
1 parent 2abe245 commit 710675d

File tree

13 files changed

+58
-42
lines changed

13 files changed

+58
-42
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ wp-tests-config.php
5050
/src/wp-content/fonts
5151
/src/wp-content/languages
5252
/src/wp-content/mu-plugins
53-
/src/wp-content/plugins
53+
/src/wp-content/plugins/*
54+
!/src/wp-content/plugins/hello-dolly
5455
/src/wp-content/themes/*
5556
!/src/wp-content/themes/twentyten
5657
!/src/wp-content/themes/twentyeleven

Gruntfile.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ module.exports = function(grunt) {
2828
'wp-content/themes/index.php',
2929
'wp-content/themes/twenty*/**',
3030
'wp-content/plugins/index.php',
31-
'wp-content/plugins/hello.php',
31+
'wp-content/plugins/hello-dolly/**',
3232
'wp-content/plugins/akismet/**',
3333
'!wp-content/themes/twenty*/node_modules/**',
3434
],

src/wp-admin/includes/plugin.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,6 @@ function _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup
153153
load_plugin_textdomain( $textdomain, false, dirname( $plugin_file ) );
154154
}
155155
}
156-
} elseif ( 'hello.php' === basename( $plugin_file ) ) {
157-
$textdomain = 'default';
158156
}
159157
if ( $textdomain ) {
160158
foreach ( array( 'Name', 'PluginURI', 'Description', 'Author', 'AuthorURI', 'Version' ) as $field ) {
@@ -1008,10 +1006,6 @@ function delete_plugins( $plugins, $deprecated = '' ) {
10081006

10091007
$plugin_slug = dirname( $plugin_file );
10101008

1011-
if ( 'hello.php' === $plugin_file ) {
1012-
$plugin_slug = 'hello-dolly';
1013-
}
1014-
10151009
// Remove language files, silently.
10161010
if ( '.' !== $plugin_slug && ! empty( $plugin_translations[ $plugin_slug ] ) ) {
10171011
$translations = $plugin_translations[ $plugin_slug ];

src/wp-admin/includes/update-core.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -841,6 +841,8 @@
841841
'wp-includes/js/dist/undo-manager.min.js',
842842
'wp-includes/js/dist/fields.min.js',
843843
'wp-includes/js/dist/fields.js',
844+
// 6.9
845+
'wp-content/plugins/hello.php',
844846
);
845847

846848
/**
@@ -973,6 +975,7 @@
973975
'themes/twentytwentythree/' => '6.1',
974976
'themes/twentytwentyfour/' => '6.4',
975977
'themes/twentytwentyfive/' => '6.7',
978+
'plugins/hello-dolly/' => '6.9',
976979
);
977980

978981
/**

src/wp-admin/includes/upgrade.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,6 +880,7 @@ function upgrade_all() {
880880

881881
if ( $wp_current_db_version < 58975 ) {
882882
upgrade_670();
883+
upgrade_690();
883884
}
884885

885886
if ( $wp_current_db_version < 60421 ) {
@@ -2414,6 +2415,29 @@ function upgrade_650() {
24142415
wp_set_option_autoload_values( $autoload );
24152416
}
24162417
}
2418+
2419+
/**
2420+
* Executes changes made in WordPress 6.9.0.
2421+
*
2422+
* @ignore
2423+
* @since 6.9.0
2424+
*
2425+
* @global int $wp_current_db_version The old (current) database version.
2426+
*/
2427+
function upgrade_690() {
2428+
global $wp_current_db_version;
2429+
2430+
// Switch Hello Dolly from file to directory format. See #53323
2431+
$active_plugins = get_option( 'active_plugins' );
2432+
$old_plugin = 'hello.php';
2433+
$new_plugin = 'hello-dolly/hello.php';
2434+
$key = array_search( $old_plugin, $active_plugins, true );
2435+
2436+
if ( $key ) {
2437+
$active_plugins[ $key ] = $new_plugin;
2438+
update_option( 'active_plugins', $active_plugins );
2439+
}
2440+
}
24172441
/**
24182442
* Executes changes made in WordPress 6.7.0.
24192443
*

src/wp-content/plugins/hello.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
Author: Matt Mullenweg
1111
Version: 1.7.2
1212
Author URI: http://ma.tt/
13+
Text Domain: hello-dolly
1314
*/
1415

1516
// Do not load directly.

src/wp-includes/class-wp-plugin-dependencies.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -870,9 +870,6 @@ protected static function check_for_circular_dependencies( $dependents, $depende
870870
* @return string The plugin's slug.
871871
*/
872872
protected static function convert_to_slug( $plugin_file ) {
873-
if ( 'hello.php' === $plugin_file ) {
874-
return 'hello-dolly';
875-
}
876873
return str_contains( $plugin_file, '/' ) ? dirname( $plugin_file ) : str_replace( '.php', '', $plugin_file );
877874
}
878875
}

tests/phpunit/tests/admin/includesPlugin.php

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public static function wpTearDownAfterClass() {
2222
}
2323

2424
public function test_get_plugin_data() {
25-
$data = get_plugin_data( DIR_TESTDATA . '/plugins/hello.php' );
25+
$data = get_plugin_data( DIR_TESTDATA . '/plugins/hello-dolly/hello.php' );
2626

2727
$default_headers = array(
2828
'Name' => 'Hello Dolly',
@@ -374,38 +374,38 @@ public function test_passing_float_as_position_does_not_override_int() {
374374
}
375375

376376
public function test_is_plugin_active_true() {
377-
activate_plugin( 'hello.php' );
378-
$test = is_plugin_active( 'hello.php' );
377+
activate_plugin( 'hello-dolly/hello.php' );
378+
$test = is_plugin_active( 'hello-dolly/hello.php' );
379379
$this->assertTrue( $test );
380380

381-
deactivate_plugins( 'hello.php' );
381+
deactivate_plugins( 'hello-dolly/hello.php' );
382382
}
383383

384384
public function test_is_plugin_active_false() {
385-
deactivate_plugins( 'hello.php' );
386-
$test = is_plugin_active( 'hello.php' );
385+
deactivate_plugins( 'hello-dolly/hello.php' );
386+
$test = is_plugin_active( 'hello-dolly/hello.php' );
387387
$this->assertFalse( $test );
388388
}
389389

390390
public function test_is_plugin_inactive_true() {
391-
deactivate_plugins( 'hello.php' );
392-
$test = is_plugin_inactive( 'hello.php' );
391+
deactivate_plugins( 'hello-dolly/hello.php' );
392+
$test = is_plugin_inactive( 'hello-dolly/hello.php' );
393393
$this->assertTrue( $test );
394394
}
395395

396396
public function test_is_plugin_inactive_false() {
397-
activate_plugin( 'hello.php' );
398-
$test = is_plugin_inactive( 'hello.php' );
397+
activate_plugin( 'hello-dolly/hello.php' );
398+
$test = is_plugin_inactive( 'hello-dolly/hello.php' );
399399
$this->assertFalse( $test );
400400

401-
deactivate_plugins( 'hello.php' );
401+
deactivate_plugins( 'hello-dolly/hello.php' );
402402
}
403403

404404
/**
405405
* @covers ::get_plugin_files
406406
*/
407407
public function test_get_plugin_files_single() {
408-
$name = 'hello.php';
408+
$name = 'hello-dolly/hello.php';
409409
$this->assertSame( array( $name ), get_plugin_files( $name ) );
410410
}
411411

@@ -550,7 +550,7 @@ public function test_get_dropins_not_empty() {
550550
* @covers ::is_network_only_plugin
551551
*/
552552
public function test_is_network_only_plugin_hello() {
553-
$this->assertFalse( is_network_only_plugin( 'hello.php' ) );
553+
$this->assertFalse( is_network_only_plugin( 'hello-dolly/hello.php' ) );
554554
}
555555

556556
/**
@@ -570,7 +570,7 @@ public function test_is_network_only_plugin() {
570570
* @covers ::activate_plugins
571571
*/
572572
public function test_activate_plugins_single_no_array() {
573-
$name = 'hello.php';
573+
$name = 'hello-dolly/hello.php';
574574
activate_plugins( $name );
575575
$this->assertTrue( is_plugin_active( $name ) );
576576
deactivate_plugins( $name );
@@ -580,7 +580,7 @@ public function test_activate_plugins_single_no_array() {
580580
* @covers ::activate_plugins
581581
*/
582582
public function test_activate_plugins_single_array() {
583-
$name = 'hello.php';
583+
$name = 'hello-dolly/hello.php';
584584
activate_plugins( array( $name ) );
585585
$this->assertTrue( is_plugin_active( $name ) );
586586
deactivate_plugins( $name );

tests/phpunit/tests/admin/plugin-dependencies/hasDependents.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,6 @@ public function test_should_return_false_when_a_plugin_has_no_dependents() {
5353
*/
5454
public function test_should_convert_hellophp_to_hello_dolly() {
5555
$this->set_property_value( 'dependency_slugs', array( 'hello-dolly' ) );
56-
$this->assertTrue( self::$instance::has_dependents( 'hello.php' ) );
56+
$this->assertTrue( self::$instance::has_dependents( 'hello-dolly/hello.php' ) );
5757
}
5858
}

tests/phpunit/tests/admin/plugin-dependencies/initialize.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -281,11 +281,7 @@ public function test_should_slugify_dependent_files() {
281281
$expected_slugs = array();
282282
foreach ( $plugins as $plugin_file => &$headers ) {
283283
// Create the expected slugs.
284-
if ( 'hello.php' === $plugin_file ) {
285-
$slug = 'hello-dolly';
286-
} else {
287-
$slug = str_replace( '.php', '', explode( '/', $plugin_file )[0] );
288-
}
284+
$slug = str_replace( '.php', '', explode( '/', $plugin_file )[0] );
289285

290286
$expected_slugs[ $plugin_file ] = $slug;
291287

0 commit comments

Comments
 (0)