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 +140 -157 4.2.61.0.7 View file →
@@ -1,217 +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\Upgrade;
9 -use PXLBSAdminify\Inc\Classes\Feedback;
10 -use PXLBSAdminify\Inc\Admin\AdminSettings;
11 -use PXLBSAdminify\Inc\Classes\Pro_Upgrade;
12 -use PXLBSAdminify\Inc\Classes\Addons_Plugins;
13 -use PXLBSAdminify\Inc\Classes\GoogleFontsLocal;
14 -use PXLBSAdminify\Inc\Classes\Notifications\Notifications;
15 -// No, Direct access Sir !!!
16 -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')) {
17 10 exit;
18 -}
19 -if ( !class_exists( 'WP_Adminify' ) ) {
20 - class WP_Adminify {
21 - const VERSION = PXLBSADMINIFY_VER;
11 +} // No, Direct access Sir !!!
22 12
13 +if (!class_exists('WP_Adminify')) {
14 +
15 + class WP_Adminify
16 + {
17 +
18 + const VERSION = WP_ADMINIFY_VER;
23 19 private static $instance = null;
24 20
25 - public function __construct() {
26 - add_action( 'plugins_loaded', array($this, 'maybe_run_upgrades'), -100 );
27 - // This should run earlier
28 - add_action( 'plugins_loaded', array($this, 'maybe_loaded_addons'), -200 );
29 - // add_action('plugins_loaded', array($this, 'pxlbsadminify_plugins_loaded'), 999);
30 - add_filter( 'plugin_action_links_' . PXLBSADMINIFY_BASE, array($this, 'plugin_action_links') );
31 - add_filter( 'network_admin_plugin_action_links_' . PXLBSADMINIFY_BASE, array($this, 'plugin_action_links') );
32 - add_filter( 'admin_body_class', array($this, 'pxlbsadminify_body_class'), 99 );
33 - // Load textdomain and include files on init for WP 6.7+ compatibility
34 - // Textdomain must be loaded before files that use translations
35 - // Priority order: 0=textdomain, 1=include files (registers options), 5=framework setup
36 - add_action( 'init', array($this, 'pxlbsadminify_load_textdomain'), 0 );
37 - add_action( 'init', array($this, 'pxlbsadminify_include_files'), 1 );
38 - add_action( 'init', array($this, 'pxlbsadminify_is_plugin_row_meta'), 1 );
39 - $is_finished = get_option( 'pxlbsadminify_setup_wizard_ran' );
40 - if ( $is_finished !== '1' ) {
41 - if ( apply_filters( 'pxlbsadminify_show_setup_wizard', true ) ) {
42 - new \PXLBSAdminify\Inc\Classes\Wizard\Setup_Wizard();
43 - set_transient( 'pxlbsadminify_activation_redirect', 1, 30 );
44 - }
45 - }
46 - jltwp_adminify()->add_filter( 'pricing_url', [$this, 'pxlbsadminify_pricing_url'] );
47 - }
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']);
48 26
49 - function pxlbsadminify_pricing_url( $pricing_url ) {
50 - $pricing_url = 'https://wpadminify.com/pricing';
51 - return $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']);
52 31 }
53 32
54 - public function pxlbsadminify_is_plugin_row_meta() {
55 - add_filter(
56 - 'plugin_row_meta',
57 - array($this, 'pxlbsadminify_plugin_row_meta'),
58 - 10,
59 - 2
60 - );
61 - add_filter(
62 - 'network_admin_plugin_row_meta',
63 - array($this, 'pxlbsadminify_plugin_row_meta'),
64 - 10,
65 - 2
66 - );
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);
48 + }
67 49 }
68 -
69 50 /**
70 51 * Add Body Class
71 52 */
72 - public function pxlbsadminify_body_class( $classes ) {
53 + public function jltwp_adminify_body_class($classes)
54 + {
73 55 $classes .= ' wp-adminify ';
74 - $adminify_ui = AdminSettings::get_instance()->get( 'admin_ui' );
75 - if ( !empty( $adminify_ui ) ) {
76 - $classes .= ' adminify-ui';
77 - }
78 - if ( is_rtl() ) {
56 +
57 + if (is_rtl()) {
79 58 $classes .= ' adminify-rtl ';
80 59 }
81 60 return $classes;
82 61 }
83 62
63 +
84 64 /**
85 65 * Plugin action links
86 66 *
87 - * @param array $links
67 + * @param array $links
88 68 *
89 69 * @return array
90 70 */
91 - public function plugin_action_links( $links ) {
92 - $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' ) ) );
93 - $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' ) ) );
94 - 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;
95 89 }
96 90
97 - public function pxlbsadminify_plugin_row_meta( $plugin_meta, $plugin_file ) {
98 - if ( PXLBSADMINIFY_BASE === $plugin_file ) {
99 - $row_meta = array(
100 - 'docs' => sprintf( '<a href="%1$s" target="_blank">%2$s</a>', esc_url_raw( 'https://wpadminify.com/kb' ), __( 'Docs', 'adminify' ) ),
101 - 'changelogs' => sprintf( '<a href="%1$s" target="_blank">%2$s</a>', esc_url_raw( 'https://wpadminify.com/changelogs/' ), __( 'Changelogs', 'adminify' ) ),
102 - '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>',
103 - );
104 - $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);
105 109 }
110 +
106 111 return $plugin_meta;
107 112 }
108 113
109 - public function pxlbsadminify_plugins_loaded() {
110 - self::pxlbsadminify_activation_hook();
114 + public function jltwp_adminify_plugins_loaded()
115 + {
116 + self::jltwp_adminify_activation_hook();
111 117 }
112 118
113 - /**
114 - * Addons Loaded Method
115 - *
116 - * @return void
117 - */
118 - public function maybe_loaded_addons() {
119 - do_action( 'pxlbsadminify_plugin_loaded', WP_Adminify::get_instance() );
120 - }
119 + public function jltwp_adminify_include_files()
120 + {
121 + new Assets();
122 + new Admin();
121 123
122 - public function maybe_run_upgrades() {
123 - if ( !is_admin() && !current_user_can( 'manage_options' ) ) {
124 - 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 + }
125 128 }
126 - $upgrade = new Upgrade();
127 - if ( $upgrade->if_updates_available() ) {
128 - $upgrade->run_updates();
129 - }
130 129 }
130 + public function jltwp_adminify_init()
131 + {
131 132
132 - public function pxlbsadminify_include_files() {
133 - new Assets();
134 - new Admin();
135 - new Featured();
136 - new Feedback();
137 - new Notifications();
138 - new Pro_Upgrade();
139 - new Addons_Plugins();
140 - // Initialize Google Fonts Local early to catch option updates
141 - GoogleFontsLocal::get_instance();
133 + $this->jltwp_adminify_load_textdomain();
134 +
135 + //Redirect Hook
136 + // add_action('admin_init', [$this, 'jltwp_adminify_redirect_hook']);
142 137 }
143 138
144 - public function pxlbsadminify_init() {
145 - // Backup for OLD Database
146 - $current_version = get_option( 'pxlbsadminify_version' );
147 - $is_backup = $old_data = get_option( 'pxlbsadminify_settings_backup' );
148 - if ( version_compare( $current_version, PXLBSADMINIFY_VER, '<' ) && empty( $is_backup ) ) {
149 - $old_data = get_option( 'pxlbsadminify_settings' );
150 - update_option( 'pxlbsadminify_settings_backup', $old_data );
151 - }
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/');
152 147 }
153 148
154 - /**
155 - * Loads the text domain for localization.
156 - *
157 - * This function sets up the text domain for the WP Adminify plugin,
158 - * allowing it to load translation files for the specified locale.
159 - * It first attempts to load a custom translation file from the WordPress
160 - * languages directory and then loads the default translation file from
161 - * the plugin's languages directory.
162 - *
163 - * @return void
164 - */
165 - public function pxlbsadminify_load_textdomain() {
166 - $locale = apply_filters( 'plugin_locale', get_locale(), 'adminify' );
167 - load_textdomain( 'adminify', WP_LANG_DIR . '/adminify/adminify-' . $locale . '.mo' );
168 - // phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound -- retained for non-hosted / older-WP installs.
169 - 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;
170 157 }
171 158
159 +
172 160 // Activation Hook
173 - public static function pxlbsadminify_activation_hook() {
174 - $current_adminify_version = get_option( 'pxlbsadminify_version', null );
175 - if ( get_option( 'pxlbsadminify_activation_time' ) === false ) {
176 - update_option( 'pxlbsadminify_activation_time', strtotime( 'now' ) );
177 - }
178 - if ( "dismissed" === get_option( 'pxlbsadminify_plugin_update_info_notice', true ) ) {
179 - update_option( 'pxlbsadminify_plugin_update_info_notice', '' );
180 - }
181 - if ( is_null( $current_adminify_version ) ) {
182 - update_option( 'pxlbsadminify_version', self::VERSION );
183 - }
184 - //database upgrade logic here
185 - $old_data = get_option( 'pxlbsadminify_settings' );
186 - update_option( 'pxlbsadminify_settings_backup', $old_data );
187 - // Create term_order collumn in terms table, to support post type order
188 - global $wpdb;
189 - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching -- direct query required for one-time schema inspection on activation; not cached intentionally.
190 - $check_term_order_column = $wpdb->query( "SHOW COLUMNS FROM {$wpdb->terms} LIKE 'term_order'" );
191 - if ( $check_term_order_column == 0 ) {
192 - // 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.
193 - $wpdb->query( "ALTER TABLE {$wpdb->terms} ADD term_order INT( 4 ) NULL DEFAULT '0'" );
194 - }
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);
195 167 }
196 168
169 +
170 +
197 171 // Deactivation Hook
198 - public static function pxlbsadminify_deactivation_hook() {
199 - delete_option( 'pxlbsadminify_activation_time' );
200 - 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');
201 176 }
202 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 +
203 184 /**
204 185 * Returns the singleton instance of the class.
205 186 */
206 - public static function get_instance() {
207 - 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)) {
208 191 self::$instance = new WP_Adminify();
209 - self::$instance->pxlbsadminify_init();
192 + self::$instance->jltwp_adminify_init();
210 193 }
194 +
211 195 return self::$instance;
212 196 }
213 -
214 197 }
215 198
216 199 WP_Adminify::get_instance();
217 -}
200 +}