345 lines
11 KiB
PHP
345 lines
11 KiB
PHP
<?php
|
|
|
|
/**
|
|
* bbPress Admin Actions
|
|
*
|
|
* This file contains the actions that are used through-out bbPress Admin. They
|
|
* are consolidated here to make searching for them easier, and to help developers
|
|
* understand at a glance the order in which things occur.
|
|
*
|
|
* There are a few common places that additional actions can currently be found
|
|
*
|
|
* - bbPress: In {@link bbPress::setup_actions()} in bbpress.php
|
|
* - Admin: More in {@link BBP_Admin::setup_actions()} in class-bbp-admin.php
|
|
*
|
|
* @package bbPress
|
|
* @subpackage Administration
|
|
*
|
|
* @see bbp-core-actions.php
|
|
* @see bbp-core-filters.php
|
|
*/
|
|
|
|
// Exit if accessed directly
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* Attach bbPress to WordPress
|
|
*
|
|
* bbPress uses its own internal actions to help aid in third-party plugin
|
|
* development, and to limit the amount of potential future code changes when
|
|
* updates to WordPress core occur.
|
|
*
|
|
* These actions exist to create the concept of 'plugin dependencies'. They
|
|
* provide a safe way for plugins to execute code *only* when bbPress is
|
|
* installed and activated, without needing to do complicated guesswork.
|
|
*
|
|
* For more information on how this works, see the 'Plugin Dependency' section
|
|
* near the bottom of this file.
|
|
*
|
|
* v--WordPress Actions v--bbPress Sub-actions
|
|
*/
|
|
add_action( 'wpmu_new_blog', 'bbp_new_site', 10, 6 );
|
|
add_action( 'current_screen', 'bbp_current_screen' );
|
|
add_action( 'tool_box', 'bbp_admin_tool_box' );
|
|
add_action( 'admin_menu', 'bbp_admin_menu' );
|
|
add_action( 'admin_init', 'bbp_admin_init' );
|
|
add_action( 'admin_head', 'bbp_admin_head' );
|
|
add_action( 'admin_notices', 'bbp_admin_notices' );
|
|
add_action( 'menu_order', 'bbp_admin_menu_order' );
|
|
add_filter( 'custom_menu_order', 'bbp_admin_custom_menu_order' );
|
|
|
|
// Hook on to admin_init
|
|
add_action( 'bbp_admin_init', 'bbp_setup_updater', 999 );
|
|
add_action( 'bbp_admin_init', 'bbp_register_importers' );
|
|
add_action( 'bbp_admin_init', 'bbp_register_admin_styles' );
|
|
add_action( 'bbp_admin_init', 'bbp_register_admin_scripts' );
|
|
add_action( 'bbp_admin_init', 'bbp_register_admin_settings' );
|
|
|
|
// Hook on to current_screen (only in Site admin, not Network or User)
|
|
if ( is_blog_admin() ) {
|
|
add_action( 'bbp_current_screen', 'bbp_admin_forums' );
|
|
add_action( 'bbp_current_screen', 'bbp_admin_topics' );
|
|
add_action( 'bbp_current_screen', 'bbp_admin_replies' );
|
|
}
|
|
|
|
// Initialize the admin area
|
|
add_action( 'bbp_init', 'bbp_setup_admin' );
|
|
|
|
// Reset the menu order
|
|
add_action( 'bbp_admin_menu', 'bbp_admin_separator' );
|
|
|
|
// Activation
|
|
add_action( 'bbp_activation', 'bbp_setup_new_site' );
|
|
add_action( 'bbp_activation', 'bbp_add_activation_redirect' );
|
|
add_action( 'bbp_activation', 'bbp_delete_rewrite_rules' );
|
|
add_action( 'bbp_activation', 'bbp_make_current_user_keymaster' );
|
|
add_action( 'load-plugins.php', 'bbp_do_activation_redirect' );
|
|
|
|
// Deactivation
|
|
add_action( 'bbp_deactivation', 'bbp_remove_caps' );
|
|
add_action( 'bbp_deactivation', 'bbp_delete_rewrite_rules' );
|
|
|
|
// New Site
|
|
add_action( 'bbp_new_site', 'bbp_setup_new_site', 8 );
|
|
|
|
// Load the default repair tools
|
|
add_action( 'load-tools_page_bbp-repair', 'bbp_register_default_repair_tools' );
|
|
add_action( 'load-tools_page_bbp-upgrade', 'bbp_register_default_repair_tools' );
|
|
|
|
// Contextual Helpers
|
|
add_action( 'load-settings_page_bbpress', 'bbp_admin_settings_help' );
|
|
add_action( 'load-tools_page_bbp-repair', 'bbp_admin_tools_repair_help' );
|
|
add_action( 'load-tools_page_bbp-upgrade', 'bbp_admin_tools_repair_help' );
|
|
add_action( 'load-tools_page_bbp-converter', 'bbp_admin_tools_converter_help' );
|
|
add_action( 'load-tools_page_bbp-reset', 'bbp_admin_tools_reset_help' );
|
|
|
|
// Handle submission of Tools pages
|
|
add_action( 'load-tools_page_bbp-repair', 'bbp_admin_repair_handler' );
|
|
add_action( 'load-tools_page_bbp-upgrade', 'bbp_admin_repair_handler' );
|
|
add_action( 'load-tools_page_bbp-reset', 'bbp_admin_reset_handler' );
|
|
add_action( 'bbp_admin_tool_box', 'bbp_admin_tools_box' );
|
|
|
|
// Add sample permalink filter
|
|
add_filter( 'post_type_link', 'bbp_filter_sample_permalink', 10, 4 );
|
|
|
|
// Add quick stats to dashboard glance elements
|
|
add_filter( 'dashboard_glance_items', 'bbp_filter_dashboard_glance_items', -99 );
|
|
|
|
// Maybe use icons for column headers
|
|
add_filter( 'bbp_admin_forums_column_headers', 'bbp_filter_column_headers' );
|
|
add_filter( 'bbp_admin_topics_column_headers', 'bbp_filter_column_headers' );
|
|
add_filter( 'bbp_admin_replies_column_headers', 'bbp_filter_column_headers' );
|
|
|
|
// Load the converter early (page and AJAX)
|
|
add_action( 'load-tools_page_bbp-converter', 'bbp_setup_converter', 2 );
|
|
add_action( 'wp_ajax_bbp_converter_process', 'bbp_setup_converter', 2 );
|
|
|
|
// Add New User
|
|
add_action( 'user_new_form', 'bbp_add_user_form_role_field', 10, 1 );
|
|
|
|
/**
|
|
* Setup bbPress admin
|
|
*
|
|
* @since 2.0.0 bbPress (r1000)
|
|
* @since 2.6.0 bbPress (r6598) Moved to actions.php
|
|
*/
|
|
function bbp_admin() {
|
|
return bbp_setup_admin();
|
|
}
|
|
|
|
/**
|
|
* When a new site is created in a multisite installation, run the activation
|
|
* routine on that site
|
|
*
|
|
* @since 2.0.0 bbPress (r3283)
|
|
*
|
|
* @param int $blog_id
|
|
* @param int $user_id
|
|
* @param string $domain
|
|
* @param string $path
|
|
* @param int $site_id
|
|
* @param array() $meta
|
|
*/
|
|
function bbp_new_site( $blog_id, $user_id, $domain, $path, $site_id, $meta ) {
|
|
|
|
// Bail if plugin is not network activated
|
|
if ( ! is_plugin_active_for_network( bbpress()->basename ) ) {
|
|
return;
|
|
}
|
|
|
|
// Switch to the new site
|
|
bbp_switch_to_site( $blog_id );
|
|
|
|
// Do the bbPress activation routine
|
|
do_action( 'bbp_new_site', $blog_id, $user_id, $domain, $path, $site_id, $meta );
|
|
|
|
// Restore original site
|
|
bbp_restore_current_site();
|
|
}
|
|
|
|
/**
|
|
* Show icons in list-table column headers instead of strings
|
|
*
|
|
* @since 2.6.0 bbPress (r5833)
|
|
*
|
|
* @param array $columns Column headers fed into list-table objects
|
|
*
|
|
* @return array Possibly altered column headers
|
|
*/
|
|
function bbp_filter_column_headers( $columns = array() ) {
|
|
|
|
// Do not filter column headers by default - maybe we'll turn it on later
|
|
if ( ! apply_filters( 'bbp_filter_column_headers', false ) ) {
|
|
return $columns;
|
|
}
|
|
|
|
/** Forums ****************************************************************/
|
|
|
|
// Forum topic count
|
|
if ( isset( $columns[ 'bbp_forum_topic_count' ] ) ) {
|
|
$columns[ 'bbp_forum_topic_count' ] = '<span class="vers bbp_topics_column" title="' . esc_attr__( 'Topics', 'bbpress' ) . '"><span class="screen-reader-text">' . esc_html__( 'Topics', 'bbpress' ) . '</span></span>';
|
|
}
|
|
|
|
// Forum reply count
|
|
if ( isset( $columns[ 'bbp_forum_reply_count' ] ) ) {
|
|
$columns[ 'bbp_forum_reply_count' ] = '<span class="vers bbp_replies_column" title="' . esc_attr__( 'Replies', 'bbpress' ) . '"><span class="screen-reader-text">' . esc_html__( 'Replies', 'bbpress' ) . '</span></span>';
|
|
}
|
|
|
|
/** Topics ****************************************************************/
|
|
|
|
// Topic forum
|
|
if ( isset( $columns[ 'bbp_topic_forum' ] ) ) {
|
|
$columns[ 'bbp_topic_forum' ] = '<span class="vers bbp_forums_column" title="' . esc_attr__( 'Forum', 'bbpress' ) . '"><span class="screen-reader-text">' . esc_html__( 'Forum', 'bbpress' ) . '</span></span>';
|
|
}
|
|
|
|
// Topic reply count
|
|
if ( isset( $columns[ 'bbp_topic_reply_count' ] ) ) {
|
|
$columns[ 'bbp_topic_reply_count' ] = '<span class="vers bbp_replies_column" title="' . esc_attr__( 'Replies', 'bbpress' ) . '"><span class="screen-reader-text">' . esc_html__( 'Replies', 'bbpress' ) . '</span></span>';
|
|
}
|
|
|
|
/** Replies ***************************************************************/
|
|
|
|
// Reply forum
|
|
if ( isset( $columns[ 'bbp_reply_forum' ] ) ) {
|
|
$columns[ 'bbp_reply_forum' ] = '<span class="vers bbp_forums_column" title="' . esc_attr__( 'Forum', 'bbpress' ) . '"><span class="screen-reader-text">' . esc_html__( 'Forum', 'bbpress' ) . '</span></span>';
|
|
}
|
|
|
|
// Reply topic
|
|
if ( isset( $columns[ 'bbp_reply_topic' ] ) ) {
|
|
$columns[ 'bbp_reply_topic' ] = '<span class="vers bbp_topics_column" title="' . esc_attr__( 'Topic', 'bbpress' ) . '"><span class="screen-reader-text">' . esc_html__( 'Topic', 'bbpress' ) . '</span></span>';
|
|
}
|
|
|
|
return $columns;
|
|
}
|
|
|
|
/**
|
|
* Filter sample permalinks so that certain languages display properly.
|
|
*
|
|
* @since 2.0.0 bbPress (r3336)
|
|
*
|
|
* @param string $post_link Custom post type permalink
|
|
* @param object $_post Post data object
|
|
* @param bool $leavename Optional, defaults to false. Whether to keep post name or page name.
|
|
* @param bool $sample Optional, defaults to false. Is it a sample permalink.
|
|
*
|
|
* @return string The custom post type permalink
|
|
*/
|
|
function bbp_filter_sample_permalink( $post_link, $_post, $leavename = false, $sample = false ) {
|
|
|
|
// Bail if not on an admin page and not getting a sample permalink
|
|
if ( ! empty( $sample ) && is_admin() && bbp_is_custom_post_type() ) {
|
|
return urldecode( $post_link );
|
|
}
|
|
|
|
// Return post link
|
|
return $post_link;
|
|
}
|
|
|
|
/** Sub-Actions ***************************************************************/
|
|
|
|
/**
|
|
* Piggy back admin_init action
|
|
*
|
|
* @since 2.1.0 bbPress (r3766)
|
|
*/
|
|
function bbp_admin_init() {
|
|
do_action( 'bbp_admin_init' );
|
|
}
|
|
|
|
/**
|
|
* Piggy back admin_menu action
|
|
*
|
|
* @since 2.1.0 bbPress (r3766)
|
|
*/
|
|
function bbp_admin_menu() {
|
|
do_action( 'bbp_admin_menu' );
|
|
}
|
|
|
|
/**
|
|
* Piggy back admin_head action
|
|
*
|
|
* @since 2.1.0 bbPress (r3766)
|
|
*/
|
|
function bbp_admin_head() {
|
|
do_action( 'bbp_admin_head' );
|
|
}
|
|
|
|
/**
|
|
* Piggy back admin_notices action
|
|
*
|
|
* @since 2.1.0 bbPress (r3766)
|
|
*/
|
|
function bbp_admin_notices() {
|
|
do_action( 'bbp_admin_notices' );
|
|
}
|
|
|
|
/**
|
|
* Dedicated action to register bbPress importers
|
|
*
|
|
* @since 2.1.0 bbPress (r3766)
|
|
*/
|
|
function bbp_register_importers() {
|
|
do_action( 'bbp_register_importers' );
|
|
}
|
|
|
|
/**
|
|
* Dedicated action to register admin styles
|
|
*
|
|
* @since 2.6.0 bbPress (r6912)
|
|
*/
|
|
function bbp_register_admin_styles() {
|
|
|
|
/**
|
|
* Action used to register the admin styling
|
|
*
|
|
* @since 2.1.0
|
|
* @deprecated 2.6.0
|
|
*/
|
|
do_action( 'bbp_register_admin_style' );
|
|
|
|
/**
|
|
* Action used to register all admin styling
|
|
*
|
|
* @since 2.6.0
|
|
*/
|
|
do_action( 'bbp_register_admin_styles' );
|
|
}
|
|
|
|
/**
|
|
* Dedicated action to register admin scripts
|
|
*
|
|
* @since 2.6.0 bbPress (r6912)
|
|
*/
|
|
function bbp_register_admin_scripts() {
|
|
do_action( 'bbp_register_admin_scripts' );
|
|
}
|
|
|
|
/**
|
|
* Dedicated action to register admin settings
|
|
*
|
|
* @since 2.1.0 bbPress (r3766)
|
|
*/
|
|
function bbp_register_admin_settings() {
|
|
do_action( 'bbp_register_admin_settings' );
|
|
}
|
|
|
|
/**
|
|
* Dedicated action to output admin tools.php sections
|
|
*
|
|
* @since 2.6.0 bbPress (r6273)
|
|
*/
|
|
function bbp_admin_tool_box() {
|
|
do_action( 'bbp_admin_tool_box' );
|
|
}
|
|
|
|
/**
|
|
* Dedicated action to hook into the current screen
|
|
*
|
|
* @since 2.6.0 bbPress (r6185)
|
|
*
|
|
* @param WP_Screen $current_screen
|
|
*/
|
|
function bbp_current_screen( $current_screen = '' ) {
|
|
do_action( 'bbp_current_screen', $current_screen );
|
|
}
|