PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 6.2.2
MainWP Dashboard: Self-hosted WordPress Management for Agencies v6.2.2
6.2.2 6.2.1 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 All 155 releases
← All changes | class/class-mainwp-format.php +53 -5 5.1 → 6.2.2 View file →
@@ -6,8 +6,13 @@
6 6 */
7 7
8 8 namespace MainWP\Dashboard;
9 9
10 +// Exit if accessed directly.
11 +if ( ! defined( 'ABSPATH' ) ) {
12 + exit;
13 +}
14 +
10 15 /**
11 16 * Class MainWP_Format
12 17 *
13 18 * @package MainWP\Dashboard
@@ -52,8 +57,13 @@
52 57 if ( ! is_array( $notTrustedPluginsToUpdate ) ) {
53 58 $notTrustedPluginsToUpdate = array();
54 59 }
55 60
61 + $pluginsNewUpdate = static::remove_duplicate_updates( $pluginsNewUpdate, $pluginsToUpdate );
62 + $pluginsToUpdate = static::remove_duplicate_updates( $pluginsToUpdate );
63 + $notTrustedPluginsNewUpdate = static::remove_duplicate_updates( $notTrustedPluginsNewUpdate, $notTrustedPluginsToUpdate );
64 + $notTrustedPluginsToUpdate = static::remove_duplicate_updates( $notTrustedPluginsToUpdate );
65 +
56 66 $update_items = array();
57 67 $update_items = MainWP_Utility::array_merge( $pluginsNewUpdate, $pluginsToUpdate );
58 68 $update_items = MainWP_Utility::array_merge( $update_items, $notTrustedPluginsNewUpdate );
59 69 $update_items = MainWP_Utility::array_merge( $update_items, $notTrustedPluginsToUpdate );
@@ -60,9 +70,40 @@
60 70
61 71 return $update_items;
62 72 }
63 73
74 +
64 75 /**
76 + * Method remove_duplicate_updates
77 + *
78 + * @param array $checks checks.
79 + * @param array $inputs inputs.
80 + * @return mixed
81 + */
82 + public static function remove_duplicate_updates( $checks, $inputs = array() ) {
83 + $tmp = array();
84 + $filters = array();
85 + $done = false;
86 + if ( is_array( $inputs ) ) {
87 + foreach ( $inputs as $item ) {
88 + if ( isset( $item['slug'] ) && isset( $item['id'] ) && isset( $item['current'] ) && ! isset( $filters[ $item['id'] . '_' . $item['slug'] . '_' . $item['current'] ] ) ) {
89 + $filters[ $item['id'] . '_' . $item['slug'] . '_' . $item['current'] ] = 1;
90 + $done = true;
91 + }
92 + }
93 + }
94 + // check not duplicate item in both arrays, for $checks array.
95 + foreach ( $checks as $item ) {
96 + if ( isset( $item['slug'] ) && isset( $item['id'] ) && isset( $item['current'] ) && ! isset( $filters[ $item['id'] . '_' . $item['slug'] . '_' . $item['current'] ] ) ) {
97 + $filters[ $item['id'] . '_' . $item['slug'] . '_' . $item['current'] ] = 1;
98 + $tmp[] = $item;
99 + $done = true;
100 + }
101 + }
102 + return $done ? $tmp : $checks; // to prevent bad format data.
103 + }
104 +
105 + /**
65 106 * Method get_update_themes_items().
66 107 *
67 108 * Get themes update items to email.
68 109 *
@@ -88,8 +129,13 @@
88 129 if ( ! is_array( $notTrustedThemesToUpdate ) ) {
89 130 $notTrustedThemesToUpdate = array();
90 131 }
91 132
133 + $themesNewUpdate = static::remove_duplicate_updates( $themesNewUpdate, $themesToUpdate );
134 + $themesToUpdate = static::remove_duplicate_updates( $themesToUpdate );
135 + $notTrustedThemesNewUpdate = static::remove_duplicate_updates( $notTrustedThemesNewUpdate, $notTrustedThemesToUpdate );
136 + $notTrustedThemesToUpdate = static::remove_duplicate_updates( $notTrustedThemesToUpdate );
137 +
92 138 $update_items = array();
93 139
94 140 $update_items = MainWP_Utility::array_merge( $themesNewUpdate, $themesToUpdate );
95 141 $update_items = MainWP_Utility::array_merge( $update_items, $notTrustedThemesNewUpdate );
@@ -188,17 +234,18 @@
188 234 $mail_send['body'] = 'Hi,' . "\r\n\r\n" .
189 235 ( ( ! empty( $title ) ) ? $title . "\r\n\r\n" : '' ) .
190 236 $body . "\r\n\r\n";
191 237 $mail_send['footer'] = 'MainWP: https://mainwp.com' . "\r\n" .
192 - 'Extensions: https://mainwp.com/mainwp-extensions/' . "\r\n" .
193 - 'Documentation: https://kb.mainwp.com/' . "\r\n" .
238 + 'Add-ons: https://mainwp.com/mainwp-add-ons/' . "\r\n" .
239 + 'Documentation: https://docs.mainwp.com/' . "\r\n" .
194 240 'Blog: https://mainwp.com/mainwp-blog/' . "\r\n" .
195 241 'Codex: https://mainwp.dev/' . "\r\n" .
196 242 'Support: https://mainwp.com/support/' . "\r\n\r\n" .
197 - 'Follow us on Twitter: https://twitter.com/mymainwp' . "\r\n" .
243 + 'Follow us on X: https://x.com/mymainwp' . "\r\n" .
198 244 'Friend us on Facebook: https://www.facebook.com/mainwp' . "\r\n\r\n" .
199 245 "Copyright {$current_year} MainWP, All rights reserved.";
200 246 } else {
247 + // phpcs:disable PluginCheck.CodeAnalysis.Heredoc.NotAllowed -- Email HTML templates; refactoring 250+ lines of HTML to string concatenation carries high regression risk with no security benefit as content is not browser-rendered.
201 248 $mail_send['header'] = <<<EOT
202 249 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
203 250 <html>
204 251 <head>
@@ -501,12 +548,12 @@
501 548 color: #7fb100 ;
502 549 }
503 550 </style>
504 551 <div class="tpl-content-highlight" id="mainwp-links" style="color: #b8b8b8;font-family: Arial;font-size: 12px;line-height: 125%;text-align: center;">
505 - <a href="https://mainwp.com" target="_self" style="color: #7fb100;font-weight: normal;text-decoration: none;text-transform: uppercase;">MainWP</a> | <a href="https://mainwp.com/mainwp-extensions/" target="_self" style="color: #7fb100;font-weight: normal;text-decoration: none;text-transform: uppercase;">Extensions</a> | <a href="https://kb.mainwp.com/" target="_self" style="color: #7fb100;font-weight: normal;text-decoration:none;text-transform: uppercase;">Documentation</a> | <a href="https://mainwp.com/mainwp-blog/" target="_self" style="color: #7fb100;font-weight: normal;text-decoration: none;text-transform: uppercase;">Blog</a> | <a href="http://codex.mainwp.com" target="_self" style="color: #7fb100;font-weight: normal;text-decoration: none;text-transform: uppercase;">Codex</a> | <a href="https://mainwp.com/support/" target="_self" style="color: #7fb100;font-weight: normal;text-decoration: none;text-transform: uppercase;">Support</a></div>
552 + <a href="https://mainwp.com" target="_self" style="color: #7fb100;font-weight: normal;text-decoration: none;text-transform: uppercase;">MainWP</a> | <a href="https://mainwp.com/mainwp-add-ons/" target="_self" style="color: #7fb100;font-weight: normal;text-decoration: none;text-transform: uppercase;">Add-ons</a> | <a href="https://docs.mainwp.com/" target="_self" style="color: #7fb100;font-weight: normal;text-decoration:none;text-transform: uppercase;">Documentation</a> | <a href="https://mainwp.com/mainwp-blog/" target="_self" style="color: #7fb100;font-weight: normal;text-decoration: none;text-transform: uppercase;">Blog</a> | <a href="https://mainwp.dev/" target="_self" style="color: #7fb100;font-weight: normal;text-decoration: none;text-transform: uppercase;">Codex</a> | <a href="https://mainwp.com/support/" target="_self" style="color: #7fb100;font-weight: normal;text-decoration: none;text-transform: uppercase;">Support</a></div>
506 553
507 554 <hr><br>
508 - <a href="https://twitter.com/mymainwp" target="_blank" style="color: #336699;font-weight: normal;text-decoration: underline;">Follow us on Twitter</a> | <a href="https://www.facebook.com/mainwp" style="color:#336699;font-weight: normal;text-decoration: underline;">Friend us on Facebook</a>
555 + <a href="https://x.com/mymainwp" target="_blank" style="color: #336699;font-weight: normal;text-decoration: underline;">Follow us on X</a> | <a href="https://www.facebook.com/mainwp" style="color:#336699;font-weight: normal;text-decoration: underline;">Friend us on Facebook</a>
509 556 </td>
510 557 </tr>
511 558 <tr>
512 559 <td style="vertical-align:top;border-collapse: collapse;">
@@ -533,8 +580,9 @@
533 580 </center>
534 581 </body>
535 582 </html>
536 583 EOT;
584 + // phpcs:enable PluginCheck.CodeAnalysis.Heredoc.NotAllowed
537 585 }
538 586 $mail_send = apply_filters( 'mainwp_format_email', $mail_send );
539 587 return $mail_send['header'] . $mail_send['body'] . $mail_send['footer'];
540 588 }