add_filter('pricing_url', [$this, 'pxlbsadminify_pricing_url']); } function pxlbsadminify_pricing_url( $pricing_url ) { $pricing_url = 'https://wpadminify.com/pricing'; return $pricing_url; } public function pxlbsadminify_is_plugin_row_meta() { if (jltwp_adminify()->can_use_premium_code__premium_only()) { if (jltwp_adminify()->is_plan('agency')) { $pxlbsadminify_wl_plugin_row_links = AdminSettings::get_instance()->get('pxlbsadminify_wl_plugin_row_links'); if (!empty($pxlbsadminify_wl_plugin_row_links)) { return; } else { add_filter('plugin_row_meta', array($this, 'pxlbsadminify_plugin_row_meta'), 10, 2); add_filter('network_admin_plugin_row_meta', array($this, 'pxlbsadminify_plugin_row_meta'), 10, 2); } } } else { add_filter('plugin_row_meta', array($this, 'pxlbsadminify_plugin_row_meta'), 10, 2); add_filter('network_admin_plugin_row_meta', array($this, 'pxlbsadminify_plugin_row_meta'), 10, 2); } } /** * Add Body Class */ public function pxlbsadminify_body_class($classes) { $classes .= ' wp-adminify '; $adminify_ui = AdminSettings::get_instance()->get('admin_ui'); if (!empty($adminify_ui)) { $classes .= ' adminify-ui'; } if (is_rtl()) { $classes .= ' adminify-rtl '; } return $classes; } /** * Plugin action links * * @param array $links * * @return array */ public function plugin_action_links($links) { $links['settings'] = apply_filters( 'adminify_settings_link', sprintf('%2$s', admin_url('admin.php?page=wp-adminify-settings'), __('Settings', 'adminify')) ); if (jltwp_adminify()->can_use_premium_code__premium_only()) { $account_url = is_network_admin() ? network_admin_url('admin.php?page=wp-adminify-settings-account') : admin_url('admin.php?page=wp-adminify-settings-account'); $links['account'] = apply_filters( 'adminify_account_link', sprintf( '%2$s', esc_url($account_url), __('Account', 'adminify') ) ); } // Check If Pro/Free if (!jltwp_adminify()->can_use_premium_code__premium_only()) { $links['pricing'] = apply_filters( 'pxlbsadminify_upgrade_now_link', sprintf('%2$s', 'https://wpadminify.com/pricing', __('Upgrade Now', 'adminify')) ); } if (jltwp_adminify()->can_use_premium_code__premium_only()) { if (jltwp_adminify()->is_plan('agency')) { $settings = AdminSettings::get_instance()->get(); $plugin_row_links = !empty( $settings['white_label']['adminify']['row_links'] ) ? $settings['white_label']['adminify']['row_links'] : ''; $plugin_action_links = !empty($settings['white_label']['adminify']['remove_action_links'] ) ? $settings['white_label']['adminify']['remove_action_links'] : ''; if(empty($plugin_row_links)){ if (! empty($plugin_action_links)) { foreach ($plugin_action_links as $value) { unset($links[$value]); } } } else { unset($links['upgrade']); unset($links['activate_license']); unset($links['opt-in-or-opt-out']); unset($links['settings']); unset($links['account']); } } } return apply_filters('adminify_plugin_row_links', $links); } public function pxlbsadminify_plugin_row_meta($plugin_meta, $plugin_file) { if (PXLBSADMINIFY_BASE === $plugin_file) { $row_meta = array( 'docs' => sprintf( '%2$s', esc_url_raw('https://wpadminify.com/kb'), __('Docs', 'adminify') ), 'changelogs' => sprintf( '%2$s', esc_url_raw('https://wpadminify.com/changelogs/'), __('Changelogs', 'adminify') ), 'tutorials' => '' . __('Video Tutorials', 'adminify') . '', ); $plugin_meta = array_merge($plugin_meta, $row_meta); } return $plugin_meta; } public function pxlbsadminify_plugins_loaded() { self::pxlbsadminify_activation_hook(); } /** * Addons Loaded Method * * @return void */ public function maybe_loaded_addons() { do_action('pxlbsadminify_plugin_loaded', WP_Adminify::get_instance()); } public function maybe_run_upgrades() { if (!is_admin() && !current_user_can('manage_options')) { return; } $upgrade = new Upgrade(); if ($upgrade->if_updates_available()) { $upgrade->run_updates(); } } public function pxlbsadminify_include_files() { new Assets(); new Admin(); new Featured(); new Feedback(); new Notifications(); new Pro_Upgrade(); new Addons_Plugins(); // Initialize Google Fonts Local early to catch option updates GoogleFontsLocal::get_instance(); } public function pxlbsadminify_init() { // Backup for OLD Database $current_version = get_option('pxlbsadminify_version'); $is_backup = $old_data = get_option( 'pxlbsadminify_settings_backup' ); if ( version_compare( $current_version, PXLBSADMINIFY_VER, '<' ) && empty($is_backup) ) { $old_data = get_option( 'pxlbsadminify_settings' ); update_option( 'pxlbsadminify_settings_backup', $old_data ); } } /** * Loads the text domain for localization. * * This function sets up the text domain for the WP Adminify plugin, * allowing it to load translation files for the specified locale. * It first attempts to load a custom translation file from the WordPress * languages directory and then loads the default translation file from * the plugin's languages directory. * * @return void */ public function pxlbsadminify_load_textdomain() { $locale = apply_filters('plugin_locale', get_locale(), 'adminify'); load_textdomain('adminify', WP_LANG_DIR . '/adminify/adminify-' . $locale . '.mo'); // phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound -- retained for non-hosted / older-WP installs. load_plugin_textdomain('adminify', false, dirname(PXLBSADMINIFY_BASE) . '/languages/'); } // Activation Hook public static function pxlbsadminify_activation_hook() { $current_adminify_version = get_option('pxlbsadminify_version', null); if (get_option('pxlbsadminify_activation_time') === false) { update_option('pxlbsadminify_activation_time', strtotime('now')); } if("dismissed" === get_option('pxlbsadminify_plugin_update_info_notice', true )){ update_option('pxlbsadminify_plugin_update_info_notice', ''); } if (is_null($current_adminify_version)) { update_option('pxlbsadminify_version', self::VERSION); } //database upgrade logic here $old_data = get_option('pxlbsadminify_settings'); update_option('pxlbsadminify_settings_backup', $old_data); // Create term_order collumn in terms table, to support post type order global $wpdb; // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching -- direct query required for one-time schema inspection on activation; not cached intentionally. $check_term_order_column = $wpdb->query("SHOW COLUMNS FROM $wpdb->terms LIKE 'term_order'"); if ( $check_term_order_column == 0 ) { // 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. $wpdb->query("ALTER TABLE $wpdb->terms ADD term_order INT( 4 ) NULL DEFAULT '0'"); } } // Deactivation Hook public static function pxlbsadminify_deactivation_hook() { delete_option('pxlbsadminify_activation_time'); delete_option('pxlbsadminify_customizer_flush_url'); } /** * Returns the singleton instance of the class. */ public static function get_instance() { if (!isset(self::$instance) && !(self::$instance instanceof WP_Adminify)) { self::$instance = new WP_Adminify(); self::$instance->pxlbsadminify_init(); } return self::$instance; } } WP_Adminify::get_instance(); }