PluginProbe
Media Cloud Sync / trunk
Media Cloud Sync vtrunk
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 1.2.9 1.3.0 All 34 releases
media-cloud-sync / includes / filters / filters.php

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

145 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 $domain = Service::instance()->get_domain();
76 $settings = Utils::get_settings();
77 if (
78 isset($settings['enable_cdn']) && $settings['enable_cdn'] &&
79 isset($settings['cdn_url']) && !empty($settings['cdn_url'])
80 ) {
81 $cdn_base_url = Utils::remove_scheme( $settings['cdn_url'] );
82 $cdn_domain = Utils::parse_url( $cdn_base_url, PHP_URL_HOST );
83 $cdn_port = Utils::parse_url( $cdn_base_url, PHP_URL_PORT );
84 if ( ! empty( $cdn_port ) ) {
85 $cdn_domain .= ':' . $cdn_port;
86 }
87 $domains[] = $cdn_domain;
88 }
89
90
91 $base_url = Utils::remove_scheme( $domain );
92 $curr_domain = Utils::parse_url( $base_url, PHP_URL_HOST );
93 $port = Utils::parse_url( $base_url, PHP_URL_PORT );
94 if ( ! empty( $port ) ) {
95 $curr_domain .= ':' . $port;
96 }
97 $domains[] = $curr_domain;
98
99 /**
100 * Allow alteration of the remote domains that can be matched on.
101 *
102 * @param array $domains
103 */
104 $domains = array_unique( apply_filters( 'wpmcs_remote_domains', $domains ) );
105 }
106
107 return $domains;
108 }
109
110 /**
111 * Ensure server URL is correct for multisite's non-primary subsites.
112 *
113 * @param string $url
114 *
115 * @return string
116 */
117 public static function maybe_fix_server_subsite_url( $url ) {
118 $siteurl = trailingslashit( get_option( 'siteurl' ) );
119
120 if ( is_multisite() && ! self::is_current_blog( get_current_blog_id() ) && 0 !== strpos( $url, $siteurl ) ) {
121 // Replace original URL with subsite's current URL.
122 $orig_siteurl = trailingslashit( apply_filters( 'wpmcs_get_original_siteurl', network_site_url() ) );
123 $url = str_replace( $orig_siteurl, $siteurl, $url );
124 }
125
126 return $url;
127 }
128
129 /**
130 * Is the current blog ID that specified in wp-config.php
131 *
132 * @param int $blog_id
133 *
134 * @return bool
135 */
136 public static function is_current_blog( $blog_id ) {
137 $default = defined( 'BLOG_ID_CURRENT_SITE' ) ? BLOG_ID_CURRENT_SITE : 1;
138
139 if ( $default === $blog_id ) {
140 return true;
141 }
142
143 return false;
144 }
145 }