Make WordPress Core

Changeset 5510


Ignore:
Timestamp:
05/22/2007 05:12:38 AM (18 years ago)
Author:
ryan
Message:

Very rough initial commit of taxonomy for everyone's hacking pleasure. There be dragons. see #4189

Location:
trunk
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/admin-db.php

    r5272 r5510  
    283283
    284284function tag_exists($tag_name) {
    285     global $wpdb;
    286     if (! $tag_nicename = sanitize_title($tag_name))
    287         return 0;
    288 
    289     return (int) $wpdb->get_var("SELECT cat_ID FROM $wpdb->categories WHERE category_nicename = '$tag_nicename' AND ( type & " . TAXONOMY_TAG .  " != 0 )");
     285    return is_term($tag_name, 'post_tag');
    290286}
    291287
     
    293289    if ( $id = tag_exists($tag_name) )
    294290        return $id;
    295     $tag_array = array('cat_name' => $tag_name, 'type' => TAXONOMY_TAG);
    296 
    297     if ( $id = category_object_exists($tag_name) ) {
    298         $category = get_category($id);
    299         $tag_array['type'] = $category->type | $tag_array['type'];
    300         $tag_array['cat_ID'] = $id;
    301         $id = wp_update_category($tag_array);
    302         return $id;
    303     } else {
    304         return wp_insert_category($tag_array);
    305     }
     291
     292    $tag_id = add_term($tag_name, 'post_tag'); 
    306293}
    307294
  • trunk/wp-admin/admin-functions.php

    r5404 r5510  
    665665        return false;
    666666
    667     $tags = $wpdb->get_results( "
    668              SELECT category_id, cat_name
    669              FROM $wpdb->categories, $wpdb->post2cat
    670              WHERE $wpdb->post2cat.category_id = cat_ID AND $wpdb->post2cat.post_id = '$post_id' AND rel_type = 'tag'
    671              " );
     667    $tags = wp_get_post_tags($post_id);
     668
    672669    if ( !$tags )
    673670        return false;
    674671
    675672    foreach ( $tags as $tag )
    676         $tag_names[] = $tag->cat_name;
     673        $tag_names[] = $tag->name;
    677674    $tags_to_edit = join( ', ', $tag_names );
    678675    $tags_to_edit = attribute_escape( $tags_to_edit );
  • trunk/wp-admin/upgrade-schema.php

    r5303 r5510  
    1111}
    1212
    13 $wp_queries="CREATE TABLE $wpdb->categories (
    14   cat_ID bigint(20) NOT NULL auto_increment,
    15   cat_name varchar(55) NOT NULL default '',
    16   category_nicename varchar(200) NOT NULL default '',
    17   category_description longtext NOT NULL,
    18   category_parent bigint(20) NOT NULL default '0',
    19   category_count bigint(20) NOT NULL default '0',
    20   link_count bigint(20) NOT NULL default '0',
    21   tag_count bigint(20) NOT NULL default '0',
    22   posts_private tinyint(1) NOT NULL default '0',
    23   links_private tinyint(1) NOT NULL default '0',
    24   type tinyint NOT NULL default '1',
    25   PRIMARY KEY  (cat_ID),
    26   KEY category_nicename (category_nicename)
     13$wp_queries="CREATE TABLE $wpdb->terms (
     14 term_id bigint(20) NOT NULL auto_increment,
     15 name varchar(55) NOT NULL default '',
     16 slug varchar(200) NOT NULL default '',
     17 term_group bigint(10) NOT NULL default 0,
     18 PRIMARY KEY  (term_id),
     19 UNIQUE KEY slug (slug)
     20) $charset_collate;
     21CREATE TABLE $wpdb->term_taxonomy (
     22 term_taxonomy_id bigint(20) NOT NULL auto_increment,
     23 term_id bigint(20) NOT NULL default 0,
     24 taxonomy varchar(32) NOT NULL default '',
     25 description longtext NOT NULL,
     26 parent bigint(20) NOT NULL default 0,
     27 count bigint(20) NOT NULL default 0,
     28 PRIMARY KEY (term_taxonomy_id),
     29 UNIQUE KEY (term_id, taxonomy)
     30) $charset_collate;
     31CREATE TABLE $wpdb->term_relationships (
     32 object_id bigint(20) NOT NULL default 0,
     33 term_taxonomy_id bigint(20) NOT NULL default 0,
     34 PRIMARY KEY  (object_id),
     35 KEY (term_taxonomy_id)
    2736) $charset_collate;
    2837CREATE TABLE $wpdb->comments (
     
    4655  KEY comment_post_ID (comment_post_ID)
    4756) $charset_collate;
    48 CREATE TABLE $wpdb->link2cat (
    49   rel_id bigint(20) NOT NULL auto_increment,
    50   link_id bigint(20) NOT NULL default '0',
    51   category_id bigint(20) NOT NULL default '0',
    52   PRIMARY KEY  (rel_id),
    53   KEY link_id (link_id,category_id)
    54 ) $charset_collate;
    5557CREATE TABLE $wpdb->links (
    5658  link_id bigint(20) NOT NULL auto_increment,
     
    8688  PRIMARY KEY  (option_id,blog_id,option_name),
    8789  KEY option_name (option_name)
    88 ) $charset_collate;
    89 CREATE TABLE $wpdb->post2cat (
    90   rel_id bigint(20) NOT NULL auto_increment,
    91   post_id bigint(20) NOT NULL default '0',
    92   category_id bigint(20) NOT NULL default '0',
    93   rel_type varchar(64) NOT NULL default 'category',
    94   PRIMARY KEY  (rel_id),
    95   KEY post_id (post_id,category_id)
    9690) $charset_collate;
    9791CREATE TABLE $wpdb->postmeta (
  • trunk/wp-includes/post.php

    r5459 r5510  
    460460    $post_id = (int) $post_id;
    461461   
    462     if ( !isset( $tag_cache[$blog_id][$post_id] ) )
    463         update_post_category_cache( $post_id ); // loads $tag_cache
    464 
    465     return $tag_cache[$blog_id][$post_id];
     462    $tags = get_object_terms($post_id, 'post_tag');
     463    return $tags;
    466464}
    467465
     
    793791    if ( !$post_id )
    794792        return false;
    795    
    796     // prevent warnings for unintialized variables
    797     $tag_ids = array();
    798793
    799794    if ( empty($tags) )
    800795        $tags = array();
    801796    $tags = (is_array($tags)) ? $tags : explode( ',', $tags );
    802    
    803     foreach ( $tags as $tag ) {
    804         $tag = trim( $tag );
    805         if ( !$tag_slug = sanitize_title( $tag ) )
    806             continue; // discard
    807         if ( !$tag_id = tag_exists( $tag ) )
    808             $tag_id = wp_create_tag( $tag );
    809         $tag_ids[] = $tag_id;
    810     }
    811 
    812     if ( empty($tag_ids) && ( !empty($tags) || $append ) )
    813         return false;
    814    
    815     $tag_ids = array_unique( $tag_ids );
    816    
    817     // First the old tags
    818     $old_tags = $wpdb->get_col("
    819         SELECT category_id
    820         FROM $wpdb->post2cat
    821         WHERE post_id = '$post_id' AND rel_type = 'tag'");
    822    
    823     if ( !$old_tags ) {
    824         $old_tags = array();
    825     } else {
    826         $old_tags = array_unique( $old_tags );
    827     }
    828    
    829     // Delete any?
    830     $delete_tags = array_diff( $old_tags, $tag_ids);
    831     if ( $delete_tags && !$append ) {
    832         foreach ( $delete_tags as $del ) {
    833             $wpdb->query("
    834                 DELETE FROM $wpdb->post2cat
    835                 WHERE category_id = '$del'
    836                     AND post_id = '$post_id'
    837                     AND rel_type = 'tag'
    838                 ");
    839         }
    840     }
    841    
    842     // Add any?
    843     $add_tags = array_diff( $tag_ids, $old_tags );
    844     if ( $add_tags ) {
    845         foreach ( $add_tags as $new_tag ) {
    846             $new_tag = (int) $new_tag;
    847             if ( !empty($new_tag) )
    848                 $wpdb->query("
    849                     INSERT INTO $wpdb->post2cat (post_id, category_id, rel_type)
    850                     VALUES ('$post_id', '$new_tag', 'tag')");
    851         }
    852     }
    853    
    854     // Update category counts.
    855     $all_affected_tags = array_unique( array_merge( $tag_ids, $old_tags ) );
    856     foreach ( $all_affected_tags as $tag_id ) {
    857         $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'" );
    858         $wpdb->query( "UPDATE $wpdb->categories SET tag_count = '$count', type = type | " . TAXONOMY_TAG . " WHERE cat_ID = '$tag_id'" );
    859         if ( $count == 0 )
    860             $wpdb->query( "UPDATE $wpdb->categories SET type = type & ~". TAXONOMY_TAG . " WHERE cat_ID = '$tag_id'" );
    861         clean_category_cache( $tag_id );
    862         do_action( 'edit_category', $tag_id );
    863         do_action( 'edit_tag', $tag_id );
    864     }
     797    add_term_relationship($tags, $post_id, 'post_tag');
    865798}
    866799
  • trunk/wp-includes/version.php

    r5303 r5510  
    44
    55$wp_version = '2.3-alpha';
    6 $wp_db_version = 5200;
     6$wp_db_version = 5495;
    77
    88?>
  • trunk/wp-includes/wp-db.php

    r5458 r5510  
    3535    var $optiongroup_options;
    3636    var $postmeta;
     37    var $terms;
     38    var $term_taxonomy;
     39    var $term_relationships;
    3740
    3841    var $charset;
  • trunk/wp-settings.php

    r5491 r5510  
    117117$wpdb->postmeta       = $wpdb->prefix . 'postmeta';
    118118$wpdb->usermeta       = $wpdb->prefix . 'usermeta';
     119$wpdb->terms          = $wpdb->prefix . 'terms';
     120$wpdb->term_taxonomy  = $wpdb->prefix . 'term_taxonomy';
     121$wpdb->term_relationships = $wpdb->prefix . 'term_relationships';
    119122
    120123if ( defined('CUSTOM_USER_TABLE') )
     
    169172require (ABSPATH . WPINC . '/deprecated.php');
    170173require (ABSPATH . WPINC . '/script-loader.php');
     174require (ABSPATH . WPINC . '/taxonomy.php');
    171175
    172176if (strpos($_SERVER['PHP_SELF'], 'install.php') === false) {
Note: See TracChangeset for help on using the changeset viewer.