Commit Graph

611 Commits

Author SHA1 Message Date
Boone Gorges
63eb910445 Respect $_wp_suspend_cache_invalidation in clean_term_cache().
Props tollmanz, rmccue.
Fixes #28743.
Built from https://develop.svn.wordpress.org/trunk@32498


git-svn-id: http://core.svn.wordpress.org/trunk@32468 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-12 20:14:26 +00:00
Drew Jaynes
674e47cc89 Fix a wide variety of syntactical, spacing, wording, and other issues in wp-includes/taxonomy.php.
See #32246.

Built from https://develop.svn.wordpress.org/trunk@32453


git-svn-id: http://core.svn.wordpress.org/trunk@32423 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-07 20:37:41 +00:00
Drew Jaynes
3050d96310 Ensure the optional parameter in get_object_taxonomies() is documented as such.
See #32246.

Built from https://develop.svn.wordpress.org/trunk@32452


git-svn-id: http://core.svn.wordpress.org/trunk@32422 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-07 20:37:17 +00:00
Drew Jaynes
b801f6f230 Add a description to the hook documentation for the created_$taxonomy action to clarify the dynamic portion of the hook name.
See #32246.

Built from https://develop.svn.wordpress.org/trunk@32451


git-svn-id: http://core.svn.wordpress.org/trunk@32421 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-07 20:36:53 +00:00
Drew Jaynes
948186df0b Add missing parameter descriptions to the created_term hook documentation.
Props dlh.
Fixes #32276.

Built from https://develop.svn.wordpress.org/trunk@32450


git-svn-id: http://core.svn.wordpress.org/trunk@32420 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-07 20:36:29 +00:00
Boone Gorges
5c65164ea8 Improve sanitization of 'name' param in get_terms().
Values of 'name' that contain db-encoded character on insert - like an
ampersand, which is HTML-encoded in the database - will only match if they go
through the same `sanitize_term_field()` routine.

Fixes #32248.
Built from https://develop.svn.wordpress.org/trunk@32353


git-svn-id: http://core.svn.wordpress.org/trunk@32324 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-05 11:14:28 +00:00
Drew Jaynes
a3b092843b Add a changelog entry for the $resource_type parameter added to the get_ancestors filter in 4.1.1.
Props dimadin.
See #31925.

Built from https://develop.svn.wordpress.org/trunk@32351


git-svn-id: http://core.svn.wordpress.org/trunk@32322 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-05 02:17:25 +00:00
Drew Jaynes
39064bac5e Ensure the optional parameters for get_taxonomies() are documented as such.
See #31800.

Built from https://develop.svn.wordpress.org/trunk@32349


git-svn-id: http://core.svn.wordpress.org/trunk@32320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-05 02:05:24 +00:00
Drew Jaynes
6c9b20f94c Improve inline documentation in wp-includes/taxonomy.php.
* Adds missing `@since` versions
* Adds `@global` tags and descriptions to DocBlocks where appropriate

Props ChaseWiseman.
See #31800.

Built from https://develop.svn.wordpress.org/trunk@32348


git-svn-id: http://core.svn.wordpress.org/trunk@32319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-05 02:01:25 +00:00
Boone Gorges
af6b4cba24 Remove duplicate semicolon introduced in [32326].
Built from https://develop.svn.wordpress.org/trunk@32327


git-svn-id: http://core.svn.wordpress.org/trunk@32298 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-29 12:58:24 +00:00
Boone Gorges
a20841bc36 Improve performance of loop detection in _get_term_children().
Using an array keyed by term_id allows us to use `isset()` rather than the
slower `in_array()`. In addition, it lets us avoid the use of `wp_list_pluck()`
on large arrays, and helps us to avoid arrays that are unnecessarily large due
to duplicate entries.

Fixes #32144 for trunk.
Built from https://develop.svn.wordpress.org/trunk@32326


git-svn-id: http://core.svn.wordpress.org/trunk@32297 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-29 12:56:25 +00:00
Sergey Biryukov
35c0c59123 Add missing word to wp_insert_term() error strings.
props dipesh.kakadiya.
fixes #32031.
Built from https://develop.svn.wordpress.org/trunk@32297


git-svn-id: http://core.svn.wordpress.org/trunk@32268 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-26 11:50:26 +00:00
Sergey Biryukov
55a1de9b4f wp_update_term() should check if get_term() returned null.
props dlh.
fixes #31954.
Built from https://develop.svn.wordpress.org/trunk@32117


