4991 Commits

Author SHA1 Message Date
John Blackbourn
01c9ea7540 Query: Be better at forcing data types for query vars.
Several query vars only accept a scalar value and pass the value through functions that assume a scalar value. Adding extra guard conditions to the types of query vars doesn't affect their functionality but does remove PHP notices and warnings that can otherwise be generated when a non-scalar value such as an array is present in a query var.

Props juliobox, xknown, SergeyBiryukov, dave1010, nacin, tellyworth, dd32, audrasjb, johnregan3

Fixes #17737


git-svn-id: https://develop.svn.wordpress.org/trunk@53891 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-13 22:29:19 +00:00
Sergey Biryukov
d1e22dbad8 Tests: Bring some consistency to serialization tests.
There were two sets of tests for `is_serialized()`:
* One in the `functions.php` file, based on the same file name in core.
* One in a separate class in the `functions` directory.

To avoid confusion and make it easier to decide where new tests should go in the future, the existing tests are now combined in the latter location.

Includes:
* Moving `is_serialized()` and `maybe_serialize()` tests into their own classes.
* Using named data providers to make test output more descriptive.
* Combining test cases and removing duplicates.

Follow-up to [278/tests], [279/tests], [328/tests], [32631], [45754], [47452], [49382], [53886], [53889].

See #55652.

git-svn-id: https://develop.svn.wordpress.org/trunk@53890 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-13 12:09:41 +00:00
Sergey Biryukov
c45ea397da Tests: Use named data provider for is_serialized_string() tests.
This makes the output when using the `--testdox` option more descriptive and is helpful when trying to debug which data set from a data provider failed the test.

Follow-up to [37357], [44478].

See #55652.

git-svn-id: https://develop.svn.wordpress.org/trunk@53889 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-12 13:22:25 +00:00
Jb Audras
38037ebb2c Formatting: Add support for Enums in is_serialized().
This changeset adds support for Enums in `is_serialized()`. It also adds new unit tests for this function.

Props ayeshrajans, konradyoast, peterwilsoncc, costdev, dennisatyoast, mukesh27.
Fixes #53299.


git-svn-id: https://develop.svn.wordpress.org/trunk@53886 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-12 09:24:23 +00:00
Sergey Biryukov
299c8485c0 Login and Registration: Introduce is_login_screen() function.
This should help determine whether the current request is for the login screen.

While it does not save a lot of lines of code, including this function in core aims to save developers some time that would otherwise be spent investigating the most reliable way to solve this problem.

Implementation details:
* By checking `wp_login_url()`, the function accounts for custom login locations set via the `login_url` filter.
* By checking `$_SERVER['SCRIPT_NAME']` directly, instead of `did_action( 'login_form_login' )` or `$pagenow` global, the function can work as early as possible, for example in a must-use plugin.

Follow-up to [2481], [6412], [12393], [12732], [15558], [15481], [15746].

Props dcowgill, scribu, donmhico, iandunn, wonderboymusic, nacin, robmiller, kitchin, chriscct7, tazotodua, davidbaumwald, SergeyBiryukov.
Fixes #19898.

git-svn-id: https://develop.svn.wordpress.org/trunk@53884 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-11 21:49:08 +00:00
John Blackbourn
40c19e45bf Posts, Post Types: Prevent categories from being overwritten when updating a post using wp_insert_post().
This prevents existing category relationships being overridden with the default category when none is provided in the post data.

Props markoheijnen, leewillis77, desrosj

Fixes #19954


git-svn-id: https://develop.svn.wordpress.org/trunk@53883 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-11 19:58:21 +00:00
John Blackbourn
7bb8dc6269 Application Passwords: Allow a Super Admin to set an application password on a site they're not a member of.
This removes the requirement that a Super Admin must be a member of the current site when they attempt to set an application password within the admin area of an individual site on the network.

Props TimothyBlynJacobs, ilovecats7, johnbillion, georgestephanis, johnjamesjacoby

Fixes #53224


