PluginProbe
TablePress – Tables in WordPress made easy / 3.4
TablePress – Tables in WordPress made easy v3.4
3.4 3.3.4 3.3.3 3.3.2 3.3.1 trunk 1.12 1.14 1.9.2 2.0.4 2.1.7 2.1.8 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 All 45 releases
← All changes | classes/class-controller.php +43 -36 2.0.4 → 3.4 View file →
@@ -7,8 +7,10 @@
7 7 * @author Tobias Bäthge
8 8 * @since 1.0.0
9 9 */
10 10
11 +declare(strict_types=1);
12 +
11 13 // Prohibit direct script loading.
12 14 defined( 'ABSPATH' ) || die( 'No direct script access allowed!' );
13 15
14 16 /**
@@ -21,41 +23,15 @@
21 23 */
22 24 abstract class TablePress_Controller {
23 25
24 26 /**
25 - * File name of the admin screens' parent page in the admin menu.
27 + * Initializes all controllers.
26 28 *
27 29 * @since 1.0.0
28 - * @var string
29 30 */
30 - public $parent_page = 'middle';
31 -
32 - /**
33 - * Whether TablePress admin screens are a top-level menu item in the admin menu.
34 - *
35 - * @since 1.0.0
36 - * @var bool
37 - */
38 - public $is_top_level_page = false;
39 -
40 - /**
41 - * Initialize all controllers, by loading Plugin and User Options, and by performing an update check.
42 - *
43 - * @since 1.0.0
44 - */
45 31 public function __construct() {
46 32 // Update check, in all controllers (frontend and admin), to make sure we always have up-to-date options, should be done very early.
47 33 $this->plugin_update_check();
48 -
49 - /**
50 - * Filters the admin menu parent page, which is needed for the construction of plugin URLs.
51 - *
52 - * @since 1.0.0
53 - *
54 - * @param string $parent_page Current admin menu parent page.
55 - */
56 - $this->parent_page = apply_filters( 'tablepress_admin_menu_parent_page', TablePress::$model_options->get( 'admin_menu_parent_page' ) );
57 - $this->is_top_level_page = in_array( $this->parent_page, array( 'top', 'middle', 'bottom' ), true );
58 34 }
59 35
60 36 /**
61 37 * Check if the plugin was updated and perform necessary actions, like updating the options.
@@ -61,15 +37,16 @@
61 37 * Check if the plugin was updated and perform necessary actions, like updating the options.
62 38 *
63 39 * @since 1.0.0
64 40 */
65 - protected function plugin_update_check() {
41 + protected function plugin_update_check(): void {
66 42 // First activation or plugin update.
67 43 $current_plugin_options_db_version = TablePress::$model_options->get( 'plugin_options_db_version' );
68 44 if ( $current_plugin_options_db_version < TablePress::db_version ) {
69 45 // Allow more PHP execution time for update process.
70 - // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
71 - @set_time_limit( 300 );
46 + if ( function_exists( 'set_time_limit' ) ) {
47 + @set_time_limit( 300 ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
48 + }
72 49
73 50 // Add TablePress capabilities to the WP_Roles objects, for new installations and all versions below 12.
74 51 if ( $current_plugin_options_db_version < 12 ) {
75 52 TablePress::$model_options->add_access_capabilities();
@@ -90,11 +67,11 @@
90 67 'tablepress_version' => TablePress::version,
91 68 'message_plugin_update' => true,
92 69 );
93 70
94 - // Only write files, if "Custom CSS" is to be used, and if there is "Custom CSS".
95 - if ( TablePress::$model_options->get( 'use_custom_css' ) && '' !== TablePress::$model_options->get( 'custom_css' ) ) {
96 - // Re-save "Custom CSS" to re-create all files (as TablePress Default CSS might have changed).
71 + // If used, re-save "Custom CSS" to re-create all files (as TablePress Default CSS might have changed).
72 + $custom_css = TablePress::$model_options->get( 'custom_css' );
73 + if ( TablePress::$model_options->get( 'use_custom_css' ) && '' !== $custom_css ) {
97 74 /**
98 75 * Load WP file functions to provide filesystem access functions early.
99 76 */
100 77 require_once ABSPATH . 'wp-admin/includes/file.php';
@@ -102,9 +79,25 @@
102 79 * Load WP admin template functions to provide `submit_button()` which is necessary for `request_filesystem_credentials()`.
103 80 */
104 81 require_once ABSPATH . 'wp-admin/includes/template.php';
105 82 $tablepress_css = TablePress::load_class( 'TablePress_CSS', 'class-css.php', 'classes' );
106 - $result = $tablepress_css->save_custom_css_to_file( TablePress::$model_options->get( 'custom_css' ), TablePress::$model_options->get( 'custom_css_minified' ) );
83 +
84 + $custom_css_minified = TablePress::$model_options->get( 'custom_css_minified' );
85 +
86 + // Update "Custom CSS" to be compatible with DataTables 2, introduced in TablePress 3.0.
87 + if ( $current_plugin_options_db_version < 96 ) {
88 + $old_custom_css = $custom_css;
89 + $custom_css = TablePress::convert_datatables_api_data( $custom_css );
90 + if ( $old_custom_css !== $custom_css ) {
91 + $custom_css = $tablepress_css->sanitize_css( $custom_css );
92 + $custom_css_minified = $tablepress_css->minify_css( $custom_css );
93 + $updated_options['custom_css'] = $custom_css;
94 + $updated_options['custom_css_minified'] = $custom_css_minified;
95 + }
96 + unset( $old_custom_css );
97 + }
98 +
99 + $result = $tablepress_css->save_custom_css_to_file( $custom_css, $custom_css_minified );
107 100 // If saving was successful, use "Custom CSS" file.
108 101 $updated_options['use_custom_css_file'] = $result;
109 102 // Increase the "Custom CSS" version number for cache busting.
110 103 if ( $result ) {
@@ -116,12 +109,22 @@
116 109
117 110 // Clear table caches.
118 111 TablePress::$model_table->invalidate_table_output_caches();
119 112
120 - // Add mime type field to existing posts with the TablePress Custom Post Type, so that other plugins know that they are not dealing with plain text.
113 + // Add mime type field to existing posts with the TablePress Custom Post Type, in TablePress 1.5.
121 114 if ( $current_plugin_options_db_version < 25 ) {
122 115 TablePress::$model_table->add_mime_type_to_posts();
123 116 }
117 +
118 + // Add new access capabilities that were introduced in TablePress 2.3.2.
119 + if ( $current_plugin_options_db_version < 77 ) {
120 + TablePress::$model_options->add_access_capabilities_tp232();
121 + }
122 +
123 + // Update all tables' "Custom Commands" to be compatible with DataTables 2, introduced in TablePress 3.0.
124 + if ( $current_plugin_options_db_version < 96 ) {
125 + TablePress::$model_table->update_custom_commands_datatables_tp30();
126 + }
124 127 }
125 128 }
126 129
127 130 // Maybe update the table scheme in each existing table, independently from updating the plugin options.
@@ -135,9 +138,13 @@
135 138 * User Options are not saved in DB until first change occurs.
136 139 */
137 140 if ( is_user_logged_in() && TablePress::$model_options->get( 'user_options_db_version' ) < TablePress::db_version ) {
138 141 TablePress::$model_options->merge_user_options_defaults();
139 - TablePress::$model_options->update( 'user_options_db_version', TablePress::db_version );
142 + $updated_options = array(
143 + 'user_options_db_version' => TablePress::db_version,
144 + 'message_superseded_extensions' => true,
145 + );
146 + TablePress::$model_options->update( $updated_options );
140 147 }
141 148 }
142 149
143 150 } // class TablePress_Controller