PluginProbe
Polylang / 2.8
Polylang v2.8
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 / admin / admin.php

admin.php in Polylang 2.8, at admin/admin.php

125 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package Polylang
4 */
5
6 /**
7 * Admin side controller
8 * accessible in $polylang global object
9 *
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 => inherited, reference to PLL_Admin_Links object
15 * static_pages => inherited, reference to PLL_Admin_Static_Pages object
16 * filters_links => inherited, reference to PLL_Filters_Links object
17 * curlang => inherited, optional, current language used to filter the content (language of the post or term being edited, equal to filter_lang otherwise)
18 * filter_lang => inherited, optional, current status of the admin languages filter (in the admin bar)
19 * pref_lang => inherited, preferred language used as default when saving posts or terms
20 * posts => reference to PLL_CRUD_Posts object
21 * terms => reference to PLL_CRUD_Terms object
22 * filters => reference to PLL_Admin_Filters object
23 * filters_columns => reference to PLL_Admin_Filters_Columns object
24 * filters_post => reference to PLL_Admin_Filters_Post object
25 * filters_term => reference to PLL_Admin_filters_Term object
26 * nav_menu => reference to PLL_Admin_Nav_Menu object
27 * block_editor => reference to PLL_Admin_Block_Editor object
28 * classic_editor => reference to PLL_Admin_Classic_Editor object
29 * filters_media => optional, reference to PLL_Admin_Filters_Media object
30 *
31 * @since 1.2
32 */
33 class PLL_Admin extends PLL_Admin_Base {
34 public $filters, $filters_columns, $filters_post, $filters_term, $nav_menu, $filters_media;
35
36 /**
37 * Loads the polylang text domain
38 * Setups filters and action needed on all admin pages and on plugins page
39 *
40 * @since 1.2
41 *
42 * @param object $links_model
43 */
44 public function __construct( &$links_model ) {
45 parent::__construct( $links_model );
46
47 // Adds a 'settings' link in the plugins table
48 add_filter( 'plugin_action_links_' . POLYLANG_BASENAME, array( $this, 'plugin_action_links' ) );
49 add_action( 'in_plugin_update_message-' . POLYLANG_BASENAME, array( $this, 'plugin_update_message' ), 10, 2 );
50 }
51
52 /**
53 * Setups filters and action needed on all admin pages and on plugins page
54 * Loads the settings pages or the filters base on the request
55 *
56 * @since 1.2
57 */
58 public function init() {
59 parent::init();
60
61 // Setup filters for admin pages
62 // Priority 5 to make sure filters are there before customize_register is fired
63 if ( $this->model->get_languages_list() ) {
64 add_action( 'wp_loaded', array( $this, 'add_filters' ), 5 );
65 }
66 }
67
68 /**
69 * Adds a 'settings' link in the plugins table
70 *
71 * @since 0.1
72 *
73 * @param array $links list of links associated to the plugin
74 * @return array modified list of links
75 */
76 public function plugin_action_links( $links ) {
77 array_unshift( $links, '<a href="admin.php?page=mlang">' . __( 'Settings', 'polylang' ) . '</a>' );
78 return $links;
79 }
80
81 /**
82 * Adds the upgrade notice in plugins table
83 *
84 * @since 1.1.6
85 *
86 * @param array $plugin_data Not used
87 * @param object $r Plugin update data
88 */
89 public function plugin_update_message( $plugin_data, $r ) {
90 if ( isset( $r->upgrade_notice ) ) {
91 printf( '<p style="margin: 3px 0 0 0; border-top: 1px solid #ddd; padding-top: 3px">%s</p>', esc_html( $r->upgrade_notice ) );
92 }
93 }
94
95 /**
96 * Setup filters for admin pages
97 *
98 * @since 1.2
99 * @since 2.7 instantiate a PLL_Bulk_Translate instance.
100 */
101 public function add_filters() {
102 // All these are separated just for convenience and maintainability
103 $classes = array( 'Filters', 'Filters_Columns', 'Filters_Post', 'Filters_Term', 'Nav_Menu', 'Classic_Editor', 'Block_Editor' );
104
105 // Don't load media filters if option is disabled or if user has no right
106 if ( $this->options['media_support'] && ( $obj = get_post_type_object( 'attachment' ) ) && ( current_user_can( $obj->cap->edit_posts ) || current_user_can( $obj->cap->create_posts ) ) ) {
107 $classes[] = 'Filters_Media';
108 }
109
110 foreach ( $classes as $class ) {
111 $obj = strtolower( $class );
112
113 /**
114 * Filter the class to instantiate when loading admin filters
115 *
116 * @since 1.5
117 *
118 * @param string $class class name
119 */
120 $class = apply_filters( 'pll_' . $obj, 'PLL_Admin_' . $class );
121 $this->$obj = new $class( $this );
122 }
123 }
124 }
125