PluginProbe
wpForo Forum / 3.1.2
wpForo Forum v3.1.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 3.1.2, at admin/index.php

264 lines 12.4 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( 'mai' ) || 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( 'mai' ) || wpforo_current_user_is( 'admin' ) ) {
64 add_submenu_page( $parent_slug, __( 'AI Features', 'wpforo' ), __( 'AI Features', 'wpforo' ), 'read', 'wpforo-ai', function() {
65 require( WPFORO_DIR . '/admin/pages/ai-features.php' );
66 } );
67 }
68 if( WPF()->usergroup->can( 'aum' ) || wpforo_current_user_is( 'admin' ) ) {
69 add_submenu_page( $parent_slug, __( 'Moderation', 'wpforo' ), __( 'Moderation', 'wpforo' ) . $mod_count, 'read', wpforo_prefix_slug( 'moderations' ), function() {
70 require( WPFORO_DIR . '/admin/pages/moderation.php' );
71 } );
72 }
73 if( WPF()->usergroup->can( 'mp' ) || wpforo_current_user_is( 'admin' ) ) {
74 add_submenu_page( $parent_slug, __( 'Phrases', 'wpforo' ), __( 'Phrases', 'wpforo' ), 'read', wpforo_prefix_slug( 'phrases' ), function() {
75 require( WPFORO_DIR . '/admin/pages/phrase.php' );
76 } );
77 }
78 if( WPF()->usergroup->can( 'mt' ) || wpforo_current_user_is( 'admin' ) ) {
79 add_submenu_page( $parent_slug, __( 'Tools', 'wpforo' ), __( 'Tools', 'wpforo' ), 'read', wpforo_prefix_slug( 'tools' ), function() {
80 require( WPFORO_DIR . '/admin/pages/tools.php' );
81 } );
82 }
83
84 do_action( 'wpforo_admin_menu', $parent_slug, $board );
85 }
86
87 if( WPF()->usergroup->can( 'mf' ) || wpforo_current_user_is( 'admin' ) ) {
88 add_submenu_page( $parent_slug, __( 'Boards', 'wpforo' ), __( 'Boards', 'wpforo' ), 'read', 'wpforo-boards', function () {
89 require( WPFORO_DIR . '/admin/pages/board.php' );
90 } );
91 }
92 if( WPF()->usergroup->can( 'ms' ) || wpforo_current_user_is( 'admin' ) ) {
93 add_submenu_page( $parent_slug, __( 'Accesses', 'wpforo' ), __( 'Accesses', 'wpforo' ), 'read', 'wpforo-accesses', function() {
94 require( WPFORO_DIR . '/admin/pages/accesses.php' );
95 } );
96 }
97 add_submenu_page( $parent_slug, __( 'Usergroups', 'wpforo' ), __( 'Usergroups', 'wpforo' ), 'read', 'wpforo-usergroups', function() {
98 require( WPFORO_DIR . '/admin/pages/usergroup.php' );
99 } );
100 add_submenu_page( $parent_slug, __( 'Members', 'wpforo' ), __( 'Members', 'wpforo' ) . $after_members_menu_title, 'read', 'wpforo-members', function() {
101 require( WPFORO_DIR . '/admin/pages/member.php' );
102 } );
103 if( WPF()->usergroup->can( 'mth' ) || wpforo_current_user_is( 'admin' ) ) {
104 add_submenu_page( $parent_slug, __( 'Themes', 'wpforo' ), __( 'Themes', 'wpforo' ), 'read', wpforo_prefix_slug( 'themes' ), function() {
105 require( WPFORO_DIR . '/admin/pages/themes.php' );
106 } );
107 }
108 if( wpforo_current_user_is( 'admin' ) ) {
109 add_submenu_page( $parent_slug, __( 'Addons', 'wpforo' ), __( 'Addons', 'wpforo' ), 'read', wpforo_prefix_slug( 'addons' ), function() {
110 require( WPFORO_DIR . '/admin/pages/addons.php' );
111 } );
112 }
113
114 do_action( 'wpforo_admin_base_menu', $parent_slug );
115 }
116 }
117
118 function wpforo_admin_menu_multiboard(){
119 if( wpforo_current_user_is( 'admin' ) || WPF()->usergroup->can( 'mf' ) || WPF()->usergroup->can( 'ms' ) || WPF()->usergroup->can( 'mai' ) || WPF()->usergroup->can( 'vm' ) || WPF()->usergroup->can( 'mp' ) || WPF()->usergroup->can( 'aum' ) || WPF()->usergroup->can( 'vmg' ) || WPF()->usergroup->can( 'mth' ) ) {
120 $menu_position = apply_filters( 'wpforo_admin_menu_position', 23 );
121 $parent_slug = 'wpforo-overview';
122 $attention_count = WPF()->member->get_count( [ 'p.status' => ['banned', 'inactive'] ] );
123 $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> ' : '';
124 add_menu_page(
125 'wpForo',
126 // 'wpForo ' . $after_members_menu_title,
127 'wpForo',
128 'read',
129 $parent_slug,
130 function() {
131 require( WPFORO_DIR . '/admin/pages/overview.php' );
132 },
133 'dashicons-format-chat',
134 $menu_position
135 );
136 add_submenu_page(
137 $parent_slug,
138 __( 'Overview', 'wpforo' ),
139 __( 'Overview', 'wpforo' ),
140 'read',
141 $parent_slug
142 );
143 if( WPF()->usergroup->can( 'mf' ) || wpforo_current_user_is( 'admin' ) ) {
144 add_submenu_page( $parent_slug, __( 'Boards', 'wpforo' ), __( 'Boards', 'wpforo' ), 'read', 'wpforo-boards', function() {
145 require( WPFORO_DIR . '/admin/pages/board.php' );
146 } );
147 }
148 if( WPF()->usergroup->can( 'ms' ) || wpforo_current_user_is( 'admin' ) ) {
149 add_submenu_page( $parent_slug, __( 'Accesses', 'wpforo' ), __( 'Accesses', 'wpforo' ), 'read', 'wpforo-accesses', function() {
150 require( WPFORO_DIR . '/admin/pages/accesses.php' );
151 } );
152 }
153 add_submenu_page( $parent_slug, __( 'Usergroups', 'wpforo' ), __( 'Usergroups', 'wpforo' ), 'read', 'wpforo-usergroups', function() {
154 require( WPFORO_DIR . '/admin/pages/usergroup.php' );
155 } );
156 add_submenu_page( $parent_slug, __( 'Members', 'wpforo' ), __( 'Members', 'wpforo' ) . $after_members_menu_title, 'read', 'wpforo-members', function() {
157 require( WPFORO_DIR . '/admin/pages/member.php' );
158 } );
159 if( WPF()->usergroup->can( 'ms' ) || wpforo_current_user_is( 'admin' ) ) {
160 add_submenu_page( $parent_slug, __( 'Settings', 'wpforo' ), __( 'Settings', 'wpforo' ), 'read', 'wpforo-base-settings', function() {
161 require( WPFORO_DIR . '/admin/pages/settings.php' );
162 } );
163 }
164 if( WPF()->usergroup->can( 'mai' ) || wpforo_current_user_is( 'admin' ) ) {
165 add_submenu_page( $parent_slug, __( 'AI Features', 'wpforo' ), __( 'AI Features', 'wpforo' ), 'read', 'wpforo-ai', function() {
166 require( WPFORO_DIR . '/admin/pages/ai-features.php' );
167 } );
168 }
169 if( WPF()->usergroup->can( 'mth' ) || wpforo_current_user_is( 'admin' ) ) {
170 add_submenu_page( $parent_slug, __( 'Themes', 'wpforo' ), __( 'Themes', 'wpforo' ), 'read', wpforo_prefix_slug( 'themes' ), function() {
171 require( WPFORO_DIR . '/admin/pages/themes.php' );
172 } );
173 }
174 if( wpforo_current_user_is( 'admin' ) ) {
175 add_submenu_page( $parent_slug, __( 'Addons', 'wpforo' ), __( 'Addons', 'wpforo' ), 'read', wpforo_prefix_slug( 'addons' ), function() {
176 require( WPFORO_DIR . '/admin/pages/addons.php' );
177 } );
178 }
179
180 do_action( 'wpforo_admin_base_menu', $parent_slug );
181
182 $boards = WPF()->board->get_boards( [ 'status' => true ] );
183 foreach( $boards as $board ) {
184 WPF()->change_board( [ 'boardid' => $board['boardid'] ] );
185
186 if( wpforo_setting( 'antispam', 'spam_file_scanner' ) ) WPF()->moderation->spam_attachment();
187
188 $all_count = 0;
189 $mod_count = WPF()->post->unapproved_count();
190 $all_count += $mod_count;
191 $mod_count = $mod_count ? ' <span class="awaiting-mod count-1"><span class="pending-count">' . $mod_count . '</span></span> ' : '';
192 $all_count = $all_count ? ' <span class="awaiting-mod count-1"><span class="pending-count">' . $all_count . '</span></span> ' : '';
193
194 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' ) ) {
195 $parent_slug = wpforo_prefix_slug( 'dashboard' );
196 add_menu_page(
197 __( 'Dashboard', 'wpforo' ),
198 $board['title'] . $all_count,
199 'read',
200 $parent_slug,
201 function() {
202 require( WPFORO_DIR . '/admin/pages/dashboard.php' );
203 },
204 'dashicons-format-chat',
205 $menu_position
206 );
207 add_submenu_page(
208 $parent_slug,
209 __( 'Dashboard', 'wpforo' ),
210 __( 'Dashboard', 'wpforo' ),
211 'read',
212 $parent_slug
213 );
214 if( WPF()->usergroup->can( 'mf' ) || wpforo_current_user_is( 'admin' ) ) {
215 add_submenu_page( $parent_slug, __( 'Forums', 'wpforo' ), __( 'Forums', 'wpforo' ), 'read', wpforo_prefix_slug( 'forums' ), function() {
216 require( WPFORO_DIR . '/admin/pages/forum.php' );
217 } );
218 }
219 if( WPF()->usergroup->can( 'ms' ) || wpforo_current_user_is( 'admin' ) ) {
220 add_submenu_page( $parent_slug, __( 'Settings', 'wpforo' ), __( 'Settings', 'wpforo' ), 'read', wpforo_prefix_slug( 'settings' ), function() {
221 require( WPFORO_DIR . '/admin/pages/settings.php' );
222 } );
223 }
224 if( WPF()->usergroup->can( 'aum' ) || wpforo_current_user_is( 'admin' ) ) {
225 add_submenu_page( $parent_slug, __( 'Moderation', 'wpforo' ), __( 'Moderation', 'wpforo' ) . $mod_count, 'read', wpforo_prefix_slug( 'moderations' ), function() {
226 require( WPFORO_DIR . '/admin/pages/moderation.php' );
227 } );
228 }
229 if( WPF()->usergroup->can( 'mp' ) || wpforo_current_user_is( 'admin' ) ) {
230 add_submenu_page( $parent_slug, __( 'Phrases', 'wpforo' ), __( 'Phrases', 'wpforo' ), 'read', wpforo_prefix_slug( 'phrases' ), function() {
231 require( WPFORO_DIR . '/admin/pages/phrase.php' );
232 } );
233 }
234 if( WPF()->usergroup->can( 'mt' ) || wpforo_current_user_is( 'admin' ) ) {
235 add_submenu_page( $parent_slug, __( 'Tools', 'wpforo' ), __( 'Tools', 'wpforo' ), 'read', wpforo_prefix_slug( 'tools' ), function() {
236 require( WPFORO_DIR . '/admin/pages/tools.php' );
237 } );
238 }
239
240 do_action( 'wpforo_admin_menu', $parent_slug, $board );
241 }
242 }
243 }
244 }
245
246 add_action( 'admin_footer', function() {
247 if( ! wpforo_get_option( 'deactivation_dialog_never_show', false, false ) && ( strpos( wpforo_get_request_uri(), '/plugins.php' ) !== false ) ) {
248 require( WPFORO_DIR . '/admin/includes/deactivation-dialog.php' );
249 }
250 } );
251
252 add_action( 'admin_footer', function() {
253 $display = ( apply_filters( 'wpforo_admin_loading', false ) ) ? 'block' : 'none';
254 echo '<div id="wpf-admin-loading-extrawrap" style="display: ' . $display . '">
255 <div class="wpf-admin-loading-wrap">
256 <div class="wpf-admin-loading-ico dashicons dashicons-update"></div>
257 <div class="wpf-admin-loading-txt">' . __( 'don\'t stop or close browser', 'wpforo' ) . '</div>
258 </div>
259 </div>';
260 } );
261
262 // Feature Introduction Modal - shows once per admin after major updates
263 new \wpforo\classes\FeatureIntro();
264