PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.2.6
Adminify – White Label, Admin Menu Editor, Login Customizer v4.2.6
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
adminify / class-wp-adminify.php

class-wp-adminify.php in Adminify – White Label, Admin Menu Editor, Login Customizer 4.2.6, at class-wp-adminify.php

217 lines 9.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace PXLBSAdminify;
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' ) ) {
17 exit;
18 }
19 if ( !class_exists( 'WP_Adminify' ) ) {
20 class WP_Adminify {
21 const VERSION = PXLBSADMINIFY_VER;
22
23 private static $instance = null;
24
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 }
48
49 function pxlbsadminify_pricing_url( $pricing_url ) {
50 $pricing_url = 'https://wpadminify.com/pricing';
51 return $pricing_url;
52 }
53
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 );
67 }
68
69 /**
70 * Add Body Class
71 */
72 public function pxlbsadminify_body_class( $classes ) {
73 $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() ) {
79 $classes .= ' adminify-rtl ';
80 }
81 return $classes;
82 }
83
84 /**
85 * Plugin action links
86 *
87 * @param array $links
88 *
89 * @return array
90 */
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 );
95 }
96
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 );
105 }
106 return $plugin_meta;
107 }
108
109 public function pxlbsadminify_plugins_loaded() {
110 self::pxlbsadminify_activation_hook();
111 }
112
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 }
121
122 public function maybe_run_upgrades() {
123 if ( !is_admin() && !current_user_can( 'manage_options' ) ) {
124 return;
125 }
126 $upgrade = new Upgrade();
127 if ( $upgrade->if_updates_available() ) {
128 $upgrade->run_updates();
129 }
130 }
131
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();
142 }
143
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 }
152 }
153
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/' );
170 }
171
172 // 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 }
195 }
196
197 // Deactivation Hook
198 public static function pxlbsadminify_deactivation_hook() {
199 delete_option( 'pxlbsadminify_activation_time' );
200 delete_option( 'pxlbsadminify_customizer_flush_url' );
201 }
202
203 /**
204 * Returns the singleton instance of the class.
205 */
206 public static function get_instance() {
207 if ( !isset( self::$instance ) && !self::$instance instanceof WP_Adminify ) {
208 self::$instance = new WP_Adminify();
209 self::$instance->pxlbsadminify_init();
210 }
211 return self::$instance;
212 }
213
214 }
215
216 WP_Adminify::get_instance();
217 }