PluginProbe
Polylang / 2.8.1
Polylang v2.8.1
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
polylang / include / links-subdomain.php

links-subdomain.php in Polylang 2.8.1, at include/links-subdomain.php

85 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package Polylang
4 */
5
6 /**
7 * Links model for use when the language code is added in url as a subdomain
8 * for example en.mysite.com/something
9 * implements the "links_model interface"
10 *
11 * @since 1.2
12 */
13 class PLL_Links_Subdomain extends PLL_Links_Abstract_Domain {
14 protected $www;
15
16 /**
17 * Constructor
18 *
19 * @since 1.7.4
20 *
21 * @param object $model PLL_Model instance
22 */
23 public function __construct( &$model ) {
24 parent::__construct( $model );
25 $this->www = ( false === strpos( $this->home, '://www.' ) ) ? '://' : '://www.';
26 }
27
28 /**
29 * Adds the language code in url
30 * links_model interface
31 *
32 * @since 1.2
33 *
34 * @param string $url url to modify
35 * @param object $lang language
36 * @return string modified url
37 */
38 public function add_language_to_link( $url, $lang ) {
39 if ( ! empty( $lang ) && false === strpos( $url, '://' . $lang->slug . '.' ) ) {
40 $url = $this->options['default_lang'] == $lang->slug && $this->options['hide_default'] ? $url : str_replace( $this->www, '://' . $lang->slug . '.', $url );
41 }
42 return $url;
43 }
44
45 /**
46 * Returns the url without language code
47 * links_model interface
48 *
49 * @since 1.2
50 *
51 * @param string $url url to modify
52 * @return string modified url
53 */
54 public function remove_language_from_link( $url ) {
55 $languages = array();
56
57 foreach ( $this->model->get_languages_list() as $language ) {
58 if ( ! $this->options['hide_default'] || $this->options['default_lang'] != $language->slug ) {
59 $languages[] = $language->slug;
60 }
61 }
62
63 if ( ! empty( $languages ) ) {
64 $url = preg_replace( '#://(' . implode( '|', $languages ) . ')\.#', $this->www, $url );
65 }
66
67 return $url;
68 }
69
70 /**
71 * Get hosts managed on the website
72 *
73 * @since 1.5
74 *
75 * @return array list of hosts
76 */
77 public function get_hosts() {
78 $hosts = array();
79 foreach ( $this->model->get_languages_list() as $lang ) {
80 $hosts[ $lang->slug ] = wp_parse_url( $this->home_url( $lang ), PHP_URL_HOST );
81 }
82 return $hosts;
83 }
84 }
85