PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3
Jetpack – WP Security, Backup, Speed, & Growth v16.3
16.3 16.3-beta 16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 All 508 releases
← All changes | modules/verification-tools/verification-tools-utils.php +116 -0 16.2-beta → 16.3 View file →
@@ -1,0 +1,116 @@
1 +<?php
2 +/**
3 + * Helper functions that are called from API even when module is inactive should be added here.
4 + * This file will be included in module-extras.php.
5 + *
6 + * @package jetpack
7 + */
8 +
9 +if ( ! function_exists( 'jetpack_verification_extract_code' ) ) {
10 + /**
11 + * Extract a site verification code from a meta tag.
12 + *
13 + * @since 16.3
14 + *
15 + * @param string $code Verification meta tag.
16 + * @return string|false Extracted code, or false when none is found.
17 + */
18 + function jetpack_verification_extract_code( $code ) {
19 + $pattern = '/content=["\']?([^"\' ]*)["\' ]/is';
20 + preg_match( $pattern, $code, $match );
21 +
22 + return $match ? rawurldecode( $match[1] ) : false;
23 + }
24 +}
25 +
26 +if ( ! function_exists( 'jetpack_verification_validate_code' ) ) {
27 + /**
28 + * Validate and normalize a site verification code.
29 + *
30 + * @since 16.3
31 + *
32 + * @param mixed $code Verification code or meta tag.
33 + * @return string|false Normalized code, or false when invalid.
34 + */
35 + function jetpack_verification_validate_code( $code ) {
36 + if ( ! is_scalar( $code ) ) {
37 + return false;
38 + }
39 +
40 + // Allow printable ASCII except characters that can delimit HTML attributes or tags.
41 + $code_pattern = '/^(?!.*[<>"\'])[!-~]+$/';
42 + $code = trim( (string) $code );
43 +
44 + if ( '' === $code ) {
45 + return '';
46 + }
47 +
48 + // Parse html meta tag if it does not look like a valid code.
49 + if ( ! preg_match( $code_pattern, $code ) ) {
50 + $code = jetpack_verification_extract_code( $code );
51 + }
52 +
53 + $code = trim( (string) $code );
54 + if ( '' === $code || ! preg_match( $code_pattern, $code ) ) {
55 + return false;
56 + }
57 +
58 + return substr( $code, 0, 100 );
59 + }
60 +}
61 +
62 +if ( ! function_exists( 'jetpack_verification_validate_codes' ) ) {
63 + /**
64 + * Validate jetpack verification codes.
65 + *
66 + * @since 16.3
67 + *
68 + * @param array $verification_services_codes - array of verification codes.
69 + * @return array Validated verification codes.
70 + */
71 + function jetpack_verification_validate_codes( $verification_services_codes ) {
72 + foreach ( $verification_services_codes as $key => $code ) {
73 + $code = jetpack_verification_validate_code( $code );
74 + $code = false === $code ? '' : $code;
75 +
76 + /**
77 + * Fire after each Verification code was validated.
78 + *
79 + * @module verification-tools
80 + *
81 + * @since 3.0.0
82 + *
83 + * @param string $key Verification service name.
84 + * @param string $code Verification service code provided in field in the Tools menu.
85 + */
86 + do_action( 'jetpack_site_verification_validate', $key, $code );
87 +
88 + $verification_services_codes[ $key ] = $code;
89 + }
90 + return $verification_services_codes;
91 + }
92 +}
93 +
94 +if ( ! function_exists( 'jetpack_verification_validate' ) ) {
95 + /**
96 + * Validate jetpack verification codes.
97 + *
98 + * @param array $verification_services_codes - array of verification codes.
99 + * @return array Validated verification codes.
100 + */
101 + function jetpack_verification_validate( $verification_services_codes ) {
102 + return jetpack_verification_validate_codes( $verification_services_codes );
103 + }
104 +}
105 +
106 +if ( ! function_exists( 'jetpack_verification_get_code' ) ) {
107 + /**
108 + * Return the code we're trying to verify after decoding.
109 + *
110 + * @param string $code - the code we need to parse.
111 + * @return string|false Extracted code, or false when none is found.
112 + */
113 + function jetpack_verification_get_code( $code ) {
114 + return jetpack_verification_extract_code( $code );
115 + }
116 +}