PageRenderTime 49ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/bbpress/includes/core/template-loader.php

https://bitbucket.org/Thane2376/death-edge.ru
PHP | 529 lines | 206 code | 52 blank | 271 comment | 26 complexity | dd45bfa291557958feb30fb2452e3751 MD5 | raw file
Possible License(s): LGPL-2.1, GPL-2.0, LGPL-3.0, AGPL-1.0
  1. <?php
  2. /**
  3. * bbPress Template Loader
  4. *
  5. * @package bbPress
  6. * @subpackage TemplateLoader
  7. */
  8. // Exit if accessed directly
  9. if ( !defined( 'ABSPATH' ) ) exit;
  10. /**
  11. * Possibly intercept the template being loaded
  12. *
  13. * Listens to the 'template_include' filter and waits for any bbPress specific
  14. * template condition to be met. If one is met and the template file exists,
  15. * it will be used; otherwise
  16. *
  17. * Note that the _edit() checks are ahead of their counterparts, to prevent them
  18. * from being stomped on accident.
  19. *
  20. * @since bbPress (r3032)
  21. *
  22. * @param string $template
  23. *
  24. * @uses bbp_is_single_user() To check if page is single user
  25. * @uses bbp_get_single_user_template() To get user template
  26. * @uses bbp_is_single_user_edit() To check if page is single user edit
  27. * @uses bbp_get_single_user_edit_template() To get user edit template
  28. * @uses bbp_is_single_view() To check if page is single view
  29. * @uses bbp_get_single_view_template() To get view template
  30. * @uses bbp_is_search() To check if page is search
  31. * @uses bbp_get_search_template() To get search template
  32. * @uses bbp_is_forum_edit() To check if page is forum edit
  33. * @uses bbp_get_forum_edit_template() To get forum edit template
  34. * @uses bbp_is_topic_merge() To check if page is topic merge
  35. * @uses bbp_get_topic_merge_template() To get topic merge template
  36. * @uses bbp_is_topic_split() To check if page is topic split
  37. * @uses bbp_get_topic_split_template() To get topic split template
  38. * @uses bbp_is_topic_edit() To check if page is topic edit
  39. * @uses bbp_get_topic_edit_template() To get topic edit template
  40. * @uses bbp_is_reply_move() To check if page is reply move
  41. * @uses bbp_get_reply_move_template() To get reply move template
  42. * @uses bbp_is_reply_edit() To check if page is reply edit
  43. * @uses bbp_get_reply_edit_template() To get reply edit template
  44. * @uses bbp_set_theme_compat_template() To set the global theme compat template
  45. *
  46. * @return string The path to the template file that is being used
  47. */
  48. function bbp_template_include_theme_supports( $template = '' ) {
  49. // Editing a user
  50. if ( bbp_is_single_user_edit() && ( $new_template = bbp_get_single_user_edit_template() ) ) :
  51. // User favorites
  52. elseif ( bbp_is_favorites() && ( $new_template = bbp_get_favorites_template() ) ) :
  53. // User favorites
  54. elseif ( bbp_is_subscriptions() && ( $new_template = bbp_get_subscriptions_template() ) ) :
  55. // Viewing a user
  56. elseif ( bbp_is_single_user() && ( $new_template = bbp_get_single_user_template() ) ) :
  57. // Single View
  58. elseif ( bbp_is_single_view() && ( $new_template = bbp_get_single_view_template() ) ) :
  59. // Search
  60. elseif ( bbp_is_search() && ( $new_template = bbp_get_search_template() ) ) :
  61. // Forum edit
  62. elseif ( bbp_is_forum_edit() && ( $new_template = bbp_get_forum_edit_template() ) ) :
  63. // Single Forum
  64. elseif ( bbp_is_single_forum() && ( $new_template = bbp_get_single_forum_template() ) ) :
  65. // Forum Archive
  66. elseif ( bbp_is_forum_archive() && ( $new_template = bbp_get_forum_archive_template() ) ) :
  67. // Topic merge
  68. elseif ( bbp_is_topic_merge() && ( $new_template = bbp_get_topic_merge_template() ) ) :
  69. // Topic split
  70. elseif ( bbp_is_topic_split() && ( $new_template = bbp_get_topic_split_template() ) ) :
  71. // Topic edit
  72. elseif ( bbp_is_topic_edit() && ( $new_template = bbp_get_topic_edit_template() ) ) :
  73. // Single Topic
  74. elseif ( bbp_is_single_topic() && ( $new_template = bbp_get_single_topic_template() ) ) :
  75. // Topic Archive
  76. elseif ( bbp_is_topic_archive() && ( $new_template = bbp_get_topic_archive_template() ) ) :
  77. // Reply move
  78. elseif ( bbp_is_reply_move() && ( $new_template = bbp_get_reply_move_template() ) ) :
  79. // Editing a reply
  80. elseif ( bbp_is_reply_edit() && ( $new_template = bbp_get_reply_edit_template() ) ) :
  81. // Single Reply
  82. elseif ( bbp_is_single_reply() && ( $new_template = bbp_get_single_reply_template() ) ) :
  83. // Editing a topic tag
  84. elseif ( bbp_is_topic_tag_edit() && ( $new_template = bbp_get_topic_tag_edit_template() ) ) :
  85. // Viewing a topic tag
  86. elseif ( bbp_is_topic_tag() && ( $new_template = bbp_get_topic_tag_template() ) ) :
  87. endif;
  88. // A bbPress template file was located, so override the WordPress template
  89. // and use it to switch off bbPress's theme compatibility.
  90. if ( !empty( $new_template ) ) {
  91. $template = bbp_set_template_included( $new_template );
  92. }
  93. return apply_filters( 'bbp_template_include_theme_supports', $template );
  94. }
  95. /**
  96. * Set the included template
  97. *
  98. * @since bbPress (r4975)
  99. * @param mixed $template Default false
  100. * @return mixed False if empty. Template name if template included
  101. */
  102. function bbp_set_template_included( $template = false ) {
  103. bbpress()->theme_compat->bbpress_template = $template;
  104. return bbpress()->theme_compat->bbpress_template;
  105. }
  106. /**
  107. * Is a bbPress template being included?
  108. *
  109. * @since bbPress (r4975)
  110. * @return bool True if yes, false if no
  111. */
  112. function bbp_is_template_included() {
  113. return ! empty( bbpress()->theme_compat->bbpress_template );
  114. }
  115. /** Custom Functions **********************************************************/
  116. /**
  117. * Attempt to load a custom bbPress functions file, similar to each themes
  118. * functions.php file.
  119. *
  120. * @since bbPress (r3732)
  121. *
  122. * @global string $pagenow
  123. * @uses bbp_locate_template()
  124. */
  125. function bbp_load_theme_functions() {
  126. global $pagenow;
  127. // If bbPress is being deactivated, do not load any more files
  128. if ( bbp_is_deactivation() )
  129. return;
  130. if ( ! defined( 'WP_INSTALLING' ) || ( !empty( $pagenow ) && ( 'wp-activate.php' !== $pagenow ) ) ) {
  131. bbp_locate_template( 'bbpress-functions.php', true );
  132. }
  133. }
  134. /** Individual Templates ******************************************************/
  135. /**
  136. * Get the user profile template
  137. *
  138. * @since bbPress (r3311)
  139. *
  140. * @uses bbp_get_displayed_user_id()
  141. * @uses bbp_get_query_template()
  142. * @return string Path to template file
  143. */
  144. function bbp_get_single_user_template() {
  145. $nicename = bbp_get_displayed_user_field( 'user_nicename' );
  146. $user_id = bbp_get_displayed_user_id();
  147. $templates = array(
  148. 'single-user-' . $nicename . '.php', // Single User nicename
  149. 'single-user-' . $user_id . '.php', // Single User ID
  150. 'single-user.php', // Single User
  151. 'user.php', // User
  152. );
  153. return bbp_get_query_template( 'profile', $templates );
  154. }
  155. /**
  156. * Get the user profile edit template
  157. *
  158. * @since bbPress (r3311)
  159. *
  160. * @uses bbp_get_displayed_user_id()
  161. * @uses bbp_get_query_template()
  162. * @return string Path to template file
  163. */
  164. function bbp_get_single_user_edit_template() {
  165. $nicename = bbp_get_displayed_user_field( 'user_nicename' );
  166. $user_id = bbp_get_displayed_user_id();
  167. $templates = array(
  168. 'single-user-edit-' . $nicename . '.php', // Single User Edit nicename
  169. 'single-user-edit-' . $user_id . '.php', // Single User Edit ID
  170. 'single-user-edit.php', // Single User Edit
  171. 'user-edit.php', // User Edit
  172. 'user.php', // User
  173. );
  174. return bbp_get_query_template( 'profile_edit', $templates );
  175. }
  176. /**
  177. * Get the user favorites template
  178. *
  179. * @since bbPress (r4225)
  180. *
  181. * @uses bbp_get_displayed_user_id()
  182. * @uses bbp_get_query_template()
  183. * @return string Path to template file
  184. */
  185. function bbp_get_favorites_template() {
  186. $nicename = bbp_get_displayed_user_field( 'user_nicename' );
  187. $user_id = bbp_get_displayed_user_id();
  188. $templates = array(
  189. 'single-user-favorites-' . $nicename . '.php', // Single User Favs nicename
  190. 'single-user-favorites-' . $user_id . '.php', // Single User Favs ID
  191. 'favorites-' . $nicename . '.php', // Favorites nicename
  192. 'favorites-' . $user_id . '.php', // Favorites ID
  193. 'favorites.php', // Favorites
  194. 'user.php', // User
  195. );
  196. return bbp_get_query_template( 'favorites', $templates );
  197. }
  198. /**
  199. * Get the user subscriptions template
  200. *
  201. * @since bbPress (r4225)
  202. *
  203. * @uses bbp_get_displayed_user_id()
  204. * @uses bbp_get_query_template()
  205. * @return string Path to template file
  206. */
  207. function bbp_get_subscriptions_template() {
  208. $nicename = bbp_get_displayed_user_field( 'user_nicename' );
  209. $user_id = bbp_get_displayed_user_id();
  210. $templates = array(
  211. 'single-user-subscriptions-' . $nicename . '.php', // Single User Subs nicename
  212. 'single-user-subscriptions-' . $user_id . '.php', // Single User Subs ID
  213. 'subscriptions-' . $nicename . '.php', // Subscriptions nicename
  214. 'subscriptions-' . $user_id . '.php', // Subscriptions ID
  215. 'subscriptions.php', // Subscriptions
  216. 'user.php', // User
  217. );
  218. return bbp_get_query_template( 'subscriptions', $templates );
  219. }
  220. /**
  221. * Get the view template
  222. *
  223. * @since bbPress (r3311)
  224. *
  225. * @uses bbp_get_view_id()
  226. * @uses bbp_get_query_template()
  227. * @return string Path to template file
  228. */
  229. function bbp_get_single_view_template() {
  230. $view_id = bbp_get_view_id();
  231. $templates = array(
  232. 'single-view-' . $view_id . '.php', // Single View ID
  233. 'view-' . $view_id . '.php', // View ID
  234. 'single-view.php', // Single View
  235. 'view.php', // View
  236. );
  237. return bbp_get_query_template( 'single_view', $templates );
  238. }
  239. /**
  240. * Get the search template
  241. *
  242. * @since bbPress (r4579)
  243. *
  244. * @uses bbp_get_query_template()
  245. * @return string Path to template file
  246. */
  247. function bbp_get_search_template() {
  248. $templates = array(
  249. 'page-forum-search.php', // Single Search
  250. 'forum-search.php', // Search
  251. );
  252. return bbp_get_query_template( 'single_search', $templates );
  253. }
  254. /**
  255. * Get the single forum template
  256. *
  257. * @since bbPress (r3922)
  258. *
  259. * @uses bbp_get_forum_post_type()
  260. * @uses bbp_get_query_template()
  261. * @return string Path to template file
  262. */
  263. function bbp_get_single_forum_template() {
  264. $templates = array(
  265. 'single-' . bbp_get_forum_post_type() . '.php' // Single Forum
  266. );
  267. return bbp_get_query_template( 'single_forum', $templates );
  268. }
  269. /**
  270. * Get the forum archive template
  271. *
  272. * @since bbPress (r3922)
  273. *
  274. * @uses bbp_get_forum_post_type()
  275. * @uses bbp_get_query_template()
  276. * @return string Path to template file
  277. */
  278. function bbp_get_forum_archive_template() {
  279. $templates = array(
  280. 'archive-' . bbp_get_forum_post_type() . '.php' // Forum Archive
  281. );
  282. return bbp_get_query_template( 'forum_archive', $templates );
  283. }
  284. /**
  285. * Get the forum edit template
  286. *
  287. * @since bbPress (r3566)
  288. *
  289. * @uses bbp_get_topic_post_type()
  290. * @uses bbp_get_query_template()
  291. * @return string Path to template file
  292. */
  293. function bbp_get_forum_edit_template() {
  294. $templates = array(
  295. 'single-' . bbp_get_forum_post_type() . '-edit.php' // Single Forum Edit
  296. );
  297. return bbp_get_query_template( 'forum_edit', $templates );
  298. }
  299. /**
  300. * Get the single topic template
  301. *
  302. * @since bbPress (r3922)
  303. *
  304. * @uses bbp_get_topic_post_type()
  305. * @uses bbp_get_query_template()
  306. * @return string Path to template file
  307. */
  308. function bbp_get_single_topic_template() {
  309. $templates = array(
  310. 'single-' . bbp_get_topic_post_type() . '.php'
  311. );
  312. return bbp_get_query_template( 'single_topic', $templates );
  313. }
  314. /**
  315. * Get the topic archive template
  316. *
  317. * @since bbPress (r3922)
  318. *
  319. * @uses bbp_get_topic_post_type()
  320. * @uses bbp_get_query_template()
  321. * @return string Path to template file
  322. */
  323. function bbp_get_topic_archive_template() {
  324. $templates = array(
  325. 'archive-' . bbp_get_topic_post_type() . '.php' // Topic Archive
  326. );
  327. return bbp_get_query_template( 'topic_archive', $templates );
  328. }
  329. /**
  330. * Get the topic edit template
  331. *
  332. * @since bbPress (r3311)
  333. *
  334. * @uses bbp_get_topic_post_type()
  335. * @uses bbp_get_query_template()
  336. * @return string Path to template file
  337. */
  338. function bbp_get_topic_edit_template() {
  339. $templates = array(
  340. 'single-' . bbp_get_topic_post_type() . '-edit.php' // Single Topic Edit
  341. );
  342. return bbp_get_query_template( 'topic_edit', $templates );
  343. }
  344. /**
  345. * Get the topic split template
  346. *
  347. * @since bbPress (r3311)
  348. *
  349. * @uses bbp_get_topic_post_type()
  350. * @uses bbp_get_query_template()
  351. * @return string Path to template file
  352. */
  353. function bbp_get_topic_split_template() {
  354. $templates = array(
  355. 'single-' . bbp_get_topic_post_type() . '-split.php', // Topic Split
  356. );
  357. return bbp_get_query_template( 'topic_split', $templates );
  358. }
  359. /**
  360. * Get the topic merge template
  361. *
  362. * @since bbPress (r3311)
  363. *
  364. * @uses bbp_get_topic_post_type()
  365. * @uses bbp_get_query_template()
  366. * @return string Path to template file
  367. */
  368. function bbp_get_topic_merge_template() {
  369. $templates = array(
  370. 'single-' . bbp_get_topic_post_type() . '-merge.php', // Topic Merge
  371. );
  372. return bbp_get_query_template( 'topic_merge', $templates );
  373. }
  374. /**
  375. * Get the single reply template
  376. *
  377. * @since bbPress (r3922)
  378. *
  379. * @uses bbp_get_reply_post_type()
  380. * @uses bbp_get_query_template()
  381. * @return string Path to template file
  382. */
  383. function bbp_get_single_reply_template() {
  384. $templates = array(
  385. 'single-' . bbp_get_reply_post_type() . '.php'
  386. );
  387. return bbp_get_query_template( 'single_reply', $templates );
  388. }
  389. /**
  390. * Get the reply edit template
  391. *
  392. * @since bbPress (r3311)
  393. *
  394. * @uses bbp_get_reply_post_type()
  395. * @uses bbp_get_query_template()
  396. * @return string Path to template file
  397. */
  398. function bbp_get_reply_edit_template() {
  399. $templates = array(
  400. 'single-' . bbp_get_reply_post_type() . '-edit.php' // Single Reply Edit
  401. );
  402. return bbp_get_query_template( 'reply_edit', $templates );
  403. }
  404. /**
  405. * Get the reply move template
  406. *
  407. * @since bbPress (r4521)
  408. *
  409. * @uses bbp_get_reply_post_type()
  410. * @uses bbp_get_query_template()
  411. * @return string Path to template file
  412. */
  413. function bbp_get_reply_move_template() {
  414. $templates = array(
  415. 'single-' . bbp_get_reply_post_type() . '-move.php', // Reply move
  416. );
  417. return bbp_get_query_template( 'reply_move', $templates );
  418. }
  419. /**
  420. * Get the topic template
  421. *
  422. * @since bbPress (r3311)
  423. *
  424. * @uses bbp_get_topic_tag_tax_id()
  425. * @uses bbp_get_query_template()
  426. * @return string Path to template file
  427. */
  428. function bbp_get_topic_tag_template() {
  429. $tt_slug = bbp_get_topic_tag_slug();
  430. $tt_id = bbp_get_topic_tag_tax_id();
  431. $templates = array(
  432. 'taxonomy-' . $tt_slug . '.php', // Single Topic Tag slug
  433. 'taxonomy-' . $tt_id . '.php', // Single Topic Tag ID
  434. );
  435. return bbp_get_query_template( 'topic_tag', $templates );
  436. }
  437. /**
  438. * Get the topic edit template
  439. *
  440. * @since bbPress (r3311)
  441. *
  442. * @uses bbp_get_topic_tag_tax_id()
  443. * @uses bbp_get_query_template()
  444. * @return string Path to template file
  445. */
  446. function bbp_get_topic_tag_edit_template() {
  447. $tt_slug = bbp_get_topic_tag_slug();
  448. $tt_id = bbp_get_topic_tag_tax_id();
  449. $templates = array(
  450. 'taxonomy-' . $tt_slug . '-edit.php', // Single Topic Tag Edit slug
  451. 'taxonomy-' . $tt_id . '-edit.php' // Single Topic Tag Edit ID
  452. );
  453. return bbp_get_query_template( 'topic_tag_edit', $templates );
  454. }
  455. /**
  456. * Get the templates to use as the endpoint for bbPress template parts
  457. *
  458. * @since bbPress (r3311)
  459. *
  460. * @uses apply_filters()
  461. * @uses bbp_set_theme_compat_templates()
  462. * @uses bbp_get_query_template()
  463. * @return string Path to template file
  464. */
  465. function bbp_get_theme_compat_templates() {
  466. $templates = array(
  467. 'plugin-bbpress.php',
  468. 'bbpress.php',
  469. 'forums.php',
  470. 'forum.php',
  471. 'generic.php',
  472. 'page.php',
  473. 'single.php',
  474. 'index.php'
  475. );
  476. return bbp_get_query_template( 'bbpress', $templates );
  477. }