web/wp-content/plugins/bbpress/includes/users/functions.php
author Anthony Ly <anthonyly.com@gmail.com>
Wed, 19 Dec 2012 17:50:20 -0800
changeset 205 a4f7897e21a9
parent 196 5e8dcbe22c24
permissions -rw-r--r--
dump sql
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
196
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     1
<?php
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     2
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     3
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     4
 * bbPress User Functions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     5
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     6
 * @package bbPress
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     7
 * @subpackage Functions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     8
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     9
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    10
// Exit if accessed directly
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    11
if ( !defined( 'ABSPATH' ) ) exit;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    12
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    13
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    14
 * Redirect back to $url when attempting to use the login page
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    15
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    16
 * @since bbPress (r2815)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    17
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    18
 * @param string $url The url
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    19
 * @param string $raw_url Raw url
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    20
 * @param object $user User object
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    21
 * @uses is_wp_error() To check if the user param is a {@link WP_Error}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    22
 * @uses admin_url() To get the admin url
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    23
 * @uses home_url() To get the home url
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    24
 * @uses esc_url() To escape the url
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    25
 * @uses wp_safe_redirect() To redirect
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    26
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    27
function bbp_redirect_login( $url = '', $raw_url = '', $user = '' ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    28
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    29
	// Raw redirect_to was passed, so use it
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    30
	if ( !empty( $raw_url ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    31
		$url = $raw_url;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    32
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    33
	// $url was manually set in wp-login.php to redirect to admin
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    34
	elseif ( admin_url() == $url )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    35
		$url = home_url();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    36
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    37
	// $url is empty
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    38
	elseif ( empty( $url ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    39
		$url = home_url();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    40
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    41
	return apply_filters( 'bbp_redirect_login', $url, $raw_url, $user );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    42
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    43
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    44
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    45
 * Is an anonymous topic/reply being made?
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    46
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    47
 * @since bbPres (r2688)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    48
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    49
 * @uses is_user_logged_in() Is the user logged in?
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    50
 * @uses bbp_allow_anonymous() Is anonymous posting allowed?
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    51
 * @uses apply_filters() Calls 'bbp_is_anonymous' with the return value
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    52
 * @return bool True if anonymous is allowed and user is not logged in, false if
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    53
 *               anonymous is not allowed or user is logged in
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    54
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    55
function bbp_is_anonymous() {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    56
	if ( !is_user_logged_in() && bbp_allow_anonymous() )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    57
		$is_anonymous = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    58
	else
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    59
		$is_anonymous = false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    60
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    61
	return apply_filters( 'bbp_is_anonymous', $is_anonymous );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    62
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    63
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    64
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    65
 * Echoes the values for current poster (uses WP comment cookies)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    66
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    67
 * @since bbPress (r2734)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    68
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    69
 * @param string $key Which value to echo?
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    70
 * @uses bbp_get_current_anonymous_user_data() To get the current anonymous user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    71
 *                                              data
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    72
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    73
function bbp_current_anonymous_user_data( $key = '' ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    74
	echo bbp_get_current_anonymous_user_data( $key );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    75
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    76
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    77
	/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    78
	 * Get the cookies for current poster (uses WP comment cookies).
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    79
	 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    80
	 * @since bbPress (r2734)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    81
	 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    82
	 * @param string $key Optional. Which value to get? If not given, then
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    83
	 *                     an array is returned.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    84
	 * @uses sanitize_comment_cookies() To sanitize the current poster data
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    85
	 * @uses wp_get_current_commenter() To get the current poster data	 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    86
	 * @return string|array Cookie(s) for current poster
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    87
	 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    88
	function bbp_get_current_anonymous_user_data( $key = '' ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    89
		$cookie_names = array(
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    90
			'name'    => 'comment_author',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    91
			'email'   => 'comment_author_email',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    92
			'website' => 'comment_author_url',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    93
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    94
			// Here just for the sake of them, use the above ones
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    95
			'comment_author'       => 'comment_author',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    96
			'comment_author_email' => 'comment_author_email',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    97
			'comment_author_url'   => 'comment_author_url',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    98
		);
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    99
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   100
		sanitize_comment_cookies();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   101
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   102
		$bbp_current_poster = wp_get_current_commenter();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   103
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   104
		if ( !empty( $key ) && in_array( $key, array_keys( $cookie_names ) ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   105
			return $bbp_current_poster[$cookie_names[$key]];
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   106
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   107
		return $bbp_current_poster;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   108
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   109
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   110
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   111
 * Set the cookies for current poster (uses WP comment cookies)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   112
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   113
 * @since bbPress (r2734)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   114
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   115
 * @param array $anonymous_data With keys 'bbp_anonymous_name',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   116
 *                               'bbp_anonymous_email', 'bbp_anonymous_website'.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   117
 *                               Should be sanitized (see
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   118
 *                               {@link bbp_filter_anonymous_post_data()} for
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   119
 *                               sanitization)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   120
 * @uses apply_filters() Calls 'comment_cookie_lifetime' for cookie lifetime.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   121
 *                        Defaults to 30000000.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   122
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   123
function bbp_set_current_anonymous_user_data( $anonymous_data = array() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   124
	if ( empty( $anonymous_data ) || !is_array( $anonymous_data ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   125
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   126
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   127
	$comment_cookie_lifetime = apply_filters( 'comment_cookie_lifetime', 30000000 );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   128
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   129
	setcookie( 'comment_author_'       . COOKIEHASH, $anonymous_data['bbp_anonymous_name'],    time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   130
	setcookie( 'comment_author_email_' . COOKIEHASH, $anonymous_data['bbp_anonymous_email'],   time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   131
	setcookie( 'comment_author_url_'   . COOKIEHASH, $anonymous_data['bbp_anonymous_website'], time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   132
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   133
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   134
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   135
 * Get the poster IP address
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   136
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   137
 * @since bbPress (r3120)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   138
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   139
 * @return string
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   140
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   141
function bbp_current_author_ip() {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   142
	$retval = preg_replace( '/[^0-9a-fA-F:., ]/', '', $_SERVER['REMOTE_ADDR'] );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   143
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   144
	return apply_filters( 'bbp_current_author_ip', $retval );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   145
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   146
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   147
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   148
 * Get the poster user agent
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   149
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   150
 * @since bbPress (r3446)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   151
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   152
 * @return string
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   153
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   154
function bbp_current_author_ua() {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   155
	$retval = !empty( $_SERVER['HTTP_USER_AGENT'] ) ? substr( $_SERVER['HTTP_USER_AGENT'], 0, 254 ) : '';
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   156
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   157
	return apply_filters( 'bbp_current_author_ua', $retval );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   158
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   159
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   160
/** Post Counts ***************************************************************/
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   161
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   162
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   163
 * Return the raw database count of topics by a user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   164
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   165
 * @since bbPress (r3633)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   166
 * @global WPDB $wpdb
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   167
 * @uses bbp_get_user_id()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   168
 * @uses get_posts_by_author_sql()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   169
 * @uses bbp_get_topic_post_type()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   170
 * @uses apply_filters()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   171
 * @return int Raw DB count of topics
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   172
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   173
function bbp_get_user_topic_count_raw( $user_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   174
	$user_id = bbp_get_user_id( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   175
	if ( empty( $user_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   176
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   177
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   178
	global $wpdb;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   179
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   180
	$where = get_posts_by_author_sql( bbp_get_topic_post_type(), true, $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   181
	$count = (int) $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->posts} {$where}" );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   182
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   183
	return (int) apply_filters( 'bbp_get_user_topic_count_raw', $count, $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   184
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   185
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   186
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   187
 * Return the raw database count of replies by a user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   188
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   189
 * @since bbPress (r3633)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   190
 * @global WPDB $wpdb
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   191
 * @uses bbp_get_user_id()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   192
 * @uses get_posts_by_author_sql()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   193
 * @uses bbp_get_reply_post_type()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   194
 * @uses apply_filters()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   195
 * @return int Raw DB count of replies
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   196
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   197
function bbp_get_user_reply_count_raw( $user_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   198
	$user_id = bbp_get_user_id( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   199
	if ( empty( $user_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   200
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   201
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   202
	global $wpdb;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   203
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   204
	$where = get_posts_by_author_sql( bbp_get_reply_post_type(), true, $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   205
	$count = (int) $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->posts} {$where}" );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   206
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   207
	return (int) apply_filters( 'bbp_get_user_reply_count_raw', $count, $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   208
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   209
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   210
/** Favorites *****************************************************************/
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   211
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   212
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   213
 * Get the users who have made the topic favorite
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   214
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   215
 * @since bbPress (r2658)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   216
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   217
 * @param int $topic_id Optional. Topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   218
 * @uses wpdb::get_col() To execute our query and get the column back
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   219
 * @uses apply_filters() Calls 'bbp_get_topic_favoriters' with the users and
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   220
 *                        topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   221
 * @return array|bool Results if the topic has any favoriters, otherwise false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   222
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   223
function bbp_get_topic_favoriters( $topic_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   224
	if ( empty( $topic_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   225
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   226
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   227
	global $wpdb;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   228
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   229
	// Get the users who have favorited the topic
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   230
	$key   = $wpdb->prefix . '_bbp_favorites';
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   231
	$users = $wpdb->get_col( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = '{$key}' and FIND_IN_SET('{$topic_id}', meta_value) > 0" );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   232
	$users = apply_filters( 'bbp_get_topic_favoriters', $users, $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   233
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   234
	if ( !empty( $users ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   235
		return $users;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   236
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   237
	return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   238
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   239
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   240
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   241
 * Get a user's favorite topics
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   242
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   243
 * @since bbPress (r2652)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   244
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   245
 * @param int $user_id Optional. User id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   246
 * @uses bbp_get_user_favorites_topic_ids() To get the user's favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   247
 * @uses bbp_has_topics() To get the topics
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   248
 * @uses apply_filters() Calls 'bbp_get_user_favorites' with the topic query and
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   249
 *                        user id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   250
 * @return array|bool Results if user has favorites, otherwise false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   251
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   252
function bbp_get_user_favorites( $user_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   253
	$user_id = bbp_get_user_id( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   254
	if ( empty( $user_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   255
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   256
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   257
	// If user has favorites, load them
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   258
	$favorites = bbp_get_user_favorites_topic_ids( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   259
	if ( !empty( $favorites ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   260
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   261
		// Setup the topics query
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   262
		$topics_query = bbp_has_topics( array( 'post__in' => $favorites ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   263
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   264
		return apply_filters( 'bbp_get_user_favorites', $topics_query, $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   265
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   266
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   267
	return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   268
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   269
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   270
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   271
 * Get a user's favorite topics' ids
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   272
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   273
 * @since bbPress (r2652)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   274
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   275
 * @param int $user_id Optional. User id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   276
 * @uses bbp_get_user_id() To get the user id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   277
 * @uses get_user_option() To get the user favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   278
 * @uses apply_filters() Calls 'bbp_get_user_favorites_topic_ids' with
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   279
 *                        the favorites and user id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   280
 * @return array|bool Results if user has favorites, otherwise false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   281
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   282
function bbp_get_user_favorites_topic_ids( $user_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   283
	$user_id = bbp_get_user_id( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   284
	if ( empty( $user_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   285
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   286
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   287
	$favorites = (string) get_user_option( '_bbp_favorites', $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   288
	$favorites = (array) explode( ',', $favorites );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   289
	$favorites = array_filter( $favorites );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   290
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   291
	return apply_filters( 'bbp_get_user_favorites_topic_ids', $favorites, $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   292
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   293
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   294
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   295
 * Check if a topic is in user's favorites or not
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   296
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   297
 * @since bbPress (r2652)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   298
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   299
 * @param int $user_id Optional. User id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   300
 * @param int $topic_id Optional. Topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   301
 * @uses bbp_get_user_id() To get the user id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   302
 * @uses bbp_get_user_favorites_topic_ids() To get the user favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   303
 * @uses bbp_get_topic() To get the topic
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   304
 * @uses bbp_get_topic_id() To get the topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   305
 * @uses apply_filters() Calls 'bbp_is_user_favorite' with the bool, user id,
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   306
 *                        topic id and favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   307
 * @return bool True if the topic is in user's favorites, otherwise false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   308
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   309
function bbp_is_user_favorite( $user_id = 0, $topic_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   310
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   311
	$user_id = bbp_get_user_id( $user_id, true, true );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   312
	if ( empty( $user_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   313
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   314
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   315
	$retval    = false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   316
	$favorites = bbp_get_user_favorites_topic_ids( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   317
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   318
	if ( !empty( $favorites ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   319
		
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   320
		// Checking a specific topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   321
		if ( !empty( $topic_id ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   322
			$topic    = bbp_get_topic( $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   323
			$topic_id = !empty( $topic ) ? $topic->ID : 0;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   324
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   325
		// Using the global topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   326
		} elseif ( bbp_get_topic_id() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   327
			$topic_id = bbp_get_topic_id();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   328
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   329
		// Use the current post id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   330
		} elseif ( !bbp_get_topic_id() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   331
			$topic_id = get_the_ID();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   332
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   333
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   334
		// Is topic_id in the user's favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   335
		if ( !empty( $topic_id ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   336
			$retval = in_array( $topic_id, $favorites );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   337
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   338
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   339
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   340
	return (bool) apply_filters( 'bbp_is_user_favorite', (bool) $retval, $user_id, $topic_id, $favorites );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   341
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   342
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   343
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   344
 * Add a topic to user's favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   345
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   346
 * @since bbPress (r2652)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   347
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   348
 * @param int $user_id Optional. User id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   349
 * @param int $topic_id Optional. Topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   350
 * @uses bbp_get_user_favorites_topic_ids() To get the user favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   351
 * @uses update_user_option() To update the user favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   352
 * @uses do_action() Calls 'bbp_add_user_favorite' with the user id and topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   353
 * @return bool Always true
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   354
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   355
function bbp_add_user_favorite( $user_id = 0, $topic_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   356
	if ( empty( $user_id ) || empty( $topic_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   357
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   358
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   359
	$favorites = (array) bbp_get_user_favorites_topic_ids( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   360
	$topic     = bbp_get_topic( $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   361
	if ( empty( $topic ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   362
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   363
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   364
	if ( !in_array( $topic_id, $favorites ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   365
		$favorites[] = $topic_id;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   366
		$favorites   = array_filter( $favorites );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   367
		$favorites   = (string) implode( ',', $favorites );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   368
		update_user_option( $user_id, '_bbp_favorites', $favorites );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   369
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   370
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   371
	do_action( 'bbp_add_user_favorite', $user_id, $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   372
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   373
	return true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   374
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   375
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   376
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   377
 * Remove a topic from user's favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   378
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   379
 * @since bbPress (r2652)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   380
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   381
 * @param int $user_id Optional. User id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   382
 * @param int $topic_id Optional. Topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   383
 * @uses bbp_get_user_favorites_topic_ids() To get the user favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   384
 * @uses update_user_option() To update the user favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   385
 * @uses delete_user_option() To delete the user favorites meta
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   386
 * @uses do_action() Calls 'bbp_remove_user_favorite' with the user & topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   387
 * @return bool True if the topic was removed from user's favorites, otherwise
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   388
 *               false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   389
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   390
function bbp_remove_user_favorite( $user_id, $topic_id ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   391
	if ( empty( $user_id ) || empty( $topic_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   392
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   393
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   394
	$favorites = (array) bbp_get_user_favorites_topic_ids( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   395
	if ( empty( $favorites ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   396
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   397
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   398
	$pos = array_search( $topic_id, $favorites );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   399
	if ( is_numeric( $pos ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   400
		array_splice( $favorites, $pos, 1 );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   401
		$favorites = array_filter( $favorites );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   402
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   403
		if ( !empty( $favorites ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   404
			$favorites = implode( ',', $favorites );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   405
			update_user_option( $user_id, '_bbp_favorites', $favorites );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   406
		} else {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   407
			delete_user_option( $user_id, '_bbp_favorites' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   408
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   409
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   410
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   411
	do_action( 'bbp_remove_user_favorite', $user_id, $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   412
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   413
	return true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   414
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   415
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   416
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   417
 * Handles the front end adding and removing of favorite topics
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   418
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   419
 * @uses bbp_get_user_id() To get the user id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   420
 * @uses bbp_verify_nonce_request() To verify the nonce and check the request
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   421
 * @uses current_user_can() To check if the current user can edit the user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   422
 * @uses bbPress:errors:add() To log the error messages
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   423
 * @uses bbp_is_user_favorite() To check if the topic is in user's favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   424
 * @uses bbp_remove_user_favorite() To remove the user favorite
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   425
 * @uses bbp_add_user_favorite() To add the user favorite
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   426
 * @uses do_action() Calls 'bbp_favorites_handler' with success, user id, topic
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   427
 *                    id and action
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   428
 * @uses bbp_is_favorites() To check if it's the favorites page
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   429
 * @uses bbp_get_favorites_link() To get the favorites page link
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   430
 * @uses bbp_get_topic_permalink() To get the topic permalink
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   431
 * @uses wp_safe_redirect() To redirect to the url
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   432
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   433
function bbp_favorites_handler() {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   434
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   435
	if ( !bbp_is_favorites_active() )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   436
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   437
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   438
	// Bail if not a GET action
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   439
	if ( 'GET' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   440
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   441
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   442
	// Bail if required GET actions aren't passed
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   443
	if ( empty( $_GET['topic_id'] ) || empty( $_GET['action'] ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   444
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   445
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   446
	// Setup possible get actions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   447
	$possible_actions = array(
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   448
		'bbp_favorite_add',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   449
		'bbp_favorite_remove',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   450
	);
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   451
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   452
	// Bail if actions aren't meant for this function
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   453
	if ( !in_array( $_GET['action'], $possible_actions ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   454
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   455
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   456
	// What action is taking place?
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   457
	$action      = $_GET['action'];
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   458
	$topic_id    = intval( $_GET['topic_id'] );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   459
	$user_id     = bbp_get_user_id( 0, true, true );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   460
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   461
	// Check for empty topic
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   462
	if ( empty( $topic_id ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   463
		bbp_add_error( 'bbp_favorite_topic_id', __( '<strong>ERROR</strong>: No topic was found! Which topic are you marking/unmarking as favorite?', 'bbpress' ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   464
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   465
	// Check nonce
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   466
	} elseif ( ! bbp_verify_nonce_request( 'toggle-favorite_' . $topic_id ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   467
		bbp_add_error( 'bbp_favorite_nonce', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress' ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   468
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   469
	// Check current user's ability to edit the user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   470
	} elseif ( !current_user_can( 'edit_user', $user_id ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   471
		bbp_add_error( 'bbp_favorite_permissions', __( '<strong>ERROR</strong>: You don\'t have the permission to edit favorites of that user!', 'bbpress' ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   472
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   473
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   474
	// Bail if errors
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   475
	if ( bbp_has_errors() )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   476
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   477
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   478
	/** No errors *************************************************************/
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   479
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   480
	$is_favorite = bbp_is_user_favorite( $user_id, $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   481
	$success     = false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   482
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   483
	if ( true == $is_favorite && 'bbp_favorite_remove' == $action )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   484
		$success = bbp_remove_user_favorite( $user_id, $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   485
	elseif ( false == $is_favorite && 'bbp_favorite_add' == $action )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   486
		$success = bbp_add_user_favorite( $user_id, $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   487
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   488
	// Do additional favorites actions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   489
	do_action( 'bbp_favorites_handler', $success, $user_id, $topic_id, $action );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   490
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   491
	// Success!
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   492
	if ( true == $success ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   493
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   494
		// Redirect back from whence we came
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   495
		if ( bbp_is_favorites() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   496
			$redirect = bbp_get_favorites_permalink( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   497
		} elseif ( bbp_is_single_user() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   498
			$redirect = bbp_get_user_profile_url();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   499
		} elseif ( is_singular( bbp_get_topic_post_type() ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   500
			$redirect = bbp_get_topic_permalink( $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   501
		} elseif ( is_single() || is_page() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   502
			$redirect = get_permalink();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   503
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   504
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   505
		wp_safe_redirect( $redirect );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   506
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   507
		// For good measure
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   508
		exit();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   509
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   510
	// Fail! Handle errors
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   511
	} elseif ( true == $is_favorite && 'bbp_favorite_remove' == $action ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   512
		bbp_add_error( 'bbp_favorite_remove', __( '<strong>ERROR</strong>: There was a problem removing that topic from favorites!', 'bbpress' ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   513
	} elseif ( false == $is_favorite && 'bbp_favorite_add' == $action ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   514
		bbp_add_error( 'bbp_favorite_add',    __( '<strong>ERROR</strong>: There was a problem favoriting that topic!', 'bbpress' ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   515
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   516
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   517
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   518
/** Subscriptions *************************************************************/
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   519
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   520
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   521
 * Get the users who have subscribed to the topic
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   522
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   523
 * @since bbPress (r2668)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   524
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   525
 * @param int $topic_id Optional. Topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   526
 * @uses wpdb::get_col() To execute our query and get the column back
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   527
 * @uses apply_filters() Calls 'bbp_get_topic_subscribers' with the subscribers
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   528
 * @return array|bool Results if the topic has any subscribers, otherwise false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   529
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   530
function bbp_get_topic_subscribers( $topic_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   531
	if ( empty( $topic_id ) ) return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   532
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   533
	global $wpdb;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   534
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   535
	$key   = $wpdb->prefix . '_bbp_subscriptions';
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   536
	$users = wp_cache_get( 'bbp_get_topic_subscribers_' . $topic_id, 'bbpress' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   537
	if ( empty( $users ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   538
		$users = $wpdb->get_col( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = '{$key}' and FIND_IN_SET('{$topic_id}', meta_value) > 0" );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   539
		wp_cache_set( 'bbp_get_topic_subscribers_' . $topic_id, $users, 'bbpress' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   540
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   541
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   542
	if ( !empty( $users ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   543
		$users = apply_filters( 'bbp_get_topic_subscribers', $users );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   544
		return $users;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   545
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   546
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   547
	return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   548
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   549
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   550
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   551
 * Get a user's subscribed topics
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   552
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   553
 * @since bbPress (r2668)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   554
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   555
 * @param int $user_id Optional. User id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   556
 * @uses bbp_get_user_subscribed_topic_ids() To get the user's subscriptions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   557
 * @uses bbp_has_topics() To get the topics
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   558
 * @uses apply_filters() Calls 'bbp_get_user_subscriptions' with the topic query
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   559
 *                        and user id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   560
 * @return array|bool Results if user has subscriptions, otherwise false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   561
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   562
function bbp_get_user_subscriptions( $user_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   563
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   564
	// Default to the displayed user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   565
	$user_id = bbp_get_user_id( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   566
	if ( empty( $user_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   567
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   568
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   569
	// If user has subscriptions, load them
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   570
	$subscriptions = bbp_get_user_subscribed_topic_ids( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   571
	if ( !empty( $subscriptions ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   572
		$query = bbp_has_topics( array( 'post__in' => $subscriptions ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   573
		return apply_filters( 'bbp_get_user_subscriptions', $query, $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   574
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   575
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   576
	return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   577
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   578
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   579
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   580
 * Get a user's subscribed topics' ids
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   581
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   582
 * @since bbPress (r2668)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   583
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   584
 * @param int $user_id Optional. User id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   585
 * @uses bbp_get_user_id() To get the user id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   586
 * @uses get_user_option() To get the user's subscriptions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   587
 * @uses apply_filters() Calls 'bbp_get_user_subscribed_topic_ids' with
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   588
 *                        the subscriptions and user id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   589
 * @return array|bool Results if user has subscriptions, otherwise false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   590
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   591
function bbp_get_user_subscribed_topic_ids( $user_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   592
	$user_id = bbp_get_user_id( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   593
	if ( empty( $user_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   594
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   595
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   596
	$subscriptions = (string) get_user_option( '_bbp_subscriptions', $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   597
	$subscriptions = (array) explode( ',', $subscriptions );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   598
	$subscriptions = array_filter( $subscriptions );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   599
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   600
	return apply_filters( 'bbp_get_user_subscribed_topic_ids', $subscriptions, $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   601
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   602
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   603
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   604
 * Check if a topic is in user's subscription list or not
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   605
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   606
 * @since bbPress (r2668)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   607
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   608
 * @param int $user_id Optional. User id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   609
 * @param int $topic_id Optional. Topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   610
 * @uses bbp_get_user_id() To get the user id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   611
 * @uses bbp_get_user_subscribed_topic_ids() To get the user's subscriptions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   612
 * @uses bbp_get_topic() To get the topic
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   613
 * @uses bbp_get_topic_id() To get the topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   614
 * @uses apply_filters() Calls 'bbp_is_user_subscribed' with the bool, user id,
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   615
 *                        topic id and subsriptions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   616
 * @return bool True if the topic is in user's subscriptions, otherwise false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   617
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   618
function bbp_is_user_subscribed( $user_id = 0, $topic_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   619
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   620
	// Validate user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   621
	$user_id = bbp_get_user_id( $user_id, true, true );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   622
	if ( empty( $user_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   623
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   624
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   625
	$retval        = false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   626
	$subscriptions = bbp_get_user_subscribed_topic_ids( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   627
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   628
	if ( !empty( $subscriptions ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   629
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   630
		// Checking a specific topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   631
		if ( !empty( $topic_id ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   632
			$topic     = bbp_get_topic( $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   633
			$topic_id = !empty( $topic ) ? $topic->ID : 0;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   634
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   635
		// Using the global topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   636
		} elseif ( bbp_get_topic_id() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   637
			$topic_id = bbp_get_topic_id();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   638
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   639
		// Use the current post id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   640
		} elseif ( !bbp_get_topic_id() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   641
			$topic_id = get_the_ID();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   642
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   643
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   644
		// Is topic_id in the user's favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   645
		if ( !empty( $topic_id ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   646
			$retval = in_array( $topic_id, $subscriptions );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   647
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   648
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   649
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   650
	return (bool) apply_filters( 'bbp_is_user_subscribed', (bool) $retval, $user_id, $topic_id, $subscriptions );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   651
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   652
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   653
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   654
 * Add a topic to user's subscriptions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   655
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   656
 * @since bbPress (r2668)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   657
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   658
 * @param int $user_id Optional. User id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   659
 * @param int $topic_id Optional. Topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   660
 * @uses bbp_get_user_subscribed_topic_ids() To get the user's subscriptions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   661
 * @uses bbp_get_topic() To get the topic
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   662
 * @uses update_user_option() To update the user's subscriptions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   663
 * @uses do_action() Calls 'bbp_add_user_subscription' with the user & topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   664
 * @return bool Always true
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   665
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   666
function bbp_add_user_subscription( $user_id = 0, $topic_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   667
	if ( empty( $user_id ) || empty( $topic_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   668
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   669
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   670
	$subscriptions = (array) bbp_get_user_subscribed_topic_ids( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   671
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   672
	$topic = bbp_get_topic( $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   673
	if ( empty( $topic ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   674
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   675
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   676
	if ( !in_array( $topic_id, $subscriptions ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   677
		$subscriptions[] = $topic_id;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   678
		$subscriptions   = array_filter( $subscriptions );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   679
		$subscriptions   = (string) implode( ',', $subscriptions );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   680
		update_user_option( $user_id, '_bbp_subscriptions', $subscriptions );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   681
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   682
		wp_cache_delete( 'bbp_get_topic_subscribers_' . $topic_id, 'bbpress' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   683
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   684
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   685
	do_action( 'bbp_add_user_subscription', $user_id, $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   686
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   687
	return true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   688
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   689
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   690
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   691
 * Remove a topic from user's subscriptions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   692
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   693
 * @since bbPress (r2668)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   694
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   695
 * @param int $user_id Optional. User id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   696
 * @param int $topic_id Optional. Topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   697
 * @uses bbp_get_user_subscribed_topic_ids() To get the user's subscriptions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   698
 * @uses update_user_option() To update the user's subscriptions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   699
 * @uses delete_user_option() To delete the user's subscriptions meta
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   700
 * @uses do_action() Calls 'bbp_remove_user_subscription' with the user id and
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   701
 *                    topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   702
 * @return bool True if the topic was removed from user's subscriptions,
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   703
 *               otherwise false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   704
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   705
function bbp_remove_user_subscription( $user_id, $topic_id ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   706
	if ( empty( $user_id ) || empty( $topic_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   707
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   708
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   709
	$subscriptions = (array) bbp_get_user_subscribed_topic_ids( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   710
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   711
	if ( empty( $subscriptions ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   712
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   713
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   714
	$pos = array_search( $topic_id, $subscriptions );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   715
	if ( is_numeric( $pos ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   716
		array_splice( $subscriptions, $pos, 1 );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   717
		$subscriptions = array_filter( $subscriptions );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   718
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   719
		if ( !empty( $subscriptions ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   720
			$subscriptions = implode( ',', $subscriptions );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   721
			update_user_option( $user_id, '_bbp_subscriptions', $subscriptions );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   722
		} else {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   723
			delete_user_option( $user_id, '_bbp_subscriptions' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   724
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   725
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   726
		wp_cache_delete( 'bbp_get_topic_subscribers_' . $topic_id, 'bbpress' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   727
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   728
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   729
	do_action( 'bbp_remove_user_subscription', $user_id, $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   730
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   731
	return true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   732
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   733
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   734
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   735
 * Handles the front end subscribing and unsubscribing topics
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   736
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   737
 * @uses bbp_is_subscriptions_active() To check if the subscriptions are active
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   738
 * @uses bbp_get_user_id() To get the user id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   739
 * @uses bbp_verify_nonce_request() To verify the nonce and check the request
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   740
 * @uses current_user_can() To check if the current user can edit the user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   741
 * @uses bbPress:errors:add() To log the error messages
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   742
 * @uses bbp_is_user_subscribed() To check if the topic is in user's
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   743
 *                                 subscriptions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   744
 * @uses bbp_remove_user_subscription() To remove the user subscription
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   745
 * @uses bbp_add_user_subscription() To add the user subscription
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   746
 * @uses do_action() Calls 'bbp_subscriptions_handler' with success, user id,
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   747
 *                    topic id and action
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   748
 * @uses bbp_is_subscription() To check if it's the subscription page
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   749
 * @uses bbp_get_subscription_link() To get the subscription page link
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   750
 * @uses bbp_get_topic_permalink() To get the topic permalink
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   751
 * @uses wp_safe_redirect() To redirect to the url
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   752
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   753
function bbp_subscriptions_handler() {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   754
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   755
	if ( !bbp_is_subscriptions_active() )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   756
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   757
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   758
	// Bail if not a GET action
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   759
	if ( 'GET' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   760
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   761
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   762
	// Bail if required GET actions aren't passed
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   763
	if ( empty( $_GET['topic_id'] ) || empty( $_GET['action'] ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   764
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   765
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   766
	// Setup possible get actions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   767
	$possible_actions = array(
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   768
		'bbp_subscribe',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   769
		'bbp_unsubscribe',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   770
	);
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   771
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   772
	// Bail if actions aren't meant for this function
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   773
	if ( !in_array( $_GET['action'], $possible_actions ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   774
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   775
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   776
	// Get required data
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   777
	$action   = $_GET['action'];
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   778
	$user_id  = bbp_get_user_id( 0, true, true );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   779
	$topic_id = intval( $_GET['topic_id'] );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   780
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   781
	// Check for empty topic
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   782
	if ( empty( $topic_id ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   783
		bbp_add_error( 'bbp_subscription_topic_id', __( '<strong>ERROR</strong>: No topic was found! Which topic are you subscribing/unsubscribing to?', 'bbpress' ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   784
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   785
	// Check nonce
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   786
	} elseif ( ! bbp_verify_nonce_request( 'toggle-subscription_' . $topic_id ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   787
		bbp_add_error( 'bbp_subscription_topic_id', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress' ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   788
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   789
	// Check current user's ability to edit the user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   790
	} elseif ( !current_user_can( 'edit_user', $user_id ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   791
		bbp_add_error( 'bbp_subscription_permissions', __( '<strong>ERROR</strong>: You don\'t have the permission to edit favorites of that user!', 'bbpress' ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   792
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   793
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   794
	// Bail if we have errors
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   795
	if ( bbp_has_errors() )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   796
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   797
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   798
	/** No errors *************************************************************/
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   799
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   800
	$is_subscription = bbp_is_user_subscribed( $user_id, $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   801
	$success         = false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   802
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   803
	if ( true == $is_subscription && 'bbp_unsubscribe' == $action )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   804
		$success = bbp_remove_user_subscription( $user_id, $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   805
	elseif ( false == $is_subscription && 'bbp_subscribe' == $action )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   806
		$success = bbp_add_user_subscription( $user_id, $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   807
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   808
	// Do additional subscriptions actions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   809
	do_action( 'bbp_subscriptions_handler', $success, $user_id, $topic_id, $action );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   810
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   811
	// Success!
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   812
	if ( true == $success ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   813
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   814
		// Redirect back from whence we came
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   815
		if ( bbp_is_subscriptions() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   816
			$redirect = bbp_get_subscriptions_permalink( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   817
		} elseif ( bbp_is_single_user() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   818
			$redirect = bbp_get_user_profile_url();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   819
		} elseif ( is_singular( bbp_get_topic_post_type() ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   820
			$redirect = bbp_get_topic_permalink( $topic_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   821
		} elseif ( is_single() || is_page() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   822
			$redirect = get_permalink();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   823
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   824
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   825
		wp_safe_redirect( $redirect );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   826
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   827
		// For good measure
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   828
		exit();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   829
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   830
	// Fail! Handle errors
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   831
	} elseif ( true == $is_subscription && 'bbp_unsubscribe' == $action ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   832
		bbp_add_error( 'bbp_unsubscribe', __( '<strong>ERROR</strong>: There was a problem unsubscribing from that topic!', 'bbpress' ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   833
	} elseif ( false == $is_subscription && 'bbp_subscribe' == $action ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   834
		bbp_add_error( 'bbp_subscribe',    __( '<strong>ERROR</strong>: There was a problem subscribing to that topic!', 'bbpress' ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   835
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   836
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   837
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   838
/** Edit **********************************************************************/
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   839
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   840
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   841
 * Handles the front end user editing
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   842
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   843
 * @uses is_multisite() To check if it's a multisite
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   844
 * @uses bbp_is_user_home() To check if the user is at home (the display page
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   845
 *                           is the one of the logged in user)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   846
 * @uses get_option() To get the displayed user's new email id option
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   847
 * @uses wpdb::prepare() To sanitize our sql query
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   848
 * @uses wpdb::get_var() To execute our query and get back the variable
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   849
 * @uses wpdb::query() To execute our query
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   850
 * @uses wp_update_user() To update the user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   851
 * @uses delete_option() To delete the displayed user's email id option
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   852
 * @uses bbp_get_user_profile_edit_url() To get the edit profile url
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   853
 * @uses wp_safe_redirect() To redirect to the url
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   854
 * @uses bbp_verify_nonce_request() To verify the nonce and check the request
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   855
 * @uses current_user_can() To check if the current user can edit the user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   856
 * @uses do_action() Calls 'personal_options_update' or
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   857
 *                   'edit_user_options_update' (based on if it's the user home)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   858
 *                   with the displayed user id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   859
 * @uses edit_user() To edit the user based on the post data
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   860
 * @uses get_userdata() To get the user data
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   861
 * @uses is_email() To check if the string is an email id or not
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   862
 * @uses wpdb::get_blog_prefix() To get the blog prefix
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   863
 * @uses is_network_admin() To check if the user is the network admin
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   864
 * @uses is_super_admin() To check if the user is super admin
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   865
 * @uses revoke_super_admin() To revoke super admin priviledges
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   866
 * @uses grant_super_admin() To grant super admin priviledges
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   867
 * @uses is_wp_error() To check if the value retrieved is a {@link WP_Error}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   868
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   869
function bbp_edit_user_handler() {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   870
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   871
	// Bail if not a POST action
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   872
	if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   873
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   874
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   875
	// Bail if action is not 'bbp-update-user'
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   876
	if ( empty( $_POST['action'] ) || ( 'bbp-update-user' !== $_POST['action'] ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   877
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   878
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   879
	// Get the displayed user ID
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   880
	$user_id = bbp_get_displayed_user_id();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   881
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   882
	// Execute confirmed email change. See send_confirmation_on_profile_email().
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   883
	if ( is_multisite() && bbp_is_user_home_edit() && isset( $_GET['newuseremail'] ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   884
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   885
		$new_email = get_option( $user_id . '_new_email' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   886
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   887
		if ( $new_email['hash'] == $_GET['newuseremail'] ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   888
			$user             = new stdClass();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   889
			$user->ID         = $user_id;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   890
			$user->user_email = esc_html( trim( $new_email['newemail'] ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   891
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   892
			global $wpdb;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   893
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   894
			if ( $wpdb->get_var( $wpdb->prepare( "SELECT user_login FROM {$wpdb->signups} WHERE user_login = %s", bbp_get_displayed_user_field( 'user_login' ) ) ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   895
				$wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->signups} SET user_email = %s WHERE user_login = %s", $user->user_email, bbp_get_displayed_user_field( 'user_login' ) ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   896
			}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   897
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   898
			wp_update_user( get_object_vars( $user ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   899
			delete_option( $user_id . '_new_email' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   900
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   901
			wp_safe_redirect( add_query_arg( array( 'updated' => 'true' ), bbp_get_user_profile_edit_url( $user_id ) ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   902
			exit();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   903
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   904
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   905
	// Delete new email address from user options
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   906
	} elseif ( is_multisite() && bbp_is_user_home_edit() && !empty( $_GET['dismiss'] ) && ( $user_id . '_new_email' == $_GET['dismiss'] ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   907
		delete_option( $user_id . '_new_email' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   908
		wp_safe_redirect( add_query_arg( array( 'updated' => 'true' ), bbp_get_user_profile_edit_url( $user_id ) ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   909
		exit();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   910
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   911
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   912
	// Nonce check
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   913
	if ( ! bbp_verify_nonce_request( 'update-user_' . $user_id ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   914
		bbp_add_error( 'bbp_update_user_nonce', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress' ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   915
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   916
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   917
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   918
	// Cap check
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   919
	if ( ! current_user_can( 'edit_user', $user_id ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   920
		bbp_add_error( 'bbp_update_user_capability', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress' ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   921
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   922
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   923
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   924
	// Do action based on who's profile you're editing
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   925
	$edit_action = bbp_is_user_home_edit() ? 'personal_options_update' : 'edit_user_profile_update';
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   926
	do_action( $edit_action, $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   927
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   928
	// Handle user edit
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   929
	$edit_user = edit_user( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   930
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   931
	// Error(s) editng the user, so copy them into the global
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   932
	if ( is_wp_error( $edit_user ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   933
		bbpress()->errors = $edit_user;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   934
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   935
	// Successful edit to redirect
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   936
	} elseif ( is_integer( $edit_user ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   937
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   938
		// Maybe update super admin ability
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   939
		if ( is_multisite() && ! bbp_is_user_home_edit() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   940
			empty( $_POST['super_admin'] ) ? revoke_super_admin( $edit_user ) : grant_super_admin( $edit_user );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   941
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   942
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   943
		$redirect = add_query_arg( array( 'updated' => 'true' ), bbp_get_user_profile_edit_url( $edit_user ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   944
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   945
		wp_safe_redirect( $redirect );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   946
		exit;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   947
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   948
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   949
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   950
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   951
 * Conditionally hook the core WordPress output actions to the end of the
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   952
 * default user's edit profile template.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   953
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   954
 * This allows clever plugin authors to conditionally unhook the WordPress core
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   955
 * output actions if they don't want any unexpected junk to appear there, and
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   956
 * also avoids needing to pollute the templates with additional logic and actions.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   957
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   958
 * @since bbPress (r4273)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   959
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   960
 * @uses bbp_is_user_home_edit() To switch the action fired
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   961
 * @uses get_userdata() To get the current user's data
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   962
 * @uses bbp_get_displayed_user_id() To get the currently displayed user ID
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   963
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   964
function bbp_user_edit_after() {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   965
	$action = bbp_is_user_home_edit() ? 'show_user_profile' : 'edit_user_profile';
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   966
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   967
	do_action( $action, get_userdata( bbp_get_displayed_user_id() ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   968
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   969
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   970
/** User Queries **************************************************************/
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   971
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   972
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   973
 * Get the topics that a user created
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   974
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   975
 * @since bbPress (r2660)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   976
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   977
 * @param int $user_id Optional. User id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   978
 * @uses bbp_get_user_id() To get the topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   979
 * @uses bbp_has_topics() To get the topics created by the user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   980
 * @return array|bool Results if the user has created topics, otherwise false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   981
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   982
function bbp_get_user_topics_started( $user_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   983
	
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   984
	// Validate user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   985
	$user_id = bbp_get_user_id( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   986
	if ( empty( $user_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   987
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   988
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   989
	// Query defaults
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   990
	$default_query = array(
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   991
		'author'         => $user_id,
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   992
		'show_stickies'  => false,
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   993
		'order'          => 'DESC',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   994
	);
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   995
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   996
	// Try to get the topics
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   997
	$query = bbp_has_topics( $default_query );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   998
	if ( empty( $query ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   999
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1000
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1001
	return apply_filters( 'bbp_get_user_topics_started', $query, $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1002
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1003
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1004
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1005
 * Get the replies that a user created
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1006
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1007
 * @since bbPress (r4225)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1008
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1009
 * @param int $user_id Optional. User id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1010
 * @uses bbp_get_user_id() To get the topic id
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1011
 * @uses bbp_has_replies() To get the topics created by the user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1012
 * @return array|bool Results if the user has created topics, otherwise false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1013
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1014
function bbp_get_user_replies_created( $user_id = 0 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1015
	
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1016
	// Validate user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1017
	$user_id = bbp_get_user_id( $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1018
	if ( empty( $user_id ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1019
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1020
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1021
	// Try to get the topics
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1022
	$query = bbp_has_replies( array(
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1023
		'post_type'      => array( bbp_get_topic_post_type(), bbp_get_reply_post_type() ),
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1024
		'post_parent'    => 'any',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1025
		'posts_per_page' => bbp_get_replies_per_page(),
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1026
		'paged'          => bbp_get_paged(),
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1027
		'orderby'        => 'date',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1028
		'order'          => 'DESC',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1029
		'author'         => $user_id,
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1030
		'show_stickies'  => false,
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1031
	) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1032
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1033
	return apply_filters( 'bbp_get_user_replies_created', $query, $user_id );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1034
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1035
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1036
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1037
 * Get the total number of users on the forums
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1038
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1039
 * @since bbPress (r2769)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1040
 * @uses wp_cache_get() Check if query is in cache
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1041
 * @uses get_users() To execute our query and get the var back
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1042
 * @uses wp_cache_set() Set the query in the cache
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1043
 * @uses apply_filters() Calls 'bbp_get_total_users' with number of users
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1044
 * @return int Total number of users
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1045
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1046
function bbp_get_total_users() {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1047
	$user_count = count_users();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1048
	return apply_filters( 'bbp_get_total_users', (int) $user_count['total_users'] );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1049
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1050
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1051
/** Premissions ***************************************************************/
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1052
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1053
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1054
 * Redirect if unathorized user is attempting to edit another user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1055
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1056
 * This is hooked to 'bbp_template_redirect' and controls the conditions under
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1057
 * which a user can edit another user (or themselves.) If these conditions are
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1058
 * met. We assume a user cannot perform this task, and look for ways they can
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1059
 * earn the ability to access this template.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1060
 * 
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1061
 * @since bbPress (r3605)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1062
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1063
 * @uses bbp_is_topic_edit()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1064
 * @uses current_user_can()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1065
 * @uses bbp_get_topic_id()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1066
 * @uses wp_safe_redirect()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1067
 * @uses bbp_get_topic_permalink()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1068
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1069
function bbp_check_user_edit() {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1070
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1071
	// Bail if not editing a topic
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1072
	if ( ! bbp_is_single_user_edit() )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1073
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1074
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1075
	// Default to false
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1076
	$redirect = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1077
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1078
	// Allow user to edit their own profile
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1079
	if ( bbp_is_user_home_edit() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1080
		$redirect = false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1081
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1082
	// Allow if current user can edit the displayed user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1083
	} elseif ( current_user_can( 'edit_user', bbp_get_displayed_user_id() ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1084
		$redirect = false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1085
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1086
	// Allow if user can manage network users, or edit-any is enabled
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1087
	} elseif ( current_user_can( 'manage_network_users' ) || apply_filters( 'enable_edit_any_user_configuration', false ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1088
		$redirect = false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1089
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1090
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1091
	// Maybe redirect back to profile page
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1092
	if ( true === $redirect ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1093
		wp_safe_redirect( bbp_get_user_profile_url( bbp_get_displayed_user_id() ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1094
		exit();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1095
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1096
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1097
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1098
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1099
 * Check if a user is blocked, or cannot spectate the forums.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1100
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1101
 * @since bbPress (r2996)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1102
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1103
 * @uses is_user_logged_in() To check if user is logged in
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1104
 * @uses is_super_admin() To check if user is a super admin
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1105
 * @uses current_user_can() To check if the current user can spectate
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1106
 * @uses is_bbpress() To check if in a bbPress section of the site
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1107
 * @uses bbp_set_404() To set a 404 status
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1108
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1109
function bbp_forum_enforce_blocked() {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1110
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1111
	// Bail if not logged in or super admin
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1112
	if ( ! is_user_logged_in() || is_super_admin() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1113
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1114
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1115
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1116
	// Set 404 if in bbPress and user cannot spectate
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1117
	if ( is_bbpress() && ! current_user_can( 'spectate' ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1118
		bbp_set_404();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1119
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1120
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1121
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1122
/** Converter *****************************************************************/
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1123
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1124
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1125
 * Convert passwords from previous platfrom encryption to WordPress encryption.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1126
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1127
 * @since bbPress (r3813)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1128
 * @global WPDB $wpdb
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1129
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1130
function bbp_user_maybe_convert_pass() {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1131
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1132
	// Bail if no username
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1133
	$username = !empty( $_POST['log'] ) ? $_POST['log'] : '';
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1134
	if ( empty( $username ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1135
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1136
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1137
	global $wpdb;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1138
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1139
	// Bail if no user password to convert
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1140
	$row = $wpdb->get_row( "SELECT * FROM {$wpdb->users} INNER JOIN {$wpdb->usermeta} ON user_id = ID WHERE meta_key = '_bbp_class' AND user_login = '{$username}' LIMIT 1" );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1141
	if ( empty( $row ) || is_wp_error( $row ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1142
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1143
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1144
	// Setup admin (to include converter)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1145
	require_once( bbpress()->includes_dir . 'admin/admin.php' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1146
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1147
	// Create the admin object
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1148
	bbp_admin();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1149
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1150
	// Convert password
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1151
	require_once( bbpress()->admin->admin_dir . 'converter.php' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1152
	require_once( bbpress()->admin->admin_dir . 'converters/' . $row->meta_value . '.php' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1153
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1154
	// Create the converter
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1155
	$converter = bbp_new_converter( $row->meta_value );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1156
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1157
	// Try to call the conversion method
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1158
	if ( is_a( $converter, 'BBP_Converter_Base' ) && method_exists( $converter, 'callback_pass' ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1159
		$converter->callback_pass( $username, $_POST['pwd'] );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1160
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
  1161
}