Skip to:
Content

bbPress.org

Changeset 2970


Ignore:
Timestamp:
04/01/2011 01:33:09 AM (14 years ago)
Author:
johnjamesjacoby
Message:

Adjustments to login and register forms to improve behavior and functionality.
Various documentation fixes.
Rename _bbp_topic_status meta to _bbp_status, and add migration routine to updater.
Sanity checks on $wp_query in bbp_pre_get_posts.

Fixes #1476, #1493. Props GautamGupta for original diff.

Location:
branches/plugin
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • branches/plugin/bbp-includes/bbp-general-functions.php

    r2957 r2970  
    116116/**
    117117 * The plugin version of bbPress comes with two topic display options:
    118  *     ~ Traditional - Topics are included in the reply loop (default)
    119  *     ~ New Style   - Topics appear as "lead" posts, ahead of replies
     118 * - Traditional: Topics are included in the reply loop (default)
     119 * - New Style: Topics appear as "lead" posts, ahead of replies
    120120 *
    121121 * @since bbPress (r2954)
    122122 *
    123  * @global obj $bbp
    124123 * @param $show_lead Optional. Default false
    125  * @return bool
     124 * @return bool Yes if the topic appears as a lead, otherwise false
    126125 */
    127126function bbp_show_lead_topic( $show_lead = false ) {
     
    158157 * Append 'view=all' to query string if it's already there from referer
    159158 *
    160  * @param string $original_link
    161  * @return <type>
     159 * @param string $original_link Original Link to be modified
     160 * @uses current_user_can() To check if the current user can moderate
     161 * @uses add_query_arg() To add args to the url
     162 * @uses apply_filters() Calls 'bbp_add_view_all' with the link and original link
     163 * @return string The link with 'view=all' appended if necessary
    162164 */
    163165function bbp_add_view_all( $original_link ) {
     
    202204 * @param array $data Post data
    203205 * @param array $postarr Original post array (includes post id)
     206 * @uses bbp_get_topic_post_type() To get the topic post type
     207 * @uses bbp_get_reply_post_type() To get the reply post type
    204208 * @uses bbp_is_topic_anonymous() To check if the topic is by an anonymous user
    205209 * @uses bbp_is_reply_anonymous() To check if the reply is by an anonymous user
     
    259263 *  - count_empty_tags: Count empty tags?
    260264 * @uses bbp_count_users() To count the number of registered users
     265 * @uses bbp_get_forum_post_type() To get the forum post type
     266 * @uses bbp_get_topic_post_type() To get the topic post type
     267 * @uses bbp_get_reply_post_type() To get the reply post type
    261268 * @uses wp_count_posts() To count the number of forums, topics and replies
    262269 * @uses wp_count_terms() To count the number of topic tags
     
    537544    // Assign variables
    538545    $defaults = array (
    539         'bbp_anonymous_name'    => $_POST['bbp_anonymous_name'],
    540         'bbp_anonymous_email'   => $_POST['bbp_anonymous_email'],
    541         'bbp_anonymous_website' => $_POST['bbp_anonymous_website'],
    542         'bbp_anonymous_ip'      => $_SERVER['REMOTE_ADDR']
     546        'bbp_anonymous_name'    => !empty( $_POST['bbp_anonymous_name']    ) ? $_POST['bbp_anonymous_name']    : false,
     547        'bbp_anonymous_email'   => !empty( $_POST['bbp_anonymous_email']   ) ? $_POST['bbp_anonymous_email']   : false,
     548        'bbp_anonymous_website' => !empty( $_POST['bbp_anonymous_website'] ) ? $_POST['bbp_anonymous_website'] : false,
     549        'bbp_anonymous_ip'      => !empty( $_SERVER['REMOTE_ADDR']         ) ? $_SERVER['REMOTE_ADDR']         : false
    543550    );
    544551
     
    680687 *
    681688 * @uses bbp_is_user_profile_page() To check if it's a profile page
     689 * @uses apply_filters() Calls 'bbp_profile_templates' with the profile
     690 *                        templates array
    682691 * @uses bbp_is_user_profile_edit() To check if it's a profile edit page
     692 * @uses apply_filters() Calls 'bbp_profile_edit_templates' with the profile
     693 *                        edit templates array
     694 * @uses bbp_is_view() To check if it's a view page
     695 * @uses bbp_get_view_id() To get the view id
     696 * @uses apply_filters() Calls 'bbp_view_templates' with the view templates array
    683697 * @uses bbp_is_topic_edit() To check if it's a topic edit page
     698 * @uses bbp_get_topic_post_type() To get the topic post type
     699 * @uses apply_filters() Calls 'bbp_topic_edit_templates' with the topic edit
     700 *                        templates array
    684701 * @uses bbp_is_reply_edit() To check if it's a reply edit page
     702 * @uses bbp_get_reply_post_type() To get the reply post type
     703 * @uses apply_filters() Calls 'bbp_reply_edit_templates' with the reply edit
     704 *                        templates array
    685705 * @uses apply_filters() Calls 'bbp_custom_template' with the template array
    686706 * @uses bbp_load_template() To load the template
     
    707727            'bbpress/user-edit.php',
    708728            'user-edit.php',
     729            'forums/user.php',
    709730            'bbpress/user.php',
    710731            'user.php',
     
    717738        $template = apply_filters( 'bbp_view_templates', array(
    718739            'forums/view-' . bbp_get_view_id(),
     740            'bbpress/view-' . bbp_get_view_id(),
    719741            'forums/view.php',
    720             'bbpress/view-' . bbp_get_view_id(),
    721742            'bbpress/view.php',
    722743            'view-' . bbp_get_view_id(),
     
    729750        $template = array(
    730751            'forums/action-edit.php',
     752            'bbpress/action-edit.php',
    731753            'forums/single-' . bbp_get_topic_post_type(),
    732             'bbpress/action-edit.php',
    733754            'bbpress/single-' . bbp_get_topic_post_type(),
    734755            'action-bbp-edit.php',
     
    740761        // Add split/merge to front of array if present in _GET
    741762        if ( !empty( $_GET['action'] ) && in_array( $_GET['action'], array( 'merge', 'split' ) ) ) {
    742             array_unshift( $template, array(
     763            array_unshift( $template,
    743764                'forums/action-split-merge.php',
    744765                'bbpress/action-split-merge.php',
    745                 'action-bbp-split-merge.php'
    746             ) );
     766                'action-split-merge.php'
     767            );
    747768        }
    748769
     
    753774        $template = apply_filters( 'bbp_reply_edit_templates', array(
    754775            'forums/action-edit.php',
     776            'bbpress/action-edit.php',
    755777            'forums/single-' . bbp_get_reply_post_type(),
    756             'bbpress/action-edit.php',
    757778            'bbpress/single-' . bbp_get_reply_post_type(),
    758779            'action-bbp-edit.php',
     
    778799 */
    779800function bbp_load_template( $files ) {
     801
     802    // Bail if nothing passed
    780803    if ( empty( $files ) )
    781804        return;
     
    788811    if ( locate_template( $files, true ) )
    789812        exit();
    790 
    791     return;
    792813}
    793814
     
    811832 *
    812833 * @uses get_query_var() To get {@link WP_Query} query var
     834 * @uses is_email() To check if the string is an email
     835 * @uses get_user_by() To try to get the user by email and nicename
    813836 * @uses WP_User to get the user data
    814837 * @uses WP_Query::set_404() To set a 404 status
    815  * @uses is_multisite() To check if it's a multisite
    816838 * @uses current_user_can() To check if the current user can edit the user
    817839 * @uses apply_filters() Calls 'enable_edit_any_user_configuration' with true
    818840 * @uses wp_die() To die
     841 * @uses bbp_get_query_name() To get the query name and check if it's 'bbp_widget'
     842 * @uses bbp_get_view_query_args() To get the view query args
     843 * @uses bbp_get_topic_post_type() To get the topic post type
     844 * @uses bbp_get_reply_post_type() To get the reply post type
     845 * @uses is_multisite() To check if it's a multisite
     846 * @uses remove_action() To remove the auto save post revision action
    819847 */
    820848function bbp_pre_get_posts( $wp_query ) {
    821849    global $bbp, $wp_version;
    822850
     851    // Bail if $wp_query is empty or of incorrect class
     852    if ( empty( $wp_query ) || ( 'WP_Query' != get_class( $wp_query ) ) )
     853        return $wp_query;
     854
     855    // Get query variables
    823856    $bbp_user = get_query_var( 'bbp_user' );
    824857    $bbp_view = get_query_var( 'bbp_view' );
     
    930963 * @uses bbp_is_user_profile_page() To check if it's a user profile page
    931964 * @uses bbp_is_user_profile_edit() To check if it's a user profile edit page
     965 * @uses bbp_is_user_home() To check if the profile page is of the current user
    932966 * @uses get_query_var() To get the user id
    933967 * @uses get_userdata() To get the user data
     968 * @uses bbp_is_forum() To check if it's a forum
     969 * @uses bbp_get_forum_title() To get the forum title
     970 * @uses bbp_is_topic() To check if it's a topic
     971 * @uses bbp_get_topic_title() To get the topic title
     972 * @uses bbp_is_reply() To check if it's a reply
     973 * @uses bbp_get_reply_title() To get the reply title
     974 * @uses is_tax() To check if it's the tag page
     975 * @uses get_queried_object() To get the queried object
     976 * @uses bbp_is_view() To check if it's a view
     977 * @uses bbp_get_view_title() To get the view title
    934978 * @uses apply_filters() Calls 'bbp_raw_title' with the title
    935979 * @uses apply_filters() Calls 'bbp_profile_page_wp_title' with the title,
     
    10151059    }
    10161060
    1017     $title = apply_filters( 'bbp_title', $title, $sep, $seplocation );
    1018 
    1019     return $title;
     1061    // Filter and return
     1062    return apply_filters( 'bbp_title', $title, $sep, $seplocation );
    10201063}
    10211064
     
    10701113        return false;
    10711114
    1072     $reply_id = $reply->ID;
    1073     $topic_id = $topic->ID;
    1074 
    1075     do_action( 'bbp_pre_notify_subscribers', $reply_id, $topic_id );
     1115    do_action( 'bbp_pre_notify_subscribers', $reply->ID, $topic->ID );
    10761116
    10771117    // Get the users who have favorited the topic and have subscriptions on
    1078     if ( !$user_ids = bbp_get_topic_subscribers( $topic_id, true ) )
    1079         return false;
    1080 
     1118    if ( !$user_ids = bbp_get_topic_subscribers( $topic->ID, true ) )
     1119        return false;
     1120
     1121    // Loop through users
    10811122    foreach ( (array) $user_ids as $user_id ) {
    10821123
     
    10861127
    10871128        // For plugins
    1088         if ( !$message = apply_filters( 'bbp_subscription_mail_message', __( "%1\$s wrote:\n\n%2\$s\n\nPost Link: %3\$s\n\nYou're getting this mail because you subscribed to the topic, visit the topic and login to unsubscribe." ), $reply_id, $topic_id, $user_id ) )
     1129        if ( !$message = apply_filters( 'bbp_subscription_mail_message', __( "%1\$s wrote:\n\n%2\$s\n\nPost Link: %3\$s\n\nYou're getting this mail because you subscribed to the topic, visit the topic and login to unsubscribe." ), $reply->ID, $topic->ID, $user_id ) )
    10891130            continue;
    10901131
     1132        // Get user data of this user
    10911133        $user = get_userdata( $user_id );
    10921134
     1135        // Send notification email
    10931136        wp_mail(
    10941137            $user->user_email,
    1095             apply_filters( 'bbp_subscription_mail_title', '[' . get_option( 'blogname' ) . '] ' . $topic->post_title, $reply_id, $topic_id ),
    1096             sprintf( $message, $poster_name, strip_tags( $reply->post_content ), bbp_get_reply_permalink( $reply_id ) )
     1138            apply_filters( 'bbp_subscription_mail_title', '[' . get_option( 'blogname' ) . '] ' . $topic->post_title, $reply->ID, $topic->ID ),
     1139            sprintf( $message, $poster_name, strip_tags( $reply->post_content ), bbp_get_reply_permalink( $reply->ID ) )
    10971140        );
    10981141    }
    10991142
    1100     do_action( 'bbp_post_notify_subscribers', $reply_id, $topic_id );
     1143    do_action( 'bbp_post_notify_subscribers', $reply->ID, $topic->ID );
    11011144
    11021145    return true;
     
    11331176 */
    11341177function bbp_logout_url( $url = '', $redirect_to = '' ) {
    1135     if ( !isset( $_SERVER['REDIRECT_URL'] ) || !$redirect_to = home_url( $_SERVER['REDIRECT_URL'] ) )
     1178
     1179    // Rejig the $redirect_to
     1180    if ( !isset( $_SERVER['REDIRECT_URL'] ) || ( !$redirect_to = home_url( $_SERVER['REDIRECT_URL'] ) ) )
    11361181        $redirect_to = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : '';
    11371182
     1183    // Make sure we are directing somewhere
    11381184    if ( empty( $redirect_to ) )
    11391185        $redirect_to = home_url( isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : '' );
    11401186
    1141     $url = add_query_arg( array( 'redirect_to' => esc_url( $redirect_to ) ), $url );
    1142 
     1187    // Sanitize $redirect_to and add it to full $url
     1188    $redirect_to = esc_url( add_query_arg( array( 'loggedout'   => 'true'       ), $redirect_to ) );
     1189    $url         =          add_query_arg( array( 'redirect_to' => $redirect_to ), $url           );
     1190
     1191    // Filter and return
    11431192    return apply_filters( 'bbp_logout_url', $url, $redirect_to );
    11441193}
     
    11491198 * Query the DB and get the last public post_id that has parent_id as post_parent
    11501199 *
    1151  * @global db $wpdb
    1152  * @param int $parent_id
    1153  * @param string $post_type
     1200 * @param int $parent_id Parent id
     1201 * @param string $post_type Post type. Defaults to 'post'
     1202 * @uses bbp_get_topic_post_type() To get the topic post type
     1203 * @uses wp_cache_get() To check if there is a cache of the last child id
     1204 * @uses wpdb::prepare() To prepare the query
     1205 * @uses wpdb::get_var() To get the result of the query in a variable
     1206 * @uses wp_cache_set() To set the cache for future use
     1207 * @uses apply_filters() Calls 'bbp_get_public_child_last_id' with the child
     1208 *                        id, parent id and post type
    11541209 * @return int The last active post_id
    11551210 */
     
    11571212    global $wpdb;
    11581213
     1214    // Bail if nothing passed
    11591215    if ( empty( $parent_id ) )
    11601216        return false;
    11611217
    11621218    // The ID of the cached query
    1163     $cache_id = 'bbp_parent_' . $parent_id . '_type_' . $post_type . '_child_last_id';
    1164 
     1219    $cache_id    = 'bbp_parent_' . $parent_id . '_type_' . $post_type . '_child_last_id';
     1220    $post_status = array( 'publish' );
     1221
     1222    // Add closed status if topic post type
     1223    if ( $post_type == bbp_get_topic_post_type() )
     1224        $post_status[] = $bbp->closed_status_id;
     1225
     1226    // Join post statuses together
     1227    $post_status = "'" . join( "', '", $post_status ) . "'";
     1228
     1229    // Check for cache and set if needed
    11651230    if ( !$child_id = wp_cache_get( $cache_id, 'bbpress' ) ) {
    1166         $child_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_parent = %d AND post_status = 'publish' AND post_type = '%s' ORDER BY ID DESC LIMIT 1;", $parent_id, $post_type ) );
     1231        $child_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_parent = %d AND post_status IN ( {$post_status} ) AND post_type = '%s' ORDER BY ID DESC LIMIT 1;", $parent_id, $post_type ) );
    11671232        wp_cache_set( $cache_id, $child_id, 'bbpress' );
    11681233    }
    11691234
     1235    // Filter and return
    11701236    return apply_filters( 'bbp_get_public_child_last_id', (int) $child_id, (int) $parent_id, $post_type );
    11711237}
     
    11741240 * Query the DB and get a count of public children
    11751241 *
    1176  * @global db $wpdb
    1177  * @param int $parent_id
    1178  * @param string $post_type
     1242 * @param int $parent_id Parent id
     1243 * @param string $post_type Post type. Defaults to 'post'
     1244 * @uses bbp_get_topic_post_type() To get the topic post type
     1245 * @uses wp_cache_get() To check if there is a cache of the children count
     1246 * @uses wpdb::prepare() To prepare the query
     1247 * @uses wpdb::get_var() To get the result of the query in a variable
     1248 * @uses wp_cache_set() To set the cache for future use
     1249 * @uses apply_filters() Calls 'bbp_get_public_child_count' with the child
     1250 *                        count, parent id and post type
    11791251 * @return int The number of children
    11801252 */
     
    11821254    global $wpdb, $bbp;
    11831255
     1256    // Bail if nothing passed
    11841257    if ( empty( $parent_id ) )
    11851258        return false;
    11861259
    11871260    // The ID of the cached query
    1188     $cache_id = 'bbp_parent_' . $parent_id . '_type_' . $post_type . '_child_count';
    1189 
     1261    $cache_id    = 'bbp_parent_' . $parent_id . '_type_' . $post_type . '_child_count';
     1262    $post_status = array( 'publish' );
     1263
     1264    // Add closed status if topic post type
     1265    if ( $post_type == bbp_get_topic_post_type() )
     1266        $post_status[] = $bbp->closed_status_id;
     1267
     1268    // Join post statuses together
     1269    $post_status = "'" . join( "', '", $post_status ) . "'";
     1270
     1271    // Check for cache and set if needed
    11901272    if ( !$child_count = wp_cache_get( $cache_id, 'bbpress' ) ) {
    1191         $child_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_parent = %d AND post_status IN ( '" . join( "', '", array( 'publish', $bbp->closed_status_id ) ) . "' ) AND post_type = '%s';", $parent_id, $post_type ) );
     1273        $child_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_parent = %d AND post_status IN ( {$post_status} ) AND post_type = '%s';", $parent_id, $post_type ) );
    11921274        wp_cache_set( $cache_id, $child_count, 'bbpress' );
    11931275    }
    11941276
     1277    // Filter and return
    11951278    return apply_filters( 'bbp_get_public_child_count', (int) $child_count, (int) $parent_id, $post_type );
    11961279}
    11971280
    11981281/**
    1199  * Query the DB and get a the child ID's of public children
    1200  *
    1201  * @global db $wpdb
    1202  * @param int $parent_id
    1203  * @param string $post_type
    1204  * @return int The number of children
     1282 * Query the DB and get a the child id's of public children
     1283 *
     1284 * @param int $parent_id Parent id
     1285 * @param string $post_type Post type. Defaults to 'post'
     1286 * @uses bbp_get_topic_post_type() To get the topic post type
     1287 * @uses wp_cache_get() To check if there is a cache of the children
     1288 * @uses wpdb::prepare() To prepare the query
     1289 * @uses wpdb::get_col() To get the result of the query in an array
     1290 * @uses wp_cache_set() To set the cache for future use
     1291 * @uses apply_filters() Calls 'bbp_get_public_child_ids' with the child ids,
     1292 *                        parent id and post type
     1293 * @return array The array of children
    12051294 */
    12061295function bbp_get_public_child_ids( $parent_id = 0, $post_type = 'post' ) {
    12071296    global $wpdb, $bbp;
    12081297
     1298    // Bail if nothing passed
    12091299    if ( empty( $parent_id ) )
    12101300        return false;
    12111301
    12121302    // The ID of the cached query
    1213     $cache_id = 'bbp_parent_' . $parent_id . '_type_' . $post_type . '_child_ids';
    1214 
     1303    $cache_id    = 'bbp_parent_' . $parent_id . '_type_' . $post_type . '_child_ids';
     1304    $post_status = array( 'publish' );
     1305
     1306    // Add closed status if topic post type
     1307    if ( $post_type == bbp_get_topic_post_type() )
     1308        $post_status[] = $bbp->closed_status_id;
     1309
     1310    // Join post statuses together
     1311    $post_status = "'" . join( "', '", $post_status ) . "'";
     1312
     1313    // Check for cache and set if needed
    12151314    if ( !$child_ids = wp_cache_get( $cache_id, 'bbpress' ) ) {
    1216         $child_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_parent = %d AND post_status IN ( '" . join( "', '", array( 'publish', $bbp->closed_status_id ) ) . "' ) AND post_type = '%s' ORDER BY ID DESC;", $parent_id, $post_type ) );
     1315        $child_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_parent = %d AND post_status IN ( {$post_status} ) AND post_type = '%s' ORDER BY ID DESC;", $parent_id, $post_type ) );
    12171316        wp_cache_set( $cache_id, $child_ids, 'bbpress' );
    12181317    }
    12191318
     1319    // Filter and return
    12201320    return apply_filters( 'bbp_get_public_child_ids', $child_ids, (int) $parent_id, $post_type );
    12211321}
  • branches/plugin/bbp-includes/bbp-general-template.php

    r2927 r2970  
    3939 * @since bbPress (r2549)
    4040 *
    41  * @uses WP_Query
    42  *
    4341 * @param int $post_id Possible post_id to check
    44  * @return bool
     42 * @uses bbp_get_forum_post_type() To get the forum post type
     43 * @uses is_singular() To check if it's the single post page
     44 * @uses get_post_field() To get the post type of the post id
     45 * @uses WP_Query To make some checks
     46 * @return bool True if it's a forum page, false if not
    4547 */
    4648function bbp_is_forum( $post_id = 0 ) {
     
    6971 * @since bbPress (r2549)
    7072 *
    71  * @uses WP_Query
    72  * @uses bbp_is_topic_edit() To check if it's a topic edit page
    73  *
    7473 * @param int $post_id Possible post_id to check
    75  * @return bool
     74 *
     75 * @uses bbp_is_topic_edit() To return false if it's a topic edit page
     76 * @uses bbp_get_topic_post_type() To get the topic post type
     77 * @uses is_singular() To check if it's the single post page
     78 * @uses get_post_field() To get the post type of the post id
     79 * @uses WP_Query To make some checks
     80 * @return bool True if it's a topic page, false if not
    7681 */
    7782function bbp_is_topic( $post_id = 0 ) {
     
    105110 *
    106111 * @uses WP_Query Checks if WP_Query::bbp_is_topic_edit is true
    107  * @return bool
     112 * @return bool True if it's the topic edit page, false if not
    108113 */
    109114function bbp_is_topic_edit() {
     
    122127 *
    123128 * @uses bbp_is_topic_edit() To check if it's a topic edit page
    124  * @return bool
     129 * @return bool True if it's the topic merge page, false if not
    125130 */
    126131function bbp_is_topic_merge() {
     
    138143 *
    139144 * @uses bbp_is_topic_edit() To check if it's a topic edit page
    140  * @return bool
     145 * @return bool True if it's the topic split page, false if not
    141146 */
    142147function bbp_is_topic_split() {
     
    153158 * @since bbPress (r2549)
    154159 *
    155  * @uses WP_Query
    156  * @uses bbp_is_reply_edit() To check if it's a reply edit page
    157  *
    158160 * @param int $post_id Possible post_id to check
    159  * @return bool
     161 * @uses bbp_is_reply_edit() To return false if it's a reply edit page
     162 * @uses bbp_get_reply_post_type() To get the reply post type
     163 * @uses is_singular() To check if it's the single post page
     164 * @uses get_post_field() To get the post type of the post id
     165 * @uses WP_Query To make some checks
     166 * @return bool True if it's a reply page, false if not
    160167 */
    161168function bbp_is_reply( $post_id = 0 ) {
     
    189196 *
    190197 * @uses WP_Query Checks if WP_Query::bbp_is_reply_edit is true
    191  * @return bool
     198 * @return bool True if it's the reply edit page, false if not
    192199 */
    193200function bbp_is_reply_edit() {
     
    211218 * @uses bbp_is_user_profile_page() To check if it's the user profile page
    212219 * @uses bbp_get_query_name() To get the query name
    213  * @return bool
     220 * @return bool True if it's the favorites page, false if not
    214221 */
    215222function bbp_is_favorites( $query_name_check = true ) {
     
    234241 * @uses bbp_is_user_profile_page() To check if it's the user profile page
    235242 * @uses bbp_get_query_name() To get the query name
    236  * @return bool
     243 * @return bool True if it's the subscriptions page, false if not
    237244 */
    238245function bbp_is_subscriptions( $query_name_check = true ) {
     
    258265 * @uses bbp_is_user_profile_page() To check if it's the user profile page
    259266 * @uses bbp_get_query_name() To get the query name
    260  * @return bool
     267 * @return bool True if it's the topics created page, false if not
    261268 */
    262269function bbp_is_topics_created( $query_name_check = true ) {
     
    273280 * Check if current page is the currently logged in users author page
    274281 *
     282 * @since bbPress (r2688)
     283 *
    275284 * @uses bbPres Checks if bbPress::displayed_user is set and if
    276285 *               bbPress::displayed_user::ID equals bbPress::current_user::ID
    277286 *               or not
    278  * @return bool
     287 * @return bool True if it's the user's home, false if not
    279288 */
    280289function bbp_is_user_home() {
     
    293302 *
    294303 * @uses WP_Query Checks if WP_Query::bbp_is_user_profile_page is set to true
    295  * @return bool
     304 * @return bool True if it's a user's profile page, false if not
    296305 */
    297306function bbp_is_user_profile_page() {
     
    310319 *
    311320 * @uses WP_Query Checks if WP_Query::bbp_is_user_profile_edit is set to true
    312  * @return bool
     321 * @return bool True if it's a user's profile edit page, false if not
    313322 */
    314323function bbp_is_user_profile_edit() {
     
    345354 * @param array $wp_classes
    346355 * @param array $custom_classes
    347  *
    348356 * @uses bbp_is_forum()
    349357 * @uses bbp_is_topic()
     
    361369 * @uses bbp_is_favorites()
    362370 * @uses bbp_is_topics_created()
    363  *
    364  * @return array
     371 * @return array Body Classes
    365372 */
    366373function bbp_body_class( $wp_classes, $custom_classes = false ) {
     
    478485        $url = $_SERVER['REQUEST_URI'];
    479486
    480     $url = (string) esc_attr( $url );
     487    // Remove loggedout query arg if it's there
     488    $url = (string) esc_attr( remove_query_arg( 'loggedout', $url ) );
    481489
    482490    $referer_field = '<input type="hidden" name="redirect_to" value="' . $url . '" />';
     
    631639     * @uses current_user_can() To check if the current user can read
    632640     *                           private forums
     641     * @uses bbp_get_forum_post_type() To get the forum post type
     642     * @uses bbp_get_topic_post_type() To get the topic post type
    633643     * @uses walk_page_dropdown_tree() To generate the dropdown using the
    634644     *                                  walker
     
    10091019 * @since bbPress (r2692)
    10101020 *
    1011  * @uses bbp_set_query_name() To set the query var '_bbp_query_name' to ''
     1021 * @uses bbp_set_query_name() To set the query var '_bbp_query_name' value to ''
    10121022 */
    10131023function bbp_reset_query_name() {
     
    10511061     * @uses bbp_get_reply_permalink() To get the reply link
    10521062     * @uses get_permalink() To get the permalink
     1063     * @uses bbp_get_forum_post_type() To get the forum post type
     1064     * @uses bbp_get_topic_post_type() To get the topic post type
     1065     * @uses bbp_get_reply_post_type() To get the reply post type
    10531066     * @uses bbp_get_forum_title() To get the forum title
    10541067     * @uses bbp_get_topic_title() To get the topic title
     
    11421155    }
    11431156
    1144 /** Errors ********************************************************************/
    1145 
    1146 /**
    1147  * Display possible error messages inside a template file
     1157/** Errors & Messages *********************************************************/
     1158
     1159/**
     1160 * Display possible errors & messages inside a template file
    11481161 *
    11491162 * @since bbPress (r2688)
     
    11541167 * @uses is_wp_error() To check if it's a {@link WP_Error}
    11551168 */
    1156 function bbp_error_messages() {
     1169function bbp_template_notices() {
    11571170    global $bbp;
    11581171
    1159     if ( isset( $bbp->errors ) && is_wp_error( $bbp->errors ) && $bbp->errors->get_error_codes() ) : ?>
     1172    // Bail if no notices or errors
     1173    if ( !isset( $bbp->errors ) || !is_wp_error( $bbp->errors ) || !$bbp->errors->get_error_codes() )
     1174        return;
     1175
     1176    // Prevent debug notices
     1177    $errors = $messages = array();
     1178
     1179    // Loop through notices
     1180    foreach ( $bbp->errors->get_error_codes() as $code ) {
     1181
     1182        // Get notice severity
     1183        $severity = $bbp->errors->get_error_data( $code );
     1184
     1185        // Loop through notices and separate errors from messages
     1186        foreach ( $bbp->errors->get_error_messages( $code ) as $error ) {
     1187            if ( 'message' == $severity ) {
     1188                $messages[] = $error;
     1189            } else {
     1190                $errors[]   = $error;
     1191            }
     1192        }
     1193    }
     1194
     1195    // Display errors first...
     1196    if ( !empty( $errors ) ) : ?>
    11601197
    11611198        <div class="bbp-template-notice error">
    11621199            <p>
    1163                 <?php echo implode( "</p>\n<p>", $bbp->errors->get_error_messages() ); ?>
     1200                <?php echo implode( "</p>\n<p>", $errors ); ?>
    11641201            </p>
    11651202        </div>
    11661203
    1167 <?php endif;
     1204    <?php endif;
     1205
     1206    // ...and messages last
     1207    if ( !empty( $messages ) ) : ?>
     1208
     1209        <div class="bbp-template-notice">
     1210            <p>
     1211                <?php echo implode( "</p>\n<p>", $messages ); ?>
     1212            </p>
     1213        </div>
     1214
     1215    <?php endif;
    11681216}
    11691217
     
    11931241     */
    11941242    function bbp_get_logout_link( $redirect_to = '' ) {
    1195         return apply_filters( 'bbp_get_logout_link', '<a href="' . wp_logout_url() . '" class="button logout-link">' . __( 'Log Out', 'bbpress' ) . '</a>', $redirect_to );
     1243        return apply_filters( 'bbp_get_logout_link', '<a href="' . wp_logout_url( $redirect_to ) . '" class="button logout-link">' . __( 'Log Out', 'bbpress' ) . '</a>', $redirect_to );
    11961244    }
    11971245
  • branches/plugin/bbp-includes/bbp-hooks.php

    r2965 r2970  
    3636 * bbp_loaded - Attached to 'plugins_loaded' above
    3737 *
    38  * Attach various loader actionss to the bbp_loaded action.
     38 * Attach various loader actions to the bbp_loaded action.
    3939 * The load order helps to load code at the correct time.
    4040 *                                                        v---Load order
     
    4949 * bbp_init - Attached to 'init' above
    5050 *
    51  * Attach various initialization actionss to the init action.
     51 * Attach various initialization actions to the init action.
    5252 * The load order helps to load code at the correct time.
    5353 *                                                    v---Load order
     
    7676add_action( 'widgets_init', create_function( '', 'return register_widget("BBP_Replies_Widget");' ) );
    7777
    78 // Template - Head, foot, errors and notices
    79 add_action( 'wp_head',              'bbp_head'                  );
    80 add_filter( 'wp_title',             'bbp_title',          10, 3 );
    81 add_action( 'wp_footer',            'bbp_footer'                );
    82 add_action( 'bbp_template_notices', 'bbp_error_messages'        );
    83 add_action( 'bbp_template_notices', 'bbp_topic_notices'         );
     78// Template - Head, foot, errors and messages
     79add_action( 'wp_head',              'bbp_head'                    );
     80add_filter( 'wp_title',             'bbp_title',            10, 3 );
     81add_action( 'wp_footer',            'bbp_footer'                  );
     82add_action( 'bbp_loaded',           'bbp_login_notices'           );
     83add_action( 'bbp_head',             'bbp_topic_notices'           );
     84add_action( 'bbp_template_notices', 'bbp_template_notices'        );
    8485
    8586// Add to body class
     
    311312
    312313/**
    313  * On multiblog installations you must first allow themes to be activated and show
    314  * up on the theme selection screen. This function will let the bbPress bundled
    315  * themes show up and bypass this step.
     314 * On multiblog installations you must first allow themes to be activated and
     315 * show up on the theme selection screen. This function will let the bbPress
     316 * bundled themes show up and bypass this step.
    316317 *
    317318 * @since bbPress (r2944)
    318319 *
    319  * @uses is_super_admin()
    320  * @uses apply_filters()
     320 * @uses is_super_admin() To check if the user is site admin
     321 * @uses apply_filters() Calls 'bbp_allowed_themes' with the allowed themes list
    321322 */
    322323function bbp_allowed_themes( $themes ) {
  • branches/plugin/bbp-includes/bbp-topic-functions.php

    r2955 r2970  
    99
    1010/** Post Form Handlers ********************************************************/
     11
     12/**
     13 * Insert a topic.
     14 *
     15 * If $topicarr has 'ID' set to a value, then topic will be updated.
     16 *
     17 * You can set the topic date manually, by setting the values for 'post_date'
     18 * and 'post_date_gmt' keys. You can open or close replies by setting the value
     19 * for 'post_status' key.
     20 *
     21 * The defaults for the parameter $postarr are:
     22 *     'post_status'   - Default is 'draft'.
     23 *     'post_type'     - Default is 'post'.
     24 *     'post_author'   - Default is current user ID ($user_ID). The ID of the user who added the post.
     25 *     'ping_status'   - Default is the value in 'default_ping_status' option.
     26 *                       Whether the attachment can accept pings.
     27 *     'post_parent'   - Default is 0. Set this for the post it belongs to, if any.
     28 *     'menu_order'    - Default is 0. The order it is displayed.
     29 *     'to_ping'       - Whether to ping.
     30 *     'pinged'        - Default is empty string.
     31 *     'post_password' - Default is empty string. The password to access the attachment.
     32 *     'guid'          - Global Unique ID for referencing the attachment.
     33 *     'post_content_filtered' - Post content filtered.
     34 *     'post_excerpt'  - Post excerpt.
     35 *
     36 * @since 1.0.0
     37 *
     38 * @uses $wpdb
     39 * @uses $wp_rewrite
     40 * @uses $user_ID
     41 *
     42 * @uses do_action() Calls 'pre_post_update' on post ID if this is an update.
     43 * @uses do_action() Calls 'edit_post' action on post ID and post data if this is an update.
     44 * @uses do_action() Calls 'save_post' and 'wp_insert_post' on post id and post data just before returning.
     45 * @uses apply_filters() Calls 'wp_insert_post_data' passing $data, $postarr prior to database update or insert.
     46 * @uses wp_transition_post_status()
     47 *
     48 * @param array $postarr Elements that make up post to insert.
     49 * @param bool $wp_error Optional. Allow return of WP_Error on failure.
     50 * @return int|WP_Error The value 0 or WP_Error on failure. The post ID on success.
     51 */
     52function bbp_insert_topic( $post_args = '', $meta_args = '' ) {
     53    global $bbp, $wpdb, $wp_rewrite;
     54
     55    // Default post fields and post meta
     56    $post_defaults = array(
     57
     58        // Pass a topic_id if you want to update rather than insert
     59        'topic_id'              => 0,
     60
     61        // Essential post fields
     62        'post_title'            => '',
     63        'post_content'          => '',
     64        'post_content_filtered' => '',
     65        'post_excerpt'          => '',
     66        'post_author'           => $user_ID,
     67        'post_status'           => 'publish',
     68        'post_type'             => bbp_get_topic_post_type(),
     69        'post_parent'           => 0,
     70        'post_password'         => '',
     71        'menu_order'            => 0,
     72       
     73        // Ping fields - (Not yet used by bbPress core)
     74        'ping_status'           => get_option( 'default_ping_status' ),
     75        'to_ping'               => '',
     76        'pinged'                => '',
     77
     78        // Additional post fields
     79        'guid'                  => '',
     80        'import_id'             => 0,
     81
     82    );
     83
     84    // Parse
     85    $p = wp_parse_args( $post_args, $post_defaults );
     86    extract( $p, EXTR_SKIP );
     87
     88    // Additional parameters for bbPress topics
     89    $meta_defaults = array(
     90
     91        // 'forum_id' typically be synced with post_parent above
     92        'forum_id'              => 0,
     93
     94        // Anonymous user
     95        'anonymous_name'        => '',
     96        'anonymous_email'       => '',
     97        'anonymous_ip'          => '',
     98        'anonymous_website'     => '',
     99
     100        // Reply and voice counts
     101        'anonymous_reply_count' => 0,
     102        'reply_count'           => 0,
     103        'hidden_reply_count'    => 0,
     104        'voice_count'           => 0,
     105
     106        // Last active
     107        'last_active_id'        => 0,
     108        'last_active_time'      => '',
     109        'last_reply_id'         => 0,
     110
     111        // Additional post meta
     112        'revision_log'          => false,
     113        'status'                => '',
     114        'spam_meta_status'      => '',
     115        'pre_trashed_replies'   => '',
     116
     117    );
     118
     119    // Parse
     120    $m = wp_parse_args( $meta_args, $meta_defaults );
     121    extract( $m, EXTR_SKIP );
     122
     123    // Handle the post insertion
     124    $topic = wp_insert_post( $r );
     125
     126    //
     127    foreach( $m as $meta_key => $meta_value ) {
     128        update_post_meta( $topic->ID, '_bbp_' . $meta_key, $meta_value );
     129    }
     130    bbp_update_topic_last_active_id( $topic->ID, $last_active_id );
     131
     132    $post = wp_insert_post( $r );
     133
     134    // Updating an existing post
     135    if ( !empty( $ID ) ) {
     136        $update          = true;
     137        $previous_status = get_post_field( 'post_status', $ID );
     138        $post_ID         = (int) $ID;
     139        $guid            = get_post_field( 'guid', $post_ID );
     140        $post_before     = get_post( $post_ID );
     141
     142    // Not updating
     143    } else {
     144        $update          = false;
     145        $previous_status = 'new';
     146    }
     147   
     148}
    11149
    12150/**
     
    17451883    do_action( 'bbp_close_topic', $topic_id );
    17461884
    1747     add_post_meta( $topic_id, '_bbp_topic_status', $topic['post_status'] );
     1885    add_post_meta( $topic_id, '_bbp_status', $topic['post_status'] );
    17481886
    17491887    $topic['post_status'] = $bbp->closed_status_id;
     
    17811919    do_action( 'bbp_open_topic', $topic_id );
    17821920
    1783     $topic_status         = get_post_meta( $topic_id, '_bbp_topic_status', true );
     1921    $topic_status         = get_post_meta( $topic_id, '_bbp_status', true );
    17841922    $topic['post_status'] = $topic_status;
    17851923
    1786     delete_post_meta( $topic_id, '_bbp_topic_status' );
     1924    delete_post_meta( $topic_id, '_bbp_status' );
    17871925
    17881926    $topic_id = wp_insert_post( $topic );
  • branches/plugin/bbp-includes/bbp-topic-template.php

    r2968 r2970  
    1111
    1212/**
    13  * Return the unique ID of the custom post type for topics
     13 * Output the unique ID of the custom post type for topics
    1414 *
    1515 * @since bbPress (r2857)
    1616 *
    17  * @global bbPress $bbp
    18  * @return string
     17 * @uses bbp_get_topic_post_type() To get the topic post type
    1918 */
    2019function bbp_topic_post_type() {
     
    2625     * @since bbPress (r2857)
    2726     *
    28      * @global bbPress $bbp
    29      * @return string
     27     * @uses apply_filters() Calls 'bbp_get_topic_post_type' with the topic
     28     *                        post type id
     29     * @return string The unique topic post type id
    3030     */
    3131    function bbp_get_topic_post_type() {
    3232        global $bbp;
     33
    3334        return apply_filters( 'bbp_get_topic_post_type', $bbp->topic_post_type );
    3435    }
     
    4243 *
    4344 * @param mixed $args All the arguments supported by {@link WP_Query}
    44  * @uses bbp_is_user_profile_page() To check if it's the profile page
    45  * @uses get_the_ID() To get the id
     45 * @uses current_user_can() To check if the current user can edit other's topics
     46 * @uses bbp_get_topic_post_type() To get the topic post type
    4647 * @uses WP_Query To make query and get the topics
    4748 * @uses is_page() To check if it's a page
    4849 * @uses bbp_is_forum() To check if it's a forum
     50 * @uses bbp_get_forum_id() To get the forum id
    4951 * @uses bbp_get_paged() To get the current page value
    5052 * @uses bbp_get_super_stickies() To get the super stickies
     
    284286     * @uses bbp_is_reply_edit() To check if it's a reply edit page
    285287     * @uses bbp_get_reply_topic_edit() To get the reply topic id
     288     * @uses get_post_field() To get the post's post type
    286289     * @uses WP_Query::post::ID To get the topic id
    287      * @uses apply_filters() Calls 'bbp_get_topic_id' with the topic id
     290     * @uses apply_filters() Calls 'bbp_get_topic_id' with the topic id and
     291     *                        supplied topic id
     292     * @return int The topic id
    288293     */
    289294    function bbp_get_topic_id( $topic_id = 0 ) {
     
    610615     * @uses bbp_get_topic_raw_revision_log() To get the raw revision log
    611616     * @uses bbp_get_topic_author_display_name() To get the topic author
    612      * @uses bbp_get_topic_author_link() To get the topic author link
     617     * @uses bbp_get_author_link() To get the topic author link
    613618     * @uses bbp_convert_date() To convert the date
    614619     * @uses bbp_get_time_since() To get the time in since format
     
    839844 * @uses bbp_get_topic_id() To get the topic id
    840845 * @uses bbp_get_topic_status() To get the topic status
    841  * @return bool True if spam, false if not.
     846 * @return bool True if trashed, false if not.
    842847 */
    843848function bbp_is_topic_trash( $topic_id = 0 ) {
     
    895900     * @uses bbp_is_topic_anonymous() To check if the topic is by an
    896901     *                                 anonymous user
     902     * @uses bbp_get_topic_author_id() To get the topic author id
     903     * @uses get_the_author_meta() To get the display name of the author
     904     * @uses get_post_meta() To get the name of the anonymous poster
    897905     * @uses apply_filters() Calls 'bbp_get_topic_author' with the author
    898906     *                        and topic id
     
    11971205     * @param int $topic_id Optional. Topic id
    11981206     * @uses bbp_get_topic_id() To get topic id
    1199      * @uses get_post_field() To get get topic's parent
     1207     * @uses get_post_meta() To retrieve get topic's forum id meta
     1208     * @uses get_post_field() To get the topic's parent, i.e. forum id
     1209     * @uses bbp_update_topic_forum_id() To update the topic forum id
    12001210     * @uses apply_filters() Calls 'bbp_get_topic_forum_id' with the forum
    1201      *  id and topic id
     1211     *                        id and topic id
    12021212     * @return int Topic forum id
    12031213     */
     
    12201230 * @since bbPress (r2860)
    12211231 *
     1232 * @param int $topic_id Optional. Forum id
    12221233 * @uses bbp_get_topic_last_active_id() To get the topic's last active id
    1223  * @param int $topic_id Optional. Forum id
    12241234 */
    12251235function bbp_topic_last_active_id( $topic_id = 0 ) {
     
    15641574     * @uses apply_filters() Calls 'bbp_get_topic_post_count' with the
    15651575     *                        post count and topic id
    1566      * @return int post count
     1576     * @return int Post count
    15671577     */
    15681578    function bbp_get_topic_post_count( $topic_id = 0 ) {
     
    19271937     * @uses current_user_can() To check if the current user can delete the
    19281938     *                           topic
     1939     * @uses bbp_is_topic_trash() To check if the topic is trashed
    19291940     * @uses bbp_get_topic_status() To get the topic status
    19301941     * @uses add_query_arg() To add custom args to the url
     
    23002311 * @uses bbp_is_topic() To check if it's a topic page
    23012312 * @uses bbp_get_topic_status() To get the topic status
     2313 * @uses bbp_get_topic_id() To get the topic id
     2314 * @uses apply_filters() Calls 'bbp_topic_notices' with the notice text, topic
     2315 *                        status and topic id
     2316 * @uses bbPress::errors::add() To add the notices to the error handler
    23022317 */
    23032318function bbp_topic_notices() {
     
    23312346
    23322347    // Filter notice text and bail if empty
    2333     if ( ! $notice_text = apply_filters( 'bbp_topic_notices', $notice_text, $topic_status, bbp_get_topic_id() ) )
    2334         return; ?>
    2335 
    2336     <div class="bbp-template-notice error">
    2337         <p><?php echo $notice_text; ?></p>
    2338     </div>
    2339 
    2340     <?php
     2348    if ( !$notice_text = apply_filters( 'bbp_topic_notices', $notice_text, $topic_status, bbp_get_topic_id() ) )
     2349        return;
     2350
     2351    $bbp->errors->add( 'topic_notice', $notice_text, 'message' );
    23412352}
    23422353
     
    24162427 * @since bbPress (r2860)
    24172428 *
     2429 * @param array $args See {@link bbp_get_single_topic_description()}
    24182430 * @uses bbp_get_single_topic_description() Return the eventual output
    2419  *
    2420  * @param arr $args Arguments passed to alter output
    24212431 */
    24222432function bbp_single_topic_description( $args = '' ) {
     
    24292439     * @since bbPress (r2860)
    24302440     *
    2431      * @uses wp_parse_args()
    2432      * @uses bbp_get_topic_id()
    2433      * @uses bbp_get_topic_topic_count()
    2434      * @uses bbp_get_topic_reply_count()
    2435      * @uses bbp_get_topic_subtopic_count()
    2436      * @uses bbp_get_topic_freshness_link()
    2437      * @uses bbp_get_topic_last_reply_id()
    2438      * @uses bbp_get_reply_author_avatar()
    2439      * @uses bbp_get_reply_author_link()
    2440      * @uses apply_filters()
    2441      *
    2442      * @param arr $args Arguments passed to alter output
    2443      *
     2441     * @param mixed $args This function supports these arguments:
     2442     *  - topic_id: Topic id
     2443     *  - before: Before the text
     2444     *  - after: After the text
     2445     *  - size: Size of the avatar
     2446     * @uses bbp_get_topic_id() To get the topic id
     2447     * @uses bbp_get_topic_voice_count() To get the topic voice count
     2448     * @uses bbp_get_topic_reply_count() To get the topic reply count
     2449     * @uses bbp_get_topic_freshness_link() To get the topic freshness link
     2450     * @uses bbp_get_topic_last_active_id() To get the topic last active id
     2451     * @uses bbp_get_reply_author_link() To get the reply author link
     2452     * @uses apply_filters() Calls 'bbp_get_single_topic_description' with
     2453     *                        the description and args
    24442454     * @return string Filtered topic description
    24452455     */
  • branches/plugin/bbp-includes/bbp-update.php

    r2955 r2970  
    122122        }
    123123    }
     124
     125    // Rename topic postmeta keys from _bbp_topic_status to _bbp_status
     126    if ( 108 > (int) $db_version ) {
     127
     128        // Rename topic postmeta keys from _bbp_topic_status to _bbp_status
     129        $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->postmeta} SET meta_key = '_bbp_status' WHERE meta_key = '_bbp_topic_status'" ) );
     130
     131        // Set the new DB version
     132        update_option( '_bbp_db_version', '108' );
     133    }
    124134}
    125135add_action( 'init', 'bbp_update', 1 );
  • branches/plugin/bbp-includes/bbp-user-template.php

    r2914 r2970  
    146146        global $user_identity;
    147147
    148         if ( is_user_logged_in() )
    149             $current_user_name = $user_identity;
    150         else
    151             $current_user_name = __( 'Anonymous', 'bbpress' );
     148        $current_user_name = is_user_logged_in() ? $user_identity : __( 'Anonymous', 'bbpress' );
    152149
    153150        return apply_filters( 'bbp_get_current_user_name', $current_user_name );
     
    538535     * @param int $user_id Optional. User id
    539536     * @uses bbp_get_user_profile_url() To get the user profile url
    540      * @uses apply_filters() Calls 'bbp_get_favorites_permalink' with the
    541      *                        user profile url and user id
     537     * @uses apply_filters() Calls 'bbp_get_subscriptions_permalink' with
     538     *                        the user profile url and user id
    542539     * @return string Permanent link to user subscriptions page
    543540     */
     
    759756    global $bbp;
    760757
    761     return _wp_get_user_contactmethods( $bbp->displayed_user );
     758    // Get the core WordPress contact methods
     759    $contact_methods = _wp_get_user_contactmethods( $bbp->displayed_user );
     760
     761    return apply_filters( 'bbp_edit_user_contact_methods', $contact_methods );
    762762}
    763763
    764764/** Login *********************************************************************/
     765
     766/**
     767 * Handle the login and registration template notices
     768 *
     769 * @since bbPress (r2970)
     770 */
     771function bbp_login_notices() {
     772    global $bbp;
     773
     774    // loggedout was passed
     775    if ( !empty( $_GET['loggedout'] ) && ( true == $_GET['loggedout'] ) ) {
     776        $bbp->errors->add( 'loggedout', __( 'You are now logged out.', 'bbpress' ), 'message' );
     777
     778    // registration is disabled
     779    } elseif ( !empty( $_GET['registration'] ) && ( 'disabled' == $_GET['registration'] ) ) {
     780        $bbp->errors->add( 'registerdisabled', __( 'New user registration is currently not allowed.', 'bbpress' ) );
     781
     782    // Prompt user to check their email
     783    } elseif ( !empty( $_GET['checkemail'] ) && in_array( $_GET['checkemail'], array( 'confirm', 'newpass', 'registered' ) ) ) {
     784
     785        switch ( $_GET['checkemail'] ) {
     786
     787            // Email needs confirmation
     788            case 'confirm' :
     789                $bbp->errors->add( 'confirm',    __( 'Check your e-mail for the confirmation link.',     'bbpress' ), 'message' );
     790                break;
     791
     792            // User requested a new password
     793            case 'newpass' :
     794                $bbp->errors->add( 'newpass',    __( 'Check your e-mail for your new password.',         'bbpress' ), 'message' );
     795                break;
     796
     797            // User is newly registered
     798            case 'registered' :
     799                $bbp->errors->add( 'registered', __( 'Registration complete. Please check your e-mail.', 'bbpress' ), 'message' );
     800                break;
     801        }
     802    }
     803}
    765804
    766805/**
     
    779818 */
    780819function bbp_logged_in_redirect( $url = '' ) {
     820
     821    // Bail if user is not logged in
    781822    if ( !is_user_logged_in() )
    782823        return;
    783824
     825    // Setup the profile page to redirect to
    784826    $redirect_to = !empty( $url ) ? $url : bbp_get_user_profile_url( bbp_get_current_user_id() );
     827
     828    // Do a safe redirect and exit
    785829    wp_safe_redirect( $redirect_to );
    786830    exit;
     
    813857 * @since bbPress (r2815)
    814858 *
     859 * @uses bbp_login_url() To get the login url
     860 * @uses bbp_redirect_to_field() To output the redirect to field
    815861 * @uses wp_nonce_field() To generate hidden nonce fields
    816862 */
     
    818864?>
    819865
    820         <input type="hidden" name="action"      value="bbp-user-register" id="bbp_user_register" />
     866        <input type="hidden" name="action"      value="register" />
    821867        <input type="hidden" name="user-cookie" value="1" />
     868
     869        <?php bbp_redirect_to_field( add_query_arg( array( 'checkemail' => 'registered' ), bbp_login_url() ) ); ?>
    822870
    823871        <?php wp_nonce_field( 'bbp-user-register' );
     
    862910     *
    863911     * @param mixed $args Optional. If an integer, it is used as reply id.
    864      * @uses bbp_get_reply_id() To get the reply id
    865912     * @uses bbp_is_topic() To check if it's a topic page
     913     * @uses bbp_get_topic_author_link() To get the topic author link
    866914     * @uses bbp_is_reply() To check if it's a reply page
     915     * @uses bbp_get_reply_author_link() To get the reply author link
     916     * @uses get_post_field() To get the post author
    867917     * @uses bbp_is_reply_anonymous() To check if the reply is by an
    868918     *                                 anonymous user
    869      * @uses bbp_get_reply_author() To get the reply author name
    870      * @uses bbp_get_reply_author_url() To get the reply author url
    871      * @uses bbp_get_reply_author_avatar() To get the reply author avatar
     919     * @uses get_the_author_meta() To get the author name
     920     * @uses bbp_get_user_profile_url() To get the author profile url
     921     * @uses get_avatar() To get the author avatar
    872922     * @uses apply_filters() Calls 'bbp_get_reply_author_link' with the
    873923     *                        author link and args
  • branches/plugin/bbp-includes/bbp-widgets.php

    r2939 r2970  
    6666                    <legend><?php _e( 'Login', 'bbpress' ); ?></legend>
    6767
    68                     <?php do_action( 'bbp_template_notices' ); ?>
    69 
    7068                    <div class="bbp-username">
    7169                        <label for="user_login"><?php _e( 'Username', 'bbpress' ); ?>: </label>
     
    183181     * @param array $instance Instance
    184182     * @uses apply_filters() Calls 'bbp_forum_widget_title' with the title
     183     * @uses get_option() To get the forums per page option
     184     * @uses current_user_can() To check if the current user can read
     185     *                           private() To resety name
     186     * @uses bbp_set_query_name() To set the query name to 'bbp_widget'
     187     * @uses bbp_reset_query_name() To reset the query name
    185188     * @uses bbp_has_forums() The main forum loop
    186189     * @uses bbp_forums() To check whether there are more forums available
     
    315318     * @param array $instance
    316319     * @uses apply_filters() Calls 'bbp_topic_widget_title' with the title
     320     * @uses bbp_set_query_name() To set the query name to 'bbp_widget'
     321     * @uses bbp_reset_query_name() To reset the query name
    317322     * @uses bbp_has_topics() The main topic loop
    318323     * @uses bbp_topics() To check whether there are more topics available
     
    321326     * @uses bbp_topic_permalink() To display the topic permalink
    322327     * @uses bbp_topic_title() To display the topic title
    323      * @uses bbp_get_topic_last_active_time() To get the topic last active time
     328     * @uses bbp_get_topic_last_active_time() To get the topic last active
     329     *                                         time
    324330     * @uses bbp_get_topic_id() To get the topic id
    325331     * @uses bbp_get_topic_reply_count() To get the topic reply count
  • branches/plugin/bbp-themes/bbp-twentyten/bbpress/form-user-login.php

    r2943 r2970  
    1313        <fieldset>
    1414            <legend><?php _e( 'Login', 'bbpress' ); ?></legend>
    15 
    16             <?php do_action( 'bbp_template_notices' ); ?>
    1715
    1816            <div class="bbp-username">
  • branches/plugin/bbp-themes/bbp-twentyten/bbpress/form-user-register.php

    r2943 r2970  
    1010?>
    1111
    12     <form method="post" action="<?php bbp_wp_login_action( array( 'action' => 'register', 'context' => 'login_post' ) ); ?>" class="bbp-login-form">
     12    <form method="post" action="<?php bbp_wp_login_action( array( 'context' => 'login_post' ) ); ?>" class="bbp-login-form">
    1313        <fieldset>
    1414            <legend><?php _e( 'Register', 'bbpress' ); ?></legend>
    15 
    16             <?php do_action( 'bbp_template_notices' ); ?>
    1715
    1816            <div class="bbp-username">
     
    2624            </div>
    2725
     26            <?php do_action( 'register_form' ); ?>
     27
     28            <p id="reg_passmail"><?php _e( 'A password will be e-mailed to you.', 'bbpress' ) ?></p>
     29
    2830            <div class="bbp-submit-wrapper">
    29 
    30                 <?php do_action( 'register_form' ); ?>
    3131
    3232                <button type="submit" name="user-submit" tabindex="<?php bbp_tab_index(); ?>" class="user-submit"><?php _e( 'Register', 'bbpress' ); ?></button>
Note: See TracChangeset for help on using the changeset viewer.