← All changes
|
includes/class-metasync-compatibility-checker.php
+35
-29
2.6.23
→
2.7.1
View file →
| @@ -205,22 +205,22 @@ | ||
| 205 | 205 | var blockedClass = inconclusive ? 'inconclusive' : (result.blocked ? 'blocked' : 'allowed'); |
| 206 | 206 | |
| 207 | 207 | html += '<div class="test-result-item ' + statusClass + '">'; |
| 208 | 208 | html += '<div class="test-result-header">'; |
| 209 | - html += '<h4>' + statusIcon + ' ' + result.method + ' Request - ' + blockedStatus + '</h4>'; | |
| 209 | + html += '<h4>' + statusIcon + ' ' + escapeHtml(result.method) + ' Request - ' + blockedStatus + '</h4>'; | |
| 210 | 210 | html += '<span class="test-status ' + blockedClass + '">' + blockedStatus + '</span>'; |
| 211 | 211 | html += '</div>'; |
| 212 | 212 | |
| 213 | 213 | html += '<div class="test-result-details">'; |
| 214 | - html += '<p><strong>Response Time:</strong> ' + result.response_time + '</p>'; | |
| 215 | - html += '<p><strong>Status:</strong> ' + result.status + '</p>'; | |
| 214 | + html += '<p><strong>Response Time:</strong> ' + escapeHtml(result.response_time) + '</p>'; | |
| 215 | + html += '<p><strong>Status:</strong> ' + escapeHtml(result.status) + '</p>'; | |
| 216 | 216 | |
| 217 | 217 | if (result.status_code) { |
| 218 | - html += '<p><strong>HTTP Status Code:</strong> <span class="status-code">' + result.status_code + '</span></p>'; | |
| 218 | + html += '<p><strong>HTTP Status Code:</strong> <span class="status-code">' + escapeHtml(result.status_code) + '</span></p>'; | |
| 219 | 219 | } |
| 220 | 220 | |
| 221 | 221 | if (result.error) { |
| 222 | - html += '<p><strong>Error:</strong> <span class="error-message">' + result.error + '</span></p>'; | |
| 222 | + html += '<p><strong>Error:</strong> <span class="error-message">' + escapeHtml(result.error) + '</span></p>'; | |
| 223 | 223 | } |
| 224 | 224 | |
| 225 | 225 | if (result.body) { |
| 226 | 226 | html += '<p><strong>Response Body:</strong></p>'; |
| @@ -230,9 +230,9 @@ | ||
| 230 | 230 | if (result.headers && Object.keys(result.headers).length > 0) { |
| 231 | 231 | html += '<p><strong>Response Headers:</strong></p>'; |
| 232 | 232 | html += '<pre class="response-headers">'; |
| 233 | 233 | Object.keys(result.headers).forEach(function(key) { |
| 234 | - html += key + ': ' + result.headers[key] + '\n'; | |
| 234 | + html += escapeHtml(key) + ': ' + escapeHtml(result.headers[key]) + '\n'; | |
| 235 | 235 | }); |
| 236 | 236 | html += '</pre>'; |
| 237 | 237 | } |
| 238 | 238 | |
| @@ -245,9 +245,9 @@ | ||
| 245 | 245 | html += '<p><strong>Parsed Response:</strong></p>'; |
| 246 | 246 | html += '<pre class="parsed-response">' + escapeHtml(JSON.stringify(result.parsed_response, null, 2)) + '</pre>'; |
| 247 | 247 | } |
| 248 | 248 | |
| 249 | - html += '<p><strong>Details:</strong> ' + result.details + '</p>'; | |
| 249 | + html += '<p><strong>Details:</strong> ' + escapeHtml(result.details) + '</p>'; | |
| 250 | 250 | html += '</div>'; |
| 251 | 251 | html += '</div>'; |
| 252 | 252 | }); |
| 253 | 253 | |
| @@ -262,9 +262,9 @@ | ||
| 262 | 262 | '>': '>', |
| 263 | 263 | '"': '"', |
| 264 | 264 | "'": ''' |
| 265 | 265 | }; |
| 266 | - return text.replace(/[&<>"']/g, function(m) { return map[m]; }); | |
| 266 | + return String(text).replace(/[&<>"']/g, function(m) { return map[m]; }); | |
| 267 | 267 | } |
| 268 | 268 | |
| 269 | 269 | setTimeout(function() { |
| 270 | 270 | var btnBoth = $('#test-both-requests'); |
| @@ -958,8 +958,9 @@ | ||
| 958 | 958 | ], |
| 959 | 959 | 'bricks' => [ |
| 960 | 960 | 'name' => 'Bricks Builder', |
| 961 | 961 | 'plugin_files' => [ 'bricks/bricks.php' ], |
| 962 | + 'theme_name' => 'Bricks', | |
| 962 | 963 | 'supported' => true, |
| 963 | 964 | 'version' => '1.11', |
| 964 | 965 | ], |
| 965 | 966 | ]; |
| @@ -1348,39 +1349,44 @@ | ||
| 1348 | 1349 | } |
| 1349 | 1350 | |
| 1350 | 1351 | public function get_plugin_logo($plugin_key, $type) |
| 1351 | 1352 | { |
| 1353 | + // Compatibility icons are bundled locally; loading images from external | |
| 1354 | + // servers (wp.org, vendor sites, CDNs) counts as offloaded content and | |
| 1355 | + // is disallowed for wordpress.org releases. | |
| 1356 | + $assets = plugins_url('assets/images/compat/', dirname(__DIR__) . '/metasync.php'); | |
| 1357 | + | |
| 1352 | 1358 | $logos = [ |
| 1353 | 1359 | 'page_builder' => [ |
| 1354 | - 'elementor' => 'https://ps.w.org/elementor/assets/icon-256x256.gif', | |
| 1355 | - 'gutenberg' => 'https://i0.wp.com/wordpress.org/files/2023/02/wmark.png', | |
| 1356 | - 'divi' => 'https://www.elegantthemes.com/images/logo.svg', | |
| 1357 | - 'oxygen' => 'https://oxygenbuilder.com/wp-content/uploads/2021/09/oxygen-logo-icon.png', | |
| 1358 | - 'bricks' => 'https://bricksbuilder.io/wp-content/uploads/2021/05/bricks-icon.svg', | |
| 1360 | + 'elementor' => $assets . 'elementor.svg', | |
| 1361 | + 'gutenberg' => $assets . 'gutenberg.svg', | |
| 1362 | + 'divi' => $assets . 'divi.svg', | |
| 1363 | + 'oxygen' => $assets . 'oxygen.svg', | |
| 1364 | + 'bricks' => $assets . 'bricks.svg', | |
| 1359 | 1365 | ], |
| 1360 | 1366 | 'theme' => [ |
| 1361 | - 'astra' => 'https://ps.w.org/astra/assets/icon-128x128.png', | |
| 1362 | - 'generatepress' => 'https://ps.w.org/generatepress/assets/icon-128x128.png', | |
| 1363 | - 'oceanwp' => 'https://ps.w.org/ocean-extra/assets/icon-128x128.png', | |
| 1364 | - 'hello-elementor' => 'https://ps.w.org/hello-elementor/assets/icon-128x128.png', | |
| 1365 | - 'kadence' => 'https://ps.w.org/kadence-blocks/assets/icon-128x128.png', | |
| 1367 | + 'astra' => $assets . 'astra.svg', | |
| 1368 | + 'generatepress' => $assets . 'generatepress.svg', | |
| 1369 | + 'oceanwp' => $assets . 'oceanwp.svg', | |
| 1370 | + 'hello-elementor' => $assets . 'hello-elementor.svg', | |
| 1371 | + 'kadence' => $assets . 'kadence.svg', | |
| 1366 | 1372 | ], |
| 1367 | 1373 | 'seo' => [ |
| 1368 | - 'yoast' => 'https://ps.w.org/wordpress-seo/assets/icon-128x128.gif', | |
| 1369 | - 'rankmath' => 'https://ps.w.org/seo-by-rank-math/assets/icon-128x128.png', | |
| 1370 | - 'aioseo' => 'https://ps.w.org/all-in-one-seo-pack/assets/icon-128x128.png', | |
| 1374 | + 'yoast' => $assets . 'yoast.svg', | |
| 1375 | + 'rankmath' => $assets . 'rankmath.svg', | |
| 1376 | + 'aioseo' => $assets . 'aioseo.svg', | |
| 1371 | 1377 | ], |
| 1372 | 1378 | 'cache' => [ |
| 1373 | - 'wp-rocket' => 'https://ps.w.org/rocket-lazy-load/assets/icon-128x128.png', | |
| 1374 | - 'litespeed-cache' => 'https://ps.w.org/litespeed-cache/assets/icon-128x128.png', | |
| 1375 | - 'w3-total-cache' => 'https://ps.w.org/w3-total-cache/assets/icon-128x128.png', | |
| 1376 | - 'sg-cachepress' => 'https://ps.w.org/sg-cachepress/assets/icon-128x128.png', | |
| 1377 | - 'hummingbird-performance' => 'https://ps.w.org/hummingbird-performance/assets/icon-128x128.png', | |
| 1378 | - 'autoptimize' => 'https://ps.w.org/autoptimize/assets/icon-128x128.png', | |
| 1379 | + 'wp-rocket' => $assets . 'wp-rocket.svg', | |
| 1380 | + 'litespeed-cache' => $assets . 'litespeed-cache.svg', | |
| 1381 | + 'w3-total-cache' => $assets . 'w3-total-cache.svg', | |
| 1382 | + 'sg-cachepress' => $assets . 'sg-cachepress.svg', | |
| 1383 | + 'hummingbird-performance' => $assets . 'hummingbird-performance.svg', | |
| 1384 | + 'autoptimize' => $assets . 'autoptimize.svg', | |
| 1379 | 1385 | ], |
| 1380 | 1386 | 'cdn' => [ |
| 1381 | - 'cloudflare' => 'https://ps.w.org/cloudflare/assets/icon-128x128.png', | |
| 1382 | - 'fastly' => 'https://ps.w.org/purgely/assets/icon-128x128.png', | |
| 1387 | + 'cloudflare' => $assets . 'cloudflare.svg', | |
| 1388 | + 'fastly' => $assets . 'fastly.svg', | |
| 1383 | 1389 | ], |
| 1384 | 1390 | ]; |
| 1385 | 1391 | |
| 1386 | 1392 | return isset($logos[$type][$plugin_key]) ? $logos[$type][$plugin_key] : ''; |