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 -6 2.7.42.0.12 View file →
@@ -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 }