Changeset 2020 for trunk/bb-admin/includes/functions.bb-admin.php
- Timestamp:
- 03/16/2009 08:04:37 AM (17 years ago)
- File:
-
- 1 edited
-
trunk/bb-admin/includes/functions.bb-admin.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/bb-admin/includes/functions.bb-admin.php
r1995 r2020 776 776 } 777 777 778 /* Tags */ 779 780 // TODO 781 function rename_tag( $tag_id, $tag ) { 782 return false; 783 global $bbdb; 784 if ( !bb_current_user_can( 'manage_tags' ) ) 785 return false; 786 787 $tag_id = (int) $tag_id; 788 $raw_tag = bb_trim_for_db( $tag, 50 ); 789 $tag = tag_sanitize( $tag ); 790 791 if ( empty( $tag ) ) 792 return false; 793 if ( $bbdb->get_var( $bbdb->prepare( "SELECT tag_id FROM $bbdb->tags WHERE tag = %s AND tag_id <> %d", $tag, $tag_id ) ) ) 794 return false; 795 796 $old_tag = bb_get_tag( $tag_id ); 797 798 if ( $bbdb->update( $bbdb->tags, compact( 'tag', 'raw_tag' ), compact( 'tag_id' ) ) ) { 799 do_action('bb_tag_renamed', $tag_id, $old_tag->raw_tag, $raw_tag ); 800 return bb_get_tag( $tag_id ); 801 } 802 return false; 803 } 804 805 // merge $old_id into $new_id. MySQL 4.0 can't do IN on tuples! 806 // NOT bbdb::prepared 807 // TODO 808 function merge_tags( $old_id, $new_id ) { 809 return false; 810 global $bbdb; 811 if ( !bb_current_user_can( 'manage_tags' ) ) 812 return false; 813 814 $old_id = (int) $old_id; 815 $new_id = (int) $new_id; 816 817 if ( $old_id == $new_id ) 818 return false; 819 820 do_action('bb_pre_merge_tags', $old_id, $new_id); 821 822 $tagged_del = 0; 823 if ( $old_topic_ids = (array) $bbdb->get_col( $bbdb->prepare( "SELECT topic_id FROM $bbdb->tagged WHERE tag_id = %d", $old_id ) ) ) { 824 $old_topic_ids = join(',', array_map('intval', $old_topic_ids)); 825 $shared_topics = (array) $bbdb->get_results( "SELECT user_id, topic_id FROM $bbdb->tagged WHERE tag_id = '$new_id' AND topic_id IN ($old_topic_ids)" ); 826 foreach ( $shared_topics as $st ) { 827 $tagged_del += $bbdb->query( $bbdb->prepare( 828 "DELETE FROM $bbdb->tagged WHERE tag_id = %d AND user_id = %d AND topic_id = %d", 829 $old_id, $st->user_id, $st->topic_id 830 ) ); 831 $count = (int) $bbdb->get_var( $bbdb->prepare( 832 "SELECT COUNT(DISTINCT tag_id) FROM $bbdb->tagged WHERE topic_id = %d GROUP BY topic_id", 833 $st->topic_id 834 ) ); 835 $bbdb->update( $bbdb->topics, array( 'tag_count' => $count ), array( 'topic_id' => $st->topic_id ) ); 836 } 837 } 838 839 if ( $diff_count = $bbdb->update( $bbdb->tagged, array( 'tag_id' => $new_id ), array( 'tag_id' => $old_id ) ) ) { 840 $count = (int) $bbdb->get_var( $bbdb->prepare( "SELECT COUNT(DISTINCT topic_id) FROM $bbdb->tagged WHERE tag_id = %d GROUP BY tag_id", $new_id ) ); 841 $bbdb->update( $bbdb->tags, array( 'tag_count' => $count ), array( 'tag_id' => $new_id ) ); 842 } 843 844 // return values and destroy the old tag 845 return array( 'destroyed' => bb_destroy_tag( $old_id, false ), 'old_count' => $diff_count + $tagged_del, 'diff_count' => $diff_count ); 846 } 778 847 779 848 780 /* Topics */
Note: See TracChangeset
for help on using the changeset viewer.