PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.0
Independent Analytics – WordPress Analytics Plugin v2.15.0
2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / Utils / Request.php
independent-analytics / IAWP / Utils Last commit date
BladeOne.php 2 years ago CSV.php 9 months ago Calculations.php 4 days ago Currency.php 8 months ago Device.php 1 year ago Device_Cache.php 2 years ago Dir.php 6 months ago Format.php 5 months ago Link_Validator.php 6 months ago Number_Formatter.php 5 months ago Obj.php 6 months ago Request.php 4 days ago Salt.php 1 year ago Security.php 1 year ago Server.php 2 years ago Singleton.php 2 years ago Timezone.php 5 months ago URL.php 2 months ago WP_Async_Request.php 1 year ago
Request.php
158 lines
1 <?php
2
3 namespace IAWP\Utils;
4
5 use IAWPSCOPED\Illuminate\Support\Str;
6 use IAWPSCOPED\IPLib\Factory;
7 /** @internal */
8 class Request
9 {
10 public static function get_post_array(string $field) : ?array
11 {
12 if (!\array_key_exists($field, $_POST) || !\is_array($_POST[$field])) {
13 return null;
14 }
15 return \rest_sanitize_array($_POST[$field]);
16 }
17 public static function get_post_string(string $field) : ?string
18 {
19 if (!\array_key_exists($field, $_POST)) {
20 return null;
21 }
22 return \sanitize_text_field($_POST[$field]);
23 }
24 public static function query(string $field) : ?string
25 {
26 if (empty($_GET[$field])) {
27 return null;
28 }
29 return \sanitize_text_field($_GET[$field]);
30 }
31 public static function query_int(string $field) : ?int
32 {
33 $result = \filter_input(\INPUT_GET, $field, \FILTER_VALIDATE_INT);
34 if (!\is_int($result)) {
35 return null;
36 }
37 return $result;
38 }
39 public static function query_array(string $field) : ?array
40 {
41 if (empty($_GET[$field]) || !\is_array($_GET[$field])) {
42 return null;
43 }
44 $array = [];
45 foreach ($_GET[$field] as $item) {
46 if (!\is_string($item)) {
47 continue;
48 }
49 $array[] = \sanitize_text_field($item);
50 }
51 return $array;
52 }
53 public static function path_relative_to_site_url($url = null)
54 {
55 if (\is_null($url)) {
56 $url = self::url();
57 }
58 $site_url = \home_url();
59 if ($url == $site_url) {
60 return '/';
61 } elseif (\substr($url, 0, \strlen($site_url)) == $site_url) {
62 return \substr($url, \strlen($site_url));
63 } else {
64 return $url;
65 }
66 }
67 public static function ip()
68 {
69 $headers = self::ip_headers();
70 if (\is_string(self::custom_ip_header())) {
71 \array_unshift($headers, self::custom_ip_header());
72 }
73 foreach ($headers as $header) {
74 if (isset($_SERVER[$header])) {
75 return \explode(',', $_SERVER[$header])[0];
76 }
77 }
78 return null;
79 }
80 public static function custom_ip_header() : ?string
81 {
82 // add_filter('iawp_header_with_ip_address', function () {
83 // return 'CUSTOM_HEADER_NAME';
84 // });
85 $user_defined_header = \apply_filters('iawp_header_with_ip_address', null);
86 if (!\is_string($user_defined_header)) {
87 return null;
88 }
89 $user_defined_header = \IAWP\Utils\Security::string($user_defined_header);
90 if (Str::of($user_defined_header)->test('/^[a-zA-Z_]+$/')) {
91 return $user_defined_header;
92 }
93 return null;
94 }
95 public static function user_agent()
96 {
97 return $_SERVER['HTTP_USER_AGENT'];
98 }
99 public static function is_ip_address_blocked() : bool
100 {
101 $blocked_ips = \IAWPSCOPED\iawp()->get_option('iawp_blocked_ips', []);
102 // No address could be blocked
103 if (\count($blocked_ips) == 0) {
104 return \false;
105 }
106 $visitor_address = Factory::parseAddressString(self::ip());
107 // We cannot block invalid ip addresses
108 if ($visitor_address === null) {
109 return \false;
110 }
111 foreach ($blocked_ips as $blocked_ip) {
112 $blocked_range = Factory::parseRangeString($blocked_ip);
113 // We cannot check an ip address against an invalid range
114 if ($blocked_range === null) {
115 continue;
116 }
117 // If the address matches this particular blocked range, then the ip address is indeed blocked
118 if ($blocked_range->contains($visitor_address)) {
119 return \true;
120 }
121 }
122 return \false;
123 }
124 /**
125 * @return string[]
126 */
127 public static function ip_headers() : array
128 {
129 return ['HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR', 'HTTP_CF_CONNECTING_IP', 'HTTP_CLIENT_IP', 'HTTP_INCAP_CLIENT_IP', 'HTTP_CF_CONNECTING_IP'];
130 }
131 public static function is_blocked_user_role() : bool
132 {
133 $blocked_roles = \IAWPSCOPED\iawp()->get_option('iawp_blocked_roles', ['administrator']);
134 foreach (\wp_get_current_user()->roles as $visitor_role) {
135 if (\in_array($visitor_role, $blocked_roles)) {
136 return \true;
137 }
138 }
139 return \false;
140 }
141 private static function scheme()
142 {
143 if (!empty($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https' || !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' || !empty($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443') {
144 return 'https';
145 } else {
146 return 'http';
147 }
148 }
149 private static function url()
150 {
151 if (!empty($_SERVER['HTTP_HOST']) && !empty($_SERVER['REQUEST_URI'])) {
152 return \esc_url_raw(self::scheme() . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
153 } else {
154 return null;
155 }
156 }
157 }
158