web/wp-content/plugins/bbpress/includes/core/template-functions.php
author Anthony Ly <anthonyly.com@gmail.com>
Wed, 19 Dec 2012 17:46:52 -0800
changeset 204 09a1c134465b
parent 196 5e8dcbe22c24
permissions -rw-r--r--
man wordpress + plugins order post + slideshow
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
196
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     1
<?php
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     2
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     3
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     4
 * bbPress Template Functions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     5
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     6
 * This file contains functions necessary to mirror the WordPress core template
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     7
 * loading process. Many of those functions are not filterable, and even then
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     8
 * would not be robust enough to predict where bbPress templates might exist.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
     9
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    10
 * @package bbPress
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    11
 * @subpackage TemplateFunctions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    12
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    13
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    14
// Exit if accessed directly
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    15
if ( !defined( 'ABSPATH' ) ) exit;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    16
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    17
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    18
 * Adds bbPress theme support to any active WordPress theme
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    19
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    20
 * @since bbPress (r3032)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    21
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    22
 * @param string $slug
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    23
 * @param string $name Optional. Default null
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    24
 * @uses bbp_locate_template()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    25
 * @uses load_template()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    26
 * @uses get_template_part()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    27
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    28
function bbp_get_template_part( $slug, $name = null ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    29
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    30
	// Execute code for this part
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    31
	do_action( 'get_template_part_' . $slug, $slug, $name );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    32
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    33
	// Setup possible parts
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    34
	$templates = array();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    35
	if ( isset( $name ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    36
		$templates[] = $slug . '-' . $name . '.php';
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    37
	$templates[] = $slug . '.php';
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    38
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    39
	// Allow template parst to be filtered
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    40
	$templates = apply_filters( 'bbp_get_template_part', $templates, $slug, $name );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    41
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    42
	// Return the part that is found
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    43
	return bbp_locate_template( $templates, true, false );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    44
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    45
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    46
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    47
 * Retrieve the name of the highest priority template file that exists.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    48
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    49
 * Searches in the child theme before parent theme so that themes which
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    50
 * inherit from a parent theme can just overload one file. If the template is
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    51
 * not found in either of those, it looks in the theme-compat folder last.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    52
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    53
 * @since bbPres (r3618)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    54
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    55
 * @param string|array $template_names Template file(s) to search for, in order.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    56
 * @param bool $load If true the template file will be loaded if it is found.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    57
 * @param bool $require_once Whether to require_once or require. Default true.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    58
 *                            Has no effect if $load is false.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    59
 * @return string The template filename if one is located.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    60
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    61
function bbp_locate_template( $template_names, $load = false, $require_once = true ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    62
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    63
	// No file found yet
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    64
	$located            = false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    65
	$template_locations = bbp_get_template_stack();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    66
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    67
	// Try to find a template file
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    68
	foreach ( (array) $template_names as $template_name ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    69
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    70
		// Continue if template is empty
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    71
		if ( empty( $template_name ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    72
			continue;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    73
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    74
		// Trim off any slashes from the template name
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    75
		$template_name  = ltrim( $template_name, '/' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    76
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    77
		// Loop through template stack
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    78
		foreach ( (array) $template_locations as $template_location ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    79
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    80
			// Continue if $template_location is empty
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    81
			if ( empty( $template_location ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    82
				continue;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    83
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    84
			// Check child theme first
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    85
			if ( file_exists( trailingslashit( $template_location ) . $template_name ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    86
				$located = trailingslashit( $template_location ) . $template_name;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    87
				break 2;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    88
			}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    89
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    90
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    91
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    92
	// Maybe load the template if one was located
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    93
	if ( ( true == $load ) && !empty( $located ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    94
		load_template( $located, $require_once );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    95
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    96
	return $located;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    97
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    98
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
    99
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   100
 * This is really cool. This function registers a new template stack location,
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   101
 * using WordPress's built in filters API.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   102
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   103
 * This allows for templates to live in places beyond just the parent/child
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   104
 * relationship, to allow for custom template locations. Used in conjunction
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   105
 * with bbp_locate_template(), this allows for easy template overrides.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   106
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   107
 * @since bbPress (r4323)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   108
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   109
 * @param string $location Callback function that returns the 
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   110
 * @param int $priority
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   111
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   112
function bbp_register_template_stack( $location_callback = '', $priority = 10 ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   113
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   114
	// Bail if no location, or function does not exist
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   115
	if ( empty( $location_callback ) || ! function_exists( $location_callback ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   116
		return false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   117
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   118
	// Add location callback to template stack
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   119
	add_filter( 'bbp_template_stack', $location_callback, (int) $priority );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   120
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   121
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   122
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   123
 * Call the functions added to the 'bbp_template_stack' filter hook, and return
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   124
 * an array of the template locations.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   125
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   126
 * @see bbp_register_template_stack()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   127
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   128
 * @since bbPress (r4323)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   129
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   130
 * @global array $wp_filter Stores all of the filters
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   131
 * @global array $merged_filters Merges the filter hooks using this function.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   132
 * @global array $wp_current_filter stores the list of current filters with the current one last
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   133
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   134
 * @return array The filtered value after all hooked functions are applied to it.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   135
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   136
function bbp_get_template_stack() {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   137
	global $wp_filter, $merged_filters, $wp_current_filter;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   138
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   139
	// Setup some default variables
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   140
	$tag  = 'bbp_template_stack';
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   141
	$args = $stack = array();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   142
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   143
	// Add 'bbp_template_stack' to the current filter array
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   144
	$wp_current_filter[] = $tag;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   145
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   146
	// Sort
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   147
	if ( ! isset( $merged_filters[ $tag ] ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   148
		ksort( $wp_filter[$tag] );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   149
		$merged_filters[ $tag ] = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   150
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   151
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   152
	// Ensure we're always at the beginning of the filter array
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   153
	reset( $wp_filter[ $tag ] );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   154
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   155
	// Loop through 'bbp_template_stack' filters, and call callback functions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   156
	do {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   157
		foreach( (array) current( $wp_filter[$tag] ) as $the_ ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   158
			if ( ! is_null( $the_['function'] ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   159
				$args[1] = $stack;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   160
				$stack[] = call_user_func_array( $the_['function'], array_slice( $args, 1, (int) $the_['accepted_args'] ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   161
			}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   162
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   163
	} while ( next( $wp_filter[$tag] ) !== false );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   164
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   165
	// Remove 'bbp_template_stack' from the current filter array
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   166
	array_pop( $wp_current_filter );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   167
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   168
	// Remove empties and duplicates
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   169
	$stack = array_unique( array_filter( $stack ) );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   170
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   171
	return (array) apply_filters( 'bbp_get_template_stack', $stack ) ;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   172
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   173
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   174
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   175
 * Retrieve path to a template
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   176
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   177
 * Used to quickly retrieve the path of a template without including the file
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   178
 * extension. It will also check the parent theme and theme-compat theme with
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   179
 * the use of {@link bbp_locate_template()}. Allows for more generic template
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   180
 * locations without the use of the other get_*_template() functions.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   181
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   182
 * @since bbPress (r3629)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   183
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   184
 * @param string $type Filename without extension.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   185
 * @param array $templates An optional list of template candidates
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   186
 * @uses bbp_set_theme_compat_templates()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   187
 * @uses bbp_locate_template()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   188
 * @uses bbp_set_theme_compat_template()
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   189
 * @return string Full path to file.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   190
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   191
function bbp_get_query_template( $type, $templates = array() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   192
	$type = preg_replace( '|[^a-z0-9-]+|', '', $type );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   193
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   194
	if ( empty( $templates ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   195
		$templates = array( "{$type}.php" );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   196
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   197
	// Filter possible templates, try to match one, and set any bbPress theme
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   198
	// compat properties so they can be cross-checked later.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   199
	$templates = apply_filters( "bbp_get_{$type}_template", $templates );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   200
	$templates = bbp_set_theme_compat_templates( $templates );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   201
	$template  = bbp_locate_template( $templates );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   202
	$template  = bbp_set_theme_compat_template( $template );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   203
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   204
	return apply_filters( "bbp_{$type}_template", $template );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   205
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   206
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   207
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   208
 * Get the possible subdirectories to check for templates in
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   209
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   210
 * @since bbPress (r3738)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   211
 * @param array $templates Templates we are looking for
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   212
 * @return array Possible subfolders to look in
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   213
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   214
function bbp_get_template_locations( $templates = array() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   215
	$locations = array(
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   216
		'bbpress',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   217
		'forums',
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   218
		''
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   219
	);
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   220
	return apply_filters( 'bbp_get_template_locations', $locations, $templates );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   221
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   222
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   223
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   224
 * Add template locations to template files being searched for
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   225
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   226
 * @since bbPress (r3738)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   227
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   228
 * @param array $templates
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   229
 * @return array() 
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   230
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   231
function bbp_add_template_locations( $templates = array() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   232
	$retval = array();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   233
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   234
	// Get alternate locations
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   235
	$locations = bbp_get_template_locations( $templates );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   236
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   237
	// Loop through locations and templates and combine
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   238
	foreach ( (array) $locations as $location )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   239
		foreach ( (array) $templates as $template )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   240
			$retval[] = ltrim( trailingslashit( $location ) . $template, '/' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   241
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   242
	return apply_filters( 'bbp_add_template_locations', array_unique( $retval ), $templates );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   243
}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   244
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   245
/**
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   246
 * Add checks for bbPress conditions to parse_query action
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   247
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   248
 * If it's a user page, WP_Query::bbp_is_single_user is set to true.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   249
 * If it's a user edit page, WP_Query::bbp_is_single_user_edit is set to true
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   250
 * and the the 'wp-admin/includes/user.php' file is included.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   251
 * In addition, on user/user edit pages, WP_Query::home is set to false & query
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   252
 * vars 'bbp_user_id' with the displayed user id and 'author_name' with the
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   253
 * displayed user's nicename are added.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   254
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   255
 * If it's a forum edit, WP_Query::bbp_is_forum_edit is set to true
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   256
 * If it's a topic edit, WP_Query::bbp_is_topic_edit is set to true
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   257
 * If it's a reply edit, WP_Query::bbp_is_reply_edit is set to true.
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   258
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   259
 * If it's a view page, WP_Query::bbp_is_view is set to true
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   260
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   261
 * @since bbPress (r2688)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   262
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   263
 * @param WP_Query $posts_query
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   264
 *
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   265
 * @uses get_query_var() To get {@link WP_Query} query var
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   266
 * @uses is_email() To check if the string is an email
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   267
 * @uses get_user_by() To try to get the user by email and nicename
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   268
 * @uses get_userdata() to get the user data
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   269
 * @uses current_user_can() To check if the current user can edit the user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   270
 * @uses is_user_member_of_blog() To check if user profile page exists
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   271
 * @uses WP_Query::set_404() To set a 404 status
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   272
 * @uses apply_filters() Calls 'enable_edit_any_user_configuration' with true
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   273
 * @uses bbp_get_view_query_args() To get the view query args
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   274
 * @uses bbp_get_forum_post_type() To get the forum post type
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   275
 * @uses bbp_get_topic_post_type() To get the topic post type
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   276
 * @uses bbp_get_reply_post_type() To get the reply post type
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   277
 * @uses remove_action() To remove the auto save post revision action
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   278
 */
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   279
function bbp_parse_query( $posts_query ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   280
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   281
	// Bail if $posts_query is not the main loop
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   282
	if ( ! $posts_query->is_main_query() )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   283
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   284
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   285
	// Bail if filters are suppressed on this query
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   286
	if ( true == $posts_query->get( 'suppress_filters' ) )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   287
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   288
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   289
	// Bail if in admin
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   290
	if ( is_admin() )
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   291
		return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   292
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   293
	// Get query variables
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   294
	$bbp_view = $posts_query->get( bbp_get_view_rewrite_id() );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   295
	$bbp_user = $posts_query->get( bbp_get_user_rewrite_id() );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   296
	$is_edit  = $posts_query->get( bbp_get_edit_rewrite_id() );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   297
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   298
	// It is a user page - We'll also check if it is user edit
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   299
	if ( !empty( $bbp_user ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   300
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   301
		// Not a user_id so try email and slug
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   302
		if ( !is_numeric( $bbp_user ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   303
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   304
			// Email was passed
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   305
			if ( is_email( $bbp_user ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   306
				$bbp_user = get_user_by( 'email', $bbp_user );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   307
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   308
			// Try nicename
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   309
			} else {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   310
				$bbp_user = get_user_by( 'slug', $bbp_user );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   311
			}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   312
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   313
			// If we were successful, set to ID
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   314
			if ( is_object( $bbp_user ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   315
				$bbp_user = $bbp_user->ID;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   316
			}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   317
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   318
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   319
		// Cast as int, just in case
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   320
		$bbp_user = (int) $bbp_user;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   321
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   322
		// 404 and bail if user does not have a profile
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   323
		if ( ! bbp_user_has_profile( $bbp_user ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   324
			$posts_query->set_404();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   325
			return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   326
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   327
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   328
		/** User Exists *******************************************************/
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   329
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   330
		$is_favs    = $posts_query->get( bbp_get_user_favorites_rewrite_id()     );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   331
		$is_subs    = $posts_query->get( bbp_get_user_subscriptions_rewrite_id() );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   332
		$is_topics  = $posts_query->get( bbp_get_user_topics_rewrite_id()        );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   333
		$is_replies = $posts_query->get( bbp_get_user_replies_rewrite_id()       );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   334
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   335
		// View or edit?
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   336
		if ( !empty( $is_edit ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   337
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   338
			// We are editing a profile
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   339
			$posts_query->bbp_is_single_user_edit = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   340
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   341
			// Load the core WordPress contact methods
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   342
			if ( !function_exists( '_wp_get_user_contactmethods' ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   343
				include_once( ABSPATH . 'wp-includes/registration.php' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   344
			}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   345
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   346
			// Load the edit_user functions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   347
			if ( !function_exists( 'edit_user' ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   348
				require_once( ABSPATH . 'wp-admin/includes/user.php' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   349
			}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   350
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   351
			// Load the grant/revoke super admin functions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   352
			if ( is_multisite() && !function_exists( 'revoke_super_admin' ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   353
				require_once( ABSPATH . 'wp-admin/includes/ms.php' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   354
			}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   355
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   356
			// Editing a user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   357
			$posts_query->bbp_is_edit = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   358
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   359
		// User favorites
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   360
		} elseif ( ! empty( $is_favs ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   361
			$posts_query->bbp_is_single_user_favs = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   362
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   363
		// User subscriptions
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   364
		} elseif ( ! empty( $is_subs ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   365
			$posts_query->bbp_is_single_user_subs = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   366
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   367
		// User topics
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   368
		} elseif ( ! empty( $is_topics ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   369
			$posts_query->bbp_is_single_user_topics = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   370
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   371
		// User topics
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   372
		} elseif ( ! empty( $is_replies ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   373
			$posts_query->bbp_is_single_user_replies = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   374
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   375
		// User profile
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   376
		} else {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   377
			$posts_query->bbp_is_single_user_profile = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   378
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   379
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   380
		// Looking at a single user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   381
		$posts_query->bbp_is_single_user = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   382
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   383
		// Make sure 404 is not set
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   384
		$posts_query->is_404  = false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   385
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   386
		// Correct is_home variable
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   387
		$posts_query->is_home = false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   388
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   389
		// Get the user data
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   390
		$user = get_userdata( $bbp_user );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   391
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   392
		// User is looking at their own profile
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   393
		if ( get_current_user_id() == $user->ID ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   394
			$posts_query->bbp_is_single_user_home = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   395
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   396
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   397
		// Set bbp_user_id for future reference
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   398
		$posts_query->set( 'bbp_user_id', $user->ID );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   399
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   400
		// Set author_name as current user's nicename to get correct posts
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   401
		$posts_query->set( 'author_name', $user->user_nicename );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   402
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   403
		// Set the displayed user global to this user
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   404
		bbpress()->displayed_user = $user;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   405
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   406
	// View Page
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   407
	} elseif ( !empty( $bbp_view ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   408
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   409
		// Check if the view exists by checking if there are query args are set
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   410
		$view_args = bbp_get_view_query_args( $bbp_view );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   411
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   412
		// Bail if view args is false (view isn't registered)
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   413
		if ( false === $view_args ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   414
			$posts_query->set_404();
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   415
			return;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   416
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   417
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   418
		// Correct is_home variable
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   419
		$posts_query->is_home     = false;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   420
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   421
		// We are in a custom topic view
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   422
		$posts_query->bbp_is_view = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   423
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   424
	// Forum/Topic/Reply Edit Page
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   425
	} elseif ( !empty( $is_edit ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   426
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   427
		// Get the post type from the main query loop
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   428
		$post_type = $posts_query->get( 'post_type' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   429
		
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   430
		// Check which post_type we are editing, if any
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   431
		if ( !empty( $post_type ) ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   432
			switch( $post_type ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   433
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   434
				// We are editing a forum
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   435
				case bbp_get_forum_post_type() :
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   436
					$posts_query->bbp_is_forum_edit = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   437
					$posts_query->bbp_is_edit       = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   438
					break;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   439
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   440
				// We are editing a topic
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   441
				case bbp_get_topic_post_type() :
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   442
					$posts_query->bbp_is_topic_edit = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   443
					$posts_query->bbp_is_edit       = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   444
					break;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   445
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   446
				// We are editing a reply
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   447
				case bbp_get_reply_post_type() :
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   448
					$posts_query->bbp_is_reply_edit = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   449
					$posts_query->bbp_is_edit       = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   450
					break;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   451
			}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   452
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   453
		// We are editing a topic tag
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   454
		} elseif ( bbp_is_topic_tag() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   455
			$posts_query->bbp_is_topic_tag_edit = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   456
			$posts_query->bbp_is_edit           = true;
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   457
		}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   458
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   459
		// We save post revisions on our own
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   460
		remove_action( 'pre_post_update', 'wp_save_post_revision' );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   461
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   462
	// Topic tag page
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   463
	} elseif ( bbp_is_topic_tag() ) {
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   464
		$posts_query->set( 'bbp_topic_tag',  get_query_var( 'term' )   );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   465
		$posts_query->set( 'post_type',      bbp_get_topic_post_type() );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   466
		$posts_query->set( 'posts_per_page', bbp_get_topics_per_page() );
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   467
	}
5e8dcbe22c24 ajout plugins pour résoudre les messages d'erreurs
Anthony Ly <anthonyly.com@gmail.com>
parents:
diff changeset
   468
}