PluginProbe
bbPress / 2.6.6
bbPress v2.6.6
trunk 2.0 2.0-beta-1 2.0-beta-2b 2.0-beta-3 2.0-beta-3b 2.0-rc-2 2.0-rc-3 2.0-rc-4 2.0-rc-5 2.0.1 2.0.2 2.0.3 2.1 2.1-beta-1 2.1-rc1 2.1-rc2 2.1-rc3 2.1-rc4 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.2.2 All 71 releases
bbpress / includes / users / options.php

options.php in bbPress 2.6.6, at includes/users/options.php

356 lines 8.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * bbPress User Options
5 *
6 * @package bbPress
7 * @subpackage UserOptions
8 */
9
10 // Exit if accessed directly
11 defined( 'ABSPATH' ) || exit;
12
13 /**
14 * Get the default user options and their values
15 *
16 * @since 2.1.0 bbPress (r3910)
17 *
18 * @return array Filtered user option names and values
19 */
20 function bbp_get_default_user_options() {
21
22 // Filter & return
23 return (array) apply_filters( 'bbp_get_default_user_options', array(
24 '_bbp_last_posted' => '0', // For checking flooding
25 '_bbp_topic_count' => '0', // Total topics per site
26 '_bbp_reply_count' => '0' // Total replies per site
27 ) );
28 }
29
30 /**
31 * Add default user options
32 *
33 * This is destructive, so existing bbPress user options will be overridden.
34 *
35 * @since 2.1.0 bbPress (r3910)
36 */
37 function bbp_add_user_options( $user_id = 0 ) {
38
39 // Validate user id
40 $user_id = bbp_get_user_id( $user_id );
41 if ( empty( $user_id ) ) {
42 return;
43 }
44
45 // Add default options
46 foreach ( bbp_get_default_user_options() as $key => $value ) {
47 update_user_option( $user_id, $key, $value );
48 }
49
50 // Allow previously activated plugins to append their own user options.
51 do_action( 'bbp_add_user_options', $user_id );
52 }
53
54 /**
55 * Delete default user options
56 *
57 * Hooked to bbp_uninstall, it is only called once when bbPress is uninstalled.
58 * This is destructive, so existing bbPress user options will be destroyed.
59 *
60 * @since 2.1.0 bbPress (r3910)
61 */
62 function bbp_delete_user_options( $user_id = 0 ) {
63
64 // Validate user id
65 $user_id = bbp_get_user_id( $user_id );
66 if ( empty( $user_id ) ) {
67 return;
68 }
69
70 // Add default options
71 foreach ( array_keys( bbp_get_default_user_options() ) as $key ) {
72 delete_user_option( $user_id, $key );
73 }
74
75 // Allow previously activated plugins to append their own options.
76 do_action( 'bbp_delete_user_options', $user_id );
77 }
78
79 /**
80 * Add filters to each bbPress option and allow them to be overloaded from
81 * inside the $bbp->options array.
82 *
83 * @since 2.1.0 bbPress (r3910)
84 */
85 function bbp_setup_user_option_filters() {
86
87 // Add filters to each bbPress option
88 foreach ( array_keys( bbp_get_default_user_options() ) as $key ) {
89 add_filter( 'get_user_option_' . $key, 'bbp_filter_get_user_option', 10, 3 );
90 }
91
92 // Allow previously activated plugins to append their own options.
93 do_action( 'bbp_setup_user_option_filters' );
94 }
95
96 /**
97 * Filter default options and allow them to be overloaded from inside the
98 * $bbp->user_options array.
99 *
100 * @since 2.1.0 bbPress (r3910)
101 *
102 * @param bool $value Optional. Default value false
103 * @return mixed false if not overloaded, mixed if set
104 */
105 function bbp_filter_get_user_option( $value = false, $option = '', $user = 0 ) {
106 $bbp = bbpress();
107
108 // Check the options global for preset value
109 if ( isset( $user->ID ) && isset( $bbp->user_options[ $user->ID ] ) && ! empty( $bbp->user_options[ $user->ID ][ $option ] ) ) {
110 $value = $bbp->user_options[ $user->ID ][ $option ];
111 }
112
113 // Always return a value, even if false
114 return $value;
115 }
116
117 /** Post Counts ***************************************************************/
118
119 /**
120 * Update the topic count for a user
121 *
122 * @since 2.6.0 bbPress (r5309)
123 *
124 * @param int $user_id
125 * @param mixed $count
126 * @return boolean
127 */
128 function bbp_update_user_topic_count( $user_id = 0, $count = false ) {
129
130 // Validate user id
131 $user_id = bbp_get_user_id( $user_id );
132 if ( empty( $user_id ) ) {
133 return false;
134 }
135
136 // Just in time filtering of the user's topic count
137 $count = apply_filters( 'bbp_update_user_topic_count', $count, $user_id );
138
139 // Bail if no count was passed
140 if ( false === $count ) {
141 return false;
142 }
143
144 // Return the updated user option
145 return update_user_option( $user_id, '_bbp_topic_count', $count );
146 }
147
148 /**
149 * Update the reply count for a user
150 *
151 * @since 2.6.0 bbPress (r5309)
152 *
153 * @param int $user_id
154 * @param mixed $count
155 * @return boolean
156 */
157 function bbp_update_user_reply_count( $user_id = 0, $count = false ) {
158
159 // Validate user id
160 $user_id = bbp_get_user_id( $user_id );
161 if ( empty( $user_id ) ) {
162 return false;
163 }
164
165 // Just in time filtering of the user's reply count
166 $count = apply_filters( 'bbp_update_user_reply_count', $count, $user_id );
167
168 // Bail if no count was passed
169 if ( false === $count ) {
170 return false;
171 }
172
173 // Return the updated user option
174 return update_user_option( $user_id, '_bbp_reply_count', $count );
175 }
176
177 /**
178 * Output a users topic count
179 *
180 * @since 2.1.0 bbPress (r3632)
181 *
182 * @param int $user_id
183 * @param boolean $integer Optional. Whether or not to format the result
184 *
185 * @return string
186 */
187 function bbp_user_topic_count( $user_id = 0, $integer = false ) {
188 echo esc_html( bbp_get_user_topic_count( $user_id, $integer ) );
189 }
190 /**
191 * Return a users reply count
192 *
193 * @since 2.1.0 bbPress (r3632)
194 *
195 * @param int $user_id
196 * @param boolean $integer Optional. Whether or not to format the result
197 *
198 * @return string
199 */
200 function bbp_get_user_topic_count( $user_id = 0, $integer = false ) {
201
202 // Validate user id
203 $user_id = bbp_get_user_id( $user_id );
204 if ( empty( $user_id ) ) {
205 return false;
206 }
207
208 $count = get_user_option( '_bbp_topic_count', $user_id );
209 $filter = ( true === $integer )
210 ? 'bbp_get_user_topic_count_int'
211 : 'bbp_get_user_topic_count';
212
213 // Filter & return
214 return apply_filters( $filter, $count, $user_id );
215 }
216
217 /**
218 * Output a users reply count
219 *
220 * @since 2.1.0 bbPress (r3632)
221 *
222 * @param int $user_id
223 * @param boolean $integer Optional. Whether or not to format the result
224 *
225 * @return string
226 */
227 function bbp_user_reply_count( $user_id = 0, $integer = false ) {
228 echo esc_html( bbp_get_user_reply_count( $user_id, $integer ) );
229 }
230 /**
231 * Return a users reply count
232 *
233 * @since 2.1.0 bbPress (r3632)
234 *
235 * @param int $user_id
236 * @param boolean $integer Optional. Whether or not to format the result
237 *
238 * @return string
239 */
240 function bbp_get_user_reply_count( $user_id = 0, $integer = false ) {
241
242 // Validate user id
243 $user_id = bbp_get_user_id( $user_id );
244 if ( empty( $user_id ) ) {
245 return false;
246 }
247
248 $count = get_user_option( '_bbp_reply_count', $user_id );
249 $filter = ( true === $integer )
250 ? 'bbp_get_user_reply_count_int'
251 : 'bbp_get_user_reply_count';
252
253 return apply_filters( $filter, $count, $user_id );
254 }
255
256 /**
257 * Output a users total post count
258 *
259 * @since 2.1.0 bbPress (r3632)
260 *
261 * @param int $user_id
262 * @param boolean $integer Optional. Whether or not to format the result
263 *
264 * @return string
265 */
266 function bbp_user_post_count( $user_id = 0, $integer = false ) {
267 echo esc_html( bbp_get_user_post_count( $user_id, $integer ) );
268 }
269 /**
270 * Return a users total post count
271 *
272 * @since 2.1.0 bbPress (r3632)
273 *
274 * @param int $user_id
275 * @param boolean $integer Optional. Whether or not to format the result
276 *
277 * @return string
278 */
279 function bbp_get_user_post_count( $user_id = 0, $integer = false ) {
280
281 // Validate user id
282 $user_id = bbp_get_user_id( $user_id );
283 if ( empty( $user_id ) ) {
284 return false;
285 }
286
287 $topics = bbp_get_user_topic_count( $user_id, true );
288 $replies = bbp_get_user_reply_count( $user_id, true );
289 $count = $topics + $replies;
290 $filter = ( true === $integer )
291 ? 'bbp_get_user_post_count_int'
292 : 'bbp_get_user_post_count';
293
294 return apply_filters( $filter, $count, $user_id );
295 }
296
297 /** Last Posted ***************************************************************/
298
299 /**
300 * Update a users last posted time, for use with post throttling
301 *
302 * @since 2.1.0 bbPress (r3910)
303 *
304 * @param int $user_id User ID to update
305 * @param int $time Time in time() format
306 * @return bool False if no user or failure, true if successful
307 */
308 function bbp_update_user_last_posted( $user_id = 0, $time = 0 ) {
309
310 // Validate user id
311 $user_id = bbp_get_user_id( $user_id );
312 if ( empty( $user_id ) ) {
313 return false;
314 }
315
316 // Set time to now if nothing is passed
317 if ( empty( $time ) ) {
318 $time = time();
319 }
320
321 return update_user_option( $user_id, '_bbp_last_posted', $time );
322 }
323
324 /**
325 * Output the raw value of the last posted time.
326 *
327 * @since 2.1.0 bbPress (r3910)
328 *
329 * @param int $user_id User ID to retrieve value for
330 */
331 function bbp_user_last_posted( $user_id = 0 ) {
332 echo esc_html( bbp_get_user_last_posted( $user_id ) );
333 }
334
335 /**
336 * Return the raw value of the last posted time.
337 *
338 * @since 2.1.0 bbPress (r3910)
339 *
340 * @param int $user_id User ID to retrieve value for
341 * @return mixed False if no user, time() format if exists
342 */
343 function bbp_get_user_last_posted( $user_id = 0 ) {
344
345 // Validate user id
346 $user_id = bbp_get_user_id( $user_id );
347 if ( empty( $user_id ) ) {
348 return false;
349 }
350
351 $time = get_user_option( '_bbp_last_posted', $user_id );
352
353 // Filter & return
354 return apply_filters( 'bbp_get_user_last_posted', $time, $user_id );
355 }
356