git-svn-id: https://develop.svn.wordpress.org/trunk@53882 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-11 18:22:59 +00:00
Pascal Birchler
9c8b1ba9ab I18N: Introduce WP_Textdomain_Registry to store text domains and their language directory paths.
Previously, when using `switch_to_locale()` all current loaded text domains were unloaded and added to the `$l10n_unloaded` global. This prevented the just-in-time loading for text domains after a switch. The just-in-time loading was also only possible if the translations were stored in `WP_LANG_DIR`. Both issues have been fixed.

* Adds `WP_Textdomain_Registry` to keep track of the language directory paths for all plugins and themes.
* Updates all `load_*_textdomain()`  functions to store the path in `WP_Textdomain_Registry`.
* Adds `$locale` parameter to `load_textdomain()` to specify the locale the translation file is for.
* Adds `$reloadable` parameter to `unload_textdomain()` to define whether a text domain can be loaded just-in-time again. This is used by `WP_Locale_Switcher::load_translations()`.
* Extends `_load_textdomain_just_in_time()` to also support text domains of plugins and themes with custom language directories.
* Fixes the incorrect `test_plugin_translation_after_switching_locale_twice()` test which should have caught this issue earlier.
* Adds a new test plugin and theme to test the loading of translations with a custom language directory.
* Deprecates the now unused and private `_get_path_to_translation()` and `_get_path_to_translation_from_lang_dir()` functions.

Previously added in [49236] and reverted in [49236] to investigate concerns which are now addressed here.

Props yoavf, swissspidy, dd32, ocean90.
See #26511.
Fixes #39210.

git-svn-id: https://develop.svn.wordpress.org/trunk@53874 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-11 12:37:05 +00:00
Jb Audras
60493f3968 Taxonomy: Prevent non string taxonomy names generating warnings or errors.
This changeset adds an `is_string( $taxonomy )` check to the condition in `taxonomy_exists()`, to ensure `false` is returned when the `$taxonomy` is not a string.

Follow-up to [35718].

Props costdev, peterwilsoncc, mukesh27.
Fixes #56338.
See #56336.


git-svn-id: https://develop.svn.wordpress.org/trunk@53869 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-09 10:21:32 +00:00
Peter Wilson
11cc06cd22 Administration: Improve performance of List Tables.
Improve the performance of `WP_List_Table::get_column_info()` by adding the primary column to the cached header values. This reduces the number of calls to the `WP_List_Table::get_primary_column_name()` method to once per table in line with the other header getter functions.

Props bobbingwide, chaion07, costdev, mikeschroder, mukesh27, peterwilsoncc, shetheliving, spacedmonkey.
Fixes #34564.



git-svn-id: https://develop.svn.wordpress.org/trunk@53868 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-09 00:31:09 +00:00
Andrew Ozz
fdcb89a307 Build/Test Tools: Update @covers tags for the load tests.
Props pbearne, jrf, hellofromTonya, patopaiar, ironprogrammer, antonvlasenko, SergeyBiryukov, costdev.
See #39265.

git-svn-id: https://develop.svn.wordpress.org/trunk@53867 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-08 23:42:16 +00:00
Andrew Ozz
f44105103d Build/Test Tools: Add @covers tags to the l10n and i18n tests.
Props pbearne, jrf, hellofromTonya, patopaiar, ironprogrammer, antonvlasenko, SergeyBiryukov, costdev.
See #39265.

git-svn-id: https://develop.svn.wordpress.org/trunk@53866 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-08 23:39:06 +00:00
Andrew Ozz
87fc70103d Build/Test Tools: Add @covers tags to the options tests.
Props pbearne, jrf, hellofromTonya, patopaiar, ironprogrammer, antonvlasenko, SergeyBiryukov, costdev.
See #39265.

git-svn-id: https://develop.svn.wordpress.org/trunk@53865 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-08 23:33:11 +00:00
Andrew Ozz
a3a926097a Build/Test Tools: Add @covers tags to the import tests.
Props pbearne, jrf, hellofromTonya, patopaiar, ironprogrammer, antonvlasenko, SergeyBiryukov, costdev.
See #39265.

