Eliminate use of `extract()` in `wp_insert_category()`. Adds unit tests. All unit tests pass.

Props MikeHansenMe.
See #22400.

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


git-svn-id: http://core.svn.wordpress.org/trunk@28202 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Scott Taylor 2014-05-13 03:27:13 +00:00
parent 8af6a4230e
commit 6bbc5b570c
1 changed files with 32 additions and 32 deletions

View File

@ -89,53 +89,53 @@ function wp_create_categories($categories, $post_id = '') {
* @param bool $wp_error Optional, since 2.5.0. Set this to true if the caller handles WP_Error return values. * @param bool $wp_error Optional, since 2.5.0. Set this to true if the caller handles WP_Error return values.
* @return int|object The ID number of the new or updated Category on success. Zero or a WP_Error on failure, depending on param $wp_error. * @return int|object The ID number of the new or updated Category on success. Zero or a WP_Error on failure, depending on param $wp_error.
*/ */
function wp_insert_category($catarr, $wp_error = false) { function wp_insert_category( $catarr, $wp_error = false ) {
$cat_defaults = array('cat_ID' => 0, 'taxonomy' => 'category', 'cat_name' => '', 'category_description' => '', 'category_nicename' => '', 'category_parent' => ''); $cat_defaults = array( 'cat_ID' => 0, 'taxonomy' => 'category', 'cat_name' => '', 'category_description' => '', 'category_nicename' => '', 'category_parent' => '' );
$catarr = wp_parse_args($catarr, $cat_defaults); $catarr = wp_parse_args( $catarr, $cat_defaults );
extract($catarr, EXTR_SKIP);
if ( trim( $cat_name ) == '' ) { if ( trim( $catarr['cat_name'] ) == '' ) {
if ( ! $wp_error ) if ( ! $wp_error ) {
return 0; return 0;
else } else {
return new WP_Error( 'cat_name', __('You did not enter a category name.') ); return new WP_Error( 'cat_name', __( 'You did not enter a category name.' ) );
}
} }
$cat_ID = (int) $cat_ID; $catarr['cat_ID'] = (int) $catarr['cat_ID'];
// Are we updating or creating? // Are we updating or creating?
if ( !empty ($cat_ID) ) $update = ! empty ( $catarr['cat_ID'] );
$update = true;
else
$update = false;
$name = $cat_name; $name = $catarr['cat_name'];
$description = $category_description; $description = $catarr['category_description'];
$slug = $category_nicename; $slug = $catarr['category_nicename'];
$parent = $category_parent; $parent = (int) $catarr['category_parent'];
if ( $parent < 0 ) {
$parent = (int) $parent;
if ( $parent < 0 )
$parent = 0; $parent = 0;
}
if ( empty( $parent ) || ! term_exists( $parent, $taxonomy ) || ( $cat_ID && term_is_ancestor_of( $cat_ID, $parent, $taxonomy ) ) ) if ( empty( $parent )
|| ! term_exists( $parent, $catarr['taxonomy'] )
|| ( $catarr['cat_ID'] && term_is_ancestor_of( $catarr['cat_ID'], $parent, $catarr['taxonomy'] ) ) ) {
$parent = 0; $parent = 0;
}
$args = compact('name', 'slug', 'parent', 'description'); $args = compact('name', 'slug', 'parent', 'description');
if ( $update ) if ( $update ) {
$cat_ID = wp_update_term($cat_ID, $taxonomy, $args); $catarr['cat_ID'] = wp_update_term( $catarr['cat_ID'], $catarr['taxonomy'], $args );
else } else {
$cat_ID = wp_insert_term($cat_name, $taxonomy, $args); $catarr['cat_ID'] = wp_insert_term( $catarr['cat_name'], $catarr['taxonomy'], $args );
if ( is_wp_error($cat_ID) ) {
if ( $wp_error )
return $cat_ID;
else
return 0;
} }
return $cat_ID['term_id']; if ( is_wp_error( $catarr['cat_ID'] ) ) {
if ( $wp_error ) {
return $catarr['cat_ID'];
} else {
return 0;
}
}
return $catarr['cat_ID']['term_id'];
} }
/** /**