PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 1.0.7
Adminify – White Label, Admin Menu Editor, Login Customizer v1.0.7
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 +139 -220 4.3.11.0.7 View file →
@@ -1,281 +1,200 @@
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;
16 -// No, Direct access Sir !!!
17 -if ( !defined( 'ABSPATH' ) ) {
5 +use WPAdminify\Inc\Classes\Assets;
6 +use WPAdminify\Inc\Admin\Admin;
7 +use WPAdminify\Inc\Admin\AdminSettings;
8 +
9 +if (!defined('ABSPATH')) {
18 10 exit;
19 -}
20 -if ( !class_exists( 'WP_Adminify' ) ) {
21 - class WP_Adminify {
22 - const VERSION = PXLBSADMINIFY_VER;
11 +} // No, Direct access Sir !!!
23 12
13 +if (!class_exists('WP_Adminify')) {
14 +
15 + class WP_Adminify
16 + {
17 +
18 + const VERSION = WP_ADMINIFY_VER;
24 19 private static $instance = null;
25 20
26 - private $was_active_before_update = false;
21 + public function __construct()
22 + {
23 + add_action('plugins_loaded', [$this, 'jltwp_adminify_plugins_loaded'], 999);
24 + add_filter('plugin_action_links_' . WP_ADMINIFY_BASE, [$this, 'plugin_action_links']);
25 + add_filter('network_admin_plugin_action_links_' . WP_ADMINIFY_BASE, [$this, 'plugin_action_links']);
27 26
28 - public function __construct() {
29 - add_action( 'plugins_loaded', array($this, 'maybe_run_upgrades'), -100 );
30 - // 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 - }
61 - }
62 - jltwp_adminify()->add_filter( 'pricing_url', [$this, 'pxlbsadminify_pricing_url'] );
27 + add_filter('admin_body_class', [$this, 'jltwp_adminify_body_class']);
28 + $this->jltwp_is_plugin_row_meta();
29 + $this->jltwp_adminify_include_files();
30 + jltwp_adminify()->add_filter('freemius_pricing_js_path', [$this, 'jltwp_new_freemius_pricing_js']);
63 31 }
64 32
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 );
33 + public function jltwp_is_plugin_row_meta()
34 + {
35 + if (jltwp_adminify()->can_use_premium_code__premium_only()) {
36 + if (jltwp_adminify()->is_plan__premium_only('agency')) {
37 + $jltwp_adminify_wl_plugin_row_links = AdminSettings::get_instance()->get('jltwp_adminify_wl_plugin_row_links');
38 + if (!empty($jltwp_adminify_wl_plugin_row_links)) {
39 + return;
40 + } else {
41 + add_filter('plugin_row_meta', [$this, 'jltwp_adminify_plugin_row_meta'], 10, 2);
42 + add_filter('network_admin_plugin_row_meta', [$this, 'jltwp_adminify_plugin_row_meta'], 10, 2);
43 + }
44 + }
45 + } else {
46 + add_filter('plugin_row_meta', [$this, 'jltwp_adminify_plugin_row_meta'], 10, 2);
47 + add_filter('network_admin_plugin_row_meta', [$this, 'jltwp_adminify_plugin_row_meta'], 10, 2);
76 48 }
77 - return $response;
78 49 }
79 -
80 50 /**
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() {
118 - add_filter(
119 - 'plugin_row_meta',
120 - array($this, 'pxlbsadminify_plugin_row_meta'),
121 - 10,
122 - 2
123 - );
124 - add_filter(
125 - 'network_admin_plugin_row_meta',
126 - array($this, 'pxlbsadminify_plugin_row_meta'),
127 - 10,
128 - 2
129 - );
130 - }
131 -
132 - /**
133 51 * Add Body Class
134 52 */
135 - public function pxlbsadminify_body_class( $classes ) {
53 + public function jltwp_adminify_body_class($classes)
54 + {
136 55 $classes .= ' wp-adminify ';
137 - $adminify_ui = AdminSettings::get_instance()->get( 'admin_ui' );
138 - if ( !empty( $adminify_ui ) ) {
139 - $classes .= ' adminify-ui';
140 - }
141 - if ( is_rtl() ) {
56 +
57 + if (is_rtl()) {
142 58 $classes .= ' adminify-rtl ';
143 59 }
144 60 return $classes;
145 61 }
146 62
63 +
147 64 /**
148 65 * Plugin action links
149 66 *
150 - * @param array $links
67 + * @param array $links
151 68 *
152 69 * @return array
153 70 */
154 - 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 );
71 + public function plugin_action_links($links)
72 + {
73 + $links[] = sprintf(
74 + '<a class="adminify-plugin-settings" href="%1$s">%2$s</a>',
75 + admin_url('admin.php?page=wp-adminify-settings'),
76 + __('Settings', WP_ADMINIFY_TD)
77 + );
78 +
79 + // Check If Pro/Free
80 + if (!jltwp_adminify()->can_use_premium_code__premium_only()) {
81 + $links[] = sprintf(
82 + '<a href="%1$s" class="adminify-upgrade-pro" target="_blank" style="color: orangered;font-weight: bold;">%2$s</a>',
83 + 'https://wpadminify.com/pricing',
84 + __('Go Pro', WP_ADMINIFY_TD)
85 + );
86 + }
87 +
88 + return $links;
158 89 }
159 90
160 - public function pxlbsadminify_plugin_row_meta( $plugin_meta, $plugin_file ) {
161 - if ( PXLBSADMINIFY_BASE === $plugin_file ) {
162 - $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' ) ),
164 - '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>',
166 - );
167 - $plugin_meta = array_merge( $plugin_meta, $row_meta );
91 + public function jltwp_adminify_plugin_row_meta($plugin_meta, $plugin_file)
92 + {
93 + if (WP_ADMINIFY_BASE === $plugin_file) {
94 + $row_meta = [
95 + 'docs' => sprintf(
96 + '<a href="%1$s" target="_blank">%2$s</a>',
97 + esc_url_raw('https://wpadminify.com/kb'),
98 + __('Docs', WP_ADMINIFY_TD)
99 + ),
100 + 'changelogs' => sprintf(
101 + '<a href="%1$s" target="_blank">%2$s</a>',
102 + esc_url_raw('https://wpadminify.com/changelogs/'),
103 + __('Changelogs', WP_ADMINIFY_TD)
104 + ),
105 + 'tutorials' => '<a href="https://www.youtube.com/playlist?list=PLqpMw0NsHXV-EKj9Xm1DMGa6FGniHHly8" aria-label="' . esc_attr(__('View WP Adminify Video Tutorials', WP_ADMINIFY_TD)) . '" target="_blank">' . __('Video Tutorials', WP_ADMINIFY_TD) . '</a>',
106 + ];
107 +
108 + $plugin_meta = array_merge($plugin_meta, $row_meta);
168 109 }
110 +
169 111 return $plugin_meta;
170 112 }
171 113
172 - public function pxlbsadminify_plugins_loaded() {
173 - self::pxlbsadminify_activation_hook();
114 + public function jltwp_adminify_plugins_loaded()
115 + {
116 + self::jltwp_adminify_activation_hook();
174 117 }
175 118
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 - }
119 + public function jltwp_adminify_include_files()
120 + {
121 + new Assets();
122 + new Admin();
184 123
185 - public function maybe_run_upgrades() {
186 - if ( !is_admin() && !current_user_can( 'manage_options' ) ) {
187 - return;
124 + if (jltwp_adminify()->can_use_premium_code__premium_only()) {
125 + if (!class_exists('Adminify_Pro')) {
126 + new \WPAdminify\Pro\Classes\Adminify_Pro();
127 + }
188 128 }
189 - $upgrade = new Upgrade();
190 - if ( $upgrade->if_updates_available() ) {
191 - $upgrade->run_updates();
192 - }
193 129 }
130 + public function jltwp_adminify_init()
131 + {
194 132
195 - public function pxlbsadminify_include_files() {
196 - new Assets();
197 - new IconPicker_Assets();
198 - new Admin();
199 - new Featured();
200 - new Feedback();
201 - new Notifications();
202 - new Pro_Upgrade();
203 - new Addons_Plugins();
204 - // Initialize Google Fonts Local early to catch option updates
205 - GoogleFontsLocal::get_instance();
133 + $this->jltwp_adminify_load_textdomain();
134 +
135 + //Redirect Hook
136 + // add_action('admin_init', [$this, 'jltwp_adminify_redirect_hook']);
206 137 }
207 138
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 - }
139 + // Text Domains
140 + public function jltwp_adminify_load_textdomain()
141 + {
142 + $domain = 'wp-adminify';
143 + $locale = apply_filters('plugin_locale', get_locale(), $domain);
144 +
145 + load_textdomain($domain, WP_LANG_DIR . '/' . $domain . '/' . $domain . '-' . $locale . '.mo');
146 + load_plugin_textdomain($domain, false, dirname(WP_ADMINIFY_BASE) . '/languages/');
216 147 }
217 148
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
228 - */
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/' );
149 +
150 + /*
151 + * Activation Plugin redirect hook
152 + */
153 + public function jltwp_adminify_redirect_hook()
154 + {
155 + wp_redirect('admin.php?page=wp-adminify-settings');
156 + exit;
234 157 }
235 158
159 +
236 160 // 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' ) );
241 - }
242 - if ( "dismissed" === get_option( 'pxlbsadminify_plugin_update_info_notice', true ) ) {
243 - update_option( 'pxlbsadminify_plugin_update_info_notice', '' );
244 - }
245 - if ( is_null( $current_adminify_version ) ) {
246 - update_option( 'pxlbsadminify_version', self::VERSION );
247 - }
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 - }
161 + public static function jltwp_adminify_activation_hook()
162 + {
163 + if (get_option('jltwp_adminify_activation_time') === false)
164 + update_option('jltwp_adminify_activation_time', strtotime("now"));
165 +
166 + update_option('wp_adminify_version', self::VERSION);
259 167 }
260 168
169 +
170 +
261 171 // Deactivation Hook
262 - public static function pxlbsadminify_deactivation_hook() {
263 - delete_option( 'pxlbsadminify_activation_time' );
264 - delete_option( 'pxlbsadminify_customizer_flush_url' );
172 + public static function jltwp_adminify_deactivation_hook()
173 + {
174 + delete_option('jltwp_adminify_activation_time');
175 + delete_option('jltwp_adminify_customizer_flush_url');
265 176 }
266 177
178 + public function jltwp_new_freemius_pricing_js($default_pricing_js_path)
179 + {
180 + return WP_ADMINIFY_PATH . '/lib/freemius-pricing/freemius-pricing.js';
181 + }
182 +
183 +
267 184 /**
268 185 * Returns the singleton instance of the class.
269 186 */
270 - public static function get_instance() {
271 - if ( !isset( self::$instance ) && !self::$instance instanceof WP_Adminify ) {
187 +
188 + public static function get_instance()
189 + {
190 + if (!isset(self::$instance) && !(self::$instance instanceof WP_Adminify)) {
272 191 self::$instance = new WP_Adminify();
273 - self::$instance->pxlbsadminify_init();
192 + self::$instance->jltwp_adminify_init();
274 193 }
194 +
275 195 return self::$instance;
276 196 }
277 -
278 197 }
279 198
280 199 WP_Adminify::get_instance();
281 -}
200 +}