web/wp-admin/includes/taxonomy.php
branchwordpress
changeset 109 03b0d1493584
child 132 4d4862461b8d
equal deleted inserted replaced
-1:000000000000 109:03b0d1493584
       
     1 <?php
       
     2 /**
       
     3  * WordPress Taxonomy Administration API.
       
     4  *
       
     5  * @package WordPress
       
     6  * @subpackage Administration
       
     7  */
       
     8 
       
     9 //
       
    10 // Category
       
    11 //
       
    12 
       
    13 /**
       
    14  * {@internal Missing Short Description}}
       
    15  *
       
    16  * @since unknown
       
    17  *
       
    18  * @param unknown_type $cat_name
       
    19  * @return unknown
       
    20  */
       
    21 function category_exists($cat_name, $parent = 0) {
       
    22 	$id = is_term($cat_name, 'category', $parent);
       
    23 	if ( is_array($id) )
       
    24 		$id = $id['term_id'];
       
    25 	return $id;
       
    26 }
       
    27 
       
    28 /**
       
    29  * {@internal Missing Short Description}}
       
    30  *
       
    31  * @since unknown
       
    32  *
       
    33  * @param unknown_type $id
       
    34  * @return unknown
       
    35  */
       
    36 function get_category_to_edit( $id ) {
       
    37 	$category = get_category( $id, OBJECT, 'edit' );
       
    38 	return $category;
       
    39 }
       
    40 
       
    41 /**
       
    42  * {@internal Missing Short Description}}
       
    43  *
       
    44  * @since unknown
       
    45  *
       
    46  * @param unknown_type $cat_name
       
    47  * @param unknown_type $parent
       
    48  * @return unknown
       
    49  */
       
    50 function wp_create_category( $cat_name, $parent = 0 ) {
       
    51 	if ( $id = category_exists($cat_name) )
       
    52 		return $id;
       
    53 
       
    54 	return wp_insert_category( array('cat_name' => $cat_name, 'category_parent' => $parent) );
       
    55 }
       
    56 
       
    57 /**
       
    58  * {@internal Missing Short Description}}
       
    59  *
       
    60  * @since unknown
       
    61  *
       
    62  * @param unknown_type $categories
       
    63  * @param unknown_type $post_id
       
    64  * @return unknown
       
    65  */
       
    66 function wp_create_categories($categories, $post_id = '') {
       
    67 	$cat_ids = array ();
       
    68 	foreach ($categories as $category) {
       
    69 		if ($id = category_exists($category))
       
    70 			$cat_ids[] = $id;
       
    71 		else
       
    72 			if ($id = wp_create_category($category))
       
    73 				$cat_ids[] = $id;
       
    74 	}
       
    75 
       
    76 	if ($post_id)
       
    77 		wp_set_post_categories($post_id, $cat_ids);
       
    78 
       
    79 	return $cat_ids;
       
    80 }
       
    81 
       
    82 /**
       
    83  * {@internal Missing Short Description}}
       
    84  *
       
    85  * @since unknown
       
    86  *
       
    87  * @param unknown_type $cat_ID
       
    88  * @return unknown
       
    89  */
       
    90 function wp_delete_category($cat_ID) {
       
    91 	$cat_ID = (int) $cat_ID;
       
    92 	$default = get_option('default_category');
       
    93 
       
    94 	// Don't delete the default cat
       
    95 	if ( $cat_ID == $default )
       
    96 		return 0;
       
    97 
       
    98 	return wp_delete_term($cat_ID, 'category', array('default' => $default));
       
    99 }
       
   100 
       
   101 /**
       
   102  * {@internal Missing Short Description}}
       
   103  *
       
   104  * @since unknown
       
   105  *
       
   106  * @param unknown_type $catarr
       
   107  * @param unknown_type $wp_error
       
   108  * @return unknown
       
   109  */
       
   110 function wp_insert_category($catarr, $wp_error = false) {
       
   111 	$cat_defaults = array('cat_ID' => 0, 'cat_name' => '', 'category_description' => '', 'category_nicename' => '', 'category_parent' => '');
       
   112 	$catarr = wp_parse_args($catarr, $cat_defaults);
       
   113 	extract($catarr, EXTR_SKIP);
       
   114 
       
   115 	if ( trim( $cat_name ) == '' ) {
       
   116 		if ( ! $wp_error )
       
   117 			return 0;
       
   118 		else
       
   119 			return new WP_Error( 'cat_name', __('You did not enter a category name.') );
       
   120 	}
       
   121 
       
   122 	$cat_ID = (int) $cat_ID;
       
   123 
       
   124 	// Are we updating or creating?
       
   125 	if ( !empty ($cat_ID) )
       
   126 		$update = true;
       
   127 	else
       
   128 		$update = false;
       
   129 
       
   130 	$name = $cat_name;
       
   131 	$description = $category_description;
       
   132 	$slug = $category_nicename;
       
   133 	$parent = $category_parent;
       
   134 
       
   135 	$parent = (int) $parent;
       
   136 	if ( $parent < 0 )
       
   137 		$parent = 0;
       
   138 
       
   139 	if ( empty($parent) || !category_exists( $parent ) || ($cat_ID && cat_is_ancestor_of($cat_ID, $parent) ) )
       
   140 		$parent = 0;
       
   141 
       
   142 	$args = compact('name', 'slug', 'parent', 'description');
       
   143 
       
   144 	if ( $update )
       
   145 		$cat_ID = wp_update_term($cat_ID, 'category', $args);
       
   146 	else
       
   147 		$cat_ID = wp_insert_term($cat_name, 'category', $args);
       
   148 
       
   149 	if ( is_wp_error($cat_ID) ) {
       
   150 		if ( $wp_error )
       
   151 			return $cat_ID;
       
   152 		else
       
   153 			return 0;
       
   154 	}
       
   155 
       
   156 	return $cat_ID['term_id'];
       
   157 }
       
   158 
       
   159 /**
       
   160  * {@internal Missing Short Description}}
       
   161  *
       
   162  * @since unknown
       
   163  *
       
   164  * @param unknown_type $catarr
       
   165  * @return unknown
       
   166  */
       
   167 function wp_update_category($catarr) {
       
   168 	$cat_ID = (int) $catarr['cat_ID'];
       
   169 
       
   170 	if ( isset($catarr['category_parent']) && ($cat_ID == $catarr['category_parent']) )
       
   171 		return false;
       
   172 
       
   173 	// First, get all of the original fields
       
   174 	$category = get_category($cat_ID, ARRAY_A);
       
   175 
       
   176 	// Escape data pulled from DB.
       
   177 	$category = add_magic_quotes($category);
       
   178 
       
   179 	// Merge old and new fields with new fields overwriting old ones.
       
   180 	$catarr = array_merge($category, $catarr);
       
   181 
       
   182 	return wp_insert_category($catarr);
       
   183 }
       
   184 
       
   185 //
       
   186 // Tags
       
   187 //
       
   188 
       
   189 /**
       
   190  * {@internal Missing Short Description}}
       
   191  *
       
   192  * @since unknown
       
   193  *
       
   194  * @param unknown_type $post_id
       
   195  * @return unknown
       
   196  */
       
   197 function get_tags_to_edit( $post_id, $taxonomy = 'post_tag' ) {
       
   198 	return get_terms_to_edit( $post_id, $taxonomy);
       
   199 }
       
   200 
       
   201 /**
       
   202  * {@internal Missing Short Description}}
       
   203  *
       
   204  * @since unknown
       
   205  *
       
   206  * @param unknown_type $post_id
       
   207  * @return unknown
       
   208  */
       
   209 function get_terms_to_edit( $post_id, $taxonomy = 'post_tag' ) {
       
   210 	$post_id = (int) $post_id;
       
   211 	if ( !$post_id )
       
   212 		return false;
       
   213 
       
   214 	$tags = wp_get_post_terms($post_id, $taxonomy, array());
       
   215 
       
   216 	if ( !$tags )
       
   217 		return false;
       
   218 
       
   219 	if ( is_wp_error($tags) )
       
   220 		return $tags;
       
   221 
       
   222 	foreach ( $tags as $tag )
       
   223 		$tag_names[] = $tag->name;
       
   224 	$tags_to_edit = join( ',', $tag_names );
       
   225 	$tags_to_edit = esc_attr( $tags_to_edit );
       
   226 	$tags_to_edit = apply_filters( 'terms_to_edit', $tags_to_edit, $taxonomy );
       
   227 
       
   228 	return $tags_to_edit;
       
   229 }
       
   230 
       
   231 /**
       
   232  * {@internal Missing Short Description}}
       
   233  *
       
   234  * @since unknown
       
   235  *
       
   236  * @param unknown_type $tag_name
       
   237  * @return unknown
       
   238  */
       
   239 function tag_exists($tag_name) {
       
   240 	return is_term($tag_name, 'post_tag');
       
   241 }
       
   242 
       
   243 /**
       
   244  * {@internal Missing Short Description}}
       
   245  *
       
   246  * @since unknown
       
   247  *
       
   248  * @param unknown_type $tag_name
       
   249  * @return unknown
       
   250  */
       
   251 function wp_create_tag($tag_name) {
       
   252 	return wp_create_term( $tag_name, 'post_tag');
       
   253 }
       
   254 
       
   255 /**
       
   256  * {@internal Missing Short Description}}
       
   257  *
       
   258  * @since unknown
       
   259  *
       
   260  * @param unknown_type $tag_name
       
   261  * @return unknown
       
   262  */
       
   263 function wp_create_term($tag_name, $taxonomy = 'post_tag') {
       
   264 	if ( $id = is_term($tag_name, $taxonomy) )
       
   265 		return $id;
       
   266 
       
   267 	return wp_insert_term($tag_name, $taxonomy);
       
   268 }