| 1 |
<?php |
| 2 |
|
| 3 |
// Exit if accessed directly |
| 4 |
if( ! defined( 'ABSPATH' ) ) exit; |
| 5 |
|
| 6 |
add_action( 'admin_menu', function() { |
| 7 |
if( is_wpforo_multiboard() ){ |
| 8 |
wpforo_admin_menu_multiboard(); |
| 9 |
}else{ |
| 10 |
wpforo_admin_menu(); |
| 11 |
} |
| 12 |
}, 39 ); |
| 13 |
|
| 14 |
function wpforo_admin_menu(){ |
| 15 |
if( wpforo_current_user_is( 'admin' ) || WPF()->usergroup->can( 'mf' ) || WPF()->usergroup->can( 'ms' ) || WPF()->usergroup->can( 'vm' ) || WPF()->usergroup->can( 'mp' ) || WPF()->usergroup->can( 'aum' ) || WPF()->usergroup->can( 'vmg' ) || WPF()->usergroup->can( 'mth' ) ) { |
| 16 |
$menu_position = apply_filters( 'wpforo_admin_menu_position', 23 ); |
| 17 |
$boards = WPF()->board->get_boards( [ 'status' => true ] ); |
| 18 |
$board = current( $boards ); |
| 19 |
WPF()->change_board( $board['boardid'] ); |
| 20 |
|
| 21 |
if( wpforo_setting( 'antispam', 'spam_file_scanner' ) ) WPF()->moderation->spam_attachment(); |
| 22 |
|
| 23 |
$all_count = 0; |
| 24 |
$mod_count = WPF()->post->unapproved_count(); |
| 25 |
$attention_count = WPF()->member->get_count( [ 'p.status' => ['banned','inactive'] ] ); |
| 26 |
// $all_count += $mod_count + $attention_count; |
| 27 |
$all_count += $mod_count; |
| 28 |
$mod_count = $mod_count ? ' <span class="awaiting-mod count-1"><span class="pending-count">' . $mod_count . '</span></span> ' : ''; |
| 29 |
$all_count = $all_count ? ' <span class="awaiting-mod count-1"><span class="pending-count">' . $all_count . '</span></span> ' : ''; |
| 30 |
$parent_slug = 'wpforo-overview'; |
| 31 |
$after_members_menu_title = $attention_count ? ' <span class="awaiting-mod count-1" title="'. __( 'Inactive and banned', 'wpforo' ) .'"><span class="pending-count" style="color:#ffffff;">' . $attention_count . '</span></span> ' : ''; |
| 32 |
add_menu_page( |
| 33 |
'wpForo', |
| 34 |
'wpForo ' . $all_count, |
| 35 |
'read', |
| 36 |
$parent_slug, |
| 37 |
function() { |
| 38 |
require( WPFORO_DIR . '/admin/pages/overview.php' ); |
| 39 |
require WPFORO_DIR . '/admin/pages/dashboard.php'; |
| 40 |
}, |
| 41 |
'dashicons-format-chat', |
| 42 |
$menu_position |
| 43 |
); |
| 44 |
add_submenu_page( |
| 45 |
$parent_slug, |
| 46 |
__( 'Overview', 'wpforo' ), |
| 47 |
__( 'Overview', 'wpforo' ), |
| 48 |
'read', |
| 49 |
$parent_slug |
| 50 |
); |
| 51 |
|
| 52 |
if( wpforo_current_user_is( 'admin' ) || WPF()->usergroup->can( 'mf' ) || WPF()->usergroup->can( 'ms' ) || WPF()->usergroup->can( 'mt' ) || WPF()->usergroup->can( 'mp' ) || WPF()->usergroup->can( 'mth' ) || WPF()->usergroup->can( 'aum' ) ) { |
| 53 |
if( WPF()->usergroup->can( 'mf' ) || wpforo_current_user_is( 'admin' ) ) { |
| 54 |
add_submenu_page( $parent_slug, __( 'Forums', 'wpforo' ), __( 'Forums', 'wpforo' ), 'read', wpforo_prefix_slug( 'forums' ), function() { |
| 55 |
require( WPFORO_DIR . '/admin/pages/forum.php' ); |
| 56 |
} ); |
| 57 |
} |
| 58 |
if( WPF()->usergroup->can( 'ms' ) || wpforo_current_user_is( 'admin' ) ) { |
| 59 |
add_submenu_page( $parent_slug, __( 'Settings', 'wpforo' ), __( 'Settings', 'wpforo' ), 'read', wpforo_prefix_slug( 'settings' ), function() { |
| 60 |
require( WPFORO_DIR . '/admin/pages/settings.php' ); |
| 61 |
} ); |
| 62 |
} |
| 63 |
if( WPF()->usergroup->can( 'aum' ) || wpforo_current_user_is( 'admin' ) ) { |
| 64 |
add_submenu_page( $parent_slug, __( 'Moderation', 'wpforo' ), __( 'Moderation', 'wpforo' ) . $mod_count, 'read', wpforo_prefix_slug( 'moderations' ), function() { |
| 65 |
require( WPFORO_DIR . '/admin/pages/moderation.php' ); |
| 66 |
} ); |
| 67 |
} |
| 68 |
if( WPF()->usergroup->can( 'mp' ) || wpforo_current_user_is( 'admin' ) ) { |
| 69 |
add_submenu_page( $parent_slug, __( 'Phrases', 'wpforo' ), __( 'Phrases', 'wpforo' ), 'read', wpforo_prefix_slug( 'phrases' ), function() { |
| 70 |
require( WPFORO_DIR . '/admin/pages/phrase.php' ); |
| 71 |
} ); |
| 72 |
} |
| 73 |
if( WPF()->usergroup->can( 'mt' ) || wpforo_current_user_is( 'admin' ) ) { |
| 74 |
add_submenu_page( $parent_slug, __( 'Tools', 'wpforo' ), __( 'Tools', 'wpforo' ), 'read', wpforo_prefix_slug( 'tools' ), function() { |
| 75 |
require( WPFORO_DIR . '/admin/pages/tools.php' ); |
| 76 |
} ); |
| 77 |
} |
| 78 |
|
| 79 |
do_action( 'wpforo_admin_menu', $parent_slug, $board ); |
| 80 |
} |
| 81 |
|
| 82 |
if( WPF()->usergroup->can( 'mf' ) || wpforo_current_user_is( 'admin' ) ) { |
| 83 |
add_submenu_page( $parent_slug, __( 'Boards', 'wpforo' ), __( 'Boards', 'wpforo' ), 'read', 'wpforo-boards', function () { |
| 84 |
require( WPFORO_DIR . '/admin/pages/board.php' ); |
| 85 |
} ); |
| 86 |
} |
| 87 |
if( WPF()->usergroup->can( 'ms' ) || wpforo_current_user_is( 'admin' ) ) { |
| 88 |
add_submenu_page( $parent_slug, __( 'Accesses', 'wpforo' ), __( 'Accesses', 'wpforo' ), 'read', 'wpforo-accesses', function() { |
| 89 |
require( WPFORO_DIR . '/admin/pages/accesses.php' ); |
| 90 |
} ); |
| 91 |
} |
| 92 |
add_submenu_page( $parent_slug, __( 'Usergroups', 'wpforo' ), __( 'Usergroups', 'wpforo' ), 'read', 'wpforo-usergroups', function() { |
| 93 |
require( WPFORO_DIR . '/admin/pages/usergroup.php' ); |
| 94 |
} ); |
| 95 |
add_submenu_page( $parent_slug, __( 'Members', 'wpforo' ), __( 'Members', 'wpforo' ) . $after_members_menu_title, 'read', 'wpforo-members', function() { |
| 96 |
require( WPFORO_DIR . '/admin/pages/member.php' ); |
| 97 |
} ); |
| 98 |
if( WPF()->usergroup->can( 'mth' ) || wpforo_current_user_is( 'admin' ) ) { |
| 99 |
add_submenu_page( $parent_slug, __( 'Themes', 'wpforo' ), __( 'Themes', 'wpforo' ), 'read', wpforo_prefix_slug( 'themes' ), function() { |
| 100 |
require( WPFORO_DIR . '/admin/pages/themes.php' ); |
| 101 |
} ); |
| 102 |
} |
| 103 |
if( wpforo_current_user_is( 'admin' ) ) { |
| 104 |
add_submenu_page( $parent_slug, __( 'Addons', 'wpforo' ), __( 'Addons', 'wpforo' ), 'read', wpforo_prefix_slug( 'addons' ), function() { |
| 105 |
require( WPFORO_DIR . '/admin/pages/addons.php' ); |
| 106 |
} ); |
| 107 |
} |
| 108 |
|
| 109 |
do_action( 'wpforo_admin_base_menu', $parent_slug ); |
| 110 |
} |
| 111 |
} |
| 112 |
|
| 113 |
function wpforo_admin_menu_multiboard(){ |
| 114 |
if( wpforo_current_user_is( 'admin' ) || WPF()->usergroup->can( 'mf' ) || WPF()->usergroup->can( 'ms' ) || WPF()->usergroup->can( 'vm' ) || WPF()->usergroup->can( 'mp' ) || WPF()->usergroup->can( 'aum' ) || WPF()->usergroup->can( 'vmg' ) || WPF()->usergroup->can( 'mth' ) ) { |
| 115 |
$menu_position = apply_filters( 'wpforo_admin_menu_position', 23 ); |
| 116 |
$parent_slug = 'wpforo-overview'; |
| 117 |
$attention_count = WPF()->member->get_count( [ 'p.status' => ['banned', 'inactive'] ] ); |
| 118 |
$after_members_menu_title = $attention_count ? ' <span class="awaiting-mod count-1" title="'. __( 'Inactive and Banned', 'wpforo' ) .'"><span class="pending-count" style="color:#ffffff;">' . $attention_count . '</span></span> ' : ''; |
| 119 |
add_menu_page( |
| 120 |
'wpForo', |
| 121 |
// 'wpForo ' . $after_members_menu_title, |
| 122 |
'wpForo', |
| 123 |
'read', |
| 124 |
$parent_slug, |
| 125 |
function() { |
| 126 |
require( WPFORO_DIR . '/admin/pages/overview.php' ); |
| 127 |
}, |
| 128 |
'dashicons-format-chat', |
| 129 |
$menu_position |
| 130 |
); |
| 131 |
add_submenu_page( |
| 132 |
$parent_slug, |
| 133 |
__( 'Overview', 'wpforo' ), |
| 134 |
__( 'Overview', 'wpforo' ), |
| 135 |
'read', |
| 136 |
$parent_slug |
| 137 |
); |
| 138 |
if( WPF()->usergroup->can( 'mf' ) || wpforo_current_user_is( 'admin' ) ) { |
| 139 |
add_submenu_page( $parent_slug, __( 'Boards', 'wpforo' ), __( 'Boards', 'wpforo' ), 'read', 'wpforo-boards', function() { |
| 140 |
require( WPFORO_DIR . '/admin/pages/board.php' ); |
| 141 |
} ); |
| 142 |
} |
| 143 |
if( WPF()->usergroup->can( 'ms' ) || wpforo_current_user_is( 'admin' ) ) { |
| 144 |
add_submenu_page( $parent_slug, __( 'Accesses', 'wpforo' ), __( 'Accesses', 'wpforo' ), 'read', 'wpforo-accesses', function() { |
| 145 |
require( WPFORO_DIR . '/admin/pages/accesses.php' ); |
| 146 |
} ); |
| 147 |
} |
| 148 |
add_submenu_page( $parent_slug, __( 'Usergroups', 'wpforo' ), __( 'Usergroups', 'wpforo' ), 'read', 'wpforo-usergroups', function() { |
| 149 |
require( WPFORO_DIR . '/admin/pages/usergroup.php' ); |
| 150 |
} ); |
| 151 |
add_submenu_page( $parent_slug, __( 'Members', 'wpforo' ), __( 'Members', 'wpforo' ) . $after_members_menu_title, 'read', 'wpforo-members', function() { |
| 152 |
require( WPFORO_DIR . '/admin/pages/member.php' ); |
| 153 |
} ); |
| 154 |
if( WPF()->usergroup->can( 'ms' ) || wpforo_current_user_is( 'admin' ) ) { |
| 155 |
add_submenu_page( $parent_slug, __( 'Settings', 'wpforo' ), __( 'Settings', 'wpforo' ), 'read', 'wpforo-base-settings', function() { |
| 156 |
require( WPFORO_DIR . '/admin/pages/settings.php' ); |
| 157 |
} ); |
| 158 |
} |
| 159 |
if( WPF()->usergroup->can( 'mth' ) || wpforo_current_user_is( 'admin' ) ) { |
| 160 |
add_submenu_page( $parent_slug, __( 'Themes', 'wpforo' ), __( 'Themes', 'wpforo' ), 'read', wpforo_prefix_slug( 'themes' ), function() { |
| 161 |
require( WPFORO_DIR . '/admin/pages/themes.php' ); |
| 162 |
} ); |
| 163 |
} |
| 164 |
if( wpforo_current_user_is( 'admin' ) ) { |
| 165 |
add_submenu_page( $parent_slug, __( 'Addons', 'wpforo' ), __( 'Addons', 'wpforo' ), 'read', wpforo_prefix_slug( 'addons' ), function() { |
| 166 |
require( WPFORO_DIR . '/admin/pages/addons.php' ); |
| 167 |
} ); |
| 168 |
} |
| 169 |
|
| 170 |
do_action( 'wpforo_admin_base_menu', $parent_slug ); |
| 171 |
|
| 172 |
$boards = WPF()->board->get_boards( [ 'status' => true ] ); |
| 173 |
foreach( $boards as $board ) { |
| 174 |
WPF()->change_board( [ 'boardid' => $board['boardid'] ] ); |
| 175 |
|
| 176 |
if( wpforo_setting( 'antispam', 'spam_file_scanner' ) ) WPF()->moderation->spam_attachment(); |
| 177 |
|
| 178 |
$all_count = 0; |
| 179 |
$mod_count = WPF()->post->unapproved_count(); |
| 180 |
$all_count += $mod_count; |
| 181 |
$mod_count = $mod_count ? ' <span class="awaiting-mod count-1"><span class="pending-count">' . $mod_count . '</span></span> ' : ''; |
| 182 |
$all_count = $all_count ? ' <span class="awaiting-mod count-1"><span class="pending-count">' . $all_count . '</span></span> ' : ''; |
| 183 |
|
| 184 |
if( wpforo_current_user_is( 'admin' ) || WPF()->usergroup->can( 'mf' ) || WPF()->usergroup->can( 'ms' ) || WPF()->usergroup->can( 'mt' ) || WPF()->usergroup->can( 'mp' ) || WPF()->usergroup->can( 'mth' ) || WPF()->usergroup->can( 'aum' ) ) { |
| 185 |
$parent_slug = wpforo_prefix_slug( 'dashboard' ); |
| 186 |
add_menu_page( |
| 187 |
__( 'Dashboard', 'wpforo' ), |
| 188 |
$board['title'] . $all_count, |
| 189 |
'read', |
| 190 |
$parent_slug, |
| 191 |
function() { |
| 192 |
require( WPFORO_DIR . '/admin/pages/dashboard.php' ); |
| 193 |
}, |
| 194 |
'dashicons-format-chat', |
| 195 |
$menu_position |
| 196 |
); |
| 197 |
add_submenu_page( |
| 198 |
$parent_slug, |
| 199 |
__( 'Dashboard', 'wpforo' ), |
| 200 |
__( 'Dashboard', 'wpforo' ), |
| 201 |
'read', |
| 202 |
$parent_slug |
| 203 |
); |
| 204 |
if( WPF()->usergroup->can( 'mf' ) || wpforo_current_user_is( 'admin' ) ) { |
| 205 |
add_submenu_page( $parent_slug, __( 'Forums', 'wpforo' ), __( 'Forums', 'wpforo' ), 'read', wpforo_prefix_slug( 'forums' ), function() { |
| 206 |
require( WPFORO_DIR . '/admin/pages/forum.php' ); |
| 207 |
} ); |
| 208 |
} |
| 209 |
if( WPF()->usergroup->can( 'ms' ) || wpforo_current_user_is( 'admin' ) ) { |
| 210 |
add_submenu_page( $parent_slug, __( 'Settings', 'wpforo' ), __( 'Settings', 'wpforo' ), 'read', wpforo_prefix_slug( 'settings' ), function() { |
| 211 |
require( WPFORO_DIR . '/admin/pages/settings.php' ); |
| 212 |
} ); |
| 213 |
} |
| 214 |
if( WPF()->usergroup->can( 'aum' ) || wpforo_current_user_is( 'admin' ) ) { |
| 215 |
add_submenu_page( $parent_slug, __( 'Moderation', 'wpforo' ), __( 'Moderation', 'wpforo' ) . $mod_count, 'read', wpforo_prefix_slug( 'moderations' ), function() { |
| 216 |
require( WPFORO_DIR . '/admin/pages/moderation.php' ); |
| 217 |
} ); |
| 218 |
} |
| 219 |
if( WPF()->usergroup->can( 'mp' ) || wpforo_current_user_is( 'admin' ) ) { |
| 220 |
add_submenu_page( $parent_slug, __( 'Phrases', 'wpforo' ), __( 'Phrases', 'wpforo' ), 'read', wpforo_prefix_slug( 'phrases' ), function() { |
| 221 |
require( WPFORO_DIR . '/admin/pages/phrase.php' ); |
| 222 |
} ); |
| 223 |
} |
| 224 |
if( WPF()->usergroup->can( 'mt' ) || wpforo_current_user_is( 'admin' ) ) { |
| 225 |
add_submenu_page( $parent_slug, __( 'Tools', 'wpforo' ), __( 'Tools', 'wpforo' ), 'read', wpforo_prefix_slug( 'tools' ), function() { |
| 226 |
require( WPFORO_DIR . '/admin/pages/tools.php' ); |
| 227 |
} ); |
| 228 |
} |
| 229 |
|
| 230 |
do_action( 'wpforo_admin_menu', $parent_slug, $board ); |
| 231 |
} |
| 232 |
} |
| 233 |
} |
| 234 |
} |
| 235 |
|
| 236 |
add_action( 'admin_footer', function() { |
| 237 |
if( ! wpforo_get_option( 'deactivation_dialog_never_show', false, false ) && ( strpos( wpforo_get_request_uri(), '/plugins.php' ) !== false ) ) { |
| 238 |
require( WPFORO_DIR . '/admin/includes/deactivation-dialog.php' ); |
| 239 |
} |
| 240 |
} ); |
| 241 |
|
| 242 |
add_action( 'admin_footer', function() { |
| 243 |
$display = ( apply_filters( 'wpforo_admin_loading', false ) ) ? 'block' : 'none'; |
| 244 |
echo '<div id="wpf-admin-loading-extrawrap" style="display: ' . $display . '"> |
| 245 |
<div class="wpf-admin-loading-wrap"> |
| 246 |
<div class="wpf-admin-loading-ico dashicons dashicons-update"></div> |
| 247 |
<div class="wpf-admin-loading-txt">' . __( 'don\'t stop or close browser', 'wpforo' ) . '</div> |
| 248 |
</div> |
| 249 |
</div>'; |
| 250 |
} ); |
| 251 |
|