PluginProbe
404 Solution / 4.3.0
404 Solution v4.3.0
4.3.5 4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.2.0 4.1.19 4.1.18 4.1.17 4.1.16 4.1.15 4.1.13 4.1.12 4.1.11 4.1.10 4.1.9 4.1.8 4.1.7 4.1.6 4.1.5 4.1.4 4.1.3 trunk 2.30.0 All 109 releases
404-solution / includes / services / RequestInputNormalizer.php

RequestInputNormalizer.php in 404 Solution 4.3.0, at includes/services/RequestInputNormalizer.php

70 lines 1.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 if (!defined('ABSPATH')) {
4 exit;
5 }
6
7 /**
8 * Normalizes request values that arrive from WordPress superglobals.
9 */
10 class ABJ_404_Solution_RequestInputNormalizer {
11
12 /**
13 * Safely unslash request data when wp_unslash exists and is callable.
14 * Some test environments report wp_unslash as existing but throw when called.
15 *
16 * @param mixed $value
17 * @return mixed
18 */
19 public static function safeWpUnslash($value) {
20 if (!function_exists('wp_unslash')) {
21 return $value;
22 }
23
24 try {
25 return wp_unslash($value);
26 } catch (Throwable $e) { // allow-silent-catch: wp_unslash() failure; pass-through preserves the original value which is always usable
27 return $value;
28 }
29 }
30
31 /**
32 * Normalize request input to a scalar string to avoid warnings when arrays/objects are passed.
33 *
34 * @param mixed $value
35 * @return string
36 */
37 public static function normalizeScalar($value): string {
38 $value = self::safeWpUnslash($value);
39 if (!is_scalar($value)) {
40 return '';
41 }
42 return (string)$value;
43 }
44
45 /**
46 * Normalize and sanitize feedback issue selections from request data.
47 *
48 * @param mixed $issuesRaw
49 * @return array<int, string>
50 */
51 public static function sanitizeFeedbackIssues($issuesRaw): array {
52 $issuesRaw = self::safeWpUnslash($issuesRaw);
53 if (!is_array($issuesRaw)) {
54 $issuesRaw = array($issuesRaw);
55 }
56
57 $issues = array();
58 foreach ($issuesRaw as $issue) {
59 if (!is_scalar($issue)) {
60 continue;
61 }
62 $clean = sanitize_text_field((string)$issue);
63 if ($clean !== '') {
64 $issues[] = $clean;
65 }
66 }
67 return $issues;
68 }
69 }
70