]> _ Git - physioassist-wordpress.git/blob
55579edaa2dcd1c923e276fd40aa08d75fa2fb79
[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 ( ! $lang_code ) {
11                         $lang_code = $this->default_language;
12                 }
13                 if ( $lang_code === $this->default_language ) {
14                         $lang_code = '';
15                 }
16
17                 $source_url = $this->fix_query_structure( $source_url );
18
19                 $source_url = $this->fix_trailingslashit( $source_url );
20
21                 $query = wpml_parse_url( $source_url, PHP_URL_QUERY );
22                 if ( false !== strpos( $query, 'lang=' ) ) {
23                         $source_url = remove_query_arg( 'lang', $source_url );
24                 }
25
26                 if ( ! empty( $lang_code ) ) {
27                         $source_url = add_query_arg( 'lang', $lang_code, $source_url );
28                 }
29
30                 return  $source_url ;
31         }
32
33         /**
34          * @param string $url
35          * @param string $langauge
36          *
37          * @return string
38          */
39         public function get_home_url_relative( $url, $language ) {
40                 if ( $language === $this->default_language ) {
41                         $language = '';
42                 }
43
44                 if ( $language ) {
45                         return add_query_arg( 'lang', $language, $url );
46                 } else {
47                         return $url;
48                 }
49         }
50
51         /**
52          * Replace double ? to &
53          *
54          * @param string $url
55          *
56          * @return string
57          */
58         private function fix_query_structure( $url ) {
59                 $query = wpml_parse_url( $url, PHP_URL_QUERY );
60                 $new_query = str_replace( '?', '&', $query );
61
62                 return str_replace( $query, $new_query, $url );
63         }
64
65         /**
66          * @param string $source_url
67          *
68          * @return string
69          */
70         public function fix_trailingslashit( $source_url ) {
71                 $query = wpml_parse_url( $source_url, PHP_URL_QUERY );
72                 if ( ! empty( $query ) ) {
73                         $source_url = str_replace( '?' . $query, '', $source_url );
74                 }
75
76                 $source_url = $this->slash_helper->maybe_user_trailingslashit( $source_url, 'trailingslashit' );
77
78                 if ( ! empty( $query ) ) {
79                         $source_url .= '?' . untrailingslashit( $query );
80                 }
81
82                 return $source_url;
83         }
84 }