PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.2
Independent Analytics – WordPress Analytics Plugin v2.14.2
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 / Link_Validator.php
independent-analytics / IAWP / Utils Last commit date
BladeOne.php 2 years ago CSV.php 9 months ago Calculations.php 2 years ago Currency.php 8 months ago Device.php 1 year ago Device_Cache.php 2 years ago Dir.php 5 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 11 months ago Salt.php 1 year ago Security.php 1 year ago Server.php 2 years ago Singleton.php 2 years ago String_Util.php 2 years ago Timezone.php 5 months ago URL.php 6 months ago WP_Async_Request.php 1 year ago
Link_Validator.php
88 lines
1 <?php
2
3 namespace IAWP\Utils;
4
5 use IAWP\Click_Tracking;
6 use IAWPSCOPED\Illuminate\Support\Str;
7 use IAWPSCOPED\League\Uri\Uri;
8 /** @internal */
9 class Link_Validator
10 {
11 public static function error_messages()
12 {
13 return ['empty-name' => \__('Name cannot be empty.', 'independent-analytics'), 'empty-value' => \__('Value cannot be empty.', 'independent-analytics'), 'invalid-type' => \__('Invalid type.', 'independent-analytics'), 'class-number' => \__('Class cannot start with a number or special character.', 'independent-analytics'), 'class-space' => \__('Class cannot contain spaces.', 'independent-analytics'), 'class-characters' => \__('Class cannot contain special characters besides "-" and "_".', 'independent-analytics'), 'id-number' => \__('ID cannot start with a number or special character.', 'independent-analytics'), 'id-space' => \__('ID cannot contain spaces.', 'independent-analytics'), 'id-characters' => \__('ID cannot contain special characters besides "-" and "_".', 'independent-analytics'), 'invalid-extension' => \__('Invalid Extension.', 'independent-analytics'), 'invalid-protocol' => \__('Invalid Protocol.', 'independent-analytics'), 'invalid-domain' => \__('Invalid domain.', 'independent-analytics'), 'invalid-subdirectory' => \__('Invalid characters in subdirectory.', 'independent-analytics')];
14 }
15 public static function validate(string $property, string $value, string $type)
16 {
17 if ($property == 'name') {
18 if (\trim($value) == '') {
19 return 'empty-name';
20 }
21 } elseif ($property == 'type') {
22 if (!\array_key_exists($value, Click_Tracking::types())) {
23 return 'invalid-type';
24 }
25 } elseif ($property == 'value') {
26 if ($type === 'external') {
27 // There is no value for the external type
28 return \false;
29 }
30 if (\trim($value) == '') {
31 return 'empty-value';
32 }
33 if ($type == 'class') {
34 if (!\preg_match('/[a-zA-Z]/', \substr($value, 0, 1))) {
35 return 'class-number';
36 } elseif (\preg_match('/\\s/', $value)) {
37 return 'class-space';
38 } elseif (\preg_match('/[^a-zA-Z0-9_-]/', $value)) {
39 return 'class-characters';
40 }
41 } elseif ($type == 'id') {
42 if (!\preg_match('/[a-zA-Z]/', \substr($value, 0, 1))) {
43 return 'id-number';
44 } elseif (\preg_match('/\\s/', $value)) {
45 return 'id-space';
46 } elseif (\preg_match('/[^a-zA-Z0-9_-]/', $value)) {
47 return 'id-characters';
48 }
49 } elseif ($type == 'extension') {
50 if (!\in_array($value, Click_Tracking::extensions())) {
51 return 'invalid-extension';
52 }
53 } elseif ($type == 'protocol') {
54 if (!\in_array($value, Click_Tracking::protocols())) {
55 return 'invalid-protocol';
56 }
57 } elseif ($type == 'domain') {
58 if (!self::is_valid_domain($value)) {
59 return 'invalid-domain';
60 }
61 } elseif ($type == 'subdirectory') {
62 if (\preg_match("/[^A-Za-z0-9-._~!\$&'()*+,;=:@\\/]/", $value)) {
63 return 'invalid-subdirectory';
64 }
65 }
66 }
67 return \false;
68 }
69 public static function is_valid_domain(string $domain)
70 {
71 return \preg_match('/^(http[s]?\\:\\/\\/)?((\\w+)\\.)?(([\\w-]+)+)(\\.[\\w-]+){1,2}$/', $domain);
72 }
73 public static function sanitize_domain($domain)
74 {
75 $domain = \strpos($domain, 'http') !== 0 ? "http://{$domain}" : $domain;
76 $components = Uri::createFromString($domain);
77 $host = $components->getHost();
78 if (Str::startsWith($host, 'www.')) {
79 $host = Str::after($host, 'www.');
80 }
81 return $host;
82 }
83 public static function sanitize_subdirectory($subdirectory)
84 {
85 return \sanitize_text_field(\trim($subdirectory, '/'));
86 }
87 }
88