git-svn-id: http://core.svn.wordpress.org/trunk@32096 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-13 01:21:27 +00:00
Drew Jaynes
d9bfc88b8d Fix a variety of inline documentation syntactical issues in wp-includes/taxonomy.php.
See #31888.

Built from https://develop.svn.wordpress.org/trunk@32047


git-svn-id: http://core.svn.wordpress.org/trunk@32026 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-05 17:08:26 +00:00
Drew Jaynes
cedee3dd1c Supplement hook documentation for the get_terms_fields filter to more clearly explain the expected consequences of using it to modify the fields to select in a terms query.
Props boonebgorges.
Fixes #31174.

Built from https://develop.svn.wordpress.org/trunk@31855


git-svn-id: http://core.svn.wordpress.org/trunk@31834 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-20 20:11:26 +00:00
Boone Gorges
0b85f2f7b4 Ensure that the $exclusions parameter of 'list_terms_exclusions' filter is always a string.
Props fhwebcs.
Fixes #31681.
Built from https://develop.svn.wordpress.org/trunk@31813


git-svn-id: http://core.svn.wordpress.org/trunk@31795 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-18 18:23:26 +00:00
Boone Gorges
650ca95b95 In wp_insert_term(), allow a term with an existing name if a unique $slug has been provided.
`wp_insert_term()` protects against the creation of terms with duplicate names
at the same level of a taxonomy hierarchy. However, it's historically been
possible to override this protection by explicitly providing a value of `$slug`
that is unique at the hierarchy tier. This ability was broken in [31734], and
the current changeset restores the original behavior.

A number of unit tests are added and refactored in support of these changes.

See #17689 for discussion of a fix that was superceded by [31734]. This commit
retains the fix for the underlying bug described in that ticket.

See #31328.
Built from https://develop.svn.wordpress.org/trunk@31792


git-svn-id: http://core.svn.wordpress.org/trunk@31774 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-16 11:16:28 +00:00
Gary Pendergast
03ade8c011 Add emoji URL support, and Twemoji fallback for displaying slugs in wp-admin, when the browser doesn't natively support emoji.
Props pento, SergeyBiryukov and boonebgorges.

Fixes #31328


Built from https://develop.svn.wordpress.org/trunk@31734


git-svn-id: http://core.svn.wordpress.org/trunk@31715 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-11 22:55:28 +00:00
Drew Jaynes
6486a233c0 Remove a duplicate mention of the default value for the $number argument in get_terms().
Props iandunn.
Fixes #31526.

Built from https://develop.svn.wordpress.org/trunk@31652


git-svn-id: http://core.svn.wordpress.org/trunk@31633 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-07 01:05:26 +00:00
Boone Gorges
3acf36fe48 Ensure that an array of object IDs is passed to the 'get_object_terms' filter.
Originally introduced in [31581].

Props doublesharp.
Fixes #18828.
Built from https://develop.svn.wordpress.org/trunk@31639


git-svn-id: http://core.svn.wordpress.org/trunk@31620 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-06 13:18:26 +00:00
Drew Jaynes
68bbc0e43d Correct the $number argument description in get_terms() to reflect that an empty string or 0 will return all possible results, not -1.
Previously, it was noted that -1 would return all possible results. However, as the value of `$number` is passed through `absint()`, -1 would actually be converted to 1, thereby producing unexpected results.

Props iandunn.
Fixes #31526.

Built from https://develop.svn.wordpress.org/trunk@31638


git-svn-id: http://core.svn.wordpress.org/trunk@31619 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-06 08:05:25 +00:00
Boone Gorges
3db78d6a24 Introduce 'get_object_terms' filter in wp_get_object_terms().
The existing 'wp_get_object_terms' filter accepts a parameter `$taxonomies`,
which is a list of taxonomy names formatted for direct use in a MySQL IN clause.
This formatting makes it difficult to make use of the taxonomy list in filter
callbacks. However, changing the parameters passed to the existing filter
raises backward compatibility concerns, so we introduce a new filter that
receives a structured `$taxonomy_array` parameter.

We also take this opportunity to correct and clean up some of the documentation
on the 'wp_get_object_terms' filter.

Props postpostmodern, doublesharp, wonderboymusic, nacin.
Fixes #18828.
Built from https://develop.svn.wordpress.org/trunk@31581


