PluginProbe
wpForo Forum / 2.4.2
wpForo Forum v2.4.2
3.1.5 3.1.4 3.1.2 3.1.1 3.1.0 3.0.9 3.0.8 3.0.7 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.10 1.4.11 1.4.12 1.4.13 1.4.2 All 137 releases
wpforo / admin / index.php

index.php in wpForo Forum 2.4.2, at admin/index.php

251 lines 11.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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