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