Changeset 2652
- Timestamp:
- 11/27/2010 09:05:29 AM (14 years ago)
- Location:
- branches/plugin
- Files:
-
- 4 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/plugin/bbp-admin/bbp-functions.php
r2633 r2652 38 38 function bbp_recount_list () { 39 39 $recount_list = array( 40 5 => array( 'bbp-forum-topics', __( 'Count topics in each forum', 'bbpress' ), 'bbp_recount_forum_topics' ),41 10 => array( 'bbp-forum-replies', __( 'Count replies in each forum', 'bbpress' ), 'bbp_recount_forum_replies' ),42 15 => array( 'bbp-topic-replies', __( 'Count replies in each topic', 'bbpress' ), 'bbp_recount_topic_replies' ),43 20 => array( 'bbp-topic-voices', __( 'Count voices in each topic', 'bbpress' ), 'bbp_recount_topic_voices' ),44 25 => array( 'bbp-topic-trashed-replies', __( 'Count trashed replies in each topic', 'bbpress' ), 'bbp_recount_topic_trashed_replies' ),45 30 => array( 'bbp-topics-replied', __( 'Count replies for each user', 'bbpress' ), 'bbp_recount_user_topics_replied' ),46 //35 => array( 'bbp-topic-tag-count', __( 'Count tags for every topic', 'bbpress' ), 'bbp_recount_topic_tags' ),47 //40 => array( 'bbp-t ags-tag-count', __( 'Count topics for every tag', 'bbpress' ), 'bbp_recount_tag_topics' ),48 //45 => array( 'bbp-tags- delete-empty', __( 'Delete tags with no topics', 'bbpress' ), 'bbp_recount_tag_delete_empty'),49 //50 => array( 'bbp- clean-favorites', __( 'Remove deleted topics from user favorites', 'bbpress' ), 'bbp_recount_clean_favorites')40 5 => array( 'bbp-forum-topics', __( 'Count topics in each forum', 'bbpress' ), 'bbp_recount_forum_topics' ), 41 10 => array( 'bbp-forum-replies', __( 'Count replies in each forum', 'bbpress' ), 'bbp_recount_forum_replies' ), 42 15 => array( 'bbp-topic-replies', __( 'Count replies in each topic', 'bbpress' ), 'bbp_recount_topic_replies' ), 43 20 => array( 'bbp-topic-voices', __( 'Count voices in each topic', 'bbpress' ), 'bbp_recount_topic_voices' ), 44 25 => array( 'bbp-topic-trashed-replies', __( 'Count trashed replies in each topic', 'bbpress' ), 'bbp_recount_topic_trashed_replies' ), 45 30 => array( 'bbp-topics-replied', __( 'Count replies for each user', 'bbpress' ), 'bbp_recount_user_topics_replied' ), 46 35 => array( 'bbp-clean-favorites', __( 'Remove deleted topics from user favorites', 'bbpress' ), 'bbp_recount_clean_favorites' ) 47 //40 => array( 'bbp-topic-tag-count', __( 'Count tags for every topic', 'bbpress' ), 'bbp_recount_topic_tags' ), 48 //45 => array( 'bbp-tags-tag-count', __( 'Count topics for every tag', 'bbpress' ), 'bbp_recount_tag_topics' ), 49 //50 => array( 'bbp-tags-delete-empty', __( 'Delete tags with no topics', 'bbpress' ), 'bbp_recount_tag_delete_empty' ) 50 50 ); 51 51 … … 447 447 448 448 function bbp_recount_clean_favorites () { 449 global $wpdb ;449 global $wpdb, $bbp; 450 450 451 451 $statement = __( 'Removing deleted topics from user favorites… %s', 'bbpress' ); 452 452 $result = __( 'Failed!', 'bbpress' ); 453 453 454 // $meta_key = $wpdb->prefix . 'favorites'; 455 // 456 // $users = $wpdb->get_results( "SELECT `user_id`, `meta_value` AS `favorites` FROM `$wpdb->usermeta` WHERE `meta_key` = '$meta_key';" ); 457 // if ( is_wp_error( $users ) ) 458 // return array( 1, sprintf( $statement, $result ) ); 459 // 460 // $topics = $wpdb->get_col( "SELECT `topic_id` FROM `$wpdb->topics` WHERE `topic_status` = '0';" ); 461 // 462 // if ( is_wp_error( $topics ) ) 463 // return array( 2, sprintf( $statement, $result ) ); 464 // 465 // $values = array( ); 466 // foreach ( $users as $user ) { 467 // if ( empty( $user->favorites ) || !is_string( $user->favorites ) ) { 468 // continue; 469 // } 470 // $favorites = explode( ',', $user->favorites ); 471 // if ( empty( $favorites ) || !is_array( $favorites ) ) { 472 // continue; 473 // } 474 // $favorites = join( ',', array_intersect( $topics, $favorites ) ); 475 // $values[] = "('$user->user_id', '$meta_key', '$favorites')"; 476 // } 477 // 478 // if ( !count( $values ) ) { 479 // $result = __( 'Nothing to remove!', 'bbpress' ); 480 // return array( 0, sprintf( $statement, $result ) ); 481 // } 482 // 483 // $sql_delete = "DELETE FROM `$wpdb->usermeta` WHERE `meta_key` = '$meta_key';"; 484 // if ( is_wp_error( $wpdb->query( $sql_delete ) ) ) 485 // return array( 4, sprintf( $statement, $result ) ); 486 // 487 // $values = array_chunk( $values, 10000 ); 488 // foreach ( $values as $chunk ) { 489 // $chunk = "\n" . join( ",\n", $chunk ); 490 // $sql_insert = "INSERT INTO `$wpdb->usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES $chunk;"; 491 // if ( is_wp_error( $wpdb->query( $sql_insert ) ) ) { 492 // return array( 5, sprintf( $statement, $result ) ); 493 // } 494 // } 495 // 496 // $result = __( 'Complete!', 'bbpress' ); 454 $users = $wpdb->get_results( "SELECT `user_id`, `meta_value` AS `favorites` FROM `$wpdb->usermeta` WHERE `meta_key` = '_bbp_favorites';" ); 455 if ( is_wp_error( $users ) ) 456 return array( 1, sprintf( $statement, $result ) ); 457 458 $topics = $wpdb->get_col( "SELECT `ID` FROM `$wpdb->posts` WHERE `post_type` = '$bbp->topic_id' AND `post_status` = 'publish';" ); 459 460 if ( is_wp_error( $topics ) ) 461 return array( 2, sprintf( $statement, $result ) ); 462 463 $values = array(); 464 foreach ( $users as $user ) { 465 if ( empty( $user->favorites ) || !is_string( $user->favorites ) ) 466 continue; 467 468 $favorites = array_intersect( $topics, (array) explode( ',', $user->favorites ) ); 469 if ( empty( $favorites ) || !is_array( $favorites ) ) 470 continue; 471 472 $favorites = join( ',', $favorites ); 473 $values[] = "('$user->user_id', '_bbp_favorites', '$favorites')"; 474 } 475 476 if ( !count( $values ) ) { 477 $result = __( 'Nothing to remove!', 'bbpress' ); 478 return array( 0, sprintf( $statement, $result ) ); 479 } 480 481 $sql_delete = "DELETE FROM `$wpdb->usermeta` WHERE `meta_key` = '_bbp_favorites';"; 482 if ( is_wp_error( $wpdb->query( $sql_delete ) ) ) 483 return array( 4, sprintf( $statement, $result ) ); 484 485 $values = array_chunk( $values, 10000 ); 486 foreach ( $values as $chunk ) { 487 $chunk = "\n" . join( ",\n", $chunk ); 488 $sql_insert = "INSERT INTO `$wpdb->usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES $chunk;"; 489 if ( is_wp_error( $wpdb->query( $sql_insert ) ) ) 490 return array( 5, sprintf( $statement, $result ) ); 491 } 492 493 $result = __( 'Complete!', 'bbpress' ); 497 494 return array( 0, sprintf( $statement, $result ) ); 498 495 } -
branches/plugin/bbp-admin/bbp-tools.php
r2649 r2652 27 27 <div class="wrap"> 28 28 29 <?php do_action( 'admin_notices' ); ?> 29 30 <?php screen_icon( 'tools' ); ?> 30 31 -
branches/plugin/bbp-includes/bbp-functions.php
r2634 r2652 364 364 } 365 365 366 /** 367 * bbp_dim_favorite () 368 * 369 * Add or remove a topic from a user's favorites 370 * 371 * @package bbPress 372 * @subpackage Template Tags 373 * @since bbPress (r2652) 374 * 375 * @return void 376 */ 377 function bbp_dim_favorite () { 378 global $current_user; 379 380 wp_get_current_user(); 381 382 $user_id = $current_user->ID; 383 $id = intval( $_POST['id'] ); 384 385 if ( !$topic = get_post( $id ) ) 386 die( '0' ); 387 388 if ( !current_user_can( 'edit_user', $user_id ) ) 389 die( '-1' ); 390 391 check_ajax_referer( "toggle-favorite_$topic->ID" ); 392 393 if ( bbp_is_user_favorite( $user_id, $topic->ID ) ) { 394 if ( bbp_remove_user_favorite( $user_id, $topic->ID ) ) 395 die( '1' ); 396 } else { 397 if ( bbp_add_user_favorite( $user_id, $topic->ID ) ) 398 die( '1' ); 399 } 400 401 die( '0' ); 402 403 } 404 add_action( 'wp_ajax_dim-favorite', 'bbp_dim_favorite' ); 405 406 /** 407 * bbp_remove_topic_from_all_favorites () 408 * 409 * Remove a deleted topic from all users' favorites 410 * 411 * @package bbPress 412 * @subpackage Template Tags 413 * @since bbPress (r2652) 414 * 415 * @param int $topic_id Topic ID to remove 416 * @return void 417 */ 418 function bbp_remove_topic_from_all_favorites ( $topic_id = 0 ) { 419 global $wpdb; 420 421 if ( $ids = $wpdb->get_col( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = '_bbp_favorites' and FIND_IN_SET('{$topic_id}', meta_value) > 0" ) ) 422 foreach ( $ids as $id ) 423 bbp_remove_user_favorite( $id, $topic_id ); 424 } 425 add_action( 'trash_post', 'bbp_remove_topic_from_all_favorites' ); 426 add_action( 'delete_post', 'bbp_remove_topic_from_all_favorites' ); 427 428 /** 429 * bbp_enqueue_topic_script () 430 * 431 * Enqueue the topic page Javascript file 432 * 433 * @package bbPress 434 * @subpackage Template Tags 435 * @since bbPress (r2652) 436 * 437 * @return void 438 */ 439 function bbp_enqueue_topic_script () { 440 if ( !bbp_is_topic() ) 441 return; 442 443 global $bbp; 444 445 wp_enqueue_script( 'bbp_topic', $bbp->plugin_url . 'bbp-includes/js/topic.js', array( 'wp-lists' ), '20101124' ); 446 } 447 add_filter( 'wp_enqueue_scripts', 'bbp_enqueue_topic_script' ); 448 449 /** 450 * bbp_scripts () 451 * 452 * Put some scripts in the header, like AJAX url for wp-lists 453 * 454 * @package bbPress 455 * @subpackage Template Tags 456 * @since bbPress (r2652) 457 * 458 * @return void 459 */ 460 function bbp_scripts () { 461 if ( !bbp_is_topic() ) 462 return; 463 464 echo "<script type='text/javascript'> 465 /* <![CDATA[ */ 466 var ajaxurl = '" . admin_url( 'admin-ajax.php' ) . "'; 467 /* ]]> */ 468 </script>\n"; 469 } 470 add_filter( 'wp_head', 'bbp_scripts', -1 ); 471 472 /** 473 * bbp_topic_script_localization () 474 * 475 * Load localizations for topic script. 476 * 477 * These localizations require information that may not be loaded even by init. 478 * 479 * @package bbPress 480 * @subpackage Template Tags 481 * @since bbPress (r2652) 482 * 483 * @return void 484 */ 485 function bbp_topic_script_localization () { 486 if ( !bbp_is_topic() ) 487 return; 488 489 global $current_user; 490 491 wp_get_current_user(); 492 $user_id = $current_user->ID; 493 494 wp_localize_script( 'bbp_topic', 'bbpTopicJS', array( 495 'currentUserId' => $user_id, 496 'topicId' => bbp_get_topic_id(), 497 'favoritesLink' => bbp_get_favorites_link( $user_id ), 498 'isFav' => (int) bbp_is_user_favorite( $user_id ), 499 'favLinkYes' => __( 'favorites', 'bbpress' ), 500 'favLinkNo' => __( '?', 'bbpress' ), 501 'favYes' => __( 'This topic is one of your %favLinkYes% [%favDel%]', 'bbpress' ), 502 'favNo' => __( '%favAdd% (%favLinkNo%)', 'bbpress' ), 503 'favDel' => __( '×', 'bbpress' ), 504 'favAdd' => __( 'Add this topic to your favorites', 'bbpress' ) 505 )); 506 } 507 add_filter( 'wp_enqueue_scripts', 'bbp_topic_script_localization' ); 508 366 509 ?> -
branches/plugin/bbp-includes/bbp-template.php
r2634 r2652 567 567 * @since bbPress (r2625) 568 568 * 569 * @param int $forum_id 569 * @param int $forum_id 570 570 */ 571 571 function bbp_forum_freshness_link ( $forum_id = 0) { … … 2546 2546 } 2547 2547 2548 /** 2549 * bbp_is_favorites () 2550 * 2551 * Check if current page is a bbPress user's favorites page (author page) 2552 * 2553 * @since bbPress (r2652) 2554 * 2555 * @return bool 2556 */ 2557 function bbp_is_favorites () { 2558 return (bool) is_author(); 2559 } 2560 2548 2561 /** END is_ Functions *********************************************************/ 2562 2563 /** START Favorites Functions *************************************************/ 2564 2565 /** 2566 * bbp_favorites_link () 2567 * 2568 * Output the link to the user's favorites page (author page) 2569 * 2570 * @package bbPress 2571 * @subpackage Template Tags 2572 * @since bbPress (r2652) 2573 * 2574 * @param int $user_id optional 2575 * @uses bbp_get_favorites_link() 2576 */ 2577 function bbp_favorites_link ( $user_id = 0 ) { 2578 echo bbp_get_favorites_link( $user_id ); 2579 } 2580 /** 2581 * bbp_get_favorites_link () 2582 * 2583 * Return the link to the user's favorites page (author page) 2584 * 2585 * @package bbPress 2586 * @subpackage Template Tags 2587 * @since bbPress (r2652) 2588 * 2589 * @param int $user_id optional 2590 * @uses apply_filters 2591 * @uses get_author_posts_url 2592 * @return string Permanent link to topic 2593 */ 2594 function bbp_get_favorites_link ( $user_id = 0 ) { 2595 return apply_filters( 'bbp_get_favorites_link', get_author_posts_url( $user_id ) ); 2596 } 2597 2598 /** 2599 * bbp_user_favorites_link () 2600 * 2601 * Output the link to the user's favorites page (author page) 2602 * 2603 * @package bbPress 2604 * @subpackage Template Tags 2605 * @since bbPress (r2652) 2606 * 2607 * @param array $add optional 2608 * @param array $rem optional 2609 * @param int $user_id optional 2610 * 2611 * @uses bbp_get_favorites_link() 2612 */ 2613 function bbp_user_favorites_link ( $add = array(), $rem = array(), $user_id = 0 ) { 2614 echo bbp_get_user_favorites_link( $add, $rem, $user_id ); 2615 } 2616 /** 2617 * bbp_get_user_favorites_link () 2618 * 2619 * Return the link to the user's favorites page (author page) 2620 * 2621 * @package bbPress 2622 * @subpackage Template Tags 2623 * @since bbPress (r2652) 2624 * 2625 * @param array $add optional 2626 * @param array $rem optional 2627 * @param int $user_id optional 2628 * 2629 * @uses apply_filters 2630 * @uses get_author_posts_url 2631 * @return string Permanent link to topic 2632 */ 2633 function bbp_get_user_favorites_link ( $add = array(), $rem = array(), $user_id = 0 ) { 2634 global $current_user; 2635 wp_get_current_user(); 2636 2637 if ( !$user_id && !$user_id = $current_user->ID ) 2638 return; 2639 2640 $topic = get_post( bbp_get_topic_id() ); 2641 2642 if ( empty( $add ) || !is_array( $add ) ) 2643 $add = array( 'mid' => __( 'Add this topic to your favorites', 'bbpress' ), 'post' => __( ' (%?%)', 'bbpress' ) ); 2644 2645 if ( empty( $rem ) || !is_array( $rem ) ) 2646 $rem = array( 'pre' => __( 'This topic is one of your %favorites% [', 'bbpress' ), 'mid' => __( '×', 'bbpress' ), 'post' => __( ']', 'bbpress' ) ); 2647 2648 if ( !current_user_can( 'edit_user', (int) $user_id ) ) 2649 return false; 2650 2651 $url = esc_url( bbp_get_favorites_link( $user_id ) ); 2652 2653 if ( bbp_is_user_favorite( $user_id, $topic->ID ) ) { 2654 $rem = preg_replace( '|%(.+)%|', "<a href='$url'>$1</a>", $rem ); 2655 $favs = array( 'fav' => '0', 'topic_id' => $topic->ID ); 2656 $pre = ( is_array( $rem ) && isset( $rem['pre'] ) ) ? $rem['pre'] : ''; 2657 $mid = ( is_array( $rem ) && isset( $rem['mid'] ) ) ? $rem['mid'] : ( is_string( $rem ) ? $rem : '' ); 2658 $post = ( is_array( $rem ) && isset( $rem['post'] ) ) ? $rem['post'] : ''; 2659 } else { 2660 $add = preg_replace( '|%(.+)%|', "<a href='$url'>$1</a>", $add ); 2661 $favs = array( 'fav' => '1', 'topic_id' => $topic->ID ); 2662 $pre = ( is_array( $add ) && isset( $add['pre'] ) ) ? $add['pre'] : ''; 2663 $mid = ( is_array( $add ) && isset( $add['mid'] ) ) ? $add['mid'] : ( is_string( $add ) ? $add : '' ); 2664 $post = ( is_array( $add ) && isset( $add['post'] ) ) ? $add['post'] : ''; 2665 } 2666 2667 $url = esc_url( wp_nonce_url( add_query_arg( $favs, bbp_get_favorites_link( $user_id ) ), 'toggle-favorite_' . $topic->ID ) ); 2668 2669 return apply_filters( 'bbp_get_user_favorites_link', "<span id='favorite-toggle'><span id='favorite-$topic->ID'>$pre<a href='$url' class='dim:favorite-toggle:favorite-$topic->ID:is-favorite'>$mid</a>$post</span></span>" ); 2670 } 2671 2672 /** END Favorites Functions ***************************************************/ 2549 2673 2550 2674 /** START User Functions ******************************************************/ … … 2647 2771 * @uses wp_nonce_field, bbp_forum_id 2648 2772 */ 2649 function bbp_new_topic_form_fields () { 2650 2773 function bbp_new_topic_form_fields () { 2774 2651 2775 if ( bbp_is_forum() ) : ?> 2652 2776 -
branches/plugin/bbp-themes/bbp-twentyten/loop-bbp_topics.php
r2628 r2652 8 8 ?> 9 9 10 <?php if ( bbp_has_topics() ) : ?> 10 <?php 11 if ( !bbp_is_favorites() ) : 12 $_bbp_query = bbp_has_topics(); 13 else : 14 $_bbp_query = true; 15 endif; 16 ?> 17 18 <?php if ( $_bbp_query ) : ?> 11 19 12 20 <?php get_template_part( 'pagination', 'bbp_topics' ); ?> -
branches/plugin/bbp-themes/bbp-twentyten/single-bbp_topic.php
r2635 r2652 20 20 21 21 <?php bbp_topic_tag_list(); ?> 22 23 <?php bbp_user_favorites_link(); ?> 24 25 <div id="ajax-response"></div> 22 26 23 27 <table class="bbp-topic" id="bbp-topic-<?php bbp_topic_id(); ?>"> -
branches/plugin/bbpress.php
r2650 r2652 88 88 89 89 // Unique identifiers 90 $this->forum_id = apply_filters( 'bbp_forum_post_type', 'bbp_forum' );91 $this->topic_id = apply_filters( 'bbp_topic_post_type', 'bbp_topic' );92 $this->reply_id = apply_filters( 'bbp_reply_post_type', 'bbp_reply' );90 $this->forum_id = apply_filters( 'bbp_forum_post_type', 'bbp_forum' ); 91 $this->topic_id = apply_filters( 'bbp_topic_post_type', 'bbp_topic' ); 92 $this->reply_id = apply_filters( 'bbp_reply_post_type', 'bbp_reply' ); 93 93 $this->topic_tag_id = apply_filters( 'bbp_topic_tag_id', 'bbp_topic_tag' ); 94 94 … … 113 113 114 114 // Load the files 115 require_once ( $this->plugin_dir . '/bbp-includes/bbp-loader.php' );116 require_once ( $this->plugin_dir . '/bbp-includes/bbp-caps.php' );117 require_once ( $this->plugin_dir . '/bbp-includes/bbp-filters.php' );118 require_once ( $this->plugin_dir . '/bbp-includes/bbp-classes.php' );115 require_once ( $this->plugin_dir . '/bbp-includes/bbp-loader.php' ); 116 require_once ( $this->plugin_dir . '/bbp-includes/bbp-caps.php' ); 117 require_once ( $this->plugin_dir . '/bbp-includes/bbp-filters.php' ); 118 require_once ( $this->plugin_dir . '/bbp-includes/bbp-classes.php' ); 119 119 require_once ( $this->plugin_dir . '/bbp-includes/bbp-functions.php' ); 120 require_once ( $this->plugin_dir . '/bbp-includes/bbp-template.php' ); 120 require_once ( $this->plugin_dir . '/bbp-includes/bbp-users.php' ); 121 require_once ( $this->plugin_dir . '/bbp-includes/bbp-template.php' ); 121 122 122 123 // Quick admin check and load if needed
Note: See TracChangeset
for help on using the changeset viewer.