PluginProbe
Polylang / 3.1
Polylang v3.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
← All changes | frontend/frontend.php +77 -33 2.93.1 View file →
@@ -3,39 +3,73 @@
3 3 * @package Polylang
4 4 */
5 5
6 6 /**
7 - * Frontend controller
8 - * accessible as $polylang global object
7 + * Main Polylang class when on frontend, accessible from @see PLL().
9 8 *
10 - * Properties:
11 - * options => inherited, reference to Polylang options array
12 - * model => inherited, reference to PLL_Model object
13 - * links_model => inherited, reference to PLL_Links_Model object
14 - * links => reference to PLL_Links object
15 - * static_pages => reference to PLL_Frontend_Static_Pages object
16 - * choose_lang => reference to PLL_Choose_Lang object
17 - * curlang => current language
18 - * filters => reference to PLL_Frontend_Filters object
19 - * filters_links => reference to PLL_Frontend_Filters_Links object
20 - * filters_search => reference to PLL_Frontend_Filters_Search object
21 - * posts => reference to PLL_CRUD_Posts object
22 - * terms => reference to PLL_CRUD_Terms object
23 - * nav_menu => reference to PLL_Frontend_Nav_Menu object
24 - * auto_translate => optional, reference to PLL_Auto_Translate object
25 - *
26 9 * @since 1.2
27 10 */
28 11 class PLL_Frontend extends PLL_Base {
12 + /**
13 + * Current language.
14 + *
15 + * @var PLL_Language
16 + */
29 17 public $curlang;
30 - public $links, $choose_lang, $filters, $filters_search, $nav_menu, $auto_translate;
31 18
32 19 /**
33 - * Constructor
20 + * @var PLL_Frontend_Auto_Translate
21 + */
22 + public $auto_translate;
23 +
24 + /**
25 + * The class selecting the current language.
34 26 *
27 + * @var PLL_Choose_Lang
28 + */
29 + public $choose_lang;
30 +
31 + /**
32 + * @var PLL_Frontend_Filters
33 + */
34 + public $filters;
35 +
36 + /**
37 + * @var PLL_Frontend_Filters_Links
38 + */
39 + public $filters_links;
40 +
41 + /**
42 + * @var PLL_Frontend_Filters_Search
43 + */
44 + public $filters_search;
45 +
46 + /**
47 + * @var PLL_Frontend_Links
48 + */
49 + public $links;
50 +
51 + /**
52 + * @var PLL_Frontend_Nav_Menu
53 + */
54 + public $nav_menu;
55 +
56 + /**
57 + * @var PLL_Frontend_Static_Pages
58 + */
59 + public $static_pages;
60 +
61 + /**
62 + * @var PLL_Frontend_Filters_Widgets
63 + */
64 + public $filters_widgets;
65 +
66 + /**
67 + * Constructor.
68 + *
35 69 * @since 1.2
36 70 *
37 - * @param object $links_model
71 + * @param PLL_Links_Model $links_model Reference to the links model.
38 72 */
39 73 public function __construct( &$links_model ) {
40 74 parent::__construct( $links_model );
41 75
@@ -81,8 +115,10 @@
81 115 /**
82 116 * Setups filters and nav menus once the language has been defined
83 117 *
84 118 * @since 1.2
119 + *
120 + * @return void
85 121 */
86 122 public function pll_language_defined() {
87 123 // Filters
88 124 $this->filters_links = new PLL_Frontend_Filters_Links( $this );
@@ -87,8 +123,9 @@
87 123 // Filters
88 124 $this->filters_links = new PLL_Frontend_Filters_Links( $this );
89 125 $this->filters = new PLL_Frontend_Filters( $this );
90 126 $this->filters_search = new PLL_Frontend_Filters_Search( $this );
127 + $this->filters_widgets = new PLL_Frontend_Filters_Widgets( $this );
91 128
92 129 // Auto translate for Ajax
93 130 if ( ( ! defined( 'PLL_AUTO_TRANSLATE' ) || PLL_AUTO_TRANSLATE ) && wp_doing_ajax() ) {
94 131 $this->auto_translate();
@@ -95,13 +132,14 @@
95 132 }
96 133 }
97 134
98 135 /**
99 - * When querying multiple taxonomies, makes sure that the language is not the queried object
136 + * When querying multiple taxonomies, makes sure that the language is not the queried object.
100 137 *
101 138 * @since 1.8
102 139 *
103 - * @param object $query WP_Query object
140 + * @param WP_Query $query WP_Query object.
141 + * @return void
104 142 */
105 143 public function parse_tax_query( $query ) {
106 144 $pll_query = new PLL_Query( $query, $this->model );
107 145 $queried_taxonomies = $pll_query->get_queried_taxonomies();
@@ -111,13 +149,14 @@
111 149 }
112 150 }
113 151
114 152 /**
115 - * Modifies some query vars to "hide" that the language is a taxonomy and avoid conflicts
153 + * Modifies some query vars to "hide" that the language is a taxonomy and avoid conflicts.
116 154 *
117 155 * @since 1.2
118 156 *
119 - * @param object $query WP_Query object
157 + * @param WP_Query $query WP_Query object.
158 + * @return void
120 159 */
121 160 public function parse_query( $query ) {
122 161 $qv = $query->query_vars;
123 162 $pll_query = new PLL_Query( $query, $this->model );
@@ -156,8 +195,10 @@
156 195 /**
157 196 * Auto translate posts and terms ids
158 197 *
159 198 * @since 1.2
199 + *
200 + * @return void
160 201 */
161 202 public function auto_translate() {
162 203 $this->auto_translate = new PLL_Frontend_Auto_Translate( $this );
163 204 }
@@ -162,22 +203,25 @@
162 203 $this->auto_translate = new PLL_Frontend_Auto_Translate( $this );
163 204 }
164 205
165 206 /**
166 - * Resets some variables when switching blog
167 - * Overrides parent method
207 + * Resets some variables when the blog is switched.
208 + * Overrides the parent method.
168 209 *
169 210 * @since 1.5.1
170 211 *
171 - * @param int $new_blog
172 - * @param int $old_blog
212 + * @param int $new_blog_id New blog ID.
213 + * @param int $prev_blog_id Previous blog ID.
214 + * @return void
173 215 */
174 - public function switch_blog( $new_blog, $old_blog ) {
175 - // Need to check that some languages are defined when user is logged in, has several blogs, some without any languages
176 - if ( parent::switch_blog( $new_blog, $old_blog ) && did_action( 'pll_language_defined' ) && $this->model->get_languages_list() ) {
216 + public function switch_blog( $new_blog_id, $prev_blog_id ) {
217 + parent::switch_blog( $new_blog_id, $prev_blog_id );
218 +
219 + // Need to check that some languages are defined when user is logged in, has several blogs, some without any languages.
220 + if ( $this->is_active_on_new_blog( $new_blog_id, $prev_blog_id ) && did_action( 'pll_language_defined' ) && $this->model->get_languages_list() ) {
177 221 static $restore_curlang;
178 222 if ( empty( $restore_curlang ) ) {
179 - $restore_curlang = $this->curlang->slug; // To always remember the current language through blogs
223 + $restore_curlang = $this->curlang->slug; // To always remember the current language through blogs.
180 224 }
181 225
182 226 $lang = $this->model->get_language( $restore_curlang );
183 227 $this->curlang = $lang ? $lang : $this->model->get_language( $this->options['default_lang'] );