[ Index ]

PHP Cross Reference of BBPress

title

Body

[close]

/src/includes/core/ -> sub-actions.php (source)

   1  <?php
   2  
   3  /**
   4   * Plugin Dependency
   5   *
   6   * The purpose of the following hooks is to mimic the behavior of something
   7   * called 'plugin dependency' which enables a plugin to have plugins of their
   8   * own in a safe and reliable way.
   9   *
  10   * We do this in bbPress by mirroring existing WordPress hooks in many places
  11   * allowing dependant plugins to hook into the bbPress specific ones, thus
  12   * guaranteeing proper code execution only when bbPress is active.
  13   *
  14   * The following functions are wrappers for hooks, allowing them to be
  15   * manually called and/or piggy-backed on top of other hooks if needed.
  16   *
  17   * @package bbPress
  18   * @subpackage Core
  19   *
  20   * @todo use anonymous functions when PHP minimum requirement allows (5.3)
  21   */
  22  
  23  /** Activation Actions ********************************************************/
  24  
  25  /**
  26   * Runs on bbPress activation
  27   *
  28   * @since 2.0.0 bbPress (r2509)
  29   */
  30  function bbp_activation() {
  31      do_action( 'bbp_activation' );
  32  }
  33  
  34  /**
  35   * Runs on bbPress deactivation
  36   *
  37   * @since 2.0.0 bbPress (r2509)
  38   */
  39  function bbp_deactivation() {
  40      do_action( 'bbp_deactivation' );
  41  }
  42  
  43  /**
  44   * Runs when uninstalling bbPress
  45   *
  46   * @since 2.0.0 bbPress (r2509)
  47   */
  48  function bbp_uninstall() {
  49      do_action( 'bbp_uninstall' );
  50  }
  51  
  52  /** Main Actions **************************************************************/
  53  
  54  /**
  55   * Main action responsible for constants, globals, and includes
  56   *
  57   * @since 2.0.0 bbPress (r2599)
  58   */
  59  function bbp_loaded() {
  60      do_action( 'bbp_loaded' );
  61  }
  62  
  63  /**
  64   * Setup constants
  65   *
  66   * @since 2.0.0 bbPress (r2599)
  67   */
  68  function bbp_constants() {
  69      do_action( 'bbp_constants' );
  70  }
  71  
  72  /**
  73   * Setup globals BEFORE includes
  74   *
  75   * @since 2.0.0 bbPress (r2599)
  76   */
  77  function bbp_boot_strap_globals() {
  78      do_action( 'bbp_boot_strap_globals' );
  79  }
  80  
  81  /**
  82   * Include files
  83   *
  84   * @since 2.0.0 bbPress (r2599)
  85   */
  86  function bbp_includes() {
  87      do_action( 'bbp_includes' );
  88  }
  89  
  90  /**
  91   * Setup globals AFTER includes
  92   *
  93   * @since 2.0.0 bbPress (r2599)
  94   */
  95  function bbp_setup_globals() {
  96      do_action( 'bbp_setup_globals' );
  97  }
  98  
  99  /**
 100   * Register any objects before anything is initialized
 101   *
 102   * @since 2.2.0 bbPress (r4180)
 103   */
 104  function bbp_register() {
 105      do_action( 'bbp_register' );
 106  }
 107  
 108  /**
 109   * Initialize any code after everything has been loaded
 110   *
 111   * @since 2.0.0 bbPress (r2599)
 112   */
 113  function bbp_init() {
 114      do_action( 'bbp_init' );
 115  }
 116  
 117  /**
 118   * Initialize roles
 119   *
 120   * @since 2.6.0 bbPress (r6106)
 121   *
 122   * @param WP_Roles $wp_roles The array of WP_Role objects that was initialized
 123   */
 124  function bbp_roles_init( $wp_roles ) {
 125      do_action( 'bbp_roles_init', $wp_roles );
 126  }
 127  
 128  /**
 129   * Initialize widgets
 130   *
 131   * @since 2.0.0 bbPress (r3389)
 132   */
 133  function bbp_widgets_init() {
 134      do_action( 'bbp_widgets_init' );
 135  }
 136  
 137  /**
 138   * Setup the currently logged-in user
 139   *
 140   * @link https://bbpress.trac.wordpress.org/ticket/2309
 141   * @link https://core.trac.wordpress.org/ticket/24169
 142   *
 143   * @since 2.0.0 bbPress (r2695)
 144   */
 145  function bbp_setup_current_user() {
 146      do_action( 'bbp_setup_current_user' );
 147  }
 148  
 149  /**
 150   * Setup the user engagements strategy
 151   *
 152   * @since 2.6.0 bbPress (r6875)
 153   */
 154  function bbp_setup_engagements() {
 155      do_action( 'bbp_setup_engagements' );
 156  }
 157  
 158  /** Supplemental Actions ******************************************************/
 159  
 160  /**
 161   * Load translations for current language
 162   *
 163   * @since 2.0.0 bbPress (r2599)
 164   */
 165  function bbp_load_textdomain() {
 166      do_action( 'bbp_load_textdomain' );
 167  }
 168  
 169  /**
 170   * Setup the post types
 171   *
 172   * @since 2.0.0 bbPress (r2464)
 173   */
 174  function bbp_register_post_types() {
 175      do_action( 'bbp_register_post_types' );
 176  }
 177  
 178  /**
 179   * Setup the post statuses
 180   *
 181   * @since 2.0.0 bbPress (r2727)
 182   */
 183  function bbp_register_post_statuses() {
 184      do_action( 'bbp_register_post_statuses' );
 185  }
 186  
 187  /**
 188   * Register the built in bbPress taxonomies
 189   *
 190   * @since 2.0.0 bbPress (r2464)
 191   */
 192  function bbp_register_taxonomies() {
 193      do_action( 'bbp_register_taxonomies' );
 194  }
 195  
 196  /**
 197   * Register the default bbPress views
 198   *
 199   * @since 2.0.0 bbPress (r2789)
 200   */
 201  function bbp_register_views() {
 202      do_action( 'bbp_register_views' );
 203  }
 204  
 205  /**
 206   * Register the default bbPress shortcodes
 207   *
 208   * @since 2.2.0 bbPress (r4211)
 209   */
 210  function bbp_register_shortcodes() {
 211      do_action( 'bbp_register_shortcodes' );
 212  }
 213  
 214  /**
 215   * Register the default bbPress meta-data
 216   *
 217   * @since 2.6.0 bbPress (r46300)
 218   */
 219  function bbp_register_meta() {
 220      do_action( 'bbp_register_meta' );
 221  }
 222  
 223  /**
 224   * Enqueue bbPress specific CSS and JS
 225   *
 226   * @since 2.0.0 bbPress (r3373)
 227   */
 228  function bbp_enqueue_scripts() {
 229      do_action( 'bbp_enqueue_scripts' );
 230  }
 231  
 232  /**
 233   * Add the bbPress-specific rewrite tags
 234   *
 235   * @since 2.0.0 bbPress (r2753)
 236   */
 237  function bbp_add_rewrite_tags() {
 238      do_action( 'bbp_add_rewrite_tags' );
 239  }
 240  
 241  /**
 242   * Add the bbPress-specific rewrite rules
 243   *
 244   * @since 2.4.0 bbPress (r4918)
 245   */
 246  function bbp_add_rewrite_rules() {
 247      do_action( 'bbp_add_rewrite_rules' );
 248  }
 249  
 250  /**
 251   * Add the bbPress-specific permalink structures
 252   *
 253   * @since 2.4.0 bbPress (r4918)
 254   */
 255  function bbp_add_permastructs() {
 256      do_action( 'bbp_add_permastructs' );
 257  }
 258  
 259  /**
 260   * Add the bbPress-specific login forum action
 261   *
 262   * @since 2.0.0 bbPress (r2753)
 263   */
 264  function bbp_login_form_login() {
 265      do_action( 'bbp_login_form_login' );
 266  }
 267  
 268  /**
 269   * Add the bbPress-specific post status transition action
 270   *
 271   * @since 2.6.0 bbPress (r6792)
 272   *
 273   * @param string  $new_status New post status
 274   * @param string  $old_status Old post status
 275   * @param WP_Post $post       Post object
 276   */
 277  function bbp_transition_post_status( $new_status = '', $old_status = '', $post = false ) {
 278  
 279      // Get bbPress post types
 280      $post_type = get_post_type( $post );
 281      $types     = bbp_get_post_types();
 282  
 283      // Bail if post is not a bbPress post type
 284      if ( ! in_array( $post_type, $types, true ) ) {
 285          return;
 286      }
 287  
 288      // Do the action
 289      do_action( 'bbp_transition_post_status', $new_status, $old_status, $post );
 290  }
 291  
 292  /** User Actions **************************************************************/
 293  
 294  /**
 295   * The main action for hooking into when a user account is updated
 296   *
 297   * @since 2.2.0 bbPress (r4304)
 298   *
 299   * @param int $user_id ID of user being edited
 300   * @param array $old_user_data The old, unmodified user data
 301   */
 302  function bbp_profile_update( $user_id = 0, $old_user_data = array() ) {
 303      do_action( 'bbp_profile_update', $user_id, $old_user_data );
 304  }
 305  
 306  /**
 307   * The main action for hooking into a user being registered
 308   *
 309   * @since 2.2.0 bbPress (r4304)
 310   *
 311   * @param int $user_id ID of user being edited
 312   */
 313  function bbp_user_register( $user_id = 0 ) {
 314      do_action( 'bbp_user_register', $user_id );
 315  }
 316  
 317  /** Final Action **************************************************************/
 318  
 319  /**
 320   * bbPress has loaded and initialized everything, and is okay to go
 321   *
 322   * @since 2.0.0 bbPress (r2618)
 323   */
 324  function bbp_ready() {
 325      do_action( 'bbp_ready' );
 326  }
 327  
 328  /** Theme Permissions *********************************************************/
 329  
 330  /**
 331   * The main action used for redirecting bbPress theme actions that are not
 332   * permitted by the current_user
 333   *
 334   * @since 2.1.0 bbPress (r3605)
 335   */
 336  function bbp_template_redirect() {
 337      do_action( 'bbp_template_redirect' );
 338  }
 339  
 340  /** Theme Helpers *************************************************************/
 341  
 342  /**
 343   * The main action used for executing code before the theme has been setup
 344   *
 345   * @since 2.1.0 bbPress (r3829)
 346   */
 347  function bbp_register_theme_packages() {
 348      do_action( 'bbp_register_theme_packages' );
 349  }
 350  
 351  /**
 352   * The main action used for executing code before the theme has been setup
 353   *
 354   * @since 2.1.0 bbPress (r3732)
 355   */
 356  function bbp_setup_theme() {
 357      do_action( 'bbp_setup_theme' );
 358  }
 359  
 360  /**
 361   * The main action used for executing code after the theme has been setup
 362   *
 363   * @since 2.1.0 bbPress (r3732)
 364   */
 365  function bbp_after_setup_theme() {
 366      do_action( 'bbp_after_setup_theme' );
 367  }
 368  
 369  /**
 370   * The main action used for handling theme-side POST requests
 371   *
 372   * @since 2.3.0 bbPress (r4550)
 373   */
 374  function bbp_post_request() {
 375  
 376      // Bail if not a POST action
 377      if ( ! bbp_is_post_request() ) {
 378          return;
 379      }
 380  
 381      // Bail if no action, of if not a string (arrays not supported)
 382      if ( empty( $_POST['action'] ) || ! is_string( $_POST['action'] ) ) {
 383          return;
 384      }
 385  
 386      // Sanitize the POST action
 387      $action = sanitize_key( $_POST['action'] );
 388  
 389      // Bail if action was totally invalid
 390      if ( empty( $action ) ) {
 391          return;
 392      }
 393  
 394      // This dynamic action is probably the one you want to use. It narrows down
 395      // the scope of the 'action' without needing to check it in your function.
 396      do_action( 'bbp_post_request_' . $action );
 397  
 398      // Use this static action if you don't mind checking the 'action' yourself.
 399      do_action( 'bbp_post_request',   $action );
 400  }
 401  
 402  /**
 403   * The main action used for handling theme-side GET requests
 404   *
 405   * @since 2.3.0 bbPress (r4550)
 406   */
 407  function bbp_get_request() {
 408  
 409      // Bail if not a POST action
 410      if ( ! bbp_is_get_request() ) {
 411          return;
 412      }
 413  
 414      // Bail if no action, or if not a string (arrays not supported)
 415      if ( empty( $_GET['action'] ) || ! is_string( $_GET['action'] ) ) {
 416          return;
 417      }
 418  
 419      // Sanitize the GET action
 420      $action = sanitize_key( $_GET['action'] );
 421  
 422      // Bail if action was totally invalid
 423      if ( empty( $action ) ) {
 424          return;
 425      }
 426  
 427      // This dynamic action is probably the one you want to use. It narrows down
 428      // the scope of the 'action' without needing to check it in your function.
 429      do_action( 'bbp_get_request_' . $action );
 430  
 431      // Use this static action if you don't mind checking the 'action' yourself.
 432      do_action( 'bbp_get_request',   $action );
 433  }
 434  
 435  /** Filters *******************************************************************/
 436  
 437  /**
 438   * Filter the plugin locale and domain.
 439   *
 440   * @since 2.2.0 bbPress (r4213)
 441   *
 442   * @param string $locale
 443   * @param string $domain
 444   */
 445  function bbp_plugin_locale( $locale = '', $domain = '' ) {
 446  
 447      // Filter & return
 448      return apply_filters( 'bbp_plugin_locale', $locale, $domain );
 449  }
 450  
 451  /**
 452   * Piggy back filter for WordPress's 'request' filter
 453   *
 454   * @since 2.1.0 bbPress (r3758)
 455   *
 456   * @param array $query_vars
 457   * @return array
 458   */
 459  function bbp_request( $query_vars = array() ) {
 460  
 461      // Filter & return
 462      return apply_filters( 'bbp_request', $query_vars );
 463  }
 464  
 465  /**
 466   * The main filter used for theme compatibility and displaying custom bbPress
 467   * theme files.
 468   *
 469   * @since 2.0.0 bbPress (r3311)
 470   *
 471   * @param string $template
 472   * @return string Template file to use
 473   */
 474  function bbp_template_include( $template = '' ) {
 475  
 476      // Filter & return
 477      return apply_filters( 'bbp_template_include', $template );
 478  }
 479  
 480  /**
 481   * Generate bbPress-specific rewrite rules
 482   *
 483   * @since 2.0.0 bbPress (r2688)
 484   *
 485   * @deprecated 2.4.0 bbPress (r4918)
 486   *
 487   * @param WP_Rewrite $wp_rewrite
 488   */
 489  function bbp_generate_rewrite_rules( $wp_rewrite ) {
 490      do_action_ref_array( 'bbp_generate_rewrite_rules', array( &$wp_rewrite ) );
 491  }
 492  
 493  /**
 494   * Filter the allowed themes list for bbPress specific themes
 495   *
 496   * @since 2.0.0 bbPress (r2944)
 497   *
 498   * @param array $themes
 499   *
 500   * @return array Array of allowed themes
 501   */
 502  function bbp_allowed_themes( $themes ) {
 503  
 504      // Filter & return
 505      return (array) apply_filters( 'bbp_allowed_themes', $themes );
 506  }
 507  
 508  /**
 509   * Maps forum/topic/reply caps to built in WordPress caps
 510   *
 511   * @since 2.0.0 bbPress (r2593)
 512   *
 513   * @param array $caps Capabilities for meta capability
 514   * @param string $cap Capability name
 515   * @param int $user_id User id
 516   * @param array $args Arguments
 517   *
 518   * @return array Array of capabilities
 519   */
 520  function bbp_map_meta_caps( $caps = array(), $cap = '', $user_id = 0, $args = array() ) {
 521  
 522      // Filter & return
 523      return (array) apply_filters( 'bbp_map_meta_caps', $caps, $cap, $user_id, $args );
 524  }
 525  
 526  /**
 527   * Filter the arguments used by wp_mail for bbPress specific emails
 528   *
 529   * @since 2.6.0 bbPress (r6918)
 530   *
 531   * @param array $args A compacted array of wp_mail() arguments, including the "to" email,
 532   *                    subject, message, headers, and attachments values.
 533   *
 534   * @return array Array of capabilities
 535   */
 536  function bbp_mail( $args = array() ) {
 537  
 538      // Bail if headers are missing/malformed
 539      if ( empty( $args['headers'] ) || ! is_array( $args['headers'] ) ) {
 540          return $args;
 541      }
 542  
 543      // Header to search all headers for
 544      $bbp_header = bbp_get_email_header();
 545  
 546      // Bail if no bbPress header found
 547      if ( false === array_search( $bbp_header, $args['headers'], true ) ) {
 548          return $args;
 549      }
 550  
 551      // Filter & return
 552      return (array) apply_filters( 'bbp_mail', $args );
 553  }


Generated: Sat Apr 27 01:00:49 2024 Cross-referenced by PHPXref 0.7.1