PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.5
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.5
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 13.7.2 13.8.3 All 506 releases
jetpack / 3rd-party / class-domain-mapping.php

class-domain-mapping.php in Jetpack – WP Security, Backup, Speed, & Growth 16.3-a.5, at 3rd-party/class-domain-mapping.php

165 lines 4.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Domain Mapping 3rd Party
4 *
5 * @package automattic/jetpack
6 */
7
8 namespace Automattic\Jetpack\Third_Party;
9
10 use Automattic\Jetpack\Constants;
11
12 if ( ! defined( 'ABSPATH' ) ) {
13 exit( 0 );
14 }
15
16 /**
17 * Class Automattic\Jetpack\Third_Party\Domain_Mapping.
18 *
19 * This class contains methods that are used to provide compatibility between Jetpack sync and domain mapping plugins.
20 */
21 class Domain_Mapping {
22
23 /**
24 * Singleton holder.
25 *
26 * @var Domain_Mapping
27 **/
28 private static $instance = null;
29
30 /**
31 * An array of methods that are used to hook the Jetpack sync filters for home_url and site_url to a mapping plugin.
32 *
33 * @var array
34 */
35 public static $test_methods = array(
36 'hook_wordpress_mu_domain_mapping',
37 'hook_wpmu_dev_domain_mapping',
38 );
39
40 /**
41 * Singleton constructor.
42 *
43 * @return Domain_Mapping|null
44 */
45 public static function init() {
46 if ( self::$instance === null ) {
47 self::$instance = new Domain_Mapping();
48 }
49
50 return self::$instance;
51 }
52
53 /**
54 * Class Automattic\Jetpack\Third_Party\Domain_Mapping constructor.
55 */
56 private function __construct() {
57 add_action( 'plugins_loaded', array( $this, 'attempt_to_hook_domain_mapping_plugins' ) );
58 }
59
60 /**
61 * This function is called on the plugins_loaded action and will loop through the $test_methods
62 * to try and hook a domain mapping plugin to the Jetpack sync filters for the home_url and site_url callables.
63 */
64 public function attempt_to_hook_domain_mapping_plugins() {
65 if ( ! Constants::is_defined( 'SUNRISE' ) ) {
66 return;
67 }
68
69 $hooked = false;
70 $count = count( self::$test_methods );
71 for ( $i = 0; $i < $count && ! $hooked; $i++ ) {
72 $hooked = call_user_func( array( $this, self::$test_methods[ $i ] ) );
73 }
74 }
75
76 /**
77 * This method will test for a constant and function that are known to be used with Donncha's WordPress MU
78 * Domain Mapping plugin. If conditions are met, we hook the domain_mapping_siteurl() function to Jetpack sync
79 * filters for home_url and site_url callables.
80 *
81 * @return bool
82 */
83 public function hook_wordpress_mu_domain_mapping() {
84 if ( ! Constants::is_defined( 'SUNRISE_LOADED' ) || ! $this->function_exists( 'domain_mapping_siteurl' ) ) {
85 return false;
86 }
87
88 add_filter( 'jetpack_sync_home_url', 'domain_mapping_siteurl' );
89 add_filter( 'jetpack_sync_site_url', 'domain_mapping_siteurl' );
90
91 return true;
92 }
93
94 /**
95 * This method will test for a class and method known to be used in WPMU Dev's domain mapping plugin. If the
96 * method exists, then we'll hook the swap_to_mapped_url() to our Jetpack sync filters for home_url and site_url.
97 *
98 * @return bool
99 */
100 public function hook_wpmu_dev_domain_mapping() {
101 if ( ! $this->class_exists( 'domain_map' ) || ! $this->method_exists( 'domain_map', 'utils' ) ) {
102 return false;
103 }
104
105 $utils = $this->get_domain_mapping_utils_instance();
106 add_filter( 'jetpack_sync_home_url', array( $utils, 'swap_to_mapped_url' ) );
107 add_filter( 'jetpack_sync_site_url', array( $utils, 'swap_to_mapped_url' ) );
108
109 return true;
110 }
111
112 /*
113 * Utility Methods
114 *
115 * These methods are very minimal, and in most cases, simply pass on arguments. Why create them you ask?
116 * So that we can test.
117 */
118
119 /**
120 * Checks if a method exists.
121 *
122 * @param string $class Class name.
123 * @param string $method Method name.
124 *
125 * @return bool Returns function_exists() without modification.
126 */
127 public function method_exists( $class, $method ) {
128 return method_exists( $class, $method );
129 }
130
131 /**
132 * Checks if a class exists.
133 *
134 * @param string $class Class name.
135 *
136 * @return bool Returns class_exists() without modification.
137 */
138 public function class_exists( $class ) {
139 return class_exists( $class );
140 }
141
142 /**
143 * Checks if a function exists.
144 *
145 * @param string $function Function name.
146 *
147 * @return bool Returns function_exists() without modification.
148 */
149 public function function_exists( $function ) {
150 return function_exists( $function );
151 }
152
153 /**
154 * Returns the Domain_Map::utils() instance.
155 *
156 * @see https://github.com/wpmudev/domain-mapping/blob/master/classes/Domainmap/Utils.php
157 * @return \Domainmap_Utils
158 */
159 public function get_domain_mapping_utils_instance() {
160 return \domain_map::utils();
161 }
162 }
163
164 Domain_Mapping::init();
165