PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 3.2.4.5
Adminify – White Label, Admin Menu Editor, Login Customizer v3.2.4.5
4.3.1 4.3.0 4.2.26 4.2.25 4.2.24 4.2.23 4.2.22 4.2.21 4.2.20 4.2.19 4.2.18 4.2.17 4.2.16 4.2.15 4.2.14 4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 4.1.17 All 164 releases
← All changes | class-wp-adminify.php +61 -171 4.3.13.2.4.5 View file →
@@ -1,19 +1,17 @@
1 1 <?php
2 2
3 -namespace PXLBSAdminify;
3 +namespace WPAdminify;
4 4
5 -use PXLBSAdminify\Libs\Featured;
6 -use PXLBSAdminify\Inc\Admin\Admin;
7 -use PXLBSAdminify\Inc\Classes\Assets;
8 -use PXLBSAdminify\Inc\Classes\IconPicker_Assets;
9 -use PXLBSAdminify\Inc\Classes\Upgrade;
10 -use PXLBSAdminify\Inc\Classes\Feedback;
11 -use PXLBSAdminify\Inc\Admin\AdminSettings;
12 -use PXLBSAdminify\Inc\Classes\Pro_Upgrade;
13 -use PXLBSAdminify\Inc\Classes\Addons_Plugins;
14 -use PXLBSAdminify\Inc\Classes\GoogleFontsLocal;
15 -use PXLBSAdminify\Inc\Classes\Notifications\Notifications;
5 +use WPAdminify\Inc\Classes\Assets;
6 +use WPAdminify\Inc\Classes\Upgrade;
7 +use WPAdminify\Inc\Admin\Admin;
8 +use WPAdminify\Inc\Admin\AdminSettings;
9 +use WPAdminify\Libs\Featured;
10 +use WPAdminify\Inc\Classes\Recommended_Plugins;
11 +use WPAdminify\Inc\Classes\Pro_Upgrade;
12 +use WPAdminify\Inc\Classes\Feedback;
13 +use WPAdminify\Inc\Classes\Notifications\Notifications;
16 14 // No, Direct access Sir !!!
17 15 if ( !defined( 'ABSPATH' ) ) {
18 16 exit;
19 17 }
@@ -18,113 +16,37 @@
18 16 exit;
19 17 }
20 18 if ( !class_exists( 'WP_Adminify' ) ) {
21 19 class WP_Adminify {
22 - const VERSION = PXLBSADMINIFY_VER;
20 + const VERSION = WP_ADMINIFY_VER;
23 21
24 22 private static $instance = null;
25 23
26 - private $was_active_before_update = false;
27 -
28 24 public function __construct() {
29 25 add_action( 'plugins_loaded', array($this, 'maybe_run_upgrades'), -100 );
30 26 // This should run earlier
31 - add_action( 'plugins_loaded', array($this, 'maybe_loaded_addons'), -200 );
32 - // add_action('plugins_loaded', array($this, 'pxlbsadminify_plugins_loaded'), 999);
33 - add_filter( 'plugin_action_links_' . PXLBSADMINIFY_BASE, array($this, 'plugin_action_links') );
34 - add_filter( 'network_admin_plugin_action_links_' . PXLBSADMINIFY_BASE, array($this, 'plugin_action_links') );
35 - // Freemius drops this plugin from `active_plugins` when it updates itself.
36 - add_filter(
37 - 'upgrader_pre_install',
38 - array($this, 'pxlbsadminify_remember_active_state'),
39 - 1,
40 - 2
41 - );
42 - add_filter(
43 - 'upgrader_post_install',
44 - array($this, 'pxlbsadminify_restore_active_state'),
45 - 20,
46 - 3
47 - );
48 - add_filter( 'admin_body_class', array($this, 'pxlbsadminify_body_class'), 99 );
49 - // Load textdomain and include files on init for WP 6.7+ compatibility
50 - // Textdomain must be loaded before files that use translations
51 - // Priority order: 0=textdomain, 1=include files (registers options), 5=framework setup
52 - add_action( 'init', array($this, 'pxlbsadminify_load_textdomain'), 0 );
53 - add_action( 'init', array($this, 'pxlbsadminify_include_files'), 1 );
54 - add_action( 'init', array($this, 'pxlbsadminify_is_plugin_row_meta'), 1 );
55 - $is_finished = get_option( 'pxlbsadminify_setup_wizard_ran' );
56 - if ( $is_finished !== '1' ) {
57 - if ( apply_filters( 'pxlbsadminify_show_setup_wizard', true ) ) {
58 - new \PXLBSAdminify\Inc\Classes\Wizard\Setup_Wizard();
59 - set_transient( 'pxlbsadminify_activation_redirect', 1, 30 );
60 - }
27 + add_action( 'plugins_loaded', array($this, 'jltwp_adminify_plugins_loaded'), 999 );
28 + add_filter( 'plugin_action_links_' . WP_ADMINIFY_BASE, array($this, 'plugin_action_links') );
29 + add_filter( 'network_admin_plugin_action_links_' . WP_ADMINIFY_BASE, array($this, 'plugin_action_links') );
30 + add_filter( 'admin_body_class', array($this, 'jltwp_adminify_body_class'), 99 );
31 + $this->jltwp_is_plugin_row_meta();
32 + $this->jltwp_adminify_include_files();
33 + if ( apply_filters( 'jltwp_adminify_show_setup_wizard', true ) ) {
34 + new \WPAdminify\Inc\Classes\Setup_Wizard();
35 + set_transient( '_adminify_activation_redirect', 1, 30 );
61 36 }
62 - jltwp_adminify()->add_filter( 'pricing_url', [$this, 'pxlbsadminify_pricing_url'] );
63 37 }
64 38
65 - /**
66 - * Record whether this plugin was active when its own update starts.
67 - *
68 - * @param bool|\WP_Error $response Install response.
69 - * @param array $hook_extra Extra arguments passed to hooked filters.
70 - *
71 - * @return bool|\WP_Error
72 - */
73 - public function pxlbsadminify_remember_active_state( $response, $hook_extra ) {
74 - if ( !empty( $hook_extra['plugin'] ) && PXLBSADMINIFY_BASE === $hook_extra['plugin'] ) {
75 - $this->was_active_before_update = in_array( PXLBSADMINIFY_BASE, (array) get_option( 'active_plugins', array() ), true );
76 - }
77 - return $response;
78 - }
79 -
80 - /**
81 - * Put this plugin back into `active_plugins` after its own update.
82 - *
83 - * The Freemius SDK assumes the free and the premium build never run side by side,
84 - * so FS_Plugin_Updater::_maybe_update_folder_name() rewrites our `active_plugins`
85 - * entry to the premium basename once the free package is updated while Adminify Pro
86 - * is installed - which silently deactivates this plugin. Both packages have to stay
87 - * active here, so restore the entry the SDK removed.
88 - *
89 - * Network activations are unaffected: those live in `active_sitewide_plugins`, which
90 - * the SDK handler never touches.
91 - *
92 - * @param bool|\WP_Error $response Install response.
93 - * @param array $hook_extra Extra arguments passed to hooked filters.
94 - * @param array $result Installation result data.
95 - *
96 - * @return bool|\WP_Error
97 - */
98 - public function pxlbsadminify_restore_active_state( $response, $hook_extra, $result ) {
99 - if ( empty( $hook_extra['plugin'] ) || PXLBSADMINIFY_BASE !== $hook_extra['plugin'] || !$this->was_active_before_update ) {
100 - return $response;
101 - }
102 - $active_plugins = (array) get_option( 'active_plugins', array() );
103 - if ( !in_array( PXLBSADMINIFY_BASE, $active_plugins, true ) ) {
104 - $active_plugins[] = PXLBSADMINIFY_BASE;
105 - $active_plugins = array_values( array_unique( $active_plugins ) );
106 - sort( $active_plugins );
107 - update_option( 'active_plugins', $active_plugins );
108 - }
109 - return $response;
110 - }
111 -
112 - function pxlbsadminify_pricing_url( $pricing_url ) {
113 - $pricing_url = 'https://wpadminify.com/pricing';
114 - return $pricing_url;
115 - }
116 -
117 - public function pxlbsadminify_is_plugin_row_meta() {
39 + public function jltwp_is_plugin_row_meta() {
118 40 add_filter(
119 41 'plugin_row_meta',
120 - array($this, 'pxlbsadminify_plugin_row_meta'),
42 + array($this, 'jltwp_adminify_plugin_row_meta'),
121 43 10,
122 44 2
123 45 );
124 46 add_filter(
125 47 'network_admin_plugin_row_meta',
126 - array($this, 'pxlbsadminify_plugin_row_meta'),
48 + array($this, 'jltwp_adminify_plugin_row_meta'),
127 49 10,
128 50 2
129 51 );
130 52 }
@@ -131,9 +53,9 @@
131 53
132 54 /**
133 55 * Add Body Class
134 56 */
135 - public function pxlbsadminify_body_class( $classes ) {
57 + public function jltwp_adminify_body_class( $classes ) {
136 58 $classes .= ' wp-adminify ';
137 59 $adminify_ui = AdminSettings::get_instance()->get( 'admin_ui' );
138 60 if ( !empty( $adminify_ui ) ) {
139 61 $classes .= ' adminify-ui';
@@ -151,19 +73,19 @@
151 73 *
152 74 * @return array
153 75 */
154 76 public function plugin_action_links( $links ) {
155 - $links['settings'] = apply_filters( 'adminify_settings_link', sprintf( '<a class="adminify-plugin-settings" href="%1$s">%2$s</a>', admin_url( 'admin.php?page=wp-adminify-settings' ), __( 'Settings', 'adminify' ) ) );
156 - $links['pricing'] = apply_filters( 'pxlbsadminify_upgrade_now_link', sprintf( '<a href="%1$s" class="adminify-upgrade-pro" target="_blank" style="color: orangered;font-weight: bold;">%2$s</a>', 'https://wpadminify.com/pricing', __( 'Upgrade Now', 'adminify' ) ) );
157 - return apply_filters( 'adminify_plugin_row_links', $links );
77 + $links[] = sprintf( '<a class="adminify-plugin-settings" href="%1$s">%2$s</a>', admin_url( 'admin.php?page=wp-adminify-settings' ), __( 'Settings', 'adminify' ) );
78 + $links[] = sprintf( '<a href="%1$s" class="adminify-upgrade-pro" target="_blank" style="color: orangered;font-weight: bold;">%2$s</a>', 'https://wpadminify.com/pricing', __( 'Go Pro', 'adminify' ) );
79 + return $links;
158 80 }
159 81
160 - public function pxlbsadminify_plugin_row_meta( $plugin_meta, $plugin_file ) {
161 - if ( PXLBSADMINIFY_BASE === $plugin_file ) {
82 + public function jltwp_adminify_plugin_row_meta( $plugin_meta, $plugin_file ) {
83 + if ( WP_ADMINIFY_BASE === $plugin_file ) {
162 84 $row_meta = array(
163 - 'docs' => sprintf( '<a href="%1$s" target="_blank">%2$s</a>', esc_url_raw( 'https://wpadminify.com/docs/adminify/getting-started' ), __( 'Docs', 'adminify' ) ),
85 + 'docs' => sprintf( '<a href="%1$s" target="_blank">%2$s</a>', esc_url_raw( 'https://wpadminify.com/kb' ), __( 'Docs', 'adminify' ) ),
164 86 'changelogs' => sprintf( '<a href="%1$s" target="_blank">%2$s</a>', esc_url_raw( 'https://wpadminify.com/changelogs/' ), __( 'Changelogs', 'adminify' ) ),
165 - 'tutorials' => '<a href="https://www.youtube.com/playlist?list=PLqpMw0NsHXV-EKj9Xm1DMGa6FGniHHly8" aria-label="' . esc_attr( __( 'View Adminify Video Tutorials', 'adminify' ) ) . '" target="_blank">' . __( 'Video Tutorials', 'adminify' ) . '</a>',
87 + 'tutorials' => '<a href="https://www.youtube.com/playlist?list=PLqpMw0NsHXV-EKj9Xm1DMGa6FGniHHly8" aria-label="' . esc_attr( __( 'View WP Adminify Video Tutorials', 'adminify' ) ) . '" target="_blank">' . __( 'Video Tutorials', 'adminify' ) . '</a>',
166 88 );
167 89 $plugin_meta = array_merge( $plugin_meta, $row_meta );
168 90 }
169 91 return $plugin_meta;
@@ -168,21 +90,12 @@
168 90 }
169 91 return $plugin_meta;
170 92 }
171 93
172 - public function pxlbsadminify_plugins_loaded() {
173 - self::pxlbsadminify_activation_hook();
94 + public function jltwp_adminify_plugins_loaded() {
95 + self::jltwp_adminify_activation_hook();
174 96 }
175 97
176 - /**
177 - * Addons Loaded Method
178 - *
179 - * @return void
180 - */
181 - public function maybe_loaded_addons() {
182 - do_action( 'pxlbsadminify_plugin_loaded', WP_Adminify::get_instance() );
183 - }
184 -
185 98 public function maybe_run_upgrades() {
186 99 if ( !is_admin() && !current_user_can( 'manage_options' ) ) {
187 100 return;
188 101 }
@@ -191,78 +104,55 @@
191 104 $upgrade->run_updates();
192 105 }
193 106 }
194 107
195 - public function pxlbsadminify_include_files() {
108 + public function jltwp_adminify_include_files() {
196 109 new Assets();
197 - new IconPicker_Assets();
198 110 new Admin();
199 111 new Featured();
200 112 new Feedback();
201 113 new Notifications();
202 114 new Pro_Upgrade();
203 - new Addons_Plugins();
204 - // Initialize Google Fonts Local early to catch option updates
205 - GoogleFontsLocal::get_instance();
115 + new Recommended_Plugins();
206 116 }
207 117
208 - public function pxlbsadminify_init() {
209 - // Backup for OLD Database
210 - $current_version = get_option( 'pxlbsadminify_version' );
211 - $is_backup = $old_data = get_option( 'pxlbsadminify_settings_backup' );
212 - if ( version_compare( $current_version, PXLBSADMINIFY_VER, '<' ) && empty( $is_backup ) ) {
213 - $old_data = get_option( 'pxlbsadminify_settings' );
214 - update_option( 'pxlbsadminify_settings_backup', $old_data );
215 - }
118 + public function jltwp_adminify_init() {
119 + $this->jltwp_adminify_load_textdomain();
120 + // Redirect Hook
121 + // add_action('admin_init', [$this, 'jltwp_adminify_redirect_hook']);
216 122 }
217 123
218 - /**
219 - * Loads the text domain for localization.
220 - *
221 - * This function sets up the text domain for the WP Adminify plugin,
222 - * allowing it to load translation files for the specified locale.
223 - * It first attempts to load a custom translation file from the WordPress
224 - * languages directory and then loads the default translation file from
225 - * the plugin's languages directory.
226 - *
227 - * @return void
124 + // Text Domains
125 + public function jltwp_adminify_load_textdomain() {
126 + $domain = 'adminify';
127 + $locale = apply_filters( 'plugin_locale', get_locale(), $domain );
128 + load_textdomain( $domain, WP_LANG_DIR . '/' . $domain . '/' . $domain . '-' . $locale . '.mo' );
129 + load_plugin_textdomain( $domain, false, dirname( WP_ADMINIFY_BASE ) . '/languages/' );
130 + }
131 +
132 + /*
133 + * Activation Plugin redirect hook
228 134 */
229 - public function pxlbsadminify_load_textdomain() {
230 - $locale = apply_filters( 'plugin_locale', get_locale(), 'adminify' );
231 - load_textdomain( 'adminify', WP_LANG_DIR . '/adminify/adminify-' . $locale . '.mo' );
232 - // phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound -- retained for non-hosted / older-WP installs.
233 - load_plugin_textdomain( 'adminify', false, dirname( PXLBSADMINIFY_BASE ) . '/languages/' );
135 + public function jltwp_adminify_redirect_hook() {
136 + wp_redirect( 'admin.php?page=wp-adminify-settings' );
137 + exit;
234 138 }
235 139
236 140 // Activation Hook
237 - public static function pxlbsadminify_activation_hook() {
238 - $current_adminify_version = get_option( 'pxlbsadminify_version', null );
239 - if ( get_option( 'pxlbsadminify_activation_time' ) === false ) {
240 - update_option( 'pxlbsadminify_activation_time', strtotime( 'now' ) );
141 + public static function jltwp_adminify_activation_hook() {
142 + $current_adminify_version = get_option( 'wp_adminify_version', null );
143 + if ( get_option( 'jltwp_adminify_activation_time' ) === false ) {
144 + update_option( 'jltwp_adminify_activation_time', strtotime( 'now' ) );
241 145 }
242 - if ( "dismissed" === get_option( 'pxlbsadminify_plugin_update_info_notice', true ) ) {
243 - update_option( 'pxlbsadminify_plugin_update_info_notice', '' );
244 - }
245 146 if ( is_null( $current_adminify_version ) ) {
246 - update_option( 'pxlbsadminify_version', self::VERSION );
147 + update_option( 'wp_adminify_version', self::VERSION );
247 148 }
248 - //database upgrade logic here
249 - $old_data = get_option( 'pxlbsadminify_settings' );
250 - update_option( 'pxlbsadminify_settings_backup', $old_data );
251 - // Create term_order collumn in terms table, to support post type order
252 - global $wpdb;
253 - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching -- direct query required for one-time schema inspection on activation; not cached intentionally.
254 - $check_term_order_column = $wpdb->query( "SHOW COLUMNS FROM {$wpdb->terms} LIKE 'term_order'" );
255 - if ( $check_term_order_column == 0 ) {
256 - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.SchemaChange -- direct query required for one-time schema change on activation; not cached intentionally.
257 - $wpdb->query( "ALTER TABLE {$wpdb->terms} ADD term_order INT( 4 ) NULL DEFAULT '0'" );
258 - }
259 149 }
260 150
261 151 // Deactivation Hook
262 - public static function pxlbsadminify_deactivation_hook() {
263 - delete_option( 'pxlbsadminify_activation_time' );
264 - delete_option( 'pxlbsadminify_customizer_flush_url' );
152 + public static function jltwp_adminify_deactivation_hook() {
153 + delete_option( 'jltwp_adminify_activation_time' );
154 + delete_option( 'jltwp_adminify_customizer_flush_url' );
265 155 }
266 156
267 157 /**
268 158 * Returns the singleton instance of the class.
@@ -269,9 +159,9 @@
269 159 */
270 160 public static function get_instance() {
271 161 if ( !isset( self::$instance ) && !self::$instance instanceof WP_Adminify ) {
272 162 self::$instance = new WP_Adminify();
273 - self::$instance->pxlbsadminify_init();
163 + self::$instance->jltwp_adminify_init();
274 164 }
275 165 return self::$instance;
276 166 }
277 167