PluginProbe
Polylang / 1.9.2
Polylang v1.9.2
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-domain.php

links-domain.php in Polylang 1.9.2, at include/links-domain.php

113 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Links model for use when using one domain per language
5 * for example mysite.com/sth and mysite.fr/qqch
6 * implements the "links_model interface"
7 *
8 * @since 1.2
9 */
10 class PLL_Links_Domain extends PLL_Links_Permalinks {
11
12 /**
13 * Constructor
14 *
15 * @since 1.8
16 *
17 * @param object $model PLL_Model instance
18 */
19 public function __construct( &$model ) {
20 parent::__construct( $model );
21
22 add_filter( 'site_url', array( &$this, 'site_url' ) );
23 }
24
25
26 /**
27 * Adds the language code in url
28 * links_model interface
29 *
30 * @since 1.2
31 *
32 * @param string $url url to modify
33 * @param object $lang language
34 * @return string modified url
35 */
36 public function add_language_to_link( $url, $lang ) {
37 if ( ! empty( $lang ) && ! empty( $this->options['domains'][ $lang->slug ] ) ) {
38 $url = str_replace( $this->home, $this->options['domains'][ $lang->slug ], $url );
39 }
40 return $url;
41 }
42
43 /**
44 * Returns the url without language code
45 * links_model interface
46 *
47 * @since 1.2
48 *
49 * @param string $url url to modify
50 * @return string modified url
51 */
52 public function remove_language_from_link( $url ) {
53 if ( ! empty( $this->options['domains'] ) ) {
54 $url = str_replace( ( is_ssl() ? 'https://' : 'http://' ) . parse_url( $url, PHP_URL_HOST ) . parse_url( $this->home, PHP_URL_PATH ), $this->home, $url );
55 }
56 return $url;
57 }
58
59 /**
60 * Returns the language based on language code in url
61 * links_model interface
62 *
63 * @since 1.2
64 *
65 * @return string language slug
66 */
67 public function get_language_from_url() {
68 return ( $lang = array_search( ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . parse_url( $this->home, PHP_URL_PATH ), $this->options['domains'] ) ) ? $lang : '';
69 }
70
71 /**
72 * Returns the home url
73 * links_model interface
74 *
75 * @since 1.3.1
76 *
77 * @param object $lang PLL_Language object
78 * @return string
79 */
80 function home_url( $lang ) {
81 return trailingslashit( empty( $this->options['domains'][ $lang->slug ] ) ? $this->home : $this->options['domains'][ $lang->slug ] );
82 }
83
84 /**
85 * Get hosts managed on the website
86 *
87 * @since 1.5
88 *
89 * @return array list of hosts
90 */
91 public function get_hosts() {
92 $hosts = array();
93 foreach ( $this->options['domains'] as $domain ) {
94 $hosts[] = parse_url( $domain, PHP_URL_HOST );
95 }
96 return $hosts;
97 }
98
99 /**
100 * Returns the correct site url ( mainly to get the correct login form )
101 *
102 * @since 1.8
103 *
104 * @param string $url
105 * @return string
106 */
107 public function site_url( $url ) {
108 $lang = $this->get_language_from_url();
109 $lang = $this->model->get_language( $lang );
110 return $this->add_language_to_link( $url, $lang );
111 }
112 }
113