PluginProbe
Polylang / 2.0.2
Polylang v2.0.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 2.0.2, at include/links-domain.php

103 lines 2.5 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_Abstract_Domain {
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 // Filrer the site url ( mainly to get the correct login form )
23 add_filter( 'site_url', array( $this, 'site_url' ) );
24 }
25
26
27 /**
28 * Adds the language code in url
29 * links_model interface
30 *
31 * @since 1.2
32 *
33 * @param string $url url to modify
34 * @param object $lang language
35 * @return string modified url
36 */
37 public function add_language_to_link( $url, $lang ) {
38 if ( ! empty( $lang ) && ! empty( $this->options['domains'][ $lang->slug ] ) ) {
39 $url = str_replace( $this->home, $this->options['domains'][ $lang->slug ], $url );
40 }
41 return $url;
42 }
43
44 /**
45 * Returns the url without language code
46 * links_model interface
47 *
48 * @since 1.2
49 *
50 * @param string $url url to modify
51 * @return string modified url
52 */
53 public function remove_language_from_link( $url ) {
54 if ( ! empty( $this->options['domains'] ) ) {
55 $url = str_replace( ( is_ssl() ? 'https://' : 'http://' ) . parse_url( $url, PHP_URL_HOST ) . parse_url( $this->home, PHP_URL_PATH ), $this->home, $url );
56 }
57 return $url;
58 }
59
60 /**
61 * Returns the language based on language code in url
62 * links_model interface
63 *
64 * @since 1.2
65 * @since 2.0 add $url argument
66 *
67 * @param string $url optional, defaults to current url
68 * @return string language slug
69 */
70 public function get_language_from_url( $url = '' ) {
71 $host = empty( $url ) ? $_SERVER['HTTP_HOST'] : parse_url( $url, PHP_URL_HOST );
72 return ( $lang = array_search( ( is_ssl() ? 'https://' : 'http://' ) . $host . parse_url( $this->home, PHP_URL_PATH ), $this->options['domains'] ) ) ? $lang : '';
73 }
74
75 /**
76 * Returns the home url
77 * links_model interface
78 *
79 * @since 1.3.1
80 *
81 * @param object $lang PLL_Language object
82 * @return string
83 */
84 function home_url( $lang ) {
85 return trailingslashit( empty( $this->options['domains'][ $lang->slug ] ) ? $this->home : $this->options['domains'][ $lang->slug ] );
86 }
87
88 /**
89 * Get hosts managed on the website
90 *
91 * @since 1.5
92 *
93 * @return array list of hosts
94 */
95 public function get_hosts() {
96 $hosts = array();
97 foreach ( $this->options['domains'] as $domain ) {
98 $hosts[] = parse_url( $domain, PHP_URL_HOST );
99 }
100 return $hosts;
101 }
102 }
103