Ticket #3723: taxonomy_type.diff
File taxonomy_type.diff, 8.5 KB (added by , 18 years ago) |
---|
-
wp-includes/category.php
1 1 <?php 2 2 3 define('TAXONOMY_CATEGORY', 1); 4 define('TAXONOMY_TAG', 2); 5 3 6 function get_all_category_ids() { 4 7 global $wpdb; 5 8 … … 78 81 else 79 82 $where .= ' AND category_count > 0'; 80 83 } else { 81 $where .= ' AND ( t ag_count = 0 OR ( tag_count != 0 AND ( link_count > 0 OR category_count > 0 ) )) ';84 $where .= ' AND ( type & ' . TAXONOMY_CATEGORY . ' != 0 ) '; 82 85 } 83 86 84 87 -
wp-includes/version.php
3 3 // This holds the version number in a separate file so we can bump it without cluttering the SVN 4 4 5 5 $wp_version = '2.2-bleeding'; 6 $wp_db_version = 4865;6 $wp_db_version = 5183; 7 7 8 8 ?> -
wp-includes/post.php
787 787 if ( !$tag_slug = sanitize_title( $tag ) ) 788 788 continue; // discard 789 789 if ( !$tag_id = category_exists( $tag ) ) 790 $tag_id = wp_create_ category( $tag );790 $tag_id = wp_create_tag( $tag ); 791 791 $tag_ids[] = $tag_id; 792 792 } 793 793 … … 837 837 $all_affected_tags = array_unique( array_merge( $tag_ids, $old_tags ) ); 838 838 foreach ( $all_affected_tags as $tag_id ) { 839 839 $count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->post2cat, $wpdb->posts WHERE $wpdb->posts.ID=$wpdb->post2cat.post_id AND post_status = 'publish' AND post_type = 'post' AND category_id = '$tag_id' AND rel_type = 'tag'" ); 840 $wpdb->query( "UPDATE $wpdb->categories SET tag_count = '$count' WHERE cat_ID = '$tag_id'" );840 $wpdb->query( "UPDATE $wpdb->categories SET tag_count = '$count', type = type | " . TAXONOMY_TAG . " WHERE cat_ID = '$tag_id'" ); 841 841 if ( $count == 0 ) 842 $wpdb->query( "UPDATE $wpdb->categories SET t ag_count = '-1'WHERE cat_ID = '$tag_id'" );842 $wpdb->query( "UPDATE $wpdb->categories SET type = type & ~". TAXONOMY_TAG . " WHERE cat_ID = '$tag_id'" ); 843 843 clean_category_cache( $tag_id ); 844 844 do_action( 'edit_category', $tag_id ); 845 845 do_action( 'edit_tag', $tag_id ); … … 876 876 $wpdb->query(" 877 877 DELETE FROM $wpdb->post2cat 878 878 WHERE category_id = '$del' 879 AND post_id = '$post_ID' 879 AND post_id = '$post_ID' AND rel_type = 'category' 880 880 "); 881 881 } 882 882 } … … 898 898 $all_affected_cats = array_unique(array_merge($post_categories, $old_categories)); 899 899 foreach ( $all_affected_cats as $cat_id ) { 900 900 $count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->post2cat, $wpdb->posts WHERE $wpdb->posts.ID=$wpdb->post2cat.post_id AND post_status = 'publish' AND post_type = 'post' AND category_id = '$cat_id' AND rel_type = 'category'"); 901 $wpdb->query("UPDATE $wpdb->categories SET category_count = '$count' WHERE cat_ID = '$cat_id'");901 $wpdb->query("UPDATE $wpdb->categories SET category_count = '$count', type = type | " . TAXONOMY_CATEGORY . " WHERE cat_ID = '$cat_id'"); 902 902 clean_category_cache($cat_id); 903 903 do_action('edit_category', $cat_id); 904 904 } -
wp-admin/admin-functions.php
647 647 648 648 function return_categories_list( $parent = 0 ) { 649 649 global $wpdb; 650 return $wpdb->get_col( "SELECT cat_ID FROM $wpdb->categories WHERE category_parent = $parent AND ( ( link_count = 0 AND tag_count = 0 ) OR category_count != 0 OR ( link_count = 0 AND category_count = 0 AND tag_count = 0 )) ORDER BY category_count DESC" );650 return $wpdb->get_col( "SELECT cat_ID FROM $wpdb->categories WHERE category_parent = $parent AND ( type & " . TAXONOMY_CATEGORY . " != 0 ) AND ( link_count = 0 OR category_count != 0 ) ORDER BY category_count DESC" ); 651 651 } 652 652 653 653 function sort_cats( $cat1, $cat2 ) { … … 744 744 745 745 function return_link_categories_list( $parent = 0 ) { 746 746 global $wpdb; 747 return $wpdb->get_col( "SELECT cat_ID FROM $wpdb->categories WHERE category_parent = $parent AND ( ( category_count = 0 AND tag_count = 0 ) OR link_count != 0 OR ( link_count = 0 AND category_count = 0 AND tag_count = 0 )) ORDER BY link_count DESC" );747 return $wpdb->get_col( "SELECT cat_ID FROM $wpdb->categories WHERE category_parent = $parent AND ( type & " . TAXONOMY_CATEGORY . " != 0 ) AND ( category_count = 0 OR link_count != 0 ) ORDER BY link_count DESC" ); 748 748 } 749 749 750 750 function get_nested_link_categories( $default = 0, $parent = 0 ) { -
wp-admin/admin-db.php
121 121 else 122 122 $links_private = 0; 123 123 124 if ( empty($type) ) 125 $type = TAXONOMY_CATEGORY; 126 124 127 // Let's check if we have this category already, if so just do an update 125 if ( $cat_ID = category_exists( $category_nicename ) ) 128 if ( $cat_ID = category_exists( $category_nicename ) ) { 126 129 $update = true; 130 $category = get_category($cat_ID); 131 // If inserting a category that already exists, OR in the new type rather 132 // than replacing the entire value. 133 $type = $category->type | $type; 134 } 127 135 128 136 if (!$update) { 129 $wpdb->query("INSERT INTO $wpdb->categories (cat_ID, cat_name, category_nicename, category_description, category_parent, links_private, posts_private ) VALUES ('0', '$cat_name', '$category_nicename', '$category_description', '$category_parent', '$links_private', '$posts_private')");137 $wpdb->query("INSERT INTO $wpdb->categories (cat_ID, cat_name, category_nicename, category_description, category_parent, links_private, posts_private, type) VALUES ('0', '$cat_name', '$category_nicename', '$category_description', '$category_parent', '$links_private', '$posts_private', '$type')"); 130 138 $cat_ID = (int) $wpdb->insert_id; 131 139 } else { 132 $wpdb->query ("UPDATE $wpdb->categories SET cat_name = '$cat_name', category_nicename = '$category_nicename', category_description = '$category_description', category_parent = '$category_parent', links_private = '$links_private', posts_private = '$posts_private' WHERE cat_ID = '$cat_ID'");140 $wpdb->query ("UPDATE $wpdb->categories SET cat_name = '$cat_name', category_nicename = '$category_nicename', category_description = '$category_description', category_parent = '$category_parent', links_private = '$links_private', posts_private = '$posts_private', type = '$type' WHERE cat_ID = '$cat_ID'"); 133 141 } 134 142 135 143 if ( $category_nicename == '' ) { … … 195 203 196 204 $parent = $category->category_parent; 197 205 198 // Delete the category 199 if ( !$wpdb->query("DELETE FROM $wpdb->categories WHERE cat_ID = '$cat_ID'") ) 200 return 0; 201 206 // Delete the category if it is not also a tag. 207 if ( 0 == ($category->type & TAXONOMY_TAG) ) { 208 if ( !$wpdb->query("DELETE FROM $wpdb->categories WHERE cat_ID = '$cat_ID'") ) 209 return 0; 210 } else { 211 $wpdb->query("UPDATE $wpdb->categories SET type = type & ~" . TAXONOMY_CATEGORY . " WHERE cat_ID = '$cat_ID'"); 212 } 202 213 // Update children to point to new parent 203 214 $wpdb->query("UPDATE $wpdb->categories SET category_parent = '$parent' WHERE category_parent = '$cat_ID'"); 204 215 205 216 // Only set posts and links to the default category if they're not in another category already 206 $posts = $wpdb->get_col("SELECT post_id FROM $wpdb->post2cat WHERE category_id='$cat_ID' ");217 $posts = $wpdb->get_col("SELECT post_id FROM $wpdb->post2cat WHERE category_id='$cat_ID' AND rel_type = 'category'"); 207 218 foreach ( (array) $posts as $post_id ) { 208 219 $cats = wp_get_post_categories($post_id); 209 220 if ( 1 == count($cats) ) … … 257 268 return (int) $wpdb->get_var("SELECT cat_ID FROM $wpdb->categories WHERE category_nicename = '$category_nicename'"); 258 269 } 259 270 271 function wp_create_tag($tag_name) { 272 $tag_array = array('cat_name' => $tag_name, 'type' => TAXONOMY_TAG); 273 return wp_insert_category($tag_array); 274 } 275 260 276 function wp_delete_user($id, $reassign = 'novalue') { 261 277 global $wpdb; 262 278 -
wp-admin/upgrade-schema.php
21 21 tag_count bigint(20) NOT NULL default '0', 22 22 posts_private tinyint(1) NOT NULL default '0', 23 23 links_private tinyint(1) NOT NULL default '0', 24 type tinyint NOT NULL default '1', 24 25 PRIMARY KEY (cat_ID), 25 26 KEY category_nicename (category_nicename) 26 27 ) $charset_collate;