PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 4.2
MainWP Dashboard: Self-hosted WordPress Management for Agencies v4.2
6.2 6.1.8 6.1.7 6.1.6 6.1.5 6.1.4 6.1.3 6.1.2 6.1.1 6.1 6.0.12 6.0.11 4.6.0.1 5.0 5.0.1 5.0.2 5.0.3 5.0.3.1 5.0.3.2 5.1 5.1.1 5.2 5.2.1 5.2.2 5.3 All 153 releases
mainwp / widgets / widget-mainwp-security-issues-widget.php

widget-mainwp-security-issues-widget.php in MainWP Dashboard: Self-hosted WordPress Management for Agencies 4.2, at widgets/widget-mainwp-security-issues-widget.php

224 lines 7.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * MainWP Security Widget
4 *
5 * Displays detected security issues on Child Sites.
6 *
7 * @package MainWP/Dashboard
8 */
9
10 namespace MainWP\Dashboard;
11
12 /**
13 * Class MainWP_Security_Issues_Widget
14 *
15 * Detect security issues on CHild Sites & Build Widget.
16 */
17 class MainWP_Security_Issues_Widget {
18
19 /**
20 * Method get_class_name()
21 *
22 * @return string __CLASS__ Class Name
23 */
24 public static function get_class_name() {
25 return __CLASS__;
26 }
27
28 /**
29 * Method render_widget()
30 *
31 * Fetch Child Site issues from db & build widget.
32 *
33 * @uses \MainWP\Dashboard\MainWP_DB::query()
34 * @uses \MainWP\Dashboard\MainWP_DB::get_sql_website_by_id()
35 * @uses \MainWP\Dashboard\MainWP_DB::get_sql_search_websites_for_current_user()
36 * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
37 * @uses \MainWP\Dashboard\MainWP_DB::data_seek()
38 * @uses \MainWP\Dashboard\MainWP_System_Utility::get_current_wpid()
39 * @uses \MainWP\Dashboard\MainWP_Utility::ctype_digit()
40 */
41 public static function render_widget() {
42 $current_wpid = MainWP_System_Utility::get_current_wpid();
43
44 if ( $current_wpid ) {
45 $sql = MainWP_DB::instance()->get_sql_website_by_id( $current_wpid );
46 } else {
47 $sql = MainWP_DB::instance()->get_sql_websites_for_current_user();
48 }
49
50 $websites = MainWP_DB::instance()->query( $sql );
51
52 $total_securityIssues = 0;
53
54 MainWP_DB::data_seek( $websites, 0 );
55 while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
56 if ( MainWP_Utility::ctype_digit( $website->securityIssues ) ) {
57 $total_securityIssues += $website->securityIssues;
58 }
59 }
60
61 self::render_issues( $websites, $total_securityIssues );
62 }
63
64 /**
65 *
66 * Method render_html_widget().
67 *
68 * Render html themes widget for current site
69 *
70 * @param mixed $websites Array of websites.
71 * @param mixed $total_securityIssues Total security Issues.
72 *
73 * @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
74 * @uses \MainWP\Dashboard\MainWP_DB::data_seek()
75 */
76 public static function render_issues( $websites, $total_securityIssues ) {
77 ?>
78 <h3 class="ui header handle-drag">
79 <?php
80 /**
81 * Filter: mainwp_security_issues_widget_title
82 *
83 * Filters the Security Issues widget title text.
84 *
85 * @since 4.1
86 */
87 echo esc_html( apply_filters( 'mainwp_security_issues_widget_title', __( 'Security Issues', 'mainwp' ) ) );
88 ?>
89 <div class="sub header"><?php esc_html_e( 'Detected security issues', 'mainwp' ); ?></div>
90 </h3>
91
92 <div class="ui section hidden divider"></div>
93
94 <?php
95 /**
96 * Action: mainwp_security_issues_widget_top
97 *
98 * Fires at the bottom of the Security Issues widget.
99 *
100 * @since 4.1
101 */
102 do_action( 'mainwp_security_issues_widget_top' );
103 if ( $total_securityIssues > 0 ) {
104 ?>
105 <div class="ui two column grid stackable">
106 <div class="column">
107 <div class="ui horizontal statistics">
108 <div class="statistic" style="margin: 0px;">
109 <div class="value">
110 <?php echo $total_securityIssues; ?>
111 </div>
112 <div class="label">
113 <?php echo _n( 'Security Issue Detected', 'Security Issues Detected', $total_securityIssues, 'mainwp' ); ?>
114 </div>
115 </div>
116 </div>
117 </div>
118 <div class="column right aligned">
119 <a href="#" class="ui button basic" id="show-security-issues-widget-list" data-tooltip="<?php esc_attr_e( 'Click here to see the list of all sites and detected security issues.', 'mainwp' ); ?>" data-inverted=""><?php esc_html_e( 'See Details', 'mainwp' ); ?></a>
120 <input type="button" class="fix-all-security-issues ui button green" value="<?php esc_html_e( 'Fix All Issues', 'mainwp' ); ?>" data-tooltip="<?php esc_attr_e( 'Clicking this buttin will resolve all detected security issue on all your child sites.', 'mainwp' ); ?>" data-inverted=""/>
121 </div>
122 </div>
123
124 <div id="mainwp-security-issues-widget-list" class="ui middle aligned divided selection list" style="display: none;">
125 <div class="ui section hidden divider"></div>
126 <?php
127 MainWP_DB::data_seek( $websites, 0 );
128 while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) {
129 ?>
130 <div class="item" <?php echo $website->securityIssues > 0 ? 'status="queue"' : ''; ?> siteid="<?php echo intval( $website->id ); ?>">
131 <div class="ui three column grid stackable">
132 <div class="column middle aligned">
133 <a href="
134 <?php
135 /**
136 * Filter: mainwp_security_issues_list_item_title_url
137 *
138 * Filters the Security Issues widget list item title URL.
139 *
140 * @since 4.1
141 */
142 echo esc_attr( apply_filters( 'mainwp_security_issues_list_item_title_url', 'admin.php?page=managesites&dashboard=' . $website->id, $website ) );
143 ?>
144 ">
145 <?php
146 /**
147 * Filter: mainwp_security_issues_list_item_title
148 *
149 * Filters the Security Issues widget list item title text.
150 *
151 * @since 4.1
152 */
153 echo stripslashes( apply_filters( 'mainwp_security_issues_list_item_title', $website->name, $website ) );
154 ?>
155 </a>
156 </div>
157 <div class="column middle aligned">
158 <?php
159 if ( $website->securityIssues > 0 ) {
160 ?>
161 <div class="ui label basic medium red">
162 <?php echo esc_html( $website->securityIssues ); ?> <?php echo _n( 'issue', 'issues', $website->securityIssues, 'mainwp' ); ?>
163 </div>
164 <?php
165 } else {
166 esc_html_e( 'No security issues detected.', 'mainwp' );
167 }
168 ?>
169 </div>
170 <?php
171 /**
172 * Action: mainwp_security_issues_list_item_column
173 *
174 * Fires before the last (actions) colum in the security issues list.
175 *
176 * Preferred HTML structure:
177 *
178 * <div class="column middle aligned">
179 * Your content here!
180 * </div>
181 *
182 * @param object $website Object containing the child site info.
183 *
184 * @since 4.1
185 */
186 do_action( 'mainwp_security_issues_list_item_column', $website );
187 ?>
188 <div class="column right aligned">
189 <a href="admin.php?page=managesites&scanid=<?php echo esc_attr( $website->id ); ?>" class="ui button mini basic" data-tooltip="<?php esc_attr_e( 'Click here to see details.', 'mainwp' ); ?>" data-inverted=""><?php esc_html_e( 'Details', 'mainwp' ); ?></a>
190 <?php if ( 0 == $website->securityIssues ) { ?>
191 <input type="button" class="unfix-all-site-security-issues ui button basic green mini" value="<?php esc_attr_e( 'Unfix All', 'mainwp' ); ?>" data-tooltip="<?php esc_attr_e( 'Click here to unfix all security issues on the child site.', 'mainwp' ); ?>" data-inverted=""/>
192 <?php } else { ?>
193 <input type="button" class="fix-all-site-security-issues ui button green mini" value="<?php esc_attr_e( 'Fix All', 'mainwp' ); ?>" data-tooltip="<?php esc_attr_e( 'Click here to fix all security issues on the child site.', 'mainwp' ); ?>" data-inverted=""/>
194 <?php } ?>
195 </div>
196 </div>
197 </div>
198 <?php } ?>
199 </div>
200 <div class="ui active inverted dimmer" style="display:none" id="mainwp-secuirty-issues-loader"><div class="ui text loader">Please wait...</div></div>
201 <?php
202 } else {
203 ?>
204 <h2 class="ui icon header">
205 <i class="thumbs up outline icon"></i>
206 <div class="content">
207 <?php esc_html_e( 'Well done!', 'mainwp' ); ?>
208 <div class="sub header"><?php esc_html_e( 'No security issues detected!', 'mainwp' ); ?></div>
209 </div>
210 </h2>
211 <?php
212 }
213 /**
214 * Action: mainwp_security_issues_widget_bottom
215 *
216 * Fires at the bottom of the Security Issues widget.
217 *
218 * @since 4.1
219 */
220 do_action( 'mainwp_security_issues_widget_bottom' );
221 }
222
223 }
224