git-svn-id: http://core.svn.wordpress.org/trunk@31562 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-27 20:31:26 +00:00
Boone Gorges
0d9275930b Add 'orderby=description' support to get_terms().
This fixes an interface inconsistency in edit-tags.php, where Description
appears as a sortable column header.

Props neil_pie.
Fixes #31364.
Built from https://develop.svn.wordpress.org/trunk@31532


git-svn-id: http://core.svn.wordpress.org/trunk@31513 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-24 16:37:26 +00:00
Boone Gorges
e89d237b86 Pass taxonomy name, not object, to 'edit_term_taxonomy' and 'edited_term_taxonomy' actions.
These actions are fired in a number of different places, and in some cases
the tax name is passed, while in others the taxonomy object is passed. This
inconsistency made it difficult for plugins to use the `$taxonomy` value.

Props ipm-frommen.
Fixes #30999.
Built from https://develop.svn.wordpress.org/trunk@31525


git-svn-id: http://core.svn.wordpress.org/trunk@31506 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-23 21:08:26 +00:00
John Blackbourn
948f657ea3 Return a WP_Error if an empty name is provided when registering a taxonomy.
Fixes #31135
Props tyxla, MikeHansenMe

Built from https://develop.svn.wordpress.org/trunk@31449


git-svn-id: http://core.svn.wordpress.org/trunk@31430 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-13 16:27:26 +00:00
Boone Gorges
44ac816aed Split shared taxonomy terms on term update.
When updating an existing taxonomy term that shares its `term_id` with
another term, we generate a new row in `wp_terms` and associate the updated
term_taxonomy_id with the new term. This separates the terms, such that
updating the name of one term does not change the name of any others.

In cases where a plugin or theme stores term IDs in the database, term splitting
can cause backward compatibility issues. The current changeset introduces
two utilities to aid developers with the transition. The `'split_shared_term'`
action fires when the split takes place, and should be used to catch changes in
term_id. In cases where `'split_shared_term'` cannot be used, the
`wp_get_split_term()` function gives developers access to data about terms
that have previously been split. Documentation for these functions, with
examples, can be found in the Plugin Developer Handbook. WordPress itself
stores term IDs in this way in two places; `_wp_check_split_default_terms()`
and `_wp_check_split_terms_in_menus()` are hooked to `'split_shared_term'` to
perform the necessary cleanup.

See [30241] for a previous attempt at the split. It was reverted in [30585]
for 4.1.0.

Props boonebgorges, mboynes.
See #5809.
Built from https://develop.svn.wordpress.org/trunk@31418


git-svn-id: http://core.svn.wordpress.org/trunk@31399 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-11 19:42:25 +00:00
Boone Gorges
669fa39005 Late escaping in get_terms() and WP_Tax_Query.
Props vortfu, dd32.
Built from https://develop.svn.wordpress.org/trunk@31367


git-svn-id: http://core.svn.wordpress.org/trunk@31348 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-08 01:59:24 +00:00
Sergey Biryukov
09c1d34b96 Remove unnecessary array_shift() usage in get_terms() for better performance.
props bswatson, VolodymyrC.
fixes #31182.
Built from https://develop.svn.wordpress.org/trunk@31365


git-svn-id: http://core.svn.wordpress.org/trunk@31346 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-07 19:45:25 +00:00
Boone Gorges
7560f446f9 Use field-specific sanitization in WP_Tax_Query::transform_query().
When terms are entered into the database, term fields are sanitized with
`sanitize_term_field()`. To ensure that the `SELECT ... WHERE` queries in
`WP_Tax_Query::transform_query()` are not broken by overzealous sanitization,
`sanitize_term_field()` should be used in that case as well. This fixes a bug
where a tax_query using 'field=name' would fail if the 'terms' parameter
contained characters (like spaces) that were improperly removed by
`sanitize_title_for_query()`.

Fixes #27810.
Built from https://develop.svn.wordpress.org/trunk@31346


git-svn-id: http://core.svn.wordpress.org/trunk@31327 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-06 02:02:23 +00:00
Boone Gorges
abce542e5f Introduce 'show_in_quick_edit' parameter for register_taxonomy().
Setting 'show_in_quick_edit' to false when registering a custom taxonomy will
hide the taxonomy when editing posts using Quick Edit.

