' . balanceTags( stripslashes( wp_filter_kses( $message ) ), true ) . ''; } /** * Returns the list of messages as a string. * An empty string is returned if there are no messages. * * @return string */ public static function render_messages() { $output = ''; if ( !empty( self::$messages ) ) { $output .= '
'; } return $output; } /** * Prints admin notices. */ public static function admin_notices() { global $groups_admin_messages; if ( !empty( $groups_admin_messages ) ) { foreach ( $groups_admin_messages as $msg ) { echo $msg; } } } /** * Use a context-sensitive menu item title. */ public static function admin_head() { global $submenu; if ( isset( $submenu['groups-admin'] ) ) { $submenu['groups-admin'][0][0] = _x( 'Groups', 'menu item title', 'groups' ); } } /** * Admin menu. */ public static function admin_menu() { include_once( GROUPS_ADMIN_LIB . '/groups-admin-groups.php'); include_once( GROUPS_ADMIN_LIB . '/groups-admin-capabilities.php'); include_once( GROUPS_ADMIN_LIB . '/groups-admin-options.php'); include_once( GROUPS_ADMIN_LIB . '/groups-admin-add-ons.php'); $pages = array(); // main $page = add_menu_page( _x( 'Groups', 'page-title', 'groups' ), 'Groups', // don't translate, reasons: a) Groups menu title consistency and b) http://core.trac.wordpress.org/ticket/18857 translation affects $screen->id GROUPS_ADMINISTER_GROUPS, 'groups-admin', apply_filters( 'groups_add_menu_page_function', 'groups_admin_groups' ), GROUPS_PLUGIN_URL . '/images/groups.png', self::MENU_POSITION ); $pages[] = $page; add_action( 'admin_print_styles-' . $page, array( __CLASS__, 'admin_print_styles' ) ); add_action( 'admin_print_scripts-' . $page, array( __CLASS__, 'admin_print_scripts' ) ); if ( isset( $_POST[GROUPS_ADMIN_OPTIONS_NONCE] ) && wp_verify_nonce( $_POST[GROUPS_ADMIN_OPTIONS_NONCE], 'admin' ) ) { $show_tree_view = !empty( $_POST[GROUPS_SHOW_TREE_VIEW] ); } else { $show_tree_view = Groups_Options::get_option( GROUPS_SHOW_TREE_VIEW, GROUPS_SHOW_TREE_VIEW_DEFAULT ); } if ( $show_tree_view ) { include_once( GROUPS_ADMIN_LIB . '/groups-admin-tree-view.php'); $page = add_submenu_page( 'groups-admin', __( 'Tree', 'groups' ), __( 'Tree', 'groups' ), GROUPS_ACCESS_GROUPS, 'groups-admin-tree-view', apply_filters( 'groups_add_submenu_page_function', 'groups_admin_tree_view' ) ); $pages[] = $page; add_action( 'admin_print_styles-' . $page, array( __CLASS__, 'admin_print_styles' ) ); add_action( 'admin_print_scripts-' . $page, array( __CLASS__, 'admin_print_scripts' ) ); } // capabilities $page = add_submenu_page( 'groups-admin', __( 'Groups Capabilities', 'groups' ), __( 'Capabilities', 'groups' ), GROUPS_ADMINISTER_GROUPS, 'groups-admin-capabilities', apply_filters( 'groups_add_submenu_page_function', 'groups_admin_capabilities' ) ); $pages[] = $page; add_action( 'admin_print_styles-' . $page, array( __CLASS__, 'admin_print_styles' ) ); add_action( 'admin_print_scripts-' . $page, array( __CLASS__, 'admin_print_scripts' ) ); // options $page = add_submenu_page( 'groups-admin', __( 'Groups options', 'groups' ), __( 'Options', 'groups' ), GROUPS_ADMINISTER_OPTIONS, 'groups-admin-options', apply_filters( 'groups_add_submenu_page_function', 'groups_admin_options' ) ); $pages[] = $page; add_action( 'admin_print_styles-' . $page, array( __CLASS__, 'admin_print_styles' ) ); add_action( 'admin_print_scripts-' . $page, array( __CLASS__, 'admin_print_scripts' ) ); // add-ons $page = add_submenu_page( 'groups-admin', __( 'Groups Add-Ons', 'groups' ), __( 'Add-Ons', 'groups' ), GROUPS_ACCESS_GROUPS, 'groups-admin-add-ons', apply_filters( 'groups_add_submenu_page_function', 'groups_admin_add_ons' ) ); $pages[] = $page; add_action( 'admin_print_styles-' . $page, array( __CLASS__, 'admin_print_styles' ) ); add_action( 'admin_print_scripts-' . $page, array( __CLASS__, 'admin_print_scripts' ) ); do_action( 'groups_admin_menu', $pages ); } /** * Network admin menu. */ public static function network_admin_menu() { include_once( GROUPS_ADMIN_LIB . '/groups-admin-options.php'); $pages = array(); // main $page = add_menu_page( __( 'Groups', 'groups' ), __( 'Groups', 'groups' ), GROUPS_ADMINISTER_GROUPS, 'groups-network-admin', apply_filters( 'groups_add_menu_page_function', 'groups_network_admin_options' ), GROUPS_PLUGIN_URL . '/images/groups.png' ); $pages[] = $page; add_action( 'admin_print_styles-' . $page, array( __CLASS__, 'admin_print_styles' ) ); add_action( 'admin_print_scripts-' . $page, array( __CLASS__, 'admin_print_scripts' ) ); do_action( 'groups_network_admin_menu', $pages ); } /** * Adds plugin links. * * @param array $links * @param array $links with additional links */ public static function plugin_action_links( $links ) { if ( current_user_can( GROUPS_ADMINISTER_OPTIONS ) ) { array_unshift( $links, '' . __( 'Options', 'groups' ) . '' ); } if ( current_user_can( GROUPS_ADMINISTER_GROUPS ) ) { array_unshift( $links, '' . __( 'Groups', 'groups' ) . '' ); } return $links; } /** * Prints a warning when data is deleted on deactivation. * * @param string $plugin_file * @param array $plugin_data * @param string $status */ public static function after_plugin_row( $plugin_file, $plugin_data, $status ) { if ( $plugin_file == plugin_basename( GROUPS_FILE ) ) { $delete_data = Groups_Options::get_option( 'groups_delete_data', false ); $delete_network_data = Groups_Options::get_option( 'groups_network_delete_data', false ); if ( ( is_plugin_active( $plugin_file ) && $delete_data && current_user_can( 'install_plugins' ) ) || ( is_plugin_active_for_network( $plugin_file ) && $delete_network_data && current_user_can( 'manage_network_plugins' ) ) ) { echo ''; echo ''; echo esc_html( __( 'Warning!', 'groups' ) ); echo ''; echo '
'; echo ''; echo esc_html( __( 'Groups is configured to delete its plugin data on deactivation.', 'groups' ) ); echo '
'; echo '