PluginProbe
Media Cloud Sync / 1.2.0
Media Cloud Sync v1.2.0
1.4.2 1.4.1 1.4.0 1.3.12 1.3.11 1.3.10 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.2.0 1.2.10 1.2.11 1.2.12 1.2.13 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 All 36 releases
media-cloud-sync / includes / filters / filters.php

filters.php in Media Cloud Sync 1.2.0, at includes/filters/filters.php

146 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Dudlewebs\WPMCS;
4
5 defined('ABSPATH') || exit;
6
7 class Filter {
8 /**
9 * Get an array of bare base_urls that can be used for uploaded items.
10 *
11 * @param bool $refresh Refresh cached domains, default false.
12 *
13 * @return array
14 */
15 public static function get_bare_upload_base_urls( $refresh = false ) {
16 static $base_urls = array();
17
18 if ( $refresh || empty( $base_urls ) ) {
19 $domains = array();
20
21 // Original domain and path.
22 $uploads = wp_upload_dir();
23 $base_url = Utils::remove_scheme( $uploads['baseurl'] );
24 $orig_domain = Utils::parse_url( $base_url, PHP_URL_HOST );
25 $port = Utils::parse_url( $base_url, PHP_URL_PORT );
26 if ( ! empty( $port ) ) {
27 $orig_domain .= ':' . $port;
28 }
29
30 $domains[] = $orig_domain;
31 $base_urls = array( $base_url );
32
33 // Current domain and path after potential domain mapping.
34 $base_url = self::maybe_fix_server_subsite_url( $uploads['baseurl'] );
35 $base_url = Utils::remove_scheme( $base_url );
36 $curr_domain = Utils::parse_url( $base_url, PHP_URL_HOST );
37 $port = Utils::parse_url( $base_url, PHP_URL_PORT );
38 if ( ! empty( $port ) ) {
39 $curr_domain .= ':' . $port;
40 }
41
42 if ( $curr_domain !== $orig_domain ) {
43 $domains[] = $curr_domain;
44 }
45
46 /**
47 * Allow alteration of the server domains that can be matched on.
48 *
49 * @param array $domains
50 */
51 $domains = apply_filters( 'wpmcs_server_domains', $domains );
52
53 if ( ! empty( $domains ) ) {
54 foreach ( array_unique( $domains ) as $match_domain ) {
55 $base_urls[] = substr_replace( $base_url, $match_domain, 2, strlen( $curr_domain ) );
56 }
57 }
58 }
59
60 return array_unique( $base_urls );
61 }
62
63
64 /**
65 * Get an array of domain names that can be used for remote items.
66 *
67 * @param bool $refresh Refresh cached domains, default false.
68 *
69 * @return array
70 */
71 public static function get_remote_domains( $refresh = false ) {
72 static $domains = array();
73
74 if ( $refresh || empty( $domains ) ) {
75 global $wpmcsService;
76 $domain = $wpmcsService->get_domain();
77 $settings = Utils::get_settings();
78 if (
79 isset($settings['enable_cdn']) && $settings['enable_cdn'] &&
80 isset($settings['cdn_url']) && !empty($settings['cdn_url'])
81 ) {
82 $cdn_base_url = Utils::remove_scheme( $settings['cdn_url'] );
83 $cdn_domain = Utils::parse_url( $cdn_base_url, PHP_URL_HOST );
84 $cdn_port = Utils::parse_url( $cdn_base_url, PHP_URL_PORT );
85 if ( ! empty( $cdn_port ) ) {
86 $cdn_domain .= ':' . $cdn_port;
87 }
88 $domains[] = $cdn_domain;
89 }
90
91
92 $base_url = Utils::remove_scheme( $domain );
93 $curr_domain = Utils::parse_url( $base_url, PHP_URL_HOST );
94 $port = Utils::parse_url( $base_url, PHP_URL_PORT );
95 if ( ! empty( $port ) ) {
96 $curr_domain .= ':' . $port;
97 }
98 $domains[] = $curr_domain;
99
100 /**
101 * Allow alteration of the remote domains that can be matched on.
102 *
103 * @param array $domains
104 */
105 $domains = array_unique( apply_filters( 'wpmcs_remote_domains', $domains ) );
106 }
107
108 return $domains;
109 }
110
111 /**
112 * Ensure server URL is correct for multisite's non-primary subsites.
113 *
114 * @param string $url
115 *
116 * @return string
117 */
118 public static function maybe_fix_server_subsite_url( $url ) {
119 $siteurl = trailingslashit( get_option( 'siteurl' ) );
120
121 if ( is_multisite() && ! self::is_current_blog( get_current_blog_id() ) && 0 !== strpos( $url, $siteurl ) ) {
122 // Replace original URL with subsite's current URL.
123 $orig_siteurl = trailingslashit( apply_filters( 'wpmcs_get_original_siteurl', network_site_url() ) );
124 $url = str_replace( $orig_siteurl, $siteurl, $url );
125 }
126
127 return $url;
128 }
129
130 /**
131 * Is the current blog ID that specified in wp-config.php
132 *
133 * @param int $blog_id
134 *
135 * @return bool
136 */
137 public static function is_current_blog( $blog_id ) {
138 $default = defined( 'BLOG_ID_CURRENT_SITE' ) ? BLOG_ID_CURRENT_SITE : 1;
139
140 if ( $default === $blog_id ) {
141 return true;
142 }
143
144 return false;
145 }
146 }