web/wp-content/plugins/bbpress/includes/core/template-loader.php
changeset 196 5e8dcbe22c24
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-content/plugins/bbpress/includes/core/template-loader.php	Tue Dec 04 18:43:10 2012 -0800
@@ -0,0 +1,468 @@
+<?php
+
+/**
+ * bbPress Template Loader
+ *
+ * @package bbPress
+ * @subpackage TemplateLoader
+ */
+
+// Exit if accessed directly
+if ( !defined( 'ABSPATH' ) ) exit;
+
+/**
+ * Possibly intercept the template being loaded
+ *
+ * Listens to the 'template_include' filter and waits for any bbPress specific
+ * template condition to be met. If one is met and the template file exists,
+ * it will be used; otherwise 
+ *
+ * Note that the _edit() checks are ahead of their counterparts, to prevent them
+ * from being stomped on accident.
+ *
+ * @since bbPress (r3032)
+ *
+ * @param string $template
+ *
+ * @uses bbp_is_single_user() To check if page is single user
+ * @uses bbp_get_single_user_template() To get user template
+ * @uses bbp_is_single_user_edit() To check if page is single user edit
+ * @uses bbp_get_single_user_edit_template() To get user edit template
+ * @uses bbp_is_single_view() To check if page is single view
+ * @uses bbp_get_single_view_template() To get view template
+ * @uses bbp_is_forum_edit() To check if page is forum edit
+ * @uses bbp_get_forum_edit_template() To get forum edit template
+ * @uses bbp_is_topic_merge() To check if page is topic merge
+ * @uses bbp_get_topic_merge_template() To get topic merge template
+ * @uses bbp_is_topic_split() To check if page is topic split
+ * @uses bbp_get_topic_split_template() To get topic split template
+ * @uses bbp_is_topic_edit() To check if page is topic edit
+ * @uses bbp_get_topic_edit_template() To get topic edit template
+ * @uses bbp_is_reply_edit() To check if page is reply edit
+ * @uses bbp_get_reply_edit_template() To get reply edit template
+ * @uses bbp_set_theme_compat_template() To set the global theme compat template
+ *
+ * @return string The path to the template file that is being used
+ */
+function bbp_template_include_theme_supports( $template = '' ) {
+
+	// Editing a user
+	if     ( bbp_is_single_user_edit() && ( $new_template = bbp_get_single_user_edit_template() ) ) :
+
+	// User favorites
+	elseif ( bbp_is_favorites()        && ( $new_template = bbp_get_favorites_template()        ) ) :
+
+	// User favorites
+	elseif ( bbp_is_subscriptions()    && ( $new_template = bbp_get_subscriptions_template()    ) ) :
+
+	// Viewing a user
+	elseif ( bbp_is_single_user()      && ( $new_template = bbp_get_single_user_template()      ) ) :
+
+	// Single View
+	elseif ( bbp_is_single_view()      && ( $new_template = bbp_get_single_view_template()      ) ) :
+
+	// Forum edit
+	elseif ( bbp_is_forum_edit()       && ( $new_template = bbp_get_forum_edit_template()       ) ) :
+
+	// Single Forum
+	elseif ( bbp_is_single_forum()     && ( $new_template = bbp_get_single_forum_template()     ) ) :
+
+	// Forum Archive
+	elseif ( bbp_is_forum_archive()    && ( $new_template = bbp_get_forum_archive_template()    ) ) :
+
+	// Topic merge
+	elseif ( bbp_is_topic_merge()      && ( $new_template = bbp_get_topic_merge_template()      ) ) :
+
+	// Topic split
+	elseif ( bbp_is_topic_split()      && ( $new_template = bbp_get_topic_split_template()      ) ) :
+
+	// Topic edit
+	elseif ( bbp_is_topic_edit()       && ( $new_template = bbp_get_topic_edit_template()       ) ) :
+
+	// Single Topic
+	elseif ( bbp_is_single_topic()     && ( $new_template = bbp_get_single_topic_template()     ) ) :
+
+	// Topic Archive
+	elseif ( bbp_is_topic_archive()    && ( $new_template = bbp_get_topic_archive_template()    ) ) :
+
+	// Editing a reply
+	elseif ( bbp_is_reply_edit()       && ( $new_template = bbp_get_reply_edit_template()       ) ) :
+
+	// Single Reply
+	elseif ( bbp_is_single_reply()     && ( $new_template = bbp_get_single_reply_template()     ) ) :
+
+	// Editing a topic tag
+	elseif ( bbp_is_topic_tag_edit()   && ( $new_template = bbp_get_topic_tag_edit_template()   ) ) :
+
+	// Viewing a topic tag
+	elseif ( bbp_is_topic_tag()        && ( $new_template = bbp_get_topic_tag_template()        ) ) :
+	endif;
+
+	// bbPress template file exists
+	if ( !empty( $new_template ) ) {
+
+		// Override the WordPress template with a bbPress one
+		$template = $new_template;
+
+		// @see: bbp_template_include_theme_compat()
+		bbpress()->theme_compat->bbpress_template = true;
+	}
+
+	return apply_filters( 'bbp_template_include_theme_supports', $template );
+}
+
+/** Custom Functions **********************************************************/
+
+/**
+ * Attempt to load a custom bbPress functions file, similar to each themes
+ * functions.php file.
+ *
+ * @since bbPress (r3732)
+ *
+ * @global string $pagenow
+ * @uses bbp_locate_template()
+ */
+function bbp_load_theme_functions() {
+	global $pagenow;
+
+	// If bbPress is being deactivated, do not load any more files
+	if ( bbp_is_deactivation() )
+		return;
+
+	if ( ! defined( 'WP_INSTALLING' ) || ( !empty( $pagenow ) && ( 'wp-activate.php' !== $pagenow ) ) ) {
+		bbp_locate_template( 'bbpress-functions.php', true );
+	}
+}
+
+/** Individual Templates ******************************************************/
+
+/**
+ * Get the user profile template
+ *
+ * @since bbPress (r3311)
+ *
+ * @uses bbp_get_displayed_user_id()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_single_user_template() {
+	$nicename  = bbp_get_displayed_user_field( 'user_nicename' );
+	$user_id   = bbp_get_displayed_user_id();
+	$templates = array(
+		'single-user-' . $nicename . '.php', // Single User nicename
+		'single-user-' . $user_id  . '.php', // Single User ID
+		'single-user.php',                   // Single User
+		'user.php',                          // User
+	);
+	return bbp_get_query_template( 'profile', $templates );
+}
+
+/**
+ * Get the user profile edit template
+ *
+ * @since bbPress (r3311)
+ *
+ * @uses bbp_get_displayed_user_id()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_single_user_edit_template() {
+	$nicename  = bbp_get_displayed_user_field( 'user_nicename' );
+	$user_id   = bbp_get_displayed_user_id();
+	$templates = array(
+		'single-user-edit-' . $nicename . '.php', // Single User Edit nicename
+		'single-user-edit-' . $user_id  . '.php', // Single User Edit ID
+		'single-user-edit.php',                   // Single User Edit
+		'user-edit.php',                          // User Edit
+		'user.php',                               // User
+	);
+	return bbp_get_query_template( 'profile_edit', $templates );
+}
+
+/**
+ * Get the user favorites template
+ *
+ * @since bbPress (r4225)
+ *
+ * @uses bbp_get_displayed_user_id()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_favorites_template() {
+	$nicename  = bbp_get_displayed_user_field( 'user_nicename' );
+	$user_id   = bbp_get_displayed_user_id();
+	$templates = array(
+		'single-user-favorites-' . $nicename . '.php', // Single User Favs nicename
+		'single-user-favorites-' . $user_id  . '.php', // Single User Favs ID
+		'favorites-' . $nicename  . '.php',            // Favorites nicename
+		'favorites-' . $user_id   . '.php',            // Favorites ID
+		'favorites.php',                               // Favorites
+		'user.php',                                    // User
+	);
+	return bbp_get_query_template( 'favorites', $templates );
+}
+
+/**
+ * Get the user subscriptions template
+ *
+ * @since bbPress (r4225)
+ *
+ * @uses bbp_get_displayed_user_id()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_subscriptions_template() {
+	$nicename  = bbp_get_displayed_user_field( 'user_nicename' );
+	$user_id   = bbp_get_displayed_user_id();
+	$templates = array(
+		'single-user-subscriptions-' . $nicename . '.php', // Single User Subs nicename
+		'single-user-subscriptions-' . $user_id  . '.php', // Single User Subs ID
+		'subscriptions-' . $nicename  . '.php',            // Subscriptions nicename
+		'subscriptions-' . $user_id   . '.php',            // Subscriptions ID
+		'subscriptions.php',                               // Subscriptions
+		'user.php',                                        // User
+	);
+	return bbp_get_query_template( 'subscriptions', $templates );
+}
+
+/**
+ * Get the view template
+ *
+ * @since bbPress (r3311)
+ *
+ * @uses bbp_get_view_id()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_single_view_template() {
+	$view_id   = bbp_get_view_id();
+	$templates = array(
+		'single-view-' . $view_id . '.php', // Single View ID
+		'view-'        . $view_id . '.php', // View ID
+		'single-view.php',                  // Single View
+		'view.php',                         // View
+	);
+	return bbp_get_query_template( 'single_view', $templates );
+}
+
+/**
+ * Get the single forum template
+ *
+ * @since bbPress (r3922)
+ *
+ * @uses bbp_get_forum_post_type()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_single_forum_template() {
+	$templates = array(
+		'single-' . bbp_get_forum_post_type() . '.php' // Single Forum
+	);
+	return bbp_get_query_template( 'single_forum', $templates );
+}
+
+/**
+ * Get the forum archive template
+ *
+ * @since bbPress (r3922)
+ *
+ * @uses bbp_get_forum_post_type()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_forum_archive_template() {
+	$templates = array(
+		'archive-' . bbp_get_forum_post_type() . '.php' // Forum Archive
+	);
+	return bbp_get_query_template( 'forum_archive', $templates );
+}
+
+/**
+ * Get the forum edit template
+ *
+ * @since bbPress (r3566)
+ *
+ * @uses bbp_get_topic_post_type()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_forum_edit_template() {
+	$templates = array(
+		'single-' . bbp_get_forum_post_type() . '-edit.php' // Single Forum Edit
+	);
+	return bbp_get_query_template( 'forum_edit', $templates );
+}
+
+/**
+ * Get the single topic template
+ *
+ * @since bbPress (r3922)
+ *
+ * @uses bbp_get_topic_post_type()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_single_topic_template() {
+	$templates = array(
+		'single-' . bbp_get_topic_post_type() . '.php'
+	);
+	return bbp_get_query_template( 'single_topic', $templates );
+}
+
+/**
+ * Get the topic archive template
+ *
+ * @since bbPress (r3922)
+ *
+ * @uses bbp_get_topic_post_type()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_topic_archive_template() {
+	$templates = array(
+		'archive-' . bbp_get_topic_post_type() . '.php' // Topic Archive
+	);
+	return bbp_get_query_template( 'topic_archive', $templates );
+}
+
+/**
+ * Get the topic edit template
+ *
+ * @since bbPress (r3311)
+ *
+ * @uses bbp_get_topic_post_type()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_topic_edit_template() {
+	$templates = array(
+		'single-' . bbp_get_topic_post_type() . '-edit.php' // Single Topic Edit
+	);
+	return bbp_get_query_template( 'topic_edit', $templates );
+}
+
+/**
+ * Get the topic split template
+ *
+ * @since bbPress (r3311)
+ *
+ * @uses bbp_get_topic_post_type()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_topic_split_template() {
+	$templates = array(
+		'single-' . bbp_get_topic_post_type() . '-split.php', // Topic Split
+	);
+	return bbp_get_query_template( 'topic_split', $templates );
+}
+
+/**
+ * Get the topic merge template
+ *
+ * @since bbPress (r3311)
+ *
+ * @uses bbp_get_topic_post_type()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_topic_merge_template() {
+	$templates = array(
+		'single-' . bbp_get_topic_post_type() . '-merge.php', // Topic Merge
+	);
+	return bbp_get_query_template( 'topic_merge', $templates );
+}
+
+/**
+ * Get the single reply template
+ *
+ * @since bbPress (r3922)
+ *
+ * @uses bbp_get_reply_post_type()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_single_reply_template() {
+	$templates = array(
+		'single-' . bbp_get_reply_post_type() . '.php'
+	);
+	return bbp_get_query_template( 'single_reply', $templates );
+}
+
+/**
+ * Get the reply edit template
+ *
+ * @since bbPress (r3311)
+ *
+ * @uses bbp_get_reply_post_type()
+ * @uses bbp_get_query_template()
+* @return string Path to template file
+ */
+function bbp_get_reply_edit_template() {
+	$templates = array(
+		'single-' . bbp_get_reply_post_type() . '-edit.php' // Single Reply Edit
+	);
+	return bbp_get_query_template( 'reply_edit', $templates );
+}
+
+/**
+ * Get the topic template
+ *
+ * @since bbPress (r3311)
+ *
+ * @uses bbp_get_topic_tag_tax_id()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_topic_tag_template() {
+	$tt_slug   = bbp_get_topic_tag_slug();
+	$tt_id     = bbp_get_topic_tag_tax_id();
+	$templates = array(
+		'taxonomy-' . $tt_slug . '.php', // Single Topic Tag slug
+		'taxonomy-' . $tt_id   . '.php', // Single Topic Tag ID
+	);
+	return bbp_get_query_template( 'topic_tag', $templates );
+}
+
+/**
+ * Get the topic edit template
+ *
+ * @since bbPress (r3311)
+ *
+ * @uses bbp_get_topic_tag_tax_id()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_topic_tag_edit_template() {
+	$tt_slug   = bbp_get_topic_tag_slug();
+	$tt_id     = bbp_get_topic_tag_tax_id();
+	$templates = array(
+		'taxonomy-' . $tt_slug . '-edit.php', // Single Topic Tag Edit slug
+		'taxonomy-' . $tt_id   . '-edit.php'  // Single Topic Tag Edit ID
+	);
+	return bbp_get_query_template( 'topic_tag_edit', $templates );
+}
+
+/**
+ * Get the templates to use as the endpoint for bbPress template parts
+ *
+ * @since bbPress (r3311)
+ *
+ * @uses apply_filters()
+ * @uses bbp_set_theme_compat_templates()
+ * @uses bbp_get_query_template()
+ * @return string Path to template file
+ */
+function bbp_get_theme_compat_templates() {
+	$templates = array(
+		'plugin-bbpress.php',
+		'bbpress.php',
+		'forums.php',
+		'forum.php',
+		'generic.php',
+		'page.php',
+		'single.php',
+		'index.php'
+	);
+	return bbp_get_query_template( 'bbpress', $templates );
+}