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

215 lines 9.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPAdminify;
4
5 use WPAdminify\Libs\Featured;
6 use WPAdminify\Inc\Admin\Admin;
7 use WPAdminify\Inc\Classes\Assets;
8 use WPAdminify\Inc\Classes\Upgrade;
9 use WPAdminify\Inc\Classes\Feedback;
10 use WPAdminify\Inc\Admin\AdminSettings;
11 use WPAdminify\Inc\Classes\Pro_Upgrade;
12 use WPAdminify\Inc\Classes\Addons_Plugins;
13 use WPAdminify\Inc\Classes\GoogleFontsLocal;
14 use WPAdminify\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 = WP_ADMINIFY_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, 'jltwp_adminify_plugins_loaded'), 999);
30 add_filter( 'plugin_action_links_' . WP_ADMINIFY_BASE, array($this, 'plugin_action_links') );
31 add_filter( 'network_admin_plugin_action_links_' . WP_ADMINIFY_BASE, array($this, 'plugin_action_links') );
32 add_filter( 'admin_body_class', array($this, 'jltwp_adminify_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, 'jltwp_adminify_load_textdomain'), 0 );
37 add_action( 'init', array($this, 'jltwp_adminify_include_files'), 1 );
38 add_action( 'init', array($this, 'jltwp_is_plugin_row_meta'), 1 );
39 $is_finished = get_option( 'jltwp_adminify_setup_wizard_ran' );
40 if ( !empty( $is_finished ) || $is_finished != '1' ) {
41 if ( apply_filters( 'jltwp_adminify_show_setup_wizard', true ) ) {
42 new \WPAdminify\Inc\Classes\Wizard\Setup_Wizard();
43 set_transient( '_adminify_activation_redirect', 1, 30 );
44 }
45 }
46 jltwp_adminify()->add_filter( 'pricing_url', [$this, 'jltwp_adminify_pricing_url'] );
47 }
48
49 function jltwp_adminify_pricing_url( $pricing_url ) {
50 $pricing_url = 'https://wpadminify.com/pricing';
51 return $pricing_url;
52 }
53
54 public function jltwp_is_plugin_row_meta() {
55 add_filter(
56 'plugin_row_meta',
57 array($this, 'jltwp_adminify_plugin_row_meta'),
58 10,
59 2
60 );
61 add_filter(
62 'network_admin_plugin_row_meta',
63 array($this, 'jltwp_adminify_plugin_row_meta'),
64 10,
65 2
66 );
67 }
68
69 /**
70 * Add Body Class
71 */
72 public function jltwp_adminify_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( 'adminify_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 jltwp_adminify_plugin_row_meta( $plugin_meta, $plugin_file ) {
98 if ( WP_ADMINIFY_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 WP 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 jltwp_adminify_plugins_loaded() {
110 self::jltwp_adminify_activation_hook();
111 }
112
113 /**
114 * Addons Loaded Method
115 *
116 * @return void
117 */
118 public function maybe_loaded_addons() {
119 do_action( 'jltwp_adminify_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 jltwp_adminify_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 jltwp_adminify_init() {
145 // Backup for OLD Database
146 $current_version = get_option( 'wp_adminify_version' );
147 $is_backup = $old_data = get_option( '_wpadminify_backup' );
148 if ( version_compare( $current_version, WP_ADMINIFY_VER, '<' ) && empty( $is_backup ) ) {
149 $old_data = get_option( '_wpadminify' );
150 update_option( '_wpadminify_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 jltwp_adminify_load_textdomain() {
166 $domain = 'adminify';
167 $locale = apply_filters( 'plugin_locale', get_locale(), $domain );
168 load_textdomain( $domain, WP_LANG_DIR . '/' . $domain . '/' . $domain . '-' . $locale . '.mo' );
169 load_plugin_textdomain( $domain, false, dirname( WP_ADMINIFY_BASE ) . '/languages/' );
170 }
171
172 // Activation Hook
173 public static function jltwp_adminify_activation_hook() {
174 $current_adminify_version = get_option( 'wp_adminify_version', null );
175 if ( get_option( 'jltwp_adminify_activation_time' ) === false ) {
176 update_option( 'jltwp_adminify_activation_time', strtotime( 'now' ) );
177 }
178 if ( "dismissed" === get_option( '_wpadminify_plugin_update_info_notice', true ) ) {
179 update_option( '_wpadminify_plugin_update_info_notice', '' );
180 }
181 if ( is_null( $current_adminify_version ) ) {
182 update_option( 'wp_adminify_version', self::VERSION );
183 }
184 //database upgrade logic here
185 $old_data = get_option( '_wpadminify' );
186 update_option( '_wpadminify_backup', $old_data );
187 // Create term_order collumn in terms table, to support post type order
188 global $wpdb;
189 $check_term_order_column = $wpdb->query( "SHOW COLUMNS FROM {$wpdb->terms} LIKE 'term_order'" );
190 if ( $check_term_order_column == 0 ) {
191 $wpdb->query( "ALTER TABLE {$wpdb->terms} ADD term_order INT( 4 ) NULL DEFAULT '0'" );
192 }
193 }
194
195 // Deactivation Hook
196 public static function jltwp_adminify_deactivation_hook() {
197 delete_option( 'jltwp_adminify_activation_time' );
198 delete_option( 'jltwp_adminify_customizer_flush_url' );
199 }
200
201 /**
202 * Returns the singleton instance of the class.
203 */
204 public static function get_instance() {
205 if ( !isset( self::$instance ) && !self::$instance instanceof WP_Adminify ) {
206 self::$instance = new WP_Adminify();
207 self::$instance->jltwp_adminify_init();
208 }
209 return self::$instance;
210 }
211
212 }
213
214 WP_Adminify::get_instance();
215 }