PluginProbe
Polylang / 2.5
Polylang v2.5
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-model.php +35 -127 3.02.5 View file →
@@ -1,133 +1,45 @@
1 1 <?php
2 -/**
3 - * @package Polylang
4 - */
5 2
6 3 /**
7 - * Links model abstract class.
4 + * Links model abstract class
8 5 *
9 6 * @since 1.5
10 7 */
11 8 abstract class PLL_Links_Model {
12 - /**
13 - * True if the child class uses pretty permalinks, false otherwise.
14 - *
15 - * @var bool
16 - */
9 + public $model, $options;
10 + public $home; // used to store the home url before it is filtered
17 11 public $using_permalinks;
18 12
19 13 /**
20 - * Stores the plugin options.
14 + * Constructor
21 15 *
22 - * @var array
23 - */
24 - public $options;
25 -
26 - /**
27 - * @var PLL_Model
28 - */
29 - public $model;
30 -
31 - /**
32 - * Stores the home url before it is filtered.
33 - *
34 - * @var string
35 - */
36 - public $home;
37 -
38 - /**
39 - * Constructor.
40 - *
41 16 * @since 1.5
42 17 *
43 - * @param PLL_Model $model PLL_Model instance.
18 + * @param object $model PLL_Model instance
44 19 */
45 20 public function __construct( &$model ) {
46 - $this->model = &$model;
21 + $this->model = &$model;
47 22 $this->options = &$model->options;
48 23
49 24 $this->home = home_url();
50 25
51 - add_filter( 'pll_languages_list', array( $this, 'pll_languages_list' ), 4 ); // After PLL_Static_Pages.
26 + add_filter( 'pll_languages_list', array( $this, 'pll_languages_list' ), 4 ); // after PLL_Static_Pages
52 27 add_filter( 'pll_after_languages_cache', array( $this, 'pll_after_languages_cache' ) );
53 28
54 - // Adds our domains or subdomains to allowed hosts for safe redirection.
29 + // adds our domains or subdomains to allowed hosts for safe redirection
55 30 add_filter( 'allowed_redirect_hosts', array( $this, 'allowed_redirect_hosts' ) );
56 31 }
57 32
58 33 /**
59 - * Adds the language code in url.
34 + * Changes the language code in url
60 35 *
61 - * @since 1.2
62 - *
63 - * @param string $url The url to modify.
64 - * @param PLL_Language $lang The language object.
65 - * @return string Modified url.
66 - */
67 - abstract public function add_language_to_link( $url, $lang );
68 -
69 - /**
70 - * Returns the url without language code.
71 - *
72 - * @since 1.2
73 - *
74 - * @param string $url The url to modify.
75 - * @return string Modified url.
76 - */
77 - abstract public function remove_language_from_link( $url );
78 -
79 - /**
80 - * Returns the link to the first page.
81 - *
82 - * @since 1.2
83 - *
84 - * @param string $url The url to modify.
85 - * @return string Modified url.
86 - */
87 - abstract public function remove_paged_from_link( $url );
88 -
89 - /**
90 - * Returns the link to a paged page.
91 - *
92 36 * @since 1.5
93 37 *
94 - * @param string $url The url to modify.
95 - * @param int $page The page number.
96 - * @return string Modified url.
38 + * @param string $url url to modify
39 + * @param object $lang language
40 + * @return string modified url
97 41 */
98 - abstract public function add_paged_to_link( $url, $page );
99 -
100 - /**
101 - * Returns the language based on language code in url.
102 - *
103 - * @since 1.2
104 - * @since 2.0 add $url argument.
105 - *
106 - * @param string $url Optional, defaults to thej current url.
107 - * @return string Language slug.
108 - */
109 - abstract public function get_language_from_url( $url = '' );
110 -
111 - /**
112 - * Returns the static front page url.
113 - *
114 - * @since 1.8
115 - *
116 - * @param PLL_Language $lang The language object.
117 - * @return string The static front page url.
118 - */
119 - abstract public function front_page_url( $lang );
120 -
121 - /**
122 - * Changes the language code in url.
123 - *
124 - * @since 1.5
125 - *
126 - * @param string $url The url to modify.
127 - * @param PLL_Language $lang The language object.
128 - * @return string Modified url.
129 - */
130 42 public function switch_language_in_link( $url, $lang ) {
131 43 $url = $this->remove_language_from_link( $url );
132 44 return $this->add_language_to_link( $url, $lang );
133 45 }
@@ -132,24 +44,24 @@
132 44 return $this->add_language_to_link( $url, $lang );
133 45 }
134 46
135 47 /**
136 - * Get hosts managed on the website.
48 + * Get hosts managed on the website
137 49 *
138 50 * @since 1.5
139 51 *
140 - * @return string[] The list of hosts.
52 + * @return array list of hosts
141 53 */
142 54 public function get_hosts() {
143 - return array( wp_parse_url( $this->home, PHP_URL_HOST ) );
55 + return array( parse_url( $this->home, PHP_URL_HOST ) );
144 56 }
145 57
146 58 /**
147 - * Returns the home url in a given language.
59 + * Returns the home url
148 60 *
149 61 * @since 1.3.1
150 62 *
151 - * @param PLL_Language $lang PLL_Language object.
63 + * @param object $lang PLL_Language object
152 64 * @return string
153 65 */
154 66 public function home_url( $lang ) {
155 67 $url = trailingslashit( $this->home );
@@ -156,31 +68,27 @@
156 68 return $this->options['hide_default'] && $lang->slug == $this->options['default_lang'] ? $url : $this->add_language_to_link( $url, $lang );
157 69 }
158 70
159 71 /**
160 - * Sets the home urls in PLL_Language.
72 + * Sets the home urls
161 73 *
162 74 * @since 1.8
163 75 *
164 - * @param PLL_Language $language PLL_Language object.
165 - * @return void
76 + * @param object $language
166 77 */
167 78 protected function set_home_url( $language ) {
168 - // We should always have a default language here, except, temporarily, in PHPUnit tests. The test here protects against PHP notices.
169 - if ( isset( $this->options['default_lang'] ) ) {
170 - $search_url = $this->home_url( $language );
171 - $home_url = empty( $language->page_on_front ) || $this->options['redirect_lang'] ? $search_url : $this->front_page_url( $language );
172 - $language->set_home_url( $search_url, $home_url );
173 - }
79 + $search_url = $this->home_url( $language );
80 + $home_url = empty( $language->page_on_front ) || $this->options['redirect_lang'] ? $search_url : $this->front_page_url( $language );
81 + $language->set_home_url( $search_url, $home_url );
174 82 }
175 83
176 84 /**
177 - * Sets the home urls and flags before the languages are persistently cached.
85 + * Sets the home urls and flags before the languages are persistently cached
178 86 *
179 87 * @since 1.8
180 88 *
181 - * @param PLL_Language[] $languages Array of PLL_Language objects.
182 - * @return PLL_Language[] Array of PLL_Language objects with home url and flag.
89 + * @param array $languages array of PLL_Language objects
90 + * @return array
183 91 */
184 92 public function pll_languages_list( $languages ) {
185 93 foreach ( $languages as $language ) {
186 94 $this->set_home_url( $language );
@@ -189,36 +97,36 @@
189 97 return $languages;
190 98 }
191 99
192 100 /**
193 - * Sets the home urls when not cached.
194 - * Sets the home urls scheme.
101 + * Sets the home urls when not cached
102 + * Sets the home urls scheme
195 103 *
196 104 * @since 1.8
197 105 *
198 - * @param PLL_Language[] $languages Array of PLL_Language objects.
199 - * @return PLL_Language[] Array of PLL_Language objects.
106 + * @param array $languages array of PLL_Language objects
107 + * @return array
200 108 */
201 109 public function pll_after_languages_cache( $languages ) {
202 110 foreach ( $languages as $language ) {
203 - // Get the home urls when not cached.
111 + // Get the home urls when not cached
204 112 if ( ( defined( 'PLL_CACHE_LANGUAGES' ) && ! PLL_CACHE_LANGUAGES ) || ( defined( 'PLL_CACHE_HOME_URL' ) && ! PLL_CACHE_HOME_URL ) ) {
205 113 $this->set_home_url( $language );
206 114 }
207 115
208 - // Ensures that the ( possibly cached ) home and flag urls use the right scheme http or https.
209 - $language->set_url_scheme();
116 + // Ensures that the ( possibly cached ) home url uses the right scheme http or https
117 + $language->set_home_url_scheme();
210 118 }
211 119 return $languages;
212 120 }
213 121
214 122 /**
215 - * Adds our domains or subdomains to allowed hosts for safe redirect.
123 + * Adds our domains or subdomains to allowed hosts for safe redirection
216 124 *
217 125 * @since 1.4.3
218 126 *
219 - * @param string[] $hosts Allowed hosts.
220 - * @return string[] Modified list of allowed hosts.
127 + * @param array $hosts allowed hosts
128 + * @return array
221 129 */
222 130 public function allowed_redirect_hosts( $hosts ) {
223 131 return array_unique( array_merge( $hosts, array_values( $this->get_hosts() ) ) );
224 132 }