]> _ Git - physioassist-wordpress.git/blob
38687e1650615f28c52c68279e6b46b9584f2ffd
[physioassist-wordpress.git] /
1 <?php
2
3 class WPML_URL_Converter_Domain_Strategy extends WPML_URL_Converter_Abstract_Strategy {
4
5         /** @var string[] $domains */
6         private $domains = array();
7
8         /**
9          * @param array       $domains
10          * @param string      $default_language
11          * @param array       $active_languages
12          */
13         public function __construct(
14                 $domains,
15                 $default_language,
16                 $active_languages
17         ) {
18                 parent::__construct( $default_language, $active_languages );
19
20                 $this->domains = $this->strip_protocol( array_map( 'trailingslashit', $domains ) );
21                 if ( isset( $this->domains[ $default_language ] ) ) {
22                         unset( $this->domains[ $default_language ] );
23                 }
24         }
25
26         public function get_lang_from_url_string( $url ) {
27                 $url = $this->strip_protocol( $url );
28
29                 if ( strpos( $url, '?' ) ) {
30                         $parts = explode( '?', $url );
31                         $url   = $parts[0];
32                 }
33
34                 foreach ( $this->domains as $code => $domain ) {
35                         if ( strpos( trailingslashit( $url ), $domain ) === 0 ) {
36                                 return $code;
37                         }
38                 }
39
40                 return null;
41         }
42
43         public function convert_url_string( $source_url, $lang ) {
44                 $original_source_url = untrailingslashit( $source_url );
45                 if ( is_admin() && $this->get_url_helper()->is_url_admin( $original_source_url ) ) {
46                         return $original_source_url;
47                 }
48
49                 $base_url = isset( $this->domains[ $lang ] ) ? $this->domains[ $lang ] : $this->get_url_helper()->get_abs_home();
50                 $base_url = trailingslashit( $base_url );
51                 $base_url = preg_replace(
52                         array( '#^(http(?:s?))://#', '#(\w/).+$#' ),
53                         array( '', '$1' ),
54                         $base_url
55                 );
56
57                 $original_source_url = strpos( $original_source_url, '?' ) !== false
58                         ? $original_source_url
59                         : trailingslashit( $original_source_url );
60
61                 $converted_url = preg_replace(
62                         '#^(https?://)?([^?\/]*)\/?#',
63                         '${1}' . $base_url,
64                         $original_source_url
65                 );
66
67                 return $this->slash_helper->maybe_user_trailingslashit( $converted_url, 'untrailingslashit' );
68         }
69
70         /**
71          * @param string $url
72          * @param string $langauge
73          *
74          * @return string
75          */
76         public function get_home_url_relative( $url, $language ) {
77                 return $url;
78         }
79
80         /**
81          * @param array|string $url
82          *
83          * @return array|string
84          */
85         private function strip_protocol( $url ) {
86                 return preg_replace( '#^(http(?:s?))://#', '', $url );
87         }
88 }