PluginProbe
bbPress / 2.6.17
bbPress v2.6.17
2.6.17 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 All 72 releases
bbpress / includes / core / actions.php

actions.php in bbPress 2.6.17, at includes/core/actions.php

430 lines 20.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * bbPress Actions
5 *
6 * This file contains the actions that are used through-out bbPress. They are
7 * consolidated here to make searching for them easier, and to help developers
8 * understand at a glance the order in which things occur.
9 *
10 * There are a few common places that additional actions can currently be found
11 *
12 * - bbPress: In {@link bbPress::setup_actions()} in bbpress.php
13 * - Admin: More in {@link BBP_Admin::setup_actions()} in admin.php
14 *
15 * @package bbPress
16 * @subpackage Core
17 *
18 * @see /core/filters.php
19 */
20
21 // Exit if accessed directly
22 defined( 'ABSPATH' ) || exit;
23
24 /**
25 * Attach bbPress to WordPress
26 *
27 * bbPress uses its own internal actions to help aid in third-party plugin
28 * development, and to limit the amount of potential future code changes when
29 * updates to WordPress core occur.
30 *
31 * These actions exist to create the concept of 'plugin dependencies'. They
32 * provide a safe way for plugins to execute code *only* when bbPress is
33 * installed and activated, without needing to do complicated guesswork.
34 *
35 * For more information on how this works, see the 'Plugin Dependency' section
36 * near the bottom of this file.
37 *
38 * v--WordPress Actions v--bbPress Sub-actions
39 */
40 add_action( 'plugins_loaded', 'bbp_loaded', 10 );
41 add_action( 'init', 'bbp_init', 0 ); // Early for bbp_register
42 add_action( 'parse_query', 'bbp_parse_query', 2 ); // Early for overrides
43 add_action( 'generate_rewrite_rules', 'bbp_generate_rewrite_rules', 10 );
44 add_action( 'after_setup_theme', 'bbp_after_setup_theme', 10 );
45 add_action( 'setup_theme', 'bbp_setup_theme', 10 );
46 add_action( 'set_current_user', 'bbp_setup_current_user', 10 );
47 add_action( 'profile_update', 'bbp_profile_update', 10, 2 ); // user_id and old_user_data
48 add_action( 'user_register', 'bbp_user_register', 10 );
49 add_action( 'login_form_login', 'bbp_login_form_login', 10 );
50 add_action( 'template_redirect', 'bbp_template_redirect', 8 ); // Before BuddyPress's 10 [BB2225]
51 add_action( 'widgets_init', 'bbp_widgets_init', 10 );
52 add_action( 'wp_roles_init', 'bbp_roles_init', 10 );
53 add_action( 'wp_enqueue_scripts', 'bbp_enqueue_scripts', 10 );
54 add_action( 'wp_head', 'bbp_head', 10 );
55 add_action( 'wp_footer', 'bbp_footer', 10 );
56 add_action( 'rest_api_init', 'bbp_rest_api_init', 10 );
57 add_action( 'xmlrpc_call', 'bbp_xmlrpc_call', 10, 3 );
58 add_action( 'transition_post_status', 'bbp_transition_post_status', 10, 3 );
59 add_action( 'post_updated', 'bbp_post_updated', 10, 3 );
60
61 /**
62 * bbp_loaded - Attached to 'plugins_loaded' above
63 *
64 * Attach various loader actions to the bbp_loaded action.
65 * The load order helps to execute code at the correct time.
66 * v---Load order
67 */
68 add_action( 'bbp_loaded', 'bbp_constants', 2 );
69 add_action( 'bbp_loaded', 'bbp_boot_strap_globals', 4 );
70 add_action( 'bbp_loaded', 'bbp_includes', 6 );
71 add_action( 'bbp_loaded', 'bbp_setup_globals', 8 );
72 add_action( 'bbp_loaded', 'bbp_setup_option_filters', 10 );
73 add_action( 'bbp_loaded', 'bbp_setup_user_option_filters', 12 );
74 add_action( 'bbp_loaded', 'bbp_pre_load_options', 14 );
75
76 /**
77 * bbp_init - Attached to 'init' above
78 *
79 * Attach various initialization actions to the init action.
80 * The load order helps to execute code at the correct time.
81 * v---Load order
82 */
83 add_action( 'bbp_init', 'bbp_load_textdomain', 0 );
84 add_action( 'bbp_init', 'bbp_register', 10 );
85 add_action( 'bbp_init', 'bbp_add_rewrite_tags', 20 );
86 add_action( 'bbp_init', 'bbp_add_rewrite_rules', 30 );
87 add_action( 'bbp_init', 'bbp_add_permastructs', 40 );
88 add_action( 'bbp_init', 'bbp_setup_engagements', 50 );
89 add_action( 'bbp_init', 'bbp_ready', 999 );
90
91 /**
92 * bbp_rest_api_init - Attached to 'rest_api_init' above
93 */
94 add_action( 'bbp_rest_api_init', 'bbp_register_rest_attachment_controller', 5 );
95
96 /**
97 * bbp_xmlrpc_call - Attached to 'xmlrpc_call' above
98 */
99 add_action( 'bbp_xmlrpc_call', 'bbp_validate_xmlrpc_post', 10, 2 );
100
101 /**
102 * bbp_setup_theme - Attached to 'setup_theme' above
103 *
104 * Attach various theme related actions to the setup_theme action.
105 * The load order helps to execute code at the correct time.
106 * v---Load order
107 */
108 add_action( 'bbp_setup_theme', 'bbp_register_theme_packages', 2 ); // Lower than 5
109
110 /**
111 * bbp_roles_init - Attached to 'wp_roles_init' above
112 *
113 * Attach various role related actions to the wp_roles_init action.
114 * The load order helps to execute code at the correct time.
115 * v---Load order
116 */
117 add_action( 'bbp_roles_init', 'bbp_add_forums_roles', 8 );
118
119 /**
120 * When setting up the current user, make sure they have a role for the forums.
121 *
122 * This is multisite aware, thanks to bbp_filter_user_roles_option(), hooked to
123 * the 'bbp_loaded' action above.
124 */
125 add_action( 'bbp_setup_current_user', 'bbp_set_current_user_default_role' );
126
127 /**
128 * bbp_register - Attached to 'init' above on 0 priority
129 *
130 * Attach various initialization actions early to the init action.
131 * The load order helps to execute code at the correct time.
132 * v---Load order
133 */
134 add_action( 'bbp_register', 'bbp_register_post_types', 2 );
135 add_action( 'bbp_register', 'bbp_register_post_statuses', 4 );
136 add_action( 'bbp_register', 'bbp_register_taxonomies', 6 );
137 add_action( 'bbp_register', 'bbp_register_views', 8 );
138 add_action( 'bbp_register', 'bbp_register_shortcodes', 10 );
139 add_action( 'bbp_register', 'bbp_register_meta', 12 );
140
141 // Autoembeds
142 add_action( 'bbp_init', 'bbp_reply_content_autoembed', 8 );
143 add_action( 'bbp_init', 'bbp_topic_content_autoembed', 8 );
144
145 // <body> class swap from "bbp-no-js" to "bbp-js"
146 add_action( 'wp_body_open', 'bbp_swap_no_js_body_class' );
147 add_action( 'bbp_footer', 'bbp_swap_no_js_body_class' );
148
149 /**
150 * bbp_ready - attached to end 'bbp_init' above
151 *
152 * Attach actions to the ready action after bbPress has fully initialized.
153 * The load order helps to execute code at the correct time.
154 * v---Load order
155 */
156 add_action( 'bbp_ready', 'bbp_setup_akismet', 2 ); // Spam prevention for topics and replies
157
158 // Setup BuddyPress using its own hook
159 add_action( 'bp_init', 'bbp_setup_buddypress', 0 ); // Social network integration
160
161 // Try to load the bbpress-functions.php file from the active themes
162 add_action( 'bbp_after_setup_theme', 'bbp_load_theme_functions', 10 );
163
164 // Widgets
165 // phpcs:disable Universal.WhiteSpace.CommaSpacing.TooMuchSpaceAfter
166 add_action( 'bbp_widgets_init', array( 'BBP_Login_Widget', 'register_widget' ), 10 );
167 add_action( 'bbp_widgets_init', array( 'BBP_Views_Widget', 'register_widget' ), 10 );
168 add_action( 'bbp_widgets_init', array( 'BBP_Search_Widget', 'register_widget' ), 10 );
169 add_action( 'bbp_widgets_init', array( 'BBP_Forums_Widget', 'register_widget' ), 10 );
170 add_action( 'bbp_widgets_init', array( 'BBP_Topics_Widget', 'register_widget' ), 10 );
171 add_action( 'bbp_widgets_init', array( 'BBP_Replies_Widget', 'register_widget' ), 10 );
172 add_action( 'bbp_widgets_init', array( 'BBP_Stats_Widget', 'register_widget' ), 10 );
173
174 // Notices
175 add_action( 'bbp_template_notices', 'bbp_template_notices', 20 );
176 add_action( 'bbp_template_notices', 'bbp_login_notices' );
177 add_action( 'bbp_template_notices', 'bbp_topic_notices' );
178 add_action( 'bbp_template_notices', 'bbp_notice_edit_user_success' );
179 add_action( 'bbp_template_notices', 'bbp_notice_edit_user_pending_email' );
180 add_action( 'bbp_template_notices', 'bbp_notice_edit_user_is_super_admin', 2 );
181
182 // Always exclude private/hidden forums if needed
183 add_action( 'pre_get_posts', 'bbp_pre_get_posts_normalize_forum_visibility', 4 );
184
185 // Before Delete/Trash/Untrash Forum
186 add_action( 'wp_trash_post', 'bbp_trash_forum' );
187 add_action( 'trash_post', 'bbp_trash_forum' );
188 add_action( 'untrash_post', 'bbp_untrash_forum' );
189 add_action( 'before_delete_post', 'bbp_delete_forum' );
190
191 // After Deleted/Trashed/Untrashed Forum
192 add_action( 'trashed_post', 'bbp_trashed_forum' );
193 add_action( 'untrashed_post', 'bbp_untrashed_forum' );
194 add_action( 'deleted_post', 'bbp_deleted_forum', 10, 2 );
195
196 // Auto trash/untrash/delete a forums topics
197 add_action( 'bbp_delete_forum', 'bbp_delete_forum_topics', 10 );
198 add_action( 'bbp_trash_forum', 'bbp_trash_forum_topics', 10 );
199 add_action( 'bbp_untrash_forum', 'bbp_untrash_forum_topics', 10 );
200
201 // New/Edit Forum
202 add_action( 'bbp_new_forum', 'bbp_update_forum', 10 );
203 add_action( 'bbp_edit_forum', 'bbp_update_forum', 10 );
204
205 // Save forum extra metadata
206 add_action( 'bbp_new_forum_post_extras', 'bbp_save_forum_extras', 2 );
207 add_action( 'bbp_edit_forum_post_extras', 'bbp_save_forum_extras', 2 );
208 add_action( 'bbp_forum_attributes_metabox_save', 'bbp_save_forum_extras', 2 );
209
210 // New/Edit Reply
211 add_action( 'bbp_new_reply', 'bbp_update_reply', 10, 7 );
212 add_action( 'bbp_edit_reply', 'bbp_update_reply', 10, 7 );
213
214 // Before Delete/Trash/Untrash Reply
215 add_action( 'wp_trash_post', 'bbp_trash_reply' );
216 add_action( 'trash_post', 'bbp_trash_reply' );
217 add_action( 'untrash_post', 'bbp_untrash_reply' );
218 add_action( 'before_delete_post', 'bbp_delete_reply' );
219
220 // After Deleted/Trashed/Untrashed Reply
221 add_action( 'trashed_post', 'bbp_trashed_reply' );
222 add_action( 'untrashed_post', 'bbp_untrashed_reply' );
223 add_action( 'deleted_post', 'bbp_deleted_reply' );
224
225 // New/Edit Topic
226 add_action( 'bbp_new_topic', 'bbp_update_topic', 10, 5 );
227 add_action( 'bbp_edit_topic', 'bbp_update_topic', 10, 5 );
228
229 // Split/Merge Topic
230 add_action( 'bbp_merged_topic', 'bbp_merge_topic_count', 1, 3 );
231 add_action( 'bbp_post_split_topic', 'bbp_split_topic_count', 1, 3 );
232
233 // Move Reply
234 add_action( 'bbp_post_move_reply', 'bbp_move_reply_count', 1, 3 );
235
236 // Before Delete/Trash/Untrash Topic
237 add_action( 'wp_trash_post', 'bbp_trash_topic' );
238 add_action( 'trash_post', 'bbp_trash_topic' );
239 add_action( 'untrash_post', 'bbp_untrash_topic' );
240 add_action( 'before_delete_post', 'bbp_delete_topic' );
241
242 // After Deleted/Trashed/Untrashed Topic
243 add_action( 'trashed_post', 'bbp_trashed_topic' );
244 add_action( 'untrashed_post', 'bbp_untrashed_topic' );
245 add_action( 'deleted_post', 'bbp_deleted_topic' );
246
247 // Favorites
248 add_action( 'bbp_spam_topic', 'bbp_remove_topic_from_all_favorites' );
249 add_action( 'bbp_trash_topic', 'bbp_remove_topic_from_all_favorites' );
250 add_action( 'bbp_delete_topic', 'bbp_remove_topic_from_all_favorites' );
251
252 // Subscriptions
253 add_action( 'bbp_spam_topic', 'bbp_remove_topic_from_all_subscriptions' );
254 add_action( 'bbp_trash_topic', 'bbp_remove_topic_from_all_subscriptions' );
255 add_action( 'bbp_delete_topic', 'bbp_remove_topic_from_all_subscriptions' );
256 add_action( 'bbp_trash_forum', 'bbp_remove_forum_from_all_subscriptions' );
257 add_action( 'bbp_delete_forum', 'bbp_remove_forum_from_all_subscriptions' );
258
259 // Subscription notifications
260 add_action( 'bbp_new_reply', 'bbp_notify_topic_subscribers', 11, 5 );
261 add_action( 'bbp_new_topic', 'bbp_notify_forum_subscribers', 11, 4 );
262
263 // Sticky
264 add_action( 'bbp_stick_topic', 'bbp_unstick_topic' );
265 add_action( 'bbp_unapprove_topic', 'bbp_unstick_topic' );
266 add_action( 'bbp_spam_topic', 'bbp_unstick_topic' );
267 add_action( 'bbp_trash_topic', 'bbp_unstick_topic' );
268 add_action( 'bbp_delete_topic', 'bbp_unstick_topic' );
269
270 // Update topic branch
271 add_action( 'bbp_trashed_topic', 'bbp_update_topic_walker' );
272 add_action( 'bbp_untrashed_topic', 'bbp_update_topic_walker' );
273 add_action( 'bbp_deleted_topic', 'bbp_update_topic_walker' );
274 add_action( 'bbp_spammed_topic', 'bbp_update_topic_walker' );
275 add_action( 'bbp_unspammed_topic', 'bbp_update_topic_walker' );
276 add_action( 'bbp_approved_topic', 'bbp_update_topic_walker' );
277 add_action( 'bbp_unapproved_topic', 'bbp_update_topic_walker' );
278
279 // Update reply branch
280 add_action( 'bbp_trashed_reply', 'bbp_update_reply_walker' );
281 add_action( 'bbp_untrashed_reply', 'bbp_update_reply_walker' );
282 add_action( 'bbp_deleted_reply', 'bbp_update_reply_walker' );
283 add_action( 'bbp_spammed_reply', 'bbp_update_reply_walker' );
284 add_action( 'bbp_unspammed_reply', 'bbp_update_reply_walker' );
285 add_action( 'bbp_approved_reply', 'bbp_update_reply_walker' );
286 add_action( 'bbp_unapproved_reply', 'bbp_update_reply_walker' );
287
288 // Update counts from persisted post status changes
289 add_action( 'bbp_transition_post_status', 'bbp_update_counts_on_transition_post_status', 10, 3 );
290 add_action( 'bbp_transition_post_status', 'bbp_update_forum_subforum_count_on_transition_post_status', 10, 3 );
291
292 // Update parent subforum counts after updates and permanent deletion
293 add_action( 'bbp_deleted_forum', 'bbp_reparent_forum_subforums', 9, 2 );
294 add_action( 'bbp_deleted_forum', 'bbp_update_parent_forum_subforum_count', 10, 2 );
295 add_action( 'bbp_post_updated', 'bbp_update_forum_subforum_counts_on_post_updated', 10, 3 );
296
297 // Update user topic & reply counts
298 add_action( 'bbp_deleted_topic', 'bbp_decrease_user_topic_count' );
299 add_action( 'bbp_deleted_reply', 'bbp_decrease_user_reply_count' );
300 add_action( 'bbp_post_updated', 'bbp_update_counts_on_post_author_change', 10, 3 );
301 add_action( 'bbp_post_updated', 'bbp_recalculate_engagements_on_post_author_change', 20, 3 );
302
303 // Update counts and engagements after WordPress reassigns a deleted user's posts
304 add_action( 'delete_user', 'bbp_update_counts_on_user_reassignment', 10, 2 );
305 add_action( 'deleted_user', 'bbp_update_counts_on_user_reassignment', 10, 2 );
306
307 // Topic status transition helpers for replies
308 add_action( 'bbp_trash_topic', 'bbp_trash_topic_replies' );
309 add_action( 'bbp_untrash_topic', 'bbp_untrash_topic_replies' );
310 add_action( 'bbp_delete_topic', 'bbp_delete_topic_replies' );
311 add_action( 'bbp_spam_topic', 'bbp_spam_topic_replies' );
312 add_action( 'bbp_unspam_topic', 'bbp_unspam_topic_replies' );
313
314 // Topic engagements on user creation
315 add_action( 'bbp_new_topic', 'bbp_update_topic_engagements', 20 );
316 add_action( 'bbp_new_reply', 'bbp_update_topic_engagements', 20 );
317
318 add_action( 'bbp_new_reply', 'bbp_update_topic_voice_count', 30 );
319 add_action( 'bbp_new_topic', 'bbp_update_topic_voice_count', 30 );
320
321 // Topic engagements on code insert (unit tests)
322 add_action( 'bbp_insert_topic', 'bbp_update_topic_engagements', 20 );
323 add_action( 'bbp_insert_reply', 'bbp_update_topic_engagements', 20 );
324
325 // Topic engagement counts on code insert (unit tests)
326 add_action( 'bbp_insert_topic', 'bbp_update_topic_voice_count', 30 );
327 add_action( 'bbp_insert_reply', 'bbp_update_topic_voice_count', 30 );
328
329 // Recalculate engagements
330 add_action( 'bbp_trashed_reply', 'bbp_recalculate_topic_engagements' );
331 add_action( 'bbp_untrashed_reply', 'bbp_recalculate_topic_engagements' );
332 add_action( 'bbp_spammed_reply', 'bbp_recalculate_topic_engagements' );
333 add_action( 'bbp_unspammed_reply', 'bbp_recalculate_topic_engagements' );
334 add_action( 'bbp_approved_reply', 'bbp_recalculate_topic_engagements' );
335 add_action( 'bbp_unapproved_reply', 'bbp_recalculate_topic_engagements' );
336 add_action( 'bbp_deleted_reply', 'bbp_recalculate_topic_engagements' );
337 add_action( 'bbp_trashed_topic', 'bbp_recalculate_topic_engagements' );
338 add_action( 'bbp_untrashed_topic', 'bbp_recalculate_topic_engagements' );
339 add_action( 'bbp_spammed_topic', 'bbp_recalculate_topic_engagements' );
340 add_action( 'bbp_unspammed_topic', 'bbp_recalculate_topic_engagements' );
341 add_action( 'bbp_approved_topic', 'bbp_recalculate_topic_engagements' );
342 add_action( 'bbp_unapproved_topic', 'bbp_recalculate_topic_engagements' );
343 add_action( 'bbp_deleted_topic', 'bbp_recalculate_topic_engagements' );
344
345 // Update engagement counts
346 add_action( 'bbp_trashed_reply', 'bbp_update_topic_voice_count', 30 );
347 add_action( 'bbp_untrashed_reply', 'bbp_update_topic_voice_count', 30 );
348 add_action( 'bbp_spammed_reply', 'bbp_update_topic_voice_count', 30 );
349 add_action( 'bbp_unspammed_reply', 'bbp_update_topic_voice_count', 30 );
350 add_action( 'bbp_approved_reply', 'bbp_update_topic_voice_count', 30 );
351 add_action( 'bbp_unapproved_reply', 'bbp_update_topic_voice_count', 30 );
352 add_action( 'bbp_deleted_reply', 'bbp_update_topic_voice_count', 30 );
353 add_action( 'bbp_trashed_topic', 'bbp_update_topic_voice_count', 30 );
354 add_action( 'bbp_untrashed_topic', 'bbp_update_topic_voice_count', 30 );
355 add_action( 'bbp_spammed_topic', 'bbp_update_topic_voice_count', 30 );
356 add_action( 'bbp_unspammed_topic', 'bbp_update_topic_voice_count', 30 );
357 add_action( 'bbp_approved_topic', 'bbp_update_topic_voice_count', 30 );
358 add_action( 'bbp_unapproved_topic', 'bbp_update_topic_voice_count', 30 );
359
360 // User status
361 // @todo make these sub-actions
362 add_action( 'make_ham_user', 'bbp_make_ham_user' );
363 add_action( 'make_spam_user', 'bbp_make_spam_user' );
364
365 // User role
366 add_action( 'bbp_profile_update', 'bbp_profile_update_role' );
367
368 // Hook WordPress admin actions to bbPress profiles on save
369 add_action( 'bbp_user_edit_after', 'bbp_user_edit_after' );
370
371 // Clean bbPress post caches when WordPress's is cleaned
372 add_action( 'clean_post_cache', 'bbp_clean_post_cache', 10, 2 );
373
374 // User Registration
375 add_action( 'added_existing_user', 'bbp_user_add_role_on_register', 10, 1 );
376 add_action( 'bbp_user_register', 'bbp_user_add_role_on_register', 10, 1 );
377
378 // Invite a New User
379 add_action( 'invite_user', 'bbp_user_add_role_on_invite', 10, 3 );
380
381 // Multisite Activation (does not work in wp-activate.php)
382 add_action( 'wpmu_activate_user', 'bbp_user_add_role_on_activate', 10, 3 );
383
384 /**
385 * bbPress needs to redirect the user around in a few different circumstances:
386 *
387 * 1. POST and GET requests
388 * 2. Accessing private or hidden content (forums/topics/replies)
389 * 3. Editing forums, topics, replies, users, and tags
390 * 4. bbPress specific AJAX requests
391 */
392 add_action( 'bbp_template_redirect', 'bbp_forum_enforce_blocked', 1 );
393 add_action( 'bbp_template_redirect', 'bbp_forum_enforce_hidden', 1 );
394 add_action( 'bbp_template_redirect', 'bbp_forum_enforce_private', 1 );
395 add_action( 'bbp_template_redirect', 'bbp_post_request', 10 );
396 add_action( 'bbp_template_redirect', 'bbp_get_request', 10 );
397 add_action( 'bbp_template_redirect', 'bbp_check_user_edit', 10 );
398 add_action( 'bbp_template_redirect', 'bbp_check_forum_edit', 10 );
399 add_action( 'bbp_template_redirect', 'bbp_check_topic_edit', 10 );
400 add_action( 'bbp_template_redirect', 'bbp_check_reply_edit', 10 );
401 add_action( 'bbp_template_redirect', 'bbp_check_topic_tag_edit', 10 );
402
403 // Must be after bbp_template_include_theme_compat
404 add_action( 'bbp_template_redirect', 'bbp_remove_adjacent_posts', 10 );
405
406 // Theme-side POST requests
407 add_action( 'bbp_post_request', 'bbp_do_ajax', 1 );
408 add_action( 'bbp_post_request', 'bbp_edit_topic_tag_handler', 1 );
409 add_action( 'bbp_post_request', 'bbp_edit_user_handler', 1 );
410 add_action( 'bbp_post_request', 'bbp_edit_forum_handler', 1 );
411 add_action( 'bbp_post_request', 'bbp_edit_reply_handler', 1 );
412 add_action( 'bbp_post_request', 'bbp_edit_topic_handler', 1 );
413 add_action( 'bbp_post_request', 'bbp_merge_topic_handler', 1 );
414 add_action( 'bbp_post_request', 'bbp_split_topic_handler', 1 );
415 add_action( 'bbp_post_request', 'bbp_move_reply_handler', 1 );
416 add_action( 'bbp_post_request', 'bbp_new_forum_handler', 10 );
417 add_action( 'bbp_post_request', 'bbp_new_reply_handler', 10 );
418 add_action( 'bbp_post_request', 'bbp_new_topic_handler', 10 );
419
420 // Theme-side GET requests
421 add_action( 'bbp_get_request', 'bbp_toggle_topic_handler', 1 );
422 add_action( 'bbp_get_request', 'bbp_toggle_reply_handler', 1 );
423 add_action( 'bbp_get_request', 'bbp_favorites_handler', 1 );
424 add_action( 'bbp_get_request', 'bbp_subscriptions_handler', 1 );
425 add_action( 'bbp_get_request', 'bbp_user_email_change_handler', 1 );
426 add_action( 'bbp_get_request', 'bbp_search_results_redirect', 10 );
427
428 // Maybe convert the users password
429 add_action( 'bbp_login_form_login', 'bbp_user_maybe_convert_pass' );
430