git-svn-id: https://develop.svn.wordpress.org/trunk@53864 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-08 23:22:43 +00:00
Andrew Ozz
57b08d1998 Build/Test Tools: Add @covers tags to the comments tests.
Props pbearne, jrf, hellofromTonya, patopaiar, ironprogrammer, antonvlasenko, SergeyBiryukov, costdev.
See #39265.

git-svn-id: https://develop.svn.wordpress.org/trunk@53863 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-08 23:12:30 +00:00
Sergey Biryukov
e14d94858f Tests: Improve the test for not throwing a warning on malformed date queries.
* Make it specifically about `wp_resolve_numeric_slug_conflicts()`, the function that was throwing an `Undefined array key "year"` PHP warning for malformed date requests.
* Move the test under the `rewrite` component and make its name a bit more descriptive.
* Check the return result of the function instead of performing a dummy assertion.
* Use named array keys in the data provider for clarity.
* Add missing `@covers` tag.

Follow-up to [32648], [53857].

Props costdev, peterwilsoncc, 1naveengiri, mukesh27, SergeyBiryukov.
See #52252, #45513.

git-svn-id: https://develop.svn.wordpress.org/trunk@53861 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-08 14:38:08 +00:00
Jb Audras
0e9917f561 Editor: Safeguard has_blocks() against fatal errors.
This changeset ensures `has_blocks()` doesn't return a fatal error when `$post` is not a valid post. If the post can't be retrieved, the function now returns `false`.

Props Howdy_McGee, costdev, colonelphantom, audrasjb, dlh, peterwilsoncc.
Fixes #55705.


git-svn-id: https://develop.svn.wordpress.org/trunk@53858 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-08 08:20:43 +00:00
Peter Wilson
3e866f8b8f Rewrite rules: Prevent malformed date requests throwing notices.
Ensure that date queries contain each component before attempting to use them. This prevents http requests triggering notices if a portion of the date is missing. For example a request containing a day and year but no month, a request containing a month bu not year.

Props ovidiul, dd32, peterwilsoncc, costdev, johnbillion, SergeyBiryukov, desrosj, tremidkhar, hellofromTonya.
Fixes #52252.



git-svn-id: https://develop.svn.wordpress.org/trunk@53857 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-07 23:03:57 +00:00
Sergey Biryukov
fbfba47f1a Code Modernization: Let MockClass extend stdClass.
This allows for arbitrary properties to be declared on it.

Alternatively, the `MockClass` could be deprecated altogether in favor of directly using `stdClass` where needed.

Follow-up to [53/tests], [65/tests], [53557], [53558], [53850], [53851], [53852], [53853], [53854].

Props jrf.
See #56033.

git-svn-id: https://develop.svn.wordpress.org/trunk@53856 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-07 16:53:30 +00:00
Sergey Biryukov
025193bd20 Code Modernization: Remove unused $undefined property in Tests_WP_Customize_Manager.
This appears to be a copy/paste from the `Tests_WP_Customize_Setting` class, and is not actually used in `WP_Customize_Manager` tests.

Follow-up to [31329], [32658], [53851].

Props jrf.
See #56033.

git-svn-id: https://develop.svn.wordpress.org/trunk@53855 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-07 16:36:42 +00:00
Sergey Biryukov
101e686f7a Code Modernization: Remove dynamic properties in Tests_File.
Dynamic (non-explicitly declared) properties are deprecated as of PHP 8.2 and are expected to become a fatal error in PHP 9.0.

In this case, as the `$badchars` property never changes, declaring this as a class constant is the sensible option.

As for the `$dir` property (which cannot be turned into a constant due to the function call), this is used in multiple tests, so making this property explicit makes sense.

Follow-up to [139/tests], [53557], [53558], [53850], [53851], [53852], [53853].

Props jrf.
See #56033.

