]> _ Git - physioassist-wordpress.git/blob
f61f9888a550458879a09fefe6014a2af2d1fa73
[physioassist-wordpress.git] /
1 <?php
2
3 class WPML_URL_Converter_Parameter_Strategy extends WPML_URL_Converter_Abstract_Strategy {
4
5         public function get_lang_from_url_string( $url ) {
6                 return $this->lang_param->lang_by_param( $url, false );
7         }
8
9         public function convert_url_string( $source_url, $lang_code ) {
10                 if ( $this->skip_convert_url_string( $source_url, $lang_code ) ) {
11                         return $source_url;
12                 }
13
14                 if ( ! $lang_code || $lang_code === $this->default_language ) {
15                         $lang_code = '';
16                 }
17
18                 $url_parts = wpml_parse_url( $source_url );
19                 if ( ! is_array( $url_parts ) ) {
20                         $url_parts = [];
21                 }
22                 $query_args = $this->get_query_args( $url_parts );
23
24                 if ( $lang_code ) {
25                         $query_args['lang'] = $lang_code;
26                 } else {
27                         unset( $query_args['lang'] );
28                 }
29
30                 $url_parts['query'] = http_build_query( $query_args );
31                 $converted_url      = http_build_url( $url_parts );
32
33                 return $this->slash_helper->maybe_user_trailingslashit( $converted_url );
34         }
35
36         public function convert_admin_url_string( $source_url, $lang ) {
37                 return $this->convert_url_string( $source_url, $lang );
38         }
39
40         /**
41          * @param array $url_parts
42          *
43          * @return array
44          */
45         private function get_query_args( array $url_parts ) {
46                 $query = isset( $url_parts['query'] ) ? $url_parts['query'] : '';
47                 $query = str_replace( '?', '&', $query );
48                 parse_str( $query, $query_args );
49                 return $query_args;
50         }
51
52         /**
53          * @param string $url
54          * @param string $language
55          *
56          * @return string
57          */
58         public function get_home_url_relative( $url, $language ) {
59                 if ( $language === $this->default_language ) {
60                         $language = '';
61                 }
62
63                 if ( $language ) {
64                         return add_query_arg( 'lang', $language, $url );
65                 } else {
66                         return $url;
67                 }
68         }
69
70         /**
71          * @param string $source_url
72          *
73          * @return string
74          */
75         public function fix_trailingslashit( $source_url ) {
76                 $query = wpml_parse_url( $source_url, PHP_URL_QUERY );
77                 if ( ! empty( $query ) ) {
78                         $source_url = str_replace( '?' . $query, '', $source_url );
79                 }
80
81                 $source_url = $this->slash_helper->maybe_user_trailingslashit( $source_url );
82
83                 if ( ! empty( $query ) ) {
84                         $source_url .= '?' . untrailingslashit( $query );
85                 }
86
87                 return $source_url;
88         }
89
90         public function use_wp_login_url_converter() {
91                 return true;
92         }
93 }