Ticket #3723: tagging.diff
File tagging.diff, 8.1 KB (added by , 18 years ago) |
---|
-
wp-includes/wp-db.php
34 34 var $optiongroups; 35 35 var $optiongroup_options; 36 36 var $postmeta; 37 var $tags; 38 var $tagged; 37 39 38 40 /** 39 41 * Connects to the database server and selects a database -
wp-includes/tag.php
1 <?php 2 3 // TODO: Split these across tag.php, tag-template.php, and admin-db.php 4 5 6 function get_post_tags ( $post_id = false ) { 7 global $post_tag_cache, $wpdb, $post; 8 9 if ( empty($post_id) ) 10 $post_id = $post->ID; 11 12 if ( isset ($post_tag_cache[$post_id] ) ) 13 return $post_tag_cache[$post_id]; 14 15 $post_tag_cache[$post_id] = $wpdb->get_results("SELECT * FROM $wpdb->tagged RIGHT JOIN $wpdb->tags ON ($wpdb->tags.tag_id = $wpdb->tagged.tag_id) WHERE post_id = '$post_id'"); 16 17 return $post_tag_cache[$post_id]; 18 } 19 20 function &get_tag(&$tag, $output = OBJECT) { 21 global $wpdb; 22 23 if ( empty($tag) ) 24 return null; 25 26 if ( is_object($tag) ) { 27 wp_cache_add($tag->tag_id, $tag, 'tag'); 28 $_tag = $tag; 29 } else { 30 if ( ! $_tag = wp_cache_get($tag, 'tag') ) { 31 $_tag = $wpdb->get_row("SELECT * FROM $wpdb->tags WHERE tag_id = '$tag' LIMIT 1"); 32 wp_cache_set($tag, $_tag, 'tag'); 33 } 34 } 35 36 $_tag = apply_filters('get_tag', $_tag); 37 38 if ( $output == OBJECT ) { 39 return $_tag; 40 } elseif ( $output == ARRAY_A ) { 41 return get_object_vars($_tag); 42 } elseif ( $output == ARRAY_N ) { 43 return array_values(get_object_vars($_tag)); 44 } else { 45 return $_tag; 46 } 47 } 48 49 function get_tag_id($tag_name) { 50 global $wpdb; 51 52 $tag_id = $wpdb->get_var("SELECT tag_id FROM $wpdb->tags WHERE raw_tag = '$tag_name'"); 53 54 return $tag_id; 55 } 56 57 function get_tag_by_name() { 58 59 } 60 61 function get_tag_name($tag_id) { 62 $tag_id = (int) $tag_id; 63 $tag = &get_tag($tag_id); 64 return $tag->raw_tag; 65 } 66 67 function get_tag_link() { 68 69 } 70 71 // Template funcs 72 73 function get_the_tag_list() { 74 75 } 76 77 function the_tags() { 78 79 } 80 81 function wp_list_tags() { 82 83 } 84 85 // Admin funcs 86 87 function wp_create_tag( $tag ) { 88 global $wpdb; 89 $raw_tag = $tag; 90 $tag = sanitize_title( $tag ); 91 if ( empty( $tag ) ) 92 return false; 93 if ( $exists = $wpdb->get_var("SELECT tag_id FROM $wpdb->tags WHERE tag = '$tag'") ) 94 return $exists; 95 96 $wpdb->query("INSERT INTO $wpdb->tags ( tag, raw_tag ) VALUES ( '$tag', '$raw_tag' )"); 97 $tag_id = $wpdb->insert_id; 98 do_action('wp_tag_created', $raw_tag, $tag_id); 99 return $tag_id; 100 } 101 102 function wp_set_post_tags($post_ID = 0, $post_tags = array()) { 103 global $wpdb; 104 if (!is_array($post_tags) || 0 == count($post_tags) || empty($post_tags)) 105 $post_tags = array(); 106 107 $post_tags = array_unique($post_tags); 108 109 // First the old tags 110 $old_tags = $wpdb->get_col(" 111 SELECT tag_id 112 FROM $wpdb->tagged 113 WHERE post_id = $post_ID"); 114 115 if (!$old_tags) { 116 $old_tags = array(); 117 } else { 118 $old_tags = array_unique($old_tags); 119 } 120 121 // Delete any? 122 $delete_tags = array_diff($old_tags,$post_tags); 123 124 if ($delete_tags) { 125 foreach ($delete_tags as $del) { 126 $wpdb->query(" 127 DELETE FROM $wpdb->tagged 128 WHERE tag_id = $del 129 AND post_id = $post_ID 130 "); 131 } 132 } 133 134 // Add any? 135 $add_tags = array_diff($post_tags, $old_tags); 136 137 if ($add_tags) { 138 foreach ($add_tags as $new_tag) { 139 if ( !empty($new_tag) ) 140 $wpdb->query(" 141 INSERT INTO $wpdb->taggewd (post_id, tag_id) 142 VALUES ($post_ID, $new_tag)"); 143 } 144 } 145 146 // Update tag counts. 147 $all_affected_tags = array_unique(array_merge($post_tags, $old_tags)); 148 foreach ( $all_affected_tags as $tag_id ) { 149 $count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->tagged, $wpdb->posts WHERE $wpdb->posts.ID=$wpdb->tagged.post_id AND post_status = 'publish' AND post_type = 'post' AND tag_id = '$tag_id'"); 150 $wpdb->query("UPDATE $wpdb->tags SET tag_count = '$count' WHERE tag_id = '$tag_id'"); 151 clean_tag_cache($tag_id); 152 do_action('edit_tag', $tag_id); 153 } 154 } 155 156 ?> -
wp-includes/post.php
522 522 } 523 523 $post_cat = $post_category[0]; 524 524 525 if ( empty($post_tags) ) 526 $post_tags = array(); 527 525 528 if ( empty($post_author) ) 526 529 $post_author = $user_ID; 527 530 … … 646 649 } 647 650 648 651 wp_set_post_categories($post_ID, $post_category); 652 wp_set_post_tags($post_ID, $post_tags); 649 653 650 654 if ( 'page' == $post_type ) { 651 655 clean_page_cache($post_ID); -
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 = 4 772;6 $wp_db_version = 4847; 7 7 8 8 ?> -
wp-settings.php
116 116 $wpdb->options = $wpdb->prefix . 'options'; 117 117 $wpdb->postmeta = $wpdb->prefix . 'postmeta'; 118 118 $wpdb->usermeta = $wpdb->prefix . 'usermeta'; 119 $wpdb->tags = $wpdb->prefix . 'tags'; 120 $wpdb->tagged = $wpdb->prefix . 'tagged'; 119 121 120 122 if ( defined('CUSTOM_USER_TABLE') ) 121 123 $wpdb->users = CUSTOM_USER_TABLE; -
wp-admin/edit-form-advanced.php
75 75 <ul id="categorychecklist"><?php dropdown_categories(); ?></ul></div> 76 76 </fieldset> 77 77 78 <fieldset id="tagdiv" class="dbx-box"> 79 <h3 class="dbx-handle"><?php _e('Tags') ?></h3> 80 <div class="dbx-content"> 81 <p id="jaxtag"></p> 82 <ul id="tagchecklist"></ul></div> 83 </fieldset> 84 78 85 <fieldset id="commentstatusdiv" class="dbx-box"> 79 86 <h3 class="dbx-handle"><?php _e('Discussion') ?></h3> 80 87 <div class="dbx-content"> -
wp-admin/cat-js.php
12 12 $('newcat').onkeypress = function(e) { return killSubmit("catList.ajaxAdder('category','jaxcat');", e); }; 13 13 $('catadd').onclick = function() { catList.ajaxAdder('category', 'jaxcat'); }; 14 14 } 15 addLoadEvent(function(){tagList=new listMan('tagchecklist');tagList.ajaxRespEl='jaxtag';tagList.topAdder=1;tagList.alt=0;tagList.showLink=0;}); 16 addLoadEvent(newtagAddIn); 17 function newtagAddIn() { 18 var jaxtag = $('jaxtag'); 19 if ( !jaxtag ) 20 return false; 21 Element.update(jaxtag,'<span id="ajaxtag"><input type="text" name="newtag" id="newtag" size="16" autocomplete="off"/><input type="button" name="Button" id="tagadd" value="<?php echo js_escape(__('Add')); ?>"/><span id="howto"><?php echo js_escape(__('Separate multiple tags with commas.')); ?></span></span>'); 22 $('newtag').onkeypress = function(e) { return killSubmit("tagList.ajaxAdder('tag','jaxtag');", e); }; 23 $('tagadd').onclick = function() { tagList.ajaxAdder('tag', 'jaxtag'); }; 24 } -
wp-admin/upgrade-schema.php
120 120 KEY post_name (post_name), 121 121 KEY type_status_date (post_type,post_status,post_date,ID) 122 122 ); 123 CREATE TABLE $wpdb->tags ( 124 tag_id bigint(20) unsigned NOT NULL auto_increment, 125 tag varchar(30) NOT NULL default '', 126 raw_tag varchar(50) NOT NULL default '', 127 tag_count bigint(20) unsigned NOT NULL default '0', 128 PRIMARY KEY (tag_id) 129 ); 130 CREATE TABLE $wpdb->tagged ( 131 tag_id bigint(20) unsigned NOT NULL default '0', 132 post_id bigint(20) unsigned NOT NULL default '0', 133 PRIMARY KEY (tag_id,post_id), 134 KEY tag_id_index (tag_id), 135 KEY post_id_index (post_id) 136 ); 123 137 CREATE TABLE $wpdb->users ( 124 138 ID bigint(20) unsigned NOT NULL auto_increment, 125 139 user_login varchar(60) NOT NULL default '',