PluginProbe
Polylang / 2.3.10
Polylang v2.3.10
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 / base.php

base.php in Polylang 2.3.10, at include/base.php

128 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Base class for both admin and frontend
5 *
6 * @since 1.2
7 */
8 abstract class PLL_Base {
9 public $links_model, $model, $options;
10
11 /**
12 * Constructor
13 *
14 * @since 1.2
15 *
16 * @param object $links_model
17 */
18 public function __construct( &$links_model ) {
19 $this->links_model = &$links_model;
20 $this->model = &$links_model->model;
21 $this->options = &$this->model->options;
22
23 $GLOBALS['l10n_unloaded']['pll_string'] = true; // Short-circuit _load_textdomain_just_in_time() for 'pll_string' domain in WP 4.6+
24
25 add_action( 'widgets_init', array( $this, 'widgets_init' ) );
26
27 // User defined strings translations
28 add_action( 'pll_language_defined', array( $this, 'load_strings_translations' ), 5 );
29 add_action( 'change_locale', array( $this, 'load_strings_translations' ) ); // Since WP 4.7
30
31 // Switch_to_blog
32 add_action( 'switch_blog', array( $this, 'switch_blog' ), 10, 2 );
33 }
34
35 /**
36 * Registers our widgets
37 *
38 * @since 0.1
39 */
40 public function widgets_init() {
41 register_widget( 'PLL_Widget_Languages' );
42
43 // Overwrites the calendar widget to filter posts by language
44 if ( ! defined( 'PLL_WIDGET_CALENDAR' ) || PLL_WIDGET_CALENDAR ) {
45 unregister_widget( 'WP_Widget_Calendar' );
46 register_widget( 'PLL_Widget_Calendar' );
47 }
48 }
49
50 /**
51 * Loads user defined strings translations
52 *
53 * @since 1.2
54 * @since 2.1.3 $locale parameter added.
55 *
56 * @param string $locale Locale. Defaults to current locale.
57 */
58 public function load_strings_translations( $locale = '' ) {
59 if ( empty( $locale ) ) {
60 $locale = get_locale();
61 }
62
63 $language = $this->model->get_language( $locale );
64
65 if ( ! empty( $language ) ) {
66 $mo = new PLL_MO();
67 $mo->import_from_db( $language );
68 $GLOBALS['l10n']['pll_string'] = &$mo;
69 } else {
70 unset( $GLOBALS['l10n']['pll_string'] );
71 }
72 }
73
74 /**
75 * Resets some variables when switching blog
76 * Applies only if Polylang is active on the new blog
77 *
78 * @since 1.5.1
79 *
80 * @param int $new_blog
81 * @param int $old_blog
82 * @return bool not used by WP but by child class
83 */
84 public function switch_blog( $new_blog, $old_blog ) {
85 $plugins = ( $sitewide_plugins = get_site_option( 'active_sitewide_plugins' ) ) && is_array( $sitewide_plugins ) ? array_keys( $sitewide_plugins ) : array();
86 $plugins = array_merge( $plugins, get_option( 'active_plugins', array() ) );
87
88 // 2nd test needed when Polylang is not networked activated
89 // 3rd test needed when Polylang is networked activated and a new site is created
90 if ( $new_blog != $old_blog && in_array( POLYLANG_BASENAME, $plugins ) && get_option( 'polylang' ) ) {
91 $this->options = get_option( 'polylang' ); // Needed for menus
92 remove_action( 'pre_option_rewrite_rules', array( $this->links_model, 'prepare_rewrite_rules' ) );
93 $this->links_model = $this->model->get_links_model();
94 return true;
95 }
96 return false;
97 }
98
99 /**
100 * Some backward compatibility with Polylang < 1.2
101 * Allows for example to call $polylang->get_languages_list() instead of $polylang->model->get_languages_list()
102 * This works but should be slower than the direct call, thus an error is triggered in debug mode
103 *
104 * @since 1.2
105 *
106 * @param string $func function name
107 * @param array $args function arguments
108 */
109 public function __call( $func, $args ) {
110 foreach ( $this as $prop => &$obj ) {
111 if ( is_object( $obj ) && method_exists( $obj, $func ) ) {
112 if ( WP_DEBUG ) {
113 $debug = debug_backtrace();
114 $i = 1 + empty( $debug[1]['line'] ); // The file and line are in $debug[2] if the function was called using call_user_func
115 trigger_error( sprintf(
116 '%1$s was called incorrectly in %3$s on line %4$s: the call to $polylang->%1$s() has been deprecated in Polylang 1.2, use PLL()->%2$s->%1$s() instead.' . "\nError handler",
117 $func, $prop, $debug[ $i ]['file'], $debug[ $i ]['line']
118 ) );
119 }
120 return call_user_func_array( array( $obj, $func ), $args );
121 }
122 }
123
124 $debug = debug_backtrace();
125 trigger_error( sprintf( 'Call to undefined function PLL()->%1$s() in %2$s on line %3$s' . "\nError handler", $func, $debug[0]['file'], $debug[0]['line'] ), E_USER_ERROR );
126 }
127 }
128