Skip to:
Content

bbPress.org


Ignore:
Timestamp:
03/16/2009 08:04:37 AM (17 years ago)
Author:
sambauers
Message:

Tag love only bb_related_tags() remains as a TODO. Fixes #1006, #1053

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bb-admin/includes/functions.bb-admin.php

    r1995 r2020  
    776776}
    777777
    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
    847779
    848780/* Topics */
Note: See TracChangeset for help on using the changeset viewer.