The new 'quick_edit_show_taxonomy' filter allows this behavior to be filtered
on a finer scale, as when you want a given taxonomy to be hidden for one post
type but not for others.

Props hlashbrooke.
Fixes #26948.
Built from https://develop.svn.wordpress.org/trunk@31307


git-svn-id: http://core.svn.wordpress.org/trunk@31288 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-30 19:18:23 +00:00
Boone Gorges
dcca015ffc Don't use term IDs for array indexes when caching object terms.
Uncached results pulled from `wp_get_object_terms()` are zero-indexed (ie 0,
1, 2...). As a result, `get_the_terms()` was returning a strictly different
array when pulling from the cache and when the cache was empty.

Props joshlevinson.
Fixes #31086.
Built from https://develop.svn.wordpress.org/trunk@31287


git-svn-id: http://core.svn.wordpress.org/trunk@31268 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-28 20:43:23 +00:00
Boone Gorges
e199d2420f Ensure that 'hierarchical' is respected in get_terms() when multiple taxonomies are passed.
Previously, attempts to descend the family tree of each term were done using
the first taxonomy in the `$taxonomies` array, with the result that terms not
belonging to that taxonomy were not found and their children not properly
parsed. We fix this bug by fetching each term's taxonomy with the SQL query,
and then using that taxonomy to get the correct children for each term.

Fixes #31118.
Built from https://develop.svn.wordpress.org/trunk@31285


git-svn-id: http://core.svn.wordpress.org/trunk@31266 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-26 19:04:21 +00:00
Boone Gorges
af6e0f5c55 Ensure that 'pad_counts' is not discarded when the first of multiple taxonomies passed to get_terms() is non-hierarchical.
See #31118.
Built from https://develop.svn.wordpress.org/trunk@31284


git-svn-id: http://core.svn.wordpress.org/trunk@31265 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-26 18:09:22 +00:00
Boone Gorges
acef0e2dcc In get_terms(), check hierarchy for all $taxonomies before bailing early from 'parent' or 'child_of'.
There is a pre-check in `get_terms()` that prevents an unnecessary database
query if the 'parent' or 'child_of' parameter is not found in the cached term
hierarchy (since a term without an index in the hierarchy cache has no
descendants). Previously, only the first item in the `$taxonomies` array was
being checked, with the result that an empty array was being erroneously
returned in cases where the 'parent' or 'child_of' term is in a subsequent
taxonomy.

See #31118.
Built from https://develop.svn.wordpress.org/trunk@31276


git-svn-id: http://core.svn.wordpress.org/trunk@31257 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-25 02:46:25 +00:00
Boone Gorges
43fceb39c0 Introduce 'childless' parameter to get_terms().
This new parameter allows developers to limit queried terms to terminal nodes -
ie, those without any descendants.

As part of the improvement, some internal logic in `get_terms()` has been
consolidated. Parameters that resolve to a NOT IN clause containing term IDs
('exclude', 'exclude_tree', and 'childless') are now parsed into a single
"exclusions" array before the SQL clause is generated.

Props theMikeD, horike.
Fixes #29839.
Built from https://develop.svn.wordpress.org/trunk@31275


git-svn-id: http://core.svn.wordpress.org/trunk@31256 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-24 18:48:23 +00:00
Boone Gorges
d45a650846 Introduce 'parent' parameter to wp_get_object_terms().
Props mikeschinkel.
Fixes #15675.
Built from https://develop.svn.wordpress.org/trunk@31270


git-svn-id: http://core.svn.wordpress.org/trunk@31251 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-23 14:57:22 +00:00
Boone Gorges
61f5f38dcd Better loop detection for _pad_term_counts().
The `$ancestors` check must be reset for each term in order for term counts
to be correct.

Fixes #20635.
Built from https://develop.svn.wordpress.org/trunk@31248


git-svn-id: http://core.svn.wordpress.org/trunk@31229 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-19 16:52:22 +00:00
Drew Jaynes
bee439858b Minor fix for inline doc syntax in a changelog entry for wp_get_object_terms().
See #28688.

Built from https://develop.svn.wordpress.org/trunk@31238


git-svn-id: http://core.svn.wordpress.org/trunk@31219 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-18 19:05:22 +00:00
Boone Gorges
a639c5905e Add @since annotation for 'orderby' values introduced in [31236].
See #28688.
Built from https://develop.svn.wordpress.org/trunk@31237