git-svn-id: https://develop.svn.wordpress.org/trunk@53854 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-07 14:48:42 +00:00
Sergey Biryukov
278081ed1d Code Modernization: Remove dynamic properties in Tests_Post_Revisions.
Dynamic (non-explicitly declared) properties are deprecated as of PHP 8.2 and are expected to become a fatal error in PHP 9.0.

In this particular case, the test class contains a `set_up()` method that sets the `$post_type` property, which is ''used'' by the tests, but never ''changed'' by the tests.

In other words, setting this property in the `set_up()` is an unnecessary overhead and the property should be changed to a class constant.

Follow-up to [1212/tests], [52389], [53557], [53558], [53850], [53851], [53852].

Props jrf.
See #56033.

git-svn-id: https://develop.svn.wordpress.org/trunk@53853 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-07 14:41:04 +00:00
Sergey Biryukov
9d2f309e63 Code Modernization: Remove dynamic properties in Tests_Media_GetPostGalleries.
Dynamic (non-explicitly declared) properties are deprecated as of PHP 8.2 and are expected to become a fatal error in PHP 9.0.

In this particular case, the test class contains a `set_up()` method that sets the `$img_meta` property, which is ''used'' by the tests, but never ''changed'' by the tests.

In other words, setting this property in the `set_up()` is an unnecessary overhead and the property should be changed to a class constant.

