[ Index ]

PHP Cross Reference of BBPress

title

Body

[close]

/src/includes/core/ -> functions.php (source)

   1  <?php
   2  
   3  /**
   4   * bbPress Core Functions
   5   *
   6   * @package bbPress
   7   * @subpackage Functions
   8   */
   9  
  10  // Exit if accessed directly
  11  defined( 'ABSPATH' ) || exit;
  12  
  13  /** Versions ******************************************************************/
  14  
  15  /**
  16   * Output the bbPress version
  17   *
  18   * @since 2.0.0 bbPress (r3468)
  19   */
  20  function bbp_version() {
  21      echo bbp_get_version();
  22  }
  23      /**
  24       * Return the bbPress version
  25       *
  26       * @since 2.0.0 bbPress (r3468)
  27       *
  28       * @retrun string The bbPress version
  29       */
  30  	function bbp_get_version() {
  31          return bbpress()->version;
  32      }
  33  
  34  /**
  35   * Output the bbPress asset version
  36   *
  37   * @since 2.6.7 bbPress (r7188)
  38   */
  39  function bbp_asset_version() {
  40      echo bbp_get_asset_version();
  41  }
  42      /**
  43       * Return the bbPress asset version
  44       *
  45       * @since 2.6.7 bbPress (r7188)
  46       *
  47       * @retrun string The bbPress asset version
  48       */
  49  	function bbp_get_asset_version() {
  50          return bbp_doing_script_debug()
  51              ? (string) time()
  52              : bbp_get_version();
  53      }
  54  
  55  /**
  56   * Output the bbPress database version
  57   *
  58   * @since 2.0.0 bbPress (r3468)
  59   */
  60  function bbp_db_version() {
  61      echo bbp_get_db_version();
  62  }
  63      /**
  64       * Return the bbPress database version
  65       *
  66       * @since 2.0.0 bbPress (r3468)
  67       *
  68       * @retrun string The bbPress version
  69       */
  70  	function bbp_get_db_version() {
  71          return bbpress()->db_version;
  72      }
  73  
  74  /**
  75   * Output the bbPress database version directly from the database
  76   *
  77   * @since 2.0.0 bbPress (r3468)
  78   */
  79  function bbp_db_version_raw() {
  80      echo bbp_get_db_version_raw();
  81  }
  82      /**
  83       * Return the bbPress database version directly from the database
  84       *
  85       * @since 2.0.0 bbPress (r3468)
  86       *
  87       * @retrun string The current bbPress version
  88       */
  89  	function bbp_get_db_version_raw() {
  90          return get_option( '_bbp_db_version', '' );
  91      }
  92  
  93  /** Post Meta *****************************************************************/
  94  
  95  /**
  96   * Update the forum meta ID of a post
  97   *
  98   * @since 2.0.0 bbPress (r3181)
  99   *
 100   * @param int $post_id  The post to update
 101   * @param int $forum_id The forum
 102   */
 103  function bbp_update_forum_id( $post_id = 0, $forum_id = 0 ) {
 104  
 105      // Allow the forum ID to be updated 'just in time' before save
 106      $forum_id = (int) apply_filters( 'bbp_update_forum_id', $forum_id, $post_id );
 107  
 108      // Update the post meta forum ID
 109      update_post_meta( $post_id, '_bbp_forum_id', $forum_id );
 110  
 111      return $forum_id;
 112  }
 113  
 114  /**
 115   * Update the topic meta ID of a post
 116   *
 117   * @since 2.0.0 bbPress (r3181)
 118   *
 119   * @param int $post_id  The post to update
 120   * @param int $topic_id The topic
 121   */
 122  function bbp_update_topic_id( $post_id = 0, $topic_id = 0 ) {
 123  
 124      // Allow the topic ID to be updated 'just in time' before save
 125      $topic_id = (int) apply_filters( 'bbp_update_topic_id', $topic_id, $post_id );
 126  
 127      // Update the post meta topic ID
 128      update_post_meta( $post_id, '_bbp_topic_id', $topic_id );
 129  
 130      return $topic_id;
 131  }
 132  
 133  /**
 134   * Update the reply meta ID of a post
 135   *
 136   * @since 2.0.0 bbPress (r3181)
 137   *
 138   * @param int $post_id  The post to update
 139   * @param int $reply_id The reply
 140   */
 141  function bbp_update_reply_id( $post_id = 0, $reply_id = 0 ) {
 142  
 143      // Allow the reply ID to be updated 'just in time' before save
 144      $reply_id = (int) apply_filters( 'bbp_update_reply_id', $reply_id, $post_id );
 145  
 146      // Update the post meta reply ID
 147      update_post_meta( $post_id, '_bbp_reply_id', $reply_id );
 148  
 149      return $reply_id;
 150  }
 151  
 152  /**
 153   * Update the reply-to meta ID of a post
 154   *
 155   * @since 2.6.0 bbPress (r5735)
 156   *
 157   * @param int $post_id  The post to update
 158   * @param int $reply_id The reply ID
 159   */
 160  function bbp_update_reply_to_id( $post_id = 0, $reply_id = 0 ) {
 161  
 162      // Allow the reply ID to be updated 'just in time' before save
 163      $reply_id = (int) apply_filters( 'bbp_update_reply_to_id', $reply_id, $post_id );
 164  
 165      // Update the post meta reply ID
 166      update_post_meta( $post_id, '_bbp_reply_to', $reply_id );
 167  
 168      return $reply_id;
 169  }
 170  
 171  /** Views *********************************************************************/
 172  
 173  /**
 174   * Get the registered views
 175   *
 176   * Does nothing much other than return the {@link $bbp->views} variable
 177   *
 178   * @since 2.0.0 bbPress (r2789)
 179   *
 180   * @return array Views
 181   */
 182  function bbp_get_views() {
 183      return bbpress()->views;
 184  }
 185  
 186  /**
 187   * Register a bbPress view
 188   *
 189   * @since 2.0.0 bbPress (r2789)
 190   *
 191   * @param string $view View name
 192   * @param string $title View title
 193   * @param mixed $query_args {@link bbp_has_topics()} arguments.
 194   * @param bool $feed Have a feed for the view? Defaults to true.
 195   * @param string $capability Capability that the current user must have
 196   *
 197   * @return array The just registered (but processed) view
 198   */
 199  function bbp_register_view( $view, $title, $query_args = '', $feed = true, $capability = '' ) {
 200  
 201      // Bail if user does not have capability
 202      if ( ! empty( $capability ) && ! current_user_can( $capability ) ) {
 203          return false;
 204      }
 205  
 206      $bbp   = bbpress();
 207      $view  = sanitize_title( $view );
 208      $title = esc_html( $title );
 209  
 210      if ( empty( $view ) || empty( $title ) ) {
 211          return false;
 212      }
 213  
 214      $query_args = bbp_parse_args( $query_args, '', 'register_view' );
 215  
 216      // Set show_stickies to false if it wasn't supplied
 217      if ( ! isset( $query_args['show_stickies'] ) ) {
 218          $query_args['show_stickies'] = false;
 219      }
 220  
 221      $bbp->views[ $view ] = array(
 222          'title'  => $title,
 223          'query'  => $query_args,
 224          'feed'   => $feed
 225      );
 226  
 227      return $bbp->views[ $view ];
 228  }
 229  
 230  /**
 231   * Deregister a bbPress view
 232   *
 233   * @since 2.0.0 bbPress (r2789)
 234   *
 235   * @param string $view View name
 236   * @return bool False if the view doesn't exist, true on success
 237   */
 238  function bbp_deregister_view( $view ) {
 239      $bbp  = bbpress();
 240      $view = sanitize_title( $view );
 241  
 242      if ( ! isset( $bbp->views[ $view ] ) ) {
 243          return false;
 244      }
 245  
 246      unset( $bbp->views[ $view ] );
 247  
 248      return true;
 249  }
 250  
 251  /**
 252   * Run the query of a topic-view
 253   *
 254   * @since 2.0.0 bbPress (r2789)
 255   *
 256   * @param string $view Optional. View id
 257   * @param mixed $new_args New arguments. See {@link bbp_has_topics()}
 258   * @return bool False if the view doesn't exist, otherwise if topics are there
 259   */
 260  function bbp_view_query( $view = '', $new_args = '' ) {
 261  
 262      // Get view, or bail
 263      $view = bbp_get_view_id( $view );
 264      if ( empty( $view ) ) {
 265          return false;
 266      }
 267  
 268      $query_args = bbp_get_view_query_args( $view );
 269  
 270      if ( ! empty( $new_args ) ) {
 271          $new_args   = bbp_parse_args( $new_args, '', 'view_query' );
 272          $query_args = array_merge( $query_args, $new_args );
 273      }
 274  
 275      return bbp_has_topics( $query_args );
 276  }
 277  
 278  /**
 279   * Return the query arguments of a topic-view
 280   *
 281   * @since 2.0.0 bbPress (r2789)
 282   *
 283   * @param string $view View name
 284   * @return array Query arguments
 285   */
 286  function bbp_get_view_query_args( $view = '' ) {
 287      $bbp    = bbpress();
 288      $view   = bbp_get_view_id( $view );
 289      $retval = ! empty( $view ) && ! empty( $bbp->views[ $view ] )
 290          ? $bbp->views[ $view ]['query']
 291          : array();
 292  
 293      // Filter & return
 294      return (array) apply_filters( 'bbp_get_view_query_args', $retval, $view );
 295  }
 296  
 297  /** Errors ********************************************************************/
 298  
 299  /**
 300   * Adds an error message to later be output in the theme
 301   *
 302   * @since 2.0.0 bbPress (r3381)
 303   *
 304   * @see WP_Error()
 305   *
 306   * @param string $code Unique code for the error message
 307   * @param string $message Translated error message
 308   * @param string $data Any additional data passed with the error message
 309   */
 310  function bbp_add_error( $code = '', $message = '', $data = '' ) {
 311      bbpress()->errors->add( $code, $message, $data );
 312  }
 313  
 314  /**
 315   * Check if error messages exist in queue
 316   *
 317   * @since 2.0.0 bbPress (r3381)
 318   *
 319   * @see WP_Error()
 320   */
 321  function bbp_has_errors() {
 322      $has_errors = bbpress()->errors->get_error_codes()
 323          ? true
 324          : false;
 325  
 326      return (bool) apply_filters( 'bbp_has_errors', $has_errors, bbpress()->errors );
 327  }
 328  
 329  /** Mentions ******************************************************************/
 330  
 331  /**
 332   * Set the pattern used for matching usernames for mentions.
 333   *
 334   * Moved into its own function to allow filtering of the regex pattern
 335   * anywhere mentions might be used.
 336   *
 337   * @since 2.4.0 bbPress (r4997)
 338   * @deprecated 2.6.0 bbp_make_clickable()
 339   *
 340   * @return string Pattern to match usernames with
 341   */
 342  function bbp_find_mentions_pattern() {
 343  
 344      // Filter & return
 345      return apply_filters( 'bbp_find_mentions_pattern', '/[@]+([A-Za-z0-9-_\.@]+)\b/' );
 346  }
 347  
 348  /**
 349   * Searches through the content to locate usernames, designated by an @ sign.
 350   *
 351   * @since 2.2.0 bbPress (r4323)
 352   * @deprecated 2.6.0 bbp_make_clickable()
 353   *
 354   * @param string $content The content
 355   * @return bool|array $usernames Existing usernames. False if no matches.
 356   */
 357  function bbp_find_mentions( $content = '' ) {
 358      $pattern   = bbp_find_mentions_pattern();
 359      preg_match_all( $pattern, $content, $usernames );
 360      $usernames = array_unique( array_filter( $usernames[1] ) );
 361  
 362      // Bail if no usernames
 363      if ( empty( $usernames ) ) {
 364          $usernames = false;
 365      }
 366  
 367      // Filter & return
 368      return apply_filters( 'bbp_find_mentions', $usernames, $pattern, $content );
 369  }
 370  
 371  /**
 372   * Finds and links @-mentioned users in the content
 373   *
 374   * @since 2.2.0 bbPress (r4323)
 375   * @deprecated 2.6.0 bbp_make_clickable()
 376   *
 377   * @return string $content Content filtered for mentions
 378   */
 379  function bbp_mention_filter( $content = '' ) {
 380  
 381      // Get Usernames and bail if none exist
 382      $usernames = bbp_find_mentions( $content );
 383      if ( empty( $usernames ) ) {
 384          return $content;
 385      }
 386  
 387      // Loop through usernames and link to profiles
 388      foreach ( (array) $usernames as $username ) {
 389  
 390          // Skip if username does not exist or user is not active
 391          $user = get_user_by( 'slug', $username );
 392          if ( empty( $user->ID ) || bbp_is_user_inactive( $user->ID ) ) {
 393              continue;
 394          }
 395  
 396          // Link
 397          $profile_url  = bbp_get_user_profile_url( $user->ID );
 398          $profile_link = sprintf( '<a href="%1$s">@%2$s</a>', esc_url( $profile_url ), esc_html( $username ) );
 399          $no_followed  = bbp_rel_nofollow( $profile_link );
 400          $pattern      = "/(@{$username}\b)/";
 401  
 402          // Replace name in content
 403          $content = preg_replace( $pattern, $no_followed, $content );
 404      }
 405  
 406      // Return modified content
 407      return $content;
 408  }
 409  
 410  /** Post Statuses *************************************************************/
 411  
 412  /**
 413   * Return the public post status ID
 414   *
 415   * @since 2.0.0 bbPress (r3504)
 416   *
 417   * @return string
 418   */
 419  function bbp_get_public_status_id() {
 420      return bbpress()->public_status_id;
 421  }
 422  
 423  /**
 424   * Return the pending post status ID
 425   *
 426   * @since 2.1.0 bbPress (r3581)
 427   *
 428   * @return string
 429   */
 430  function bbp_get_pending_status_id() {
 431      return bbpress()->pending_status_id;
 432  }
 433  
 434  /**
 435   * Return the private post status ID
 436   *
 437   * @since 2.0.0 bbPress (r3504)
 438   *
 439   * @return string
 440   */
 441  function bbp_get_private_status_id() {
 442      return bbpress()->private_status_id;
 443  }
 444  
 445  /**
 446   * Return the hidden post status ID
 447   *
 448   * @since 2.0.0 bbPress (r3504)
 449   *
 450   * @return string
 451   */
 452  function bbp_get_hidden_status_id() {
 453      return bbpress()->hidden_status_id;
 454  }
 455  
 456  /**
 457   * Return the closed post status ID
 458   *
 459   * @since 2.0.0 bbPress (r3504)
 460   *
 461   * @return string
 462   */
 463  function bbp_get_closed_status_id() {
 464      return bbpress()->closed_status_id;
 465  }
 466  
 467  /**
 468   * Return the spam post status ID
 469   *
 470   * @since 2.0.0 bbPress (r3504)
 471   *
 472   * @return string
 473   */
 474  function bbp_get_spam_status_id() {
 475      return bbpress()->spam_status_id;
 476  }
 477  
 478  /**
 479   * Return the trash post status ID
 480   *
 481   * @since 2.0.0 bbPress (r3504)
 482   *
 483   * @return string
 484   */
 485  function bbp_get_trash_status_id() {
 486      return bbpress()->trash_status_id;
 487  }
 488  
 489  /**
 490   * Return the orphan post status ID
 491   *
 492   * @since 2.0.0 bbPress (r3504)
 493   *
 494   * @return string
 495   */
 496  function bbp_get_orphan_status_id() {
 497      return bbpress()->orphan_status_id;
 498  }
 499  
 500  /** Rewrite IDs ***************************************************************/
 501  
 502  /**
 503   * Return the unique ID for user profile rewrite rules
 504   *
 505   * @since 2.1.0 bbPress (r3762)
 506   *
 507   * @return string
 508   */
 509  function bbp_get_user_rewrite_id() {
 510      return bbpress()->user_id;
 511  }
 512  
 513  /**
 514   * Return the unique ID for all edit rewrite rules (forum|topic|reply|tag|user)
 515   *
 516   * @since 2.1.0 bbPress (r3762)
 517   *
 518   * @return string
 519   */
 520  function bbp_get_edit_rewrite_id() {
 521      return bbpress()->edit_id;
 522  }
 523  
 524  /**
 525   * Return the unique ID for all search rewrite rules
 526   *
 527   * @since 2.3.0 bbPress (r4579)
 528   *
 529   * @return string
 530   */
 531  function bbp_get_search_rewrite_id() {
 532      return bbpress()->search_id;
 533  }
 534  
 535  /**
 536   * Return the unique ID for user topics rewrite rules
 537   *
 538   * @since 2.2.0 bbPress (r4321)
 539   *
 540   * @return string
 541   */
 542  function bbp_get_user_topics_rewrite_id() {
 543      return bbpress()->tops_id;
 544  }
 545  
 546  /**
 547   * Return the unique ID for user replies rewrite rules
 548   *
 549   * @since 2.2.0 bbPress (r4321)
 550   *
 551   * @return string
 552   */
 553  function bbp_get_user_replies_rewrite_id() {
 554      return bbpress()->reps_id;
 555  }
 556  
 557  /**
 558   * Return the unique ID for user favorites rewrite rules
 559   *
 560   * @since 2.2.0 bbPress (r4181)
 561   *
 562   * @return string
 563   */
 564  function bbp_get_user_favorites_rewrite_id() {
 565      return bbpress()->favs_id;
 566  }
 567  
 568  /**
 569   * Return the unique ID for user subscriptions rewrite rules
 570   *
 571   * @since 2.2.0 bbPress (r4181)
 572   *
 573   * @return string
 574   */
 575  function bbp_get_user_subscriptions_rewrite_id() {
 576      return bbpress()->subs_id;
 577  }
 578  
 579  /**
 580   * Return the unique ID for user engagement rewrite rules
 581   *
 582   * @since 2.6.0 bbPress (r6320)
 583   *
 584   * @return string
 585   */
 586  function bbp_get_user_engagements_rewrite_id() {
 587      return bbpress()->engagements_id;
 588  }
 589  
 590  /**
 591   * Return the unique ID for topic view rewrite rules
 592   *
 593   * @since 2.1.0 bbPress (r3762)
 594   *
 595   * @return string
 596   */
 597  function bbp_get_view_rewrite_id() {
 598      return bbpress()->view_id;
 599  }
 600  
 601  /** Rewrite Extras ************************************************************/
 602  
 603  /**
 604   * Get the id used for paginated requests
 605   *
 606   * @since 2.4.0 bbPress (r4926)
 607   *
 608   * @return string
 609   */
 610  function bbp_get_paged_rewrite_id() {
 611      return bbpress()->paged_id;
 612  }
 613  
 614  /**
 615   * Delete a blogs rewrite rules, so that they are automatically rebuilt on
 616   * the subsequent page load.
 617   *
 618   * @since 2.2.0 bbPress (r4198)
 619   */
 620  function bbp_delete_rewrite_rules() {
 621      delete_option( 'rewrite_rules' );
 622  }
 623  
 624  /** Requests ******************************************************************/
 625  
 626  /**
 627   * Return true|false if this is a POST request
 628   *
 629   * @since 2.3.0 bbPress (r4790)
 630   *
 631   * @return bool
 632   */
 633  function bbp_is_post_request() {
 634      return (bool) ( 'POST' === strtoupper( $_SERVER['REQUEST_METHOD'] ) );
 635  }
 636  
 637  /**
 638   * Return true|false if this is a GET request
 639   *
 640   * @since 2.3.0 bbPress (r4790)
 641   *
 642   * @return bool
 643   */
 644  function bbp_is_get_request() {
 645      return (bool) ( 'GET' === strtoupper( $_SERVER['REQUEST_METHOD'] ) );
 646  }
 647  
 648  /** Redirection ***************************************************************/
 649  
 650  /**
 651   * Perform a safe, local redirect somewhere inside the current site
 652   *
 653   * On some setups, passing the value of wp_get_referer() may result in an empty
 654   * value for $location, which results in an error on redirection. If $location
 655   * is empty, we can safely redirect back to the forum root. This might change
 656   * in a future version, possibly to the site root.
 657   *
 658   * @since 2.6.0 bbPress (r5658)
 659   *
 660   * @see  bbp_redirect_to_field()
 661   *
 662   * @param string $location The URL to redirect the user to.
 663   * @param int    $status   Optional. The numeric code to give in the redirect
 664   *                         headers. Default: 302.
 665   */
 666  function bbp_redirect( $location = '', $status = 302 ) {
 667  
 668      // Prevent errors from empty $location
 669      if ( empty( $location ) ) {
 670          $location = bbp_get_forums_url();
 671      }
 672  
 673      // Setup the safe redirect
 674      wp_safe_redirect( $location, $status );
 675  
 676      // Exit so the redirect takes place immediately
 677      exit();
 678  }
 679  
 680  /** Global Helpers ************************************************************/
 681  
 682  /**
 683   * Return if debugging scripts or not
 684   *
 685   * @since 2.6.7 (r7188)
 686   *
 687   * @return bool True if debugging scripts. False if not debugging scripts.
 688   */
 689  function bbp_doing_script_debug() {
 690      return defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG;
 691  }
 692  
 693  /**
 694   * Return if auto-saving or not
 695   *
 696   * @since 2.6.7 (r7188)
 697   *
 698   * @return bool True if mid auto-save. False if not mid auto-save.
 699   */
 700  function bbp_doing_autosave() {
 701      return defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE;
 702  }


Generated: Wed Apr 17 01:00:57 2024 Cross-referenced by PHPXref 0.7.1