| @@ -18,9 +18,9 @@ | ||
| 18 | 18 | * @param object $model PLL_Model instance |
| 19 | 19 | */ |
| 20 | 20 | public function __construct( &$model ) { |
| 21 | 21 | parent::__construct( $model ); |
| 22 | - $this->www = ( false === strpos( $this->home, '://www.' ) ) ? '://' : '://www.'; | |
| 22 | + $this->www = false === strpos( $this->home, '://www.' ) ? '://' : '://www.'; | |
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | /** |
| 26 | 26 | * Adds the language code in url |
| @@ -32,9 +32,9 @@ | ||
| 32 | 32 | * @param object $lang language |
| 33 | 33 | * @return string modified url |
| 34 | 34 | */ |
| 35 | 35 | public function add_language_to_link( $url, $lang ) { |
| 36 | - if ( ! empty( $lang ) && false === strpos( $url, '://' . $lang->slug . '.' ) ) { | |
| 36 | + if ( ! empty( $lang ) ) { | |
| 37 | 37 | $url = $this->options['default_lang'] == $lang->slug && $this->options['hide_default'] ? $url : str_replace( $this->www, '://' . $lang->slug . '.', $url ); |
| 38 | 38 | } |
| 39 | 39 | return $url; |
| 40 | 40 | } |
| @@ -48,10 +48,8 @@ | ||
| 48 | 48 | * @param string $url url to modify |
| 49 | 49 | * @return string modified url |
| 50 | 50 | */ |
| 51 | 51 | public function remove_language_from_link( $url ) { |
| 52 | - $languages = array(); | |
| 53 | - | |
| 54 | 52 | foreach ( $this->model->get_languages_list() as $language ) { |
| 55 | 53 | if ( ! $this->options['hide_default'] || $this->options['default_lang'] != $language->slug ) { |
| 56 | 54 | $languages[] = $language->slug; |
| 57 | 55 | } |
| @@ -57,9 +55,9 @@ | ||
| 57 | 55 | } |
| 58 | 56 | } |
| 59 | 57 | |
| 60 | 58 | if ( ! empty( $languages ) ) { |
| 61 | - $url = preg_replace( '#://(' . implode( '|', $languages ) . ')\.#', $this->www, $url ); | |
| 59 | + $url = preg_replace( '#:\/\/(' . implode( '|', $languages ) . ')\.#', $this->www, $url ); | |
| 62 | 60 | } |
| 63 | 61 | |
| 64 | 62 | return $url; |
| 65 | 63 | } |
| @@ -64,8 +62,24 @@ | ||
| 64 | 62 | return $url; |
| 65 | 63 | } |
| 66 | 64 | |
| 67 | 65 | /** |
| 66 | + * Returns the language based on language code in url | |
| 67 | + * links_model interface | |
| 68 | + * | |
| 69 | + * @since 1.2 | |
| 70 | + * @since 2.0 add $url argument | |
| 71 | + * | |
| 72 | + * @param string $url optional, defaults to current url | |
| 73 | + * @return string language slug | |
| 74 | + */ | |
| 75 | + public function get_language_from_url( $url = '' ) { | |
| 76 | + $host = empty( $url ) ? $_SERVER['HTTP_HOST'] : parse_url( $url, PHP_URL_HOST ); | |
| 77 | + $pattern = '#('.implode( '|', $this->model->get_languages_list( array( 'fields' => 'slug' ) ) ).')\.#'; | |
| 78 | + return preg_match( $pattern, trailingslashit( $host ), $matches ) ? $matches[1] : ''; // $matches[1] is the slug of the requested language | |
| 79 | + } | |
| 80 | + | |
| 81 | + /** | |
| 68 | 82 | * Get hosts managed on the website |
| 69 | 83 | * |
| 70 | 84 | * @since 1.5 |
| 71 | 85 | * |
| @@ -73,9 +87,9 @@ | ||
| 73 | 87 | */ |
| 74 | 88 | public function get_hosts() { |
| 75 | 89 | $hosts = array(); |
| 76 | 90 | foreach ( $this->model->get_languages_list() as $lang ) { |
| 77 | - $hosts[ $lang->slug ] = wp_parse_url( $this->home_url( $lang ), PHP_URL_HOST ); | |
| 91 | + $hosts[] = parse_url( $this->home_url( $lang ), PHP_URL_HOST ); | |
| 78 | 92 | } |
| 79 | 93 | return $hosts; |
| 80 | 94 | } |
| 81 | 95 | } |