Includes renaming the test class to match the [https://make.wordpress.org/core/handbook/testing/automated-testing/writing-phpunit-tests/#naming-and-organization naming conventions].

Follow-up to [52190], [53557], [53558], [53850], [53851].

Props jrf.
See #56033.

git-svn-id: https://develop.svn.wordpress.org/trunk@53852 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-07 14:32:55 +00:00
Sergey Biryukov
8b98406a17 Code Modernization: Remove unused dynamic property in Tests_WP_Customize_*.
The dynamically created `$undefined` property appears to be a copy/paste from the `Tests_WP_Customize_Setting` class, and is not actually used in other test classes:

* `Tests_WP_Customize_Manager`
* `Tests_WP_Customize_Panel`
* `Tests_WP_Customize_Section`

Follow-up to [31329], [32658].

Props jrf.
See #56033.

git-svn-id: https://develop.svn.wordpress.org/trunk@53851 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-07 14:20:02 +00:00
Sergey Biryukov
350d5e4590 Code Modernization: Remove dynamic properties in Tests_POMO_PO.
In this particular case, the test class contains a `set_up()` method which sets properties only used by select tests, while the fixture method is being run for all tests.

There were a few ways this could be fixed:
* As the values do not change across tests, use `set_up_before_class()` to set (static) properties instead.
* For those values which are set up without a function call or variable interpolation, set the values in class constants.
* Or set these values as local variables for those tests which actually use them.

The implemented solution is a combination of options 2 and 3.

Follow-up to [1106/tests], [53557], [53558].

Props jrf.
See #56033.

git-svn-id: https://develop.svn.wordpress.org/trunk@53850 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-07 13:56:35 +00:00
Sergey Biryukov
d6b46b9b99 Tests: Rename the test class for wp_preload_resources() tests.
This matches the name of the function being tested.

Follow-up to [53846].

See #42438.

git-svn-id: https://develop.svn.wordpress.org/trunk@53849 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-06 00:03:01 +00:00
Adam Silverstein
beabd7a8fb Script loader: enable resource preloading with rel='preload'.
Add a `wp_preload_resources` filter that developers can use to add resource preloading.

Preloading helps the browser discover and prioritize important resources earlier during the page load. This ensures that they are available earlier and are less likely to block the page's render.

Props nico23, swissspidy, igrigorik, westonruter, azaozz, furi3r, aristath, spacedmonkey, peterwilsoncc, mihai2u, gziolo. 
Fixes #42438.



git-svn-id: https://develop.svn.wordpress.org/trunk@53846 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-05 18:24:42 +00:00
Sergey Biryukov
81805856e2 Revisions: Use latest_id as the array key for the latest revision ID.
This updates `wp_get_latest_revision_id_and_total_count()` and its usage to be a bit more descriptive and a bit less repetitive, e.g. `$revisions['latest_id']` instead of `$revision['revision']`.

Includes updating the `@return` tag to explain when the function returns a `WP_Error`.

Follow-up to [53759], [53769], [53778], [53779].

See #55857.

git-svn-id: https://develop.svn.wordpress.org/trunk@53841 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-05 13:00:57 +00:00
Peter Wilson
b96a51c529 Sitemaps: Prevent invalid provider names throwing errors.
Validate the requested sitemap is a string before attempting to use it in a provider. This prevents `WP_Sitemaps_Registry::get_provider()` from triggering a fatal error in more recent versions of PHP.

The errors can be triggered by items outside the site owner or developers control (such as a user visiting `?sitemap[foo]=bar`) so the code fails silently to avoid filling error logs with unfixable errors.

Props costdev, dd32.
Fixes #56336.


git-svn-id: https://develop.svn.wordpress.org/trunk@53838 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-05 05:47:56 +00:00
Sergey Biryukov
02c5d3a964 Tests: Combine test classes for get_edit_term_link() tests.
There were two sets of tests for the function:
* One in the `link` directory, based on the `link-template.php` file name.
* One in the `term` directory, based on the component name.

To avoid confusion and make it easier to decide where new tests should go in the future, the existing tests are now combined in the former location.

Includes:
* Setting the current user in `::set_up()` instead of each individual test method.
* Changing the custom taxonomy name to `wptests_tax` for consistency with other tests.
* Moving `::register_custom_taxonomy()` and `::get_term()` helpers to the beginning of the class.

Follow-up to [32954], [36646], [52180], [52255], [53833].

See #55652.

git-svn-id: https://develop.svn.wordpress.org/trunk@53836 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 18:28:33 +00:00
Sergey Biryukov
2c305659d3 Tests: Use named data provider for WP_Object_Cache::is_valid_key() test.
This makes the output when using the `--testdox` option more descriptive and is helpful when trying to debug which data set from a data provider failed the test.

Follow-up to [53818], [53821], [53822], [53834].

See #56198.

git-svn-id: https://develop.svn.wordpress.org/trunk@53835 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 17:47:41 +00:00
Sergey Biryukov
74c8b7f2de Tests: Add more test cases for WP_Object_Cache::is_valid_key().
A valid cache key for `wp_cache_*()` functions must be either an integer number or a non-empty string. To avoid potential compatibility issues or key collisions, a string that becomes empty after `trim()` should not be considered a valid cache key.

Follow-up to [53818], [53821], [53822].

Props tillkruess.
See #56198.

git-svn-id: https://develop.svn.wordpress.org/trunk@53834 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 17:31:45 +00:00
Sergey Biryukov
d1b3e1cfd4 Tests: Correct data providers for get_term_link() and get_edit_term_link() tests.
* The tests use named data providers which include a flag for passing either a term ID or term object to the test, but the values for the flag were the opposite of what the array key says.
* Some array keys were duplicated, which means the earlier test case with the same name did not actually run.

Follow-up to [52180], [52255], [52258], [52305].

See #55652.

git-svn-id: https://develop.svn.wordpress.org/trunk@53833 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 17:18:36 +00:00
Sergey Biryukov
13e076e6a4 Coding Standards: Reorder global cache groups alphabetically for some consistency.
Follow-up to [53823], [53824].

See #55647.

git-svn-id: https://develop.svn.wordpress.org/trunk@53832 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 16:27:02 +00:00
Sergey Biryukov
87fc33105c Docs: Remove obsolete comment in object cache tests.
The comment mentioned creating two cache objects with a shared cache directory, which was no longer the case.

Follow-up to [5/tests] [170/tests].

See #55646, #55652.

git-svn-id: https://develop.svn.wordpress.org/trunk@53831 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 15:49:23 +00:00
Sergey Biryukov
15b2748615 Tests: Move wp_cache_replace() test to a more appropriate place.
This matches the location of other `wp_cache_*()` tests following the respective `WP_Object_Cache` method tests.

Follow-up to [1275/tests].

See #55652.

git-svn-id: https://develop.svn.wordpress.org/trunk@53830 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 15:42:57 +00:00
Sergey Biryukov
54106e0359 Tests: Remove the list of non-persistent groups in Memcached implementation used in the test suite.
This list was not up to date, and does not appear to be required, as `WP_UnitTestCase_Base::flush_cache()` adds the correct list of groups, which is up to date.

Follow-up to [1332/tests], [8068], [37613], [40561], [52976], [53826], [53828].

See #55652.

git-svn-id: https://develop.svn.wordpress.org/trunk@53829 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 15:37:15 +00:00
Sergey Biryukov
0a35283aa3 Tests: Make the comment cache group persistent in WP_UnitTestCase_Base::flush_cache().
This brings the list of persistent groups when running the test suite in line with core.

Follow-up to [1332/tests], [37613], [52976].

See #55652.

git-svn-id: https://develop.svn.wordpress.org/trunk@53828 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 15:16:32 +00:00
Sergey Biryukov
bd6f081030 Tests: Remove the list of global groups in Memcached implementation used in the test suite.
This list was not up to date, and does not appear to be required, as `WP_UnitTestCase_Base::flush_cache()` adds the correct list of groups, which is up to date.

Follow-up to [1332/tests], [40343], [40561], [53823], [53824].

See #55652.

git-svn-id: https://develop.svn.wordpress.org/trunk@53826 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 14:46:11 +00:00
Sergey Biryukov
2fc936733e Tests: Simplify the list of global groups in object cache tests.
This list was not up to date due to missing `blog_meta` group, and does not appear to be required for the tests to pass, as `WP_UnitTestCase_Base::flush_cache()` adds the same list of groups, which is up to date.

Follow-up to [946/tests], [1332/tests], [40343], [42836], [53823].

See #55647.

git-svn-id: https://develop.svn.wordpress.org/trunk@53824 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 14:02:36 +00:00
Sergey Biryukov
183bfc8b25 Coding Standards: Wrap long lines with global cache groups for better readability.
Follow-up to [946/tests], [1060/tests], [https://mu.trac.wordpress.org/changeset/1784 mu1784], [https://mu.trac.wordpress.org/changeset/2032 mu2032] [https://mu.trac.wordpress.org/changeset/2029 mu2029], [7986], [12128], [12603], [12688], [12732], [12755], [13125], [14009], [15482], [21403], [22092], [31347], [31348], [36258], [36393], [36413], [37918], [40343], [40347], [42836].

See #55647.

git-svn-id: https://develop.svn.wordpress.org/trunk@53823 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 13:31:19 +00:00
Sergey Biryukov
dc0672616c Tests: Add a test case with a float value for WP_Object_Cache::is_valid_key().
A valid cache key for `wp_cache_*()` functions must be either an integer number or a non-empty string. To avoid potential compatibility issues or key collisions, float values should not be considered a valid cache key.

Follow-up to [53818], [53821].

Props tillkruess, malthert, spacedmonkey.
See #56198.

git-svn-id: https://develop.svn.wordpress.org/trunk@53822 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 12:35:28 +00:00
Sergey Biryukov
a164d64275 Tests: Add a unit test for WP_Object_Cache::is_valid_key().
A valid cache key for `wp_cache_*()` functions must be either an integer number or a non-empty string.

Follow-up to [53818].

See #56198.

git-svn-id: https://develop.svn.wordpress.org/trunk@53821 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-04 12:09:03 +00:00
Sergey Biryukov
ad93e6387c Cache API: Validate cache key in WP_Object_Cache methods.
Some plugins may call the `wp_cache_*()` functions with an empty string, `false`, or `null` as cache key, usually as a result of not checking the return value of another function that's used as the key.

Previously, this was silently failing, leading to odd behavior at best and often breakage due to key collisions.

A valid cache key must be either an integer number or a non-empty string.

This commit introduces a quick type check on the given cache keys and adds a `_doing_it_wrong()` message that should help plugin developers to notice these issues quicker.

Includes:
* A check in `update_user_caches()` and `clean_user_cache()` to make sure user email is not empty before being cached or removed from cache, as it is technically possible to create a user with empty email via `wp_insert_user()`.
* Some minor cleanup in unit tests where the email was passed to `wp_insert_user()` incorrectly or was unintentionally reset.

Props tillkruess, malthert, dd32, spacedmonkey, flixos90, peterwilsoncc, SergeyBiryukov.
Fixes #56198.

git-svn-id: https://develop.svn.wordpress.org/trunk@53818 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-03 14:34:58 +00:00
Jb Audras
66dba67484 Administration: Change default site tagline to an empty string.
This changeset replaces the default "Just another WordPress site" tagline with an empty string for new installations. The reasoning is:

1. Not all themes display the tagline;
2. Not everyone changes the default tagline;
3. When people don't see the tagline in their theme, they may not realize it is still visible in some places, like feeds.

The string "Just another WordPress site" and the related multisite string: "Just another {NETWORK} site" are now only used as a placeholder for the tagline admin option.

Props markjaquith, Denis-de-Bernardy, westi, RyanMurphy, kovshenin, SergeyBiryukov, chriscct7, tyxla, hyperbrand, karmatosed, lukecavanagh, melchoyce, boemedia, khag7, sabernhardt, audrasjb, peterwilsoncc, costdev, martinkrcho, rafiahmedd.
Fixes #6479.


git-svn-id: https://develop.svn.wordpress.org/trunk@53815 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-03 12:18:22 +00:00
Jb Audras
5dff1e8503 Posts, Post Types: Force unique slugs for draft posts.
This fixes a behavior where a draft created with the same slug as an existing post would set the existing post to a 404.

`wp_unique_post_slug()` returns the same slug for 'draft' or 'pending' posts, so to ensure that a unique slug is generated, this changeset adds the post data with the 'publish' status to `wp_unique_post_slug()`.

Props Toro_Unit, h2ham, peterwilsoncc, costdev, antonvlasenko, azaozz, ironprogrammer, audrasjb, hellofromTonya.
Fixes #52422.


git-svn-id: https://develop.svn.wordpress.org/trunk@53813 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-03 09:01:05 +00:00
Peter Wilson
d91b7744f1 Date/Time: Increase test coverage of wp_date().
Props costdev, pbearne, rarst.
Fixes #53485.
See #55652.



git-svn-id: https://develop.svn.wordpress.org/trunk@53810 602fd350-edb4-49c9-b593-d223f7449a82
2022-08-01 22:48:42 +00:00
Sergey Biryukov
299ac4dbb9 Tests: Move the test for action callback representations to the general action tests file.
A separate file in the `actions` directory may have seemed like a good location at the time, but this is the only test left there. For consistency, it is now moved with the other action tests.

Follow-up to [1294/tests], [53806].

See #55652.

git-svn-id: https://develop.svn.wordpress.org/trunk@53808 602fd350-edb4-49c9-b593-d223f7449a82
2022-07-31 21:35:40 +00:00
Sergey Biryukov
5849d4fafd Tests: Update a transients test to account for terminology changes in MockAction.
Follow-up to [33110], [53805].

See #55652.

git-svn-id: https://develop.svn.wordpress.org/trunk@53807 602fd350-edb4-49c9-b593-d223f7449a82
2022-07-31 16:49:34 +00:00
Sergey Biryukov
cd7a7924cb Tests: Move the test for actions using closures to the general action tests file.
This was previously moved to a separate file to be excluded when running the tests on PHP 5.2.x.

Now that WordPress supports PHP 5.6.x or later, this can be moved back with the other action tests.

Follow-up to [299/tests], [301/tests], [862/tests], [866/tests], [963/tests].

See #55652.

git-svn-id: https://develop.svn.wordpress.org/trunk@53806 602fd350-edb4-49c9-b593-d223f7449a82
2022-07-31 16:41:53 +00:00