git-svn-id: http://core.svn.wordpress.org/trunk@31218 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-18 19:03:24 +00:00
Boone Gorges
42ec13030c Additional 'orderby' values for wp_get_object_terms().
Adds support for ordering by 'taxonomy', 'term_taxonomy_id', and 'parent'.

Props ChriCo.
Fixes #28688.
Built from https://develop.svn.wordpress.org/trunk@31236


git-svn-id: http://core.svn.wordpress.org/trunk@31217 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-18 18:57:23 +00:00
Boone Gorges
a245838c42 Correct wp_get_object_terms() documentation.
The 'orderby' parameter accepts a number of values that have never been
properly documented.
Built from https://develop.svn.wordpress.org/trunk@31232


git-svn-id: http://core.svn.wordpress.org/trunk@31213 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-17 20:39:23 +00:00
Boone Gorges
03512a2a02 Standardize the docblock for wp_get_object_terms().
The enumeration of the `$args` parameter has been moved from the long
description to an array hash associated with the proper `@param` attribute.
Built from https://develop.svn.wordpress.org/trunk@31231


git-svn-id: http://core.svn.wordpress.org/trunk@31212 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-17 20:09:47 +00:00
Scott Taylor
5458a4da21 wp_set_object_terms() takes $taxonomy as a string. Update @param.
See #30799.

Built from https://develop.svn.wordpress.org/trunk@31221


git-svn-id: http://core.svn.wordpress.org/trunk@31202 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-16 23:27:25 +00:00
Scott Taylor
eeda68bbda Fix some erroneous @param annotations.
See #30799.

Built from https://develop.svn.wordpress.org/trunk@31219


git-svn-id: http://core.svn.wordpress.org/trunk@31200 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-16 22:44:25 +00:00
Boone Gorges
35f3f7bf63 Bail out of hierarchy loops in _get_term_children().
This prevents infinite loops that lead to PHP nesting limit fatal errors.

Props boonebgorges, sgrant.
Fixes #24461.
Built from https://develop.svn.wordpress.org/trunk@31207


git-svn-id: http://core.svn.wordpress.org/trunk@31188 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-16 17:10:22 +00:00
Boone Gorges
991bfdebc1 Bail out of hierarchy loops in _pad_term_counts().
Taxonomy hierarchy loops should not occur naturally, but when they do, the
logic of `_pad_term_counts()` could result in infinite loops, leading to
timeouts. We avoid this by breaking when a loop is detected.

Fixes #20635.
Built from https://develop.svn.wordpress.org/trunk@31206


git-svn-id: http://core.svn.wordpress.org/trunk@31187 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-16 16:46:23 +00:00
Scott Taylor
fc843ce4d0 There are some random add_action() and add_filter() calls littered around some files in wp-includes/. These should be moved to wp-includes/default-filters.php with the rest of the registered hooks. It seems like this was the best practice for awhile and then we randomly stopped. This file loads way before any of the includes, so the hooks will be registered for any request that loads WordPress, even SHORTINIT - a lot of the hooks registered won't run anyways (that's already the case).
See #30947.

Built from https://develop.svn.wordpress.org/trunk@31168


git-svn-id: http://core.svn.wordpress.org/trunk@31149 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-12 16:40:23 +00:00
Scott Taylor
bc4cd01190 In wp-includes/taxonomy.php:
The keyword `elseif` should be used instead of `else if` so that all control keywords look like single words.

See #30799.

Built from https://develop.svn.wordpress.org/trunk@31087


git-svn-id: http://core.svn.wordpress.org/trunk@31068 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-08 06:26:23 +00:00
Scott Taylor
190165cb32 Use the 'not_found' label when there are no items for a taxonomy in the terms list table.
Props SergeyBiryukov.
Fixes #30586.

Built from https://develop.svn.wordpress.org/trunk@31035


git-svn-id: http://core.svn.wordpress.org/trunk@31016 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-03 06:20:21 +00:00
Boone Gorges
1b63ada83d Introduce 'name' parameter for get_terms().
This enhancement requires a modification in the way that `wp_dropdown_categories()`
prepares its arguments for `get_terms()`, so that its unrelated 'name' param is
not mistaken for the new 'name' argument in `get_terms()`.

Props danielbachhuber.
Fixes #30611.
Built from https://develop.svn.wordpress.org/trunk@31024


git-svn-id: http://core.svn.wordpress.org/trunk@31005 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-02 21:34:23 +00:00