'bplugins', 'per_page' => 100 )); wp_send_json_success($cached_plugins->plugins); } public function get_active_plugins() { if (!isset($_GET['nonce']) || !wp_verify_nonce(sanitize_text_field($_GET['nonce']), 'adv_scrollbar_nc')) { wp_send_json_error(['message' => 'Invalid nonce or request.'], 400); } // Get the list of all installed plugins if (!function_exists('get_plugins')) { include_once ABSPATH . '/wp-admin/includes/plugin.php'; } $installed_plugins = get_plugins(); // Return the plugin basenames as an array $installed_plugin_slugs = array_keys($installed_plugins); wp_send_json_success($installed_plugin_slugs); } public function display_activation_notice() { // Check if transient is set $plugin_slug = get_transient('csb_scrollbar_show_activation_notice'); $first_part = explode("/", $plugin_slug)[0]; $cleaned_string = str_replace("-", " ", $first_part); if ($plugin_slug) { // Remove transient after displaying the notice delete_transient('csb_scrollbar_show_activation_notice'); // Generate activation URL $activation_url = wp_nonce_url( admin_url('plugins.php?action=activate&plugin=' . $plugin_slug), 'activate-plugin_' . $plugin_slug ); // Display notice with activation button ?>
'Invalid nonce or request.'], 400); } if (!current_user_can( 'manage_options' )) { wp_send_json_error( 'Unauthorized Access' ); } $plugin_name = sanitize_text_field($_GET['plugin_name']) ?? false; include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; try { // Fetch plugin information $api = plugins_api('plugin_information', ['slug' => $plugin_name, 'fields' => ['sections' => false]]); if (is_wp_error($api)) { wp_send_json_error(['message' => 'Failed to fetch plugin information.']); } // Suppress unexpected output ob_start(); $upgrader = new Plugin_Upgrader(); $result = $upgrader->install($api->download_link); ob_end_clean(); $plugin_slug = $plugin_name.'/'.$plugin_name.'.php'; if ($result) { // Set transient to show notice set_transient('csb_scrollbar_show_activation_notice', $plugin_slug, 1000000); // Valid for 60 seconds $redirect_url = admin_url('plugins.php?plugin_status=all'); wp_send_json_success(['message' => 'Plugin installed successfully.', 'redirectUrl' => $redirect_url]); } else { wp_send_json_error(['message' => 'Plugin installation failed.']); } } catch (Exception $e) { wp_send_json_error(['message' => 'An unexpected error occurred: ' . $e->getMessage()]); } } function adminEnqueueScripts( $hook ) { if( str_contains( $hook, 'advanced-scrollbar' ) ){ wp_enqueue_media(); wp_enqueue_style( 'advanced-scrollbar-admin-style', CSB_DIR_URL . 'build/admin.css', ['wp-components','wp-edit-blocks','wp-block-editor'], CSB_VERSION ); wp_enqueue_script( 'advanced-scrollbar-admin-script', CSB_DIR_URL . 'build/admin.js', [ 'react', 'react-dom', 'wp-components', 'wp-i18n', 'wp-api', 'wp-util' ,'lodash', 'wp-media-utils' ,'wp-data','wp-core-data','wp-api-request','wp-element','wp-edit-post','wp-block-editor' ], CSB_VERSION, true ); } } function adminMenu() { $menuIcon = ''; // add_menu_page( // __( 'Plugin Menu', 'advanced-scrollbar' ), // __( 'Adv Scrollbar', 'advanced-scrollbar' ), // 'manage_options', // 'advanced-scrollbar', // '', // 'data:image/svg+xml;base64,' . base64_encode( $menuIcon ), // 20 // ); // add_submenu_page( // 'advanced-scrollbar', // __( 'Dashboard', 'advanced-scrollbar' ), // __( 'Dashboard', 'advanced-scrollbar' ), // 'manage_options', // 'advanced-scrollbar', // [$this, 'dashboardPage'] // ); add_options_page( __( 'Advanced Scrollbar Settings', 'advanced-scrollbar' ), // Page title __( 'Advanced Scrollbar Settings', 'advanced-scrollbar' ), // Menu title 'manage_options', // Capability 'advanced-scrollbar', // Menu slug [$this, 'dashboardPage'] // Callback ); } function dashboardPage(){ ?>