PluginProbe
Polylang / 2.0.12
Polylang v2.0.12
3.8.9 3.8.8 3.8.7 3.8.6 3.8.5 3.8.4 3.8.3 2.7 2.7.0.1 2.7.1 2.7.2 2.7.3 2.7.4 2.8 2.8.1 2.8.2 2.8.3 2.8.4 2.9 2.9.1 2.9.2 3.0 3.0.1 3.0.2 3.0.3 All 233 releases
← All changes | include/links-subdomain.php +20 -9 2.8.32.0.12 View file →
@@ -1,8 +1,5 @@
1 1 <?php
2 -/**
3 - * @package Polylang
4 - */
5 2
6 3 /**
7 4 * Links model for use when the language code is added in url as a subdomain
8 5 * for example en.mysite.com/something
@@ -21,9 +18,9 @@
21 18 * @param object $model PLL_Model instance
22 19 */
23 20 public function __construct( &$model ) {
24 21 parent::__construct( $model );
25 - $this->www = ( false === strpos( $this->home, '://www.' ) ) ? '://' : '://www.';
22 + $this->www = false === strpos( $this->home, '://www.' ) ? '://' : '://www.';
26 23 }
27 24
28 25 /**
29 26 * Adds the language code in url
@@ -35,9 +32,9 @@
35 32 * @param object $lang language
36 33 * @return string modified url
37 34 */
38 35 public function add_language_to_link( $url, $lang ) {
39 - if ( ! empty( $lang ) && false === strpos( $url, '://' . $lang->slug . '.' ) ) {
36 + if ( ! empty( $lang ) ) {
40 37 $url = $this->options['default_lang'] == $lang->slug && $this->options['hide_default'] ? $url : str_replace( $this->www, '://' . $lang->slug . '.', $url );
41 38 }
42 39 return $url;
43 40 }
@@ -51,10 +48,8 @@
51 48 * @param string $url url to modify
52 49 * @return string modified url
53 50 */
54 51 public function remove_language_from_link( $url ) {
55 - $languages = array();
56 -
57 52 foreach ( $this->model->get_languages_list() as $language ) {
58 53 if ( ! $this->options['hide_default'] || $this->options['default_lang'] != $language->slug ) {
59 54 $languages[] = $language->slug;
60 55 }
@@ -60,9 +55,9 @@
60 55 }
61 56 }
62 57
63 58 if ( ! empty( $languages ) ) {
64 - $url = preg_replace( '#://(' . implode( '|', $languages ) . ')\.#', $this->www, $url );
59 + $url = preg_replace( '#:\/\/(' . implode( '|', $languages ) . ')\.#', $this->www, $url );
65 60 }
66 61
67 62 return $url;
68 63 }
@@ -67,8 +62,24 @@
67 62 return $url;
68 63 }
69 64
70 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 + /**
71 82 * Get hosts managed on the website
72 83 *
73 84 * @since 1.5
74 85 *
@@ -76,9 +87,9 @@
76 87 */
77 88 public function get_hosts() {
78 89 $hosts = array();
79 90 foreach ( $this->model->get_languages_list() as $lang ) {
80 - $hosts[ $lang->slug ] = wp_parse_url( $this->home_url( $lang ), PHP_URL_HOST );
91 + $hosts[] = parse_url( $this->home_url( $lang ), PHP_URL_HOST );
81 92 }
82 93 return $hosts;
83 94 }
84 95 }