setup_globals(); $this->includes(); $this->setup_actions(); } /** * Setup the admin hooks, actions and filters * * @since bbPress (r2646) * @access private * * @uses add_action() To add various actions * @uses add_filter() To add various filters */ private function setup_actions() { /** General Actions ***************************************************/ // Add menu item to settings menu add_action( 'bbp_admin_menu', array( $this, 'admin_menus' ) ); // Add some general styling to the admin area add_action( 'bbp_admin_head', array( $this, 'admin_head' ) ); // Add notice if not using a bbPress theme add_action( 'bbp_admin_notices', array( $this, 'activation_notice' ) ); // Add green admin style add_action( 'bbp_register_admin_style', array( $this, 'register_admin_style' ) ); // Add settings add_action( 'bbp_register_admin_settings', array( $this, 'register_admin_settings' ) ); // Add menu item to settings menu add_action( 'bbp_activation', array( $this, 'new_install' ) ); // Forums 'Right now' Dashboard widget add_action( 'wp_dashboard_setup', array( $this, 'dashboard_widget_right_now' ) ); /** Filters ***********************************************************/ // Add link to settings page add_filter( 'plugin_action_links', array( $this, 'add_settings_link' ), 10, 2 ); /** Network Admin *****************************************************/ // Add menu item to settings menu add_action( 'network_admin_menu', array( $this, 'network_admin_menus' ) ); /** Dependencies ******************************************************/ // Allow plugins to modify these actions do_action_ref_array( 'bbp_admin_loaded', array( &$this ) ); } /** * Include required files * * @since bbPress (r2646) * @access private */ private function includes() { require( $this->admin_dir . 'bbp-tools.php' ); require( $this->admin_dir . 'bbp-converter.php' ); require( $this->admin_dir . 'bbp-settings.php' ); require( $this->admin_dir . 'bbp-functions.php' ); require( $this->admin_dir . 'bbp-metaboxes.php' ); require( $this->admin_dir . 'bbp-forums.php' ); require( $this->admin_dir . 'bbp-topics.php' ); require( $this->admin_dir . 'bbp-replies.php' ); } /** * Admin globals * * @since bbPress (r2646) * @access private */ private function setup_globals() { $bbp = bbpress(); $this->admin_dir = trailingslashit( $bbp->plugin_dir . 'bbp-admin' ); // Admin url $this->admin_url = trailingslashit( $bbp->plugin_url . 'bbp-admin' ); // Admin url $this->images_url = trailingslashit( $this->admin_url . 'images' ); // Admin images URL $this->styles_url = trailingslashit( $this->admin_url . 'styles' ); // Admin styles URL } /** * Add the admin menus * * @since bbPress (r2646) * * @uses add_management_page() To add the Recount page in Tools section * @uses add_options_page() To add the Forums settings page in Settings * section */ public function admin_menus() { $hooks = array(); // These are later removed in admin_head if ( bbp_current_user_can_see( 'bbp_tools_page' ) ) { if ( bbp_current_user_can_see( 'bbp_tools_repair_page' ) ) { $hooks[] = add_management_page( __( 'Repair Forums', 'bbpress' ), __( 'Forum Repair', 'bbpress' ), $this->minimum_capability, 'bbp-repair', 'bbp_admin_repair' ); } if ( bbp_current_user_can_see( 'bbp_tools_import_page' ) ) { $hooks[] = add_management_page( __( 'Import Forums', 'bbpress' ), __( 'Forum Import', 'bbpress' ), $this->minimum_capability, 'bbp-converter', 'bbp_converter_settings' ); } if ( bbp_current_user_can_see( 'bbp_tools_reset_page' ) ) { $hooks[] = add_management_page( __( 'Reset Forums', 'bbpress' ), __( 'Forum Reset', 'bbpress' ), $this->minimum_capability, 'bbp-reset', 'bbp_admin_reset' ); } // Fudge the highlighted subnav item when on a bbPress admin page foreach( $hooks as $hook ) { add_action( "admin_head-$hook", 'bbp_tools_modify_menu_highlight' ); } // Forums Tools Root add_management_page( __( 'Forums', 'bbpress' ), __( 'Forums', 'bbpress' ), $this->minimum_capability, 'bbp-repair', 'bbp_admin_repair' ); } // Are settings enabled? if ( bbp_current_user_can_see( 'bbp_settings_page' ) ) { add_options_page( __( 'Forums', 'bbpress' ), __( 'Forums', 'bbpress' ), $this->minimum_capability, 'bbpress', 'bbp_admin_settings' ); } } /** * Add the network admin menus * * @since bbPress (r3689) * @uses add_submenu_page() To add the Update Forums page in Updates */ public function network_admin_menus() { add_submenu_page( 'upgrade.php', __( 'Update Forums', 'bbpress' ), __( 'Update Forums', 'bbpress' ), 'manage_network', 'bbpress-update', array( $this, 'network_update_screen' ) ); } /** * If this is a new installation, create some initial forum content. * * @since bbPress (r3767) * @return type */ public static function new_install() { if ( !bbp_is_install() ) return; bbp_create_initial_content(); } /** * Register the settings * * @since bbPress (r2737) * * @uses add_settings_section() To add our own settings section * @uses add_settings_field() To add various settings fields * @uses register_setting() To register various settings * @todo Put fields into multidimensional array */ public static function register_admin_settings() { // Bail if no sections available if ( ! $sections = bbp_admin_get_settings_sections() ) return false; // Loop through sections foreach ( $sections as $section_id => $section ) { // Only proceed if current user can see this section if ( ! bbp_current_user_can_see( $section_id ) ) continue; // Only add section and fields if section has fields if ( $fields = bbp_admin_get_settings_fields_for_section( $section_id ) ) { // Add the section add_settings_section( $section_id, $section['title'], $section['callback'], $section['page'] ); // Loop through fields for this section foreach ( $fields as $field_id => $field ) { // Add the field add_settings_field( $field_id, $field['title'], $field['callback'], $section['page'], $section_id, $field['args'] ); // Register the setting register_setting( $section['page'], $field_id, $field['sanitize_callback'] ); } } } } /** * Register the importers * * @since bbPress (r2737) * * @uses apply_filters() Calls 'bbp_importer_path' filter to allow plugins * to customize the importer script locations. */ public function register_importers() { // Leave if we're not in the import section if ( !defined( 'WP_LOAD_IMPORTERS' ) ) return; // Load Importer API require_once( ABSPATH . 'wp-admin/includes/import.php' ); // Load our importers $importers = apply_filters( 'bbp_importers', array( 'bbpress' ) ); // Loop through included importers foreach ( $importers as $importer ) { // Allow custom importer directory $import_dir = apply_filters( 'bbp_importer_path', $this->admin_dir . 'importers', $importer ); // Compile the importer path $import_file = trailingslashit( $import_dir ) . $importer . '.php'; // If the file exists, include it if ( file_exists( $import_file ) ) { require( $import_file ); } } } /** * Admin area activation notice * * Shows a nag message in admin area about the theme not supporting bbPress * * @since bbPress (r2743) * * @uses current_user_can() To check notice should be displayed. */ public function activation_notice() { // @todo - something fun } /** * Add Settings link to plugins area * * @since bbPress (r2737) * * @param array $links Links array in which we would prepend our link * @param string $file Current plugin basename * @return array Processed links */ public static function add_settings_link( $links, $file ) { if ( plugin_basename( bbpress()->file ) == $file ) { $settings_link = '' . __( 'Settings', 'bbpress' ) . ''; array_unshift( $links, $settings_link ); } return $links; } /** * Add the 'Right now in Forums' dashboard widget * * @since bbPress (r2770) * * @uses wp_add_dashboard_widget() To add the dashboard widget */ public static function dashboard_widget_right_now() { wp_add_dashboard_widget( 'bbp-dashboard-right-now', __( 'Right Now in Forums', 'bbpress' ), 'bbp_dashboard_widget_right_now' ); } /** * Add some general styling to the admin area * * @since bbPress (r2464) * * @uses bbp_get_forum_post_type() To get the forum post type * @uses bbp_get_topic_post_type() To get the topic post type * @uses bbp_get_reply_post_type() To get the reply post type * @uses sanitize_html_class() To sanitize the classes */ public function admin_head() { // Remove the individual recount and converter menus. // They are grouped together by h2 tabs remove_submenu_page( 'tools.php', 'bbp-repair' ); remove_submenu_page( 'tools.php', 'bbp-converter' ); remove_submenu_page( 'tools.php', 'bbp-reset' ); // Icons for top level admin menus $version = bbp_get_version(); $menu_icon_url = $this->images_url . 'menu.png?ver=' . $version; $icon32_url = $this->images_url . 'icons32.png?ver=' . $version; $menu_icon_url_2x = $this->images_url . 'menu-2x.png?ver=' . $version; $icon32_url_2x = $this->images_url . 'icons32-2x.png?ver=' . $version; // Top level menu classes $forum_class = sanitize_html_class( bbp_get_forum_post_type() ); $topic_class = sanitize_html_class( bbp_get_topic_post_type() ); $reply_class = sanitize_html_class( bbp_get_reply_post_type() ); ?> content_depth ) $css_file = $this->styles_url . 'admin.css'; // Custom wp-content dir is 1 level away elseif ( 1 === $this->content_depth ) $css_file = $this->styles_url . 'admin-1.css'; // Custom wp-content dir is 1 level away elseif ( 2 === $this->content_depth ) $css_file = $this->styles_url . 'admin-2.css'; // Load the admin CSS styling wp_admin_css_color( 'bbpress', __( 'Green', 'bbpress' ), $css_file, array( '#222222', '#006600', '#deece1', '#6eb469' ) ); } /** * Update all bbPress forums across all sites * * @since bbPress (r3689) * * @global WPDB $wpdb * @uses get_blog_option() * @uses wp_remote_get() */ public static function update_screen() { // Get action $action = isset( $_GET['action'] ) ? $_GET['action'] : ''; ?>


get_results( "SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' AND spam = '0' AND deleted = '0' AND archived = '0' ORDER BY registered DESC LIMIT {$n}, 5", ARRAY_A ); // No blogs so all done! if ( empty( $blogs ) ) : ?>

admin = new BBP_Admin(); bbpress()->admin->converter = new BBP_Converter(); }