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

214 lines 9.1 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 ( $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 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 $locale = apply_filters( 'plugin_locale', get_locale(), 'adminify' );
167 load_textdomain( 'adminify', WP_LANG_DIR . '/adminify/adminify-' . $locale . '.mo' );
168 load_plugin_textdomain( 'adminify', false, dirname( WP_ADMINIFY_BASE ) . '/languages/' );
169 }
170
171 // Activation Hook
172 public static function jltwp_adminify_activation_hook() {
173 $current_adminify_version = get_option( 'wp_adminify_version', null );
174 if ( get_option( 'jltwp_adminify_activation_time' ) === false ) {
175 update_option( 'jltwp_adminify_activation_time', strtotime( 'now' ) );
176 }
177 if ( "dismissed" === get_option( '_wpadminify_plugin_update_info_notice', true ) ) {
178 update_option( '_wpadminify_plugin_update_info_notice', '' );
179 }
180 if ( is_null( $current_adminify_version ) ) {
181 update_option( 'wp_adminify_version', self::VERSION );
182 }
183 //database upgrade logic here
184 $old_data = get_option( '_wpadminify' );
185 update_option( '_wpadminify_backup', $old_data );
186 // Create term_order collumn in terms table, to support post type order
187 global $wpdb;
188 $check_term_order_column = $wpdb->query( "SHOW COLUMNS FROM {$wpdb->terms} LIKE 'term_order'" );
189 if ( $check_term_order_column == 0 ) {
190 $wpdb->query( "ALTER TABLE {$wpdb->terms} ADD term_order INT( 4 ) NULL DEFAULT '0'" );
191 }
192 }
193
194 // Deactivation Hook
195 public static function jltwp_adminify_deactivation_hook() {
196 delete_option( 'jltwp_adminify_activation_time' );
197 delete_option( 'jltwp_adminify_customizer_flush_url' );
198 }
199
200 /**
201 * Returns the singleton instance of the class.
202 */
203 public static function get_instance() {
204 if ( !isset( self::$instance ) && !self::$instance instanceof WP_Adminify ) {
205 self::$instance = new WP_Adminify();
206 self::$instance->jltwp_adminify_init();
207 }
208 return self::$instance;
209 }
210
211 }
212
213 WP_Adminify::get_instance();
214 }