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 / core / options.php

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

1,005 lines 28.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * bbPress Options
5 *
6 * @package bbPress
7 * @subpackage Core
8 */
9
10 // Exit if accessed directly
11 defined( 'ABSPATH' ) || exit;
12
13 /**
14 * Get the default site options and their values.
15 *
16 * These option
17 *
18 * @since 2.0.0 bbPress (r3421)
19 *
20 * @return array Filtered option names and values
21 */
22 function bbp_get_default_options() {
23 static $options = null;
24
25 // Store these to avoid recreating them
26 if ( is_null( $options ) ) {
27
28 // Use the participant role for the default-default role
29 $role = bbp_get_participant_role();
30 $options = array(
31
32 /** DB Version ********************************************************/
33
34 '_bbp_db_version' => 0, // Database version
35 '_bbp_db_pending_upgrades' => array(), // Database upgrades pending
36
37 /** Flags *************************************************************/
38
39 '_bbp_flag_initial_content' => 1, // Flag to indicate initial content was created
40
41 /** Features **********************************************************/
42
43 '_bbp_enable_favorites' => 1, // Enable favorites
44 '_bbp_enable_subscriptions' => 1, // Enable subscriptions
45 '_bbp_enable_engagements' => 1, // Enable engagements
46 '_bbp_allow_content_edit' => 1, // Allow content edit
47 '_bbp_allow_content_throttle' => 1, // Allow content throttle
48 '_bbp_allow_revisions' => 1, // Allow revisions
49 '_bbp_allow_topic_tags' => 1, // Allow topic tagging
50 '_bbp_allow_search' => 1, // Allow forum-wide search
51 '_bbp_allow_forum_mods' => 1, // Allow per-forum moderation
52 '_bbp_allow_global_access' => 1, // Allow users from all sites to post
53 '_bbp_allow_anonymous' => 0, // Allow anonymous posting
54 '_bbp_allow_super_mods' => 0, // Allow mods to edit users
55 '_bbp_allow_threaded_replies' => 0, // Allow threaded replies
56 '_bbp_use_wp_editor' => 1, // Use the WordPress editor if available
57 '_bbp_use_autoembed' => 0, // Use oEmbed in topics and replies
58
59 /** Settings **********************************************************/
60
61 '_bbp_default_role' => $role, // Default forums role
62 '_bbp_edit_lock' => 5, // Lock post editing after 5 minutes
63 '_bbp_throttle_time' => 10, // Throttle post time to 10 seconds
64 '_bbp_thread_replies_depth' => 2, // Thread replies depth
65 '_bbp_theme_package_id' => 'default', // The ID for the current theme package
66 '_bbp_settings_integration' => 'basic', // How to integrate into wp-admin
67 '_bbp_engagements_strategy' => 'meta', // How to interact with engagements
68
69 /** Per Page **********************************************************/
70
71 '_bbp_topics_per_page' => 15, // Topics per page
72 '_bbp_replies_per_page' => 15, // Replies per page
73 '_bbp_forums_per_page' => 50, // Forums per page
74 '_bbp_topics_per_rss_page' => 25, // Topics per RSS page
75 '_bbp_replies_per_rss_page' => 25, // Replies per RSS page
76
77 /** Page For **********************************************************/
78
79 '_bbp_page_for_forums' => 0, // Page for forums
80 '_bbp_page_for_topics' => 0, // Page for forums
81 '_bbp_page_for_login' => 0, // Page for login
82 '_bbp_page_for_register' => 0, // Page for register
83 '_bbp_page_for_lost_pass' => 0, // Page for lost-pass
84
85 /** Forum Root ********************************************************/
86
87 '_bbp_root_slug' => 'forums', // Forum archive slug
88 '_bbp_show_on_root' => 'forums', // What to show on root (forums|topics)
89 '_bbp_include_root' => 1, // Include forum-archive before single slugs
90
91 /** Single Slugs ******************************************************/
92
93 '_bbp_forum_slug' => 'forum', // Forum slug
94 '_bbp_topic_slug' => 'topic', // Topic slug
95 '_bbp_reply_slug' => 'reply', // Reply slug
96 '_bbp_topic_tag_slug' => 'topic-tag', // Topic tag slug
97
98 /** User Slugs ********************************************************/
99
100 '_bbp_user_slug' => 'users', // User profile slug
101 '_bbp_user_engs_slug' => 'engagements', // User engagements slug
102 '_bbp_user_favs_slug' => 'favorites', // User favorites slug
103 '_bbp_user_subs_slug' => 'subscriptions', // User subscriptions slug
104 '_bbp_topic_archive_slug' => 'topics', // Topic archive slug
105 '_bbp_reply_archive_slug' => 'replies', // Reply archive slug
106
107 /** Other Slugs *******************************************************/
108
109 '_bbp_view_slug' => 'view', // View slug
110 '_bbp_search_slug' => 'search', // Search slug
111
112 /** Topics ************************************************************/
113
114 '_bbp_title_max_length' => 80, // Title Max Length
115 '_bbp_super_sticky_topics' => '', // Super stickies
116
117 /** Forums ************************************************************/
118
119 '_bbp_private_forums' => '', // Private forums
120 '_bbp_hidden_forums' => '', // Hidden forums
121
122 /** BuddyPress ********************************************************/
123
124 '_bbp_enable_group_forums' => 1, // Enable BuddyPress Group Extension
125 '_bbp_group_forums_root_id' => 0, // Group Forums parent forum id
126
127 /** Akismet ***********************************************************/
128
129 '_bbp_enable_akismet' => 1, // Users from all sites can post
130
131 /** Converter *********************************************************/
132
133 // Connection
134 '_bbp_converter_db_user' => '', // Database User
135 '_bbp_converter_db_pass' => '', // Database Password
136 '_bbp_converter_db_name' => '', // Database Name
137 '_bbp_converter_db_port' => 3306, // Database Port
138 '_bbp_converter_db_server' => 'localhost', // Database Server/IP
139 '_bbp_converter_db_prefix' => '', // Database table prefix
140
141 // Options
142 '_bbp_converter_rows' => 100, // Number of rows to query
143 '_bbp_converter_delay_time' => 2, // Seconds to wait between queries
144 '_bbp_converter_step' => false, // Current converter step
145 '_bbp_converter_start' => false, // Step to start at
146 '_bbp_converter_convert_users' => false, // Whether to convert users
147 '_bbp_converter_halt' => false, // Halt on errors
148 '_bbp_converter_platform' => false, // Which platform to use
149 '_bbp_converter_query' => false // Last query
150 );
151 }
152
153 // Filter & return
154 return (array) apply_filters( 'bbp_get_default_options', $options );
155 }
156
157 /**
158 * Add default options
159 *
160 * Hooked to bbp_activate, it is only called once when bbPress is activated.
161 * This is non-destructive, so existing settings will not be overridden.
162 *
163 * @since 2.0.0 bbPress (r3421)
164 */
165 function bbp_add_options() {
166
167 // Add default options
168 foreach ( bbp_get_default_options() as $key => $value ) {
169 add_option( $key, $value );
170 }
171
172 // Allow previously activated plugins to append their own options.
173 do_action( 'bbp_add_options' );
174 }
175
176 /**
177 * Delete default options
178 *
179 * Hooked to bbp_uninstall, it is only called once when bbPress is uninstalled.
180 * This is destructive, so existing settings will be destroyed.
181 *
182 * @since 2.0.0 bbPress (r3421)
183 */
184 function bbp_delete_options() {
185
186 // Add default options
187 foreach ( array_keys( bbp_get_default_options() ) as $key ) {
188 delete_option( $key );
189 }
190
191 // Allow previously activated plugins to append their own options.
192 do_action( 'bbp_delete_options' );
193 }
194
195 /**
196 * Add filters to each bbPress option and allow them to be overloaded from
197 * inside the $bbp->options array.
198 *
199 * @since 2.0.0 bbPress (r3451)
200 */
201 function bbp_setup_option_filters() {
202
203 // Add filters to each bbPress option
204 foreach ( array_keys( bbp_get_default_options() ) as $key ) {
205 add_filter( 'pre_option_' . $key, 'bbp_filter_pre_get_option', 10, 2 );
206 add_filter( 'default_option_' . $key, 'bbp_filter_default_option', 10, 3 );
207 }
208
209 // Allow previously activated plugins to append their own options.
210 do_action( 'bbp_setup_option_filters' );
211 }
212
213 /**
214 * Filter pre options and maybe overloaded from the $bbp->options array.
215 *
216 * This function should not be called directly.
217 *
218 * @since 2.0.0 bbPress (r3451)
219 * @access private
220 *
221 * @param bool $value Default value false
222 * @param string $option Name of the option
223 *
224 * @return mixed false if not overloaded, mixed if set
225 */
226 function bbp_filter_pre_get_option( $value = false, $option = '' ) {
227
228 // Check the options global for preset value
229 if ( isset( bbpress()->options[ $option ] ) ) {
230 $value = bbpress()->options[ $option ];
231 }
232
233 // Always return a value, even if false
234 return $value;
235 }
236
237 /**
238 * Filter default_options set them from inside the $bbp->options array.
239 *
240 * This function should not be called directly.
241 *
242 * @since 2.6.0 bbPress (r3451)
243 * @access private
244 *
245 * @param bool $value Optional. Default value false
246 * @return mixed false if not overloaded, mixed if set
247 */
248 function bbp_filter_default_option( $default = false, $option = '', $passed_default = false ) {
249 $options = bbp_get_default_options();
250
251 // Maybe use the default value
252 if ( isset( $options[ $option ] ) ) {
253
254 // Try to use the passed default and fallback to assumed default
255 $default = ( true === $passed_default )
256 ? $default
257 : $options[ $option ];
258 }
259
260 // Always return a value, even if false
261 return $default;
262 }
263
264 /**
265 * Loads & caches bbPress options if a persistent cache is not being used.
266 *
267 * @since 2.6.0
268 */
269 function bbp_pre_load_options() {
270
271 // Bail if using object cache or installing
272 if ( wp_using_ext_object_cache() || wp_installing() ) {
273 return;
274 }
275
276 // Maybe intercept
277 $strategy = apply_filters( 'bbp_pre_load_options_strategy', 'notoptions' );
278 $intercept = bbp_maybe_intercept( __FUNCTION__, $strategy );
279 if ( bbp_is_intercepted( $intercept ) ) {
280 return $intercept;
281 }
282
283 // Get variables
284 $bbp = bbpress();
285 $bbp_options = bbp_get_default_options();
286 $all_options = wp_load_alloptions();
287 $not_options = (array) wp_cache_get( 'notoptions', 'options' );
288
289 // Loop through all bbPress options to maybe cache their non-existence
290 foreach ( $bbp_options as $option => $value ) {
291
292 // Skip if already saved to database
293 if ( isset( $all_options[ $option ] ) ) {
294 continue;
295
296 // Skip if overloaded
297 } elseif ( isset( $bbp->options[ $option ] ) ) {
298 continue;
299
300 // Skip if already in cache
301 } elseif ( wp_cache_get( $option, 'options' ) !== false ) {
302 continue;
303
304 // Needs caching to avoid database hit
305 } else {
306
307 // Store internally, for easier identification later
308 $bbp->not_options[ $option ] = $value;
309
310 // Cache to notoptions
311 if ( 'notoptions' === $strategy ) {
312 $not_options[ $option ] = true;
313 wp_cache_set( 'notoptions', $not_options, 'options' );
314
315 // Cache to option
316 } elseif ( 'option' === $strategy ) {
317 wp_cache_set( $option, $value, 'options' );
318 }
319 }
320 }
321 }
322
323 /** Active? *******************************************************************/
324
325 /**
326 * Checks if favorites feature is enabled.
327 *
328 * @since 2.0.0 bbPress (r2658)
329 *
330 * @param bool $default Optional.Default value true
331 * @return bool Is favorites enabled or not
332 */
333 function bbp_is_favorites_active( $default = 1 ) {
334
335 // Filter & return
336 return (bool) apply_filters( 'bbp_is_favorites_active', (bool) get_option( '_bbp_enable_favorites', $default ) );
337 }
338
339 /**
340 * Checks if subscription feature is enabled.
341 *
342 * @since 2.0.0 bbPress (r2658)
343 *
344 * @param bool $default Optional.Default value true
345 * @return bool Is subscription enabled or not
346 */
347 function bbp_is_subscriptions_active( $default = 1 ) {
348
349 // Filter & return
350 return (bool) apply_filters( 'bbp_is_subscriptions_active', (bool) get_option( '_bbp_enable_subscriptions', $default ) );
351 }
352
353 /**
354 * Checks if engagements feature is enabled.
355 *
356 * @since 2.6.0 bbPress (r6320)
357 *
358 * @param bool $default Optional.Default value true
359 * @return bool Is engagements enabled or not
360 */
361 function bbp_is_engagements_active( $default = 1 ) {
362
363 // Filter & return
364 return (bool) apply_filters( 'bbp_is_engagements_active', (bool) get_option( '_bbp_enable_engagements', $default ) );
365 }
366
367 /**
368 * Is content editing available when posting new topics & replies?
369 *
370 * @since 2.6.0 bbPress (r6441)
371 *
372 * @param bool $default Optional. Default value false
373 * @return bool Is content editing allowed?
374 */
375 function bbp_allow_content_edit( $default = 1 ) {
376
377 // Filter & return
378 return (bool) apply_filters( 'bbp_allow_content_edit', (bool) get_option( '_bbp_allow_content_edit', $default ) );
379 }
380
381 /**
382 * Is content throttling engaged when posting new topics & replies?
383 *
384 * @since 2.6.0 bbPress (r6441)
385 *
386 * @param bool $default Optional. Default value false
387 * @return bool Is content throttling allowed?
388 */
389 function bbp_allow_content_throttle( $default = 1 ) {
390
391 // Filter & return
392 return (bool) apply_filters( 'bbp_allow_content_throttle', (bool) get_option( '_bbp_allow_content_throttle', $default ) );
393 }
394
395 /**
396 * Are topic tags allowed
397 *
398 * @since 2.2.0 bbPress (r4097)
399 *
400 * @param bool $default Optional. Default value true
401 * @return bool Are tags allowed?
402 */
403 function bbp_allow_topic_tags( $default = 1 ) {
404
405 // Filter & return
406 return (bool) apply_filters( 'bbp_allow_topic_tags', (bool) get_option( '_bbp_allow_topic_tags', $default ) );
407 }
408
409 /**
410 * Are per-forum moderators allowed
411 *
412 * @since 2.6.0 bbPress (r5834)
413 *
414 * @param bool $default Optional. Default value true.
415 *
416 * @return bool Are per-forum moderators allowed?
417 */
418 function bbp_allow_forum_mods( $default = 1 ) {
419
420 // Filter & return
421 return (bool) apply_filters( 'bbp_allow_forum_mods', (bool) get_option( '_bbp_allow_forum_mods', $default ) );
422 }
423
424 /**
425 * Are moderators allowed to edit users
426 *
427 * @since 2.6.0 bbPress (r6562)
428 *
429 * @param bool $default Optional. Default value true.
430 *
431 * @return bool Are moderators allowed to edit users?
432 */
433 function bbp_allow_super_mods( $default = 0 ) {
434
435 // Filter & return
436 return (bool) apply_filters( 'bbp_allow_super_mods', (bool) get_option( '_bbp_allow_super_mods', $default ) );
437 }
438
439 /**
440 * Is forum-wide searching allowed
441 *
442 * @since 2.4.0 bbPress (r4970)
443 *
444 * @param bool $default Optional. Default value true
445 * @return bool Is forum-wide searching allowed?
446 */
447 function bbp_allow_search( $default = 1 ) {
448
449 // Filter & return
450 return (bool) apply_filters( 'bbp_allow_search', (bool) get_option( '_bbp_allow_search', $default ) );
451 }
452
453 /**
454 * Are threaded replies allowed
455 *
456 * @since 2.4.0 bbPress (r4964)
457 *
458 * @param bool $default Optional. Default value false
459 * @return bool Are threaded replies allowed?
460 */
461 function bbp_allow_threaded_replies( $default = 0 ) {
462
463 // Filter & return
464 return (bool) apply_filters( '_bbp_allow_threaded_replies', (bool) get_option( '_bbp_allow_threaded_replies', $default ) );
465 }
466
467 /**
468 * Maximum reply thread depth
469 *
470 * @since 2.4.0 bbPress (r4944)
471 *
472 * @param int $default Thread replies depth
473 * @return int Thread replies depth
474 */
475 function bbp_thread_replies_depth( $default = 2 ) {
476
477 // Filter & return
478 return (int) apply_filters( 'bbp_thread_replies_depth', (int) get_option( '_bbp_thread_replies_depth', $default ) );
479 }
480
481 /**
482 * Are topic and reply revisions allowed
483 *
484 * @since 2.0.0 bbPress (r3412)
485 *
486 * @param bool $default Optional. Default value true
487 * @return bool Are revisions allowed?
488 */
489 function bbp_allow_revisions( $default = 1 ) {
490
491 // Filter & return
492 return (bool) apply_filters( 'bbp_allow_revisions', (bool) get_option( '_bbp_allow_revisions', $default ) );
493 }
494
495 /**
496 * Is the anonymous posting allowed?
497 *
498 * @since 2.0.0 bbPress (r2659)
499 *
500 * @param bool $default Optional. Default value
501 * @return bool Is anonymous posting allowed?
502 */
503 function bbp_allow_anonymous( $default = 0 ) {
504
505 // Filter & return
506 return apply_filters( 'bbp_allow_anonymous', (bool) get_option( '_bbp_allow_anonymous', $default ) );
507 }
508
509 /**
510 * Is this forum available to all users on all sites in this installation?
511 *
512 * @since 2.0.0 bbPress (r3378)
513 *
514 * @param bool $default Optional. Default value false
515 * @return bool Is global access allowed?
516 */
517 function bbp_allow_global_access( $default = 1 ) {
518
519 // Filter & return
520 return (bool) apply_filters( 'bbp_allow_global_access', (bool) get_option( '_bbp_allow_global_access', $default ) );
521 }
522
523 /**
524 * Get the default forums role (issued to users on their first visit to the
525 * forums) by bbp_set_current_user_default_role() and repair tools
526 *
527 * @since 2.2.0 bbPress (r4294)
528 *
529 * @param string $default Optional. Default value empty
530 * @return string The default forums user role
531 */
532 function bbp_get_default_role( $default = 'bbp_participant' ) {
533
534 // Filter & return
535 return apply_filters( 'bbp_get_default_role', get_option( '_bbp_default_role', $default ) );
536 }
537
538 /**
539 * Use the WordPress editor if available
540 *
541 * @since 2.0.0 bbPress (r3386)
542 *
543 * @param bool $default Optional. Default value true
544 * @return bool Use WP editor?
545 */
546 function bbp_use_wp_editor( $default = 1 ) {
547
548 // Filter & return
549 return (bool) apply_filters( 'bbp_use_wp_editor', (bool) get_option( '_bbp_use_wp_editor', $default ) );
550 }
551
552 /**
553 * Use WordPress's oEmbed API
554 *
555 * @since 2.1.0 bbPress (r3752)
556 *
557 * @param bool $default Optional. Default value true
558 * @return bool Use oEmbed?
559 */
560 function bbp_use_autoembed( $default = 1 ) {
561
562 // Filter & return
563 return (bool) apply_filters( 'bbp_use_autoembed', (bool) get_option( '_bbp_use_autoembed', $default ) );
564 }
565
566 /**
567 * Get the current theme package ID
568 *
569 * @since 2.1.0 bbPress (r3829)
570 *
571 * @param string $default Optional. Default value 'default'
572 * @return string ID of the theme-package
573 */
574 function bbp_get_theme_package_id( $default = 'default' ) {
575
576 // Filter & return
577 return apply_filters( 'bbp_get_theme_package_id', get_option( '_bbp_theme_package_id', $default ) );
578 }
579
580 /**
581 * Output the maximum length of a title
582 *
583 * @since 2.0.0 bbPress (r3246)
584 *
585 * @param bool $default Optional. Default value 80
586 */
587 function bbp_title_max_length( $default = 80 ) {
588 echo bbp_get_title_max_length( $default );
589 }
590 /**
591 * Return the maximum length of a title
592 *
593 * @since 2.0.0 bbPress (r3246)
594 *
595 * @param bool $default Optional. Default value 80
596 * @return int Is anonymous posting allowed?
597 */
598 function bbp_get_title_max_length( $default = 80 ) {
599
600 // Filter & return
601 return (int) apply_filters( 'bbp_get_title_max_length', (int) get_option( '_bbp_title_max_length', $default ) );
602 }
603
604 /**
605 * Output the number of minutes a topic or reply can be edited after it's
606 * published. Used by `bbp_past_edit_lock()`.
607 *
608 * @since 2.6.0 bbPress (r6868)
609 *
610 * @param bool $default Optional. Default value 5
611 */
612 function bbp_edit_lock( $default = 5 ) {
613 echo bbp_get_edit_lock( $default );
614 }
615 /**
616 * Return the number of minutes a topic or reply can be edited after it's
617 * published. Used by `bbp_past_edit_lock()`.
618 *
619 * @since 2.6.0 bbPress (r6868)
620 *
621 * @param bool $default Optional. Default value 5
622 * @return int Is anonymous posting allowed?
623 */
624 function bbp_get_edit_lock( $default = 5 ) {
625
626 // Filter & return
627 return (int) apply_filters( 'bbp_get_edit_lock', (int) get_option( '_bbp_edit_lock', $default ) );
628 }
629
630 /**
631 * Output the group forums root parent forum id
632 *
633 * @since 2.1.0 bbPress (r3575)
634 *
635 * @param int $default Optional. Default value
636 */
637 function bbp_group_forums_root_id( $default = 0 ) {
638 echo bbp_get_group_forums_root_id( $default );
639 }
640 /**
641 * Return the group forums root parent forum id
642 *
643 * @since 2.1.0 bbPress (r3575)
644 *
645 * @param bool $default Optional. Default value 0
646 * @return int The post ID for the root forum
647 */
648 function bbp_get_group_forums_root_id( $default = 0 ) {
649
650 // Filter & return
651 return (int) apply_filters( 'bbp_get_group_forums_root_id', (int) get_option( '_bbp_group_forums_root_id', $default ) );
652 }
653
654 /**
655 * Checks if BuddyPress Group Forums are enabled
656 *
657 * @since 2.1.0 bbPress (r3575)
658 *
659 * @param bool $default Optional. Default value true
660 * @return bool Is group forums enabled or not
661 */
662 function bbp_is_group_forums_active( $default = 1 ) {
663
664 // Filter & return
665 return (bool) apply_filters( 'bbp_is_group_forums_active', (bool) get_option( '_bbp_enable_group_forums', $default ) );
666 }
667
668 /**
669 * Checks if Akismet is enabled
670 *
671 * @since 2.1.0 bbPress (r3575)
672 *
673 * @param bool $default Optional. Default value true
674 * @return bool Is Akismet enabled or not
675 */
676 function bbp_is_akismet_active( $default = 1 ) {
677
678 // Filter & return
679 return (bool) apply_filters( 'bbp_is_akismet_active', (bool) get_option( '_bbp_enable_akismet', $default ) );
680 }
681
682 /**
683 * Integrate settings into existing WordPress pages
684 *
685 * There are 3 possible modes:
686 * - 'basic' Traditional admin integration
687 * - 'compact' One "bbPress" top-level admin menu
688 * - 'deep' Deeply integrate with the WordPress admin interface
689 *
690 * @since 2.4.0 bbPress (r4932)
691 *
692 * @param bool $default Optional. Default value false
693 * @return string How to integrate settings
694 */
695 function bbp_settings_integration( $default = 'basic' ) {
696
697 // Get the option value
698 $integration = get_option( '_bbp_settings_integration', $default );
699
700 // Back-compat for deep/basic (pre-2.6)
701 if ( is_numeric( $integration ) ) {
702 $integration = ( 1 === (int) $integration )
703 ? 'deep'
704 : 'basic';
705 }
706
707 // Fallback to 'basic' if invalid
708 if ( ! in_array( $integration, array( 'basic', 'deep', 'compact' ), true ) ) {
709 $integration = 'basic';
710 }
711
712 // Filter & return
713 return apply_filters( 'bbp_settings_integration', $integration, $default );
714 }
715
716 /**
717 * How to interact with engagements
718 *
719 * There are 3 possible strategies:
720 * - 'meta' 2.6 and higher. Uses multiple postmeta keys.
721 * - 'user' Pre-2.6. Uses comma-separated string of IDs in usermeta.
722 * - 'term' Alternate. Uses taxonomy term relationships.
723 *
724 * @since 2.6.0 bbPress (r6875)
725 *
726 * @param bool $default Optional. Default value false
727 * @return string How to interact with engagements
728 */
729 function bbp_engagements_strategy( $default = 'meta' ) {
730
731 // Get the option value
732 $integration = get_option( '_bbp_engagements_strategy', $default );
733
734 // Check that class exists, or fallback
735 $class_name = 'BBP_User_Engagements_' . ucwords( $integration );
736
737 // Fallback to 'meta' if invalid
738 if ( ! class_exists( $class_name ) ) {
739 $integration = 'meta';
740 }
741
742 // Filter & return
743 return apply_filters( 'bbp_engagements_strategy', $integration, $default );
744 }
745
746 /** Slugs *********************************************************************/
747
748 /**
749 * Return the root slug
750 *
751 * @since 2.1.0 bbPress (r3759)
752 *
753 * @param string $default Optional. Default value 'forums'
754 * @return string
755 */
756 function bbp_get_root_slug( $default = 'forums' ) {
757
758 // Filter & return
759 return apply_filters( 'bbp_get_root_slug', get_option( '_bbp_root_slug', $default ) );
760 }
761
762 /**
763 * Are we including the root slug in front of forum pages?
764 *
765 * @since 2.1.0 bbPress (r3759)
766 *
767 * @param bool $default Optional. Default value true
768 * @return bool
769 */
770 function bbp_include_root_slug( $default = 1 ) {
771
772 // Filter & return
773 return (bool) apply_filters( 'bbp_include_root_slug', (bool) get_option( '_bbp_include_root', $default ) );
774 }
775
776 /**
777 * What to show on root, forums or topics?
778 *
779 * @since 2.4.0 bbPress (r4932)
780 *
781 * @param string $default Optional. Default value 'forums'
782 * @return string
783 */
784 function bbp_show_on_root( $default = 'forums' ) {
785
786 // Filter & return
787 return apply_filters( 'bbp_show_on_root', get_option( '_bbp_show_on_root', $default ) );
788 }
789
790 /**
791 * Maybe return the root slug, based on whether or not it's included in the url
792 *
793 * @since 2.1.0 bbPress (r3759)
794 *
795 * @param string $default Optional. Default value 'forums'
796 * @return string
797 */
798 function bbp_maybe_get_root_slug() {
799 $slug = bbp_get_root_slug();
800 $retval = ( ! empty( $slug ) && bbp_include_root_slug() )
801 ? trailingslashit( $slug )
802 : '';
803
804 // Filter & return
805 return apply_filters( 'bbp_maybe_get_root_slug', $retval );
806 }
807
808 /**
809 * Return the single forum slug
810 *
811 * @since 2.1.0 bbPress (r3759)
812 *
813 * @param string $default Optional. Default value 'forum'
814 * @return string
815 */
816 function bbp_get_forum_slug( $default = 'forum' ) {
817
818 // Filter & return
819 return apply_filters( 'bbp_get_forum_slug', bbp_maybe_get_root_slug() . get_option( '_bbp_forum_slug', $default ) );
820 }
821
822 /**
823 * Return the topic archive slug
824 *
825 * @since 2.1.0 bbPress (r3759)
826 *
827 * @param string $default Optional. Default value 'topics'
828 * @return string
829 */
830 function bbp_get_topic_archive_slug( $default = 'topics' ) {
831
832 // Filter & return
833 return apply_filters( 'bbp_get_topic_archive_slug', get_option( '_bbp_topic_archive_slug', $default ) );
834 }
835
836 /**
837 * Return the reply archive slug
838 *
839 * @since 2.4.0 bbPress (r4925)
840 *
841 * @param string $default Optional. Default value 'replies'
842 * @return string
843 */
844 function bbp_get_reply_archive_slug( $default = 'replies' ) {
845
846 // Filter & return
847 return apply_filters( 'bbp_get_reply_archive_slug', get_option( '_bbp_reply_archive_slug', $default ) );
848 }
849
850 /**
851 * Return the single topic slug
852 *
853 * @since 2.1.0 bbPress (r3759)
854 *
855 * @param string $default Optional. Default value 'topic'
856 * @return string
857 */
858 function bbp_get_topic_slug( $default = 'topic' ) {
859
860 // Filter & return
861 return apply_filters( 'bbp_get_topic_slug', bbp_maybe_get_root_slug() . get_option( '_bbp_topic_slug', $default ) );
862 }
863
864 /**
865 * Return the topic-tag taxonomy slug
866 *
867 * @since 2.1.0 bbPress (r3759)
868 *
869 * @param string $default Optional. Default value 'topic-tag'
870 * @return string
871 */
872 function bbp_get_topic_tag_tax_slug( $default = 'topic-tag' ) {
873
874 // Filter & return
875 return apply_filters( 'bbp_get_topic_tag_tax_slug', bbp_maybe_get_root_slug() . get_option( '_bbp_topic_tag_slug', $default ) );
876 }
877
878 /**
879 * Return the single reply slug (used mostly for editing)
880 *
881 * @since 2.1.0 bbPress (r3759)
882 *
883 * @param string $default Optional. Default value 'reply'
884 * @return string
885 */
886 function bbp_get_reply_slug( $default = 'reply' ) {
887
888 // Filter & return
889 return apply_filters( 'bbp_get_reply_slug', bbp_maybe_get_root_slug() . get_option( '_bbp_reply_slug', $default ) );
890 }
891
892 /**
893 * Return the single user slug
894 *
895 * @since 2.1.0 bbPress (r3759)
896 *
897 * @param string $default Optional. Default value 'users'
898 * @return string
899 */
900 function bbp_get_user_slug( $default = 'users' ) {
901
902 // Filter & return
903 return apply_filters( 'bbp_get_user_slug', bbp_maybe_get_root_slug() . get_option( '_bbp_user_slug', $default ) );
904 }
905
906 /**
907 * Return the single user favorites slug
908 *
909 * @since 2.2.0 bbPress (r4187)
910 *
911 * @param string $default Optional. Default value 'favorites'
912 * @return string
913 */
914 function bbp_get_user_favorites_slug( $default = 'favorites' ) {
915
916 // Filter & return
917 return apply_filters( 'bbp_get_user_favorites_slug', get_option( '_bbp_user_favs_slug', $default ) );
918 }
919
920 /**
921 * Return the single user subscriptions slug
922 *
923 * @since 2.2.0 bbPress (r4187)
924 *
925 * @param string $default Optional. Default value 'subscriptions'
926 * @return string
927 */
928 function bbp_get_user_subscriptions_slug( $default = 'subscriptions' ) {
929
930 // Filter & return
931 return apply_filters( 'bbp_get_user_subscriptions_slug', get_option( '_bbp_user_subs_slug', $default ) );
932 }
933
934 /**
935 * Return the single user engagements slug
936 *
937 * @since 2.6.0 bbPress (r6320)
938 *
939 * @param string $default Optional. Default value 'engagements'
940 * @return string
941 */
942 function bbp_get_user_engagements_slug( $default = 'engagements' ) {
943
944 // Filter & return
945 return apply_filters( 'bbp_get_user_engagements_slug', get_option( '_bbp_user_engs_slug', $default ) );
946 }
947
948 /**
949 * Return the topic view slug
950 *
951 * @since 2.1.0 bbPress (r3759)
952 *
953 * @param string $default Optional. Default value 'view'
954 * @return string
955 */
956 function bbp_get_view_slug( $default = 'view' ) {
957
958 // Filter & return
959 return apply_filters( 'bbp_get_view_slug', bbp_maybe_get_root_slug() . get_option( '_bbp_view_slug', $default ) );
960 }
961
962 /**
963 * Return the search slug
964 *
965 * @since 2.3.0 bbPress (r4579)
966 *
967 * @param string $default Optional. Default value 'search'
968 * @return string
969 */
970 function bbp_get_search_slug( $default = 'search' ) {
971
972 // Filter & return
973 return apply_filters( 'bbp_get_search_slug', bbp_maybe_get_root_slug() . get_option( '_bbp_search_slug', $default ) );
974 }
975
976 /**
977 * Return the edit slug
978 *
979 * @since 2.6.2 bbPress (r6965)
980 *
981 * @param string $default Optional. Default value 'edit'
982 * @return string
983 */
984 function bbp_get_edit_slug( $default = 'edit' ) {
985
986 // Filter & return
987 return apply_filters( 'bbp_get_edit_slug', get_option( '_bbp_edit_slug', $default ) );
988 }
989
990 /** Legacy ********************************************************************/
991
992 /**
993 * Checks if there is a previous BuddyPress Forum configuration
994 *
995 * @since 2.1.0 bbPress (r3790)
996 *
997 * @param string $default Optional. Default empty string
998 * @return string The location of the bb-config.php file, if any
999 */
1000 function bbp_get_config_location( $default = '' ) {
1001
1002 // Filter & return
1003 return apply_filters( 'bbp_get_config_location', get_option( 'bb-config-location', $default ) );
1004 }
1005