__( 'Ovation Elements', 'call-center-services' ), 'slug' => 'ovation-elements', 'file' => 'ovation-elements.php' ), array( 'name' => __( 'WooCommerce', 'call-center-services' ), 'slug' => 'woocommerce', 'file' => 'woocommerce.php' ) ); foreach ($recommended_plugins as $plugin) { $plugin_slug = $plugin['slug']; $plugin_file = $plugin['file']; // Check if the plugin is active if (!is_plugin_active($plugin_slug . '/' . $plugin_file)) { return false; // If any plugin is not active, return false } } return true; // All plugins are active } class Silent_Skin extends WP_Upgrader_Skin { public function header() {} public function footer() {} public function feedback($string, ...$args) {} public function error($errors) {} public function before() {} public function after() {} } // Function to install and activate plugins function call_center_services_install_and_activate_plugins() { if (!current_user_can('manage_options')) { return; } check_ajax_referer('call_center_services_welcome_nonce', 'nonce'); // Define the recommended plugins $recommended_plugins = array( array( 'name' => __( 'Ovation Elements', 'call-center-services' ), 'slug' => 'ovation-elements', 'file' => 'ovation-elements.php' ), array( 'name' => __( 'WooCommerce', 'call-center-services' ), 'slug' => 'woocommerce', 'file' => 'woocommerce.php' ) ); set_transient('install_and_activate_progress', array(), MINUTE_IN_SECONDS * 10); require_once(ABSPATH . 'wp-admin/includes/plugin-install.php'); require_once(ABSPATH . 'wp-admin/includes/file.php'); require_once(ABSPATH . 'wp-admin/includes/misc.php'); require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'); foreach ($recommended_plugins as $plugin) { $plugin_slug = $plugin['slug']; $plugin_file = $plugin['file']; $plugin_name = $plugin['name']; // Check if the plugin is active if (is_plugin_active($plugin_slug . '/' . $plugin_file)) { update_install_and_activate_progress($plugin_name, 'Already Active'); continue; } // Check if the plugin is installed but not active if (is_call_center_services_plugin_installed($plugin_slug)) { $activate = activate_plugin($plugin_slug . '/' . $plugin_file); if (is_wp_error($activate)) { update_install_and_activate_progress($plugin_name, 'Error'); continue; } update_install_and_activate_progress($plugin_name, 'Activated'); continue; } // Plugin is not installed or activated, proceed with installation update_install_and_activate_progress($plugin_name, 'Installing'); $api = plugins_api('plugin_information', array('slug' => $plugin_slug, 'fields' => array('sections' => false))); if (is_wp_error($api)) { update_install_and_activate_progress($plugin_name, 'Error'); continue; } $upgrader = new Plugin_Upgrader(new Silent_Skin()); $install = $upgrader->install($api->download_link); if ($install) { $activate = activate_plugin($plugin_slug . '/' . $plugin_file); if (is_wp_error($activate)) { update_install_and_activate_progress($plugin_name, 'Error'); continue; } update_install_and_activate_progress($plugin_name, 'Activated'); continue; } else { update_install_and_activate_progress($plugin_name, 'Error'); } } delete_transient('install_and_activate_progress'); if (ob_get_length()) ob_clean(); header('Content-Type: application/json; charset=utf-8'); $redirect_url = admin_url('themes.php?page=call-center-services-guide-page'); echo json_encode([ 'success' => true, 'data' => [ 'redirect_url' => $redirect_url, ], ]); wp_die(); } // Function to check if a plugin is installed function is_call_center_services_plugin_installed($plugin_slug) { $installed_plugins = get_plugins(); foreach ($installed_plugins as $path => $details) { if (strpos($path, $plugin_slug) === 0) { return true; } } return false; } // Function to update the installation progress function update_install_and_activate_progress($plugin_name, $status) { $progress = get_transient('install_and_activate_progress'); $progress[] = array('plugin' => $plugin_name, 'status' => $status); set_transient('install_and_activate_progress', $progress, MINUTE_IN_SECONDS * 10); } // Dismiss function for AJAX request add_action('wp_ajax_call_center_services_dismissed_notice_handler', 'call_center_services_ajax_notice_dismiss_function'); function call_center_services_ajax_notice_dismiss_function() { if (!wp_verify_nonce($_POST['wpnonce'], 'call_center_services_welcome_nonce')) { wp_send_json_error('Invalid nonce'); exit; } if (isset($_POST['type'])) { $type = sanitize_text_field(wp_unslash($_POST['type'])); update_option('dismissed-' . $type, true); wp_send_json_success('Notice dismissed'); } else { wp_send_json_error('Type not set'); } } // Function to show admin notice conditionally function call_center_services_custom_admin_notice() { if (!get_option('dismissed-get_started_notice', false)) { $call_center_services_current_screen = get_current_screen(); $call_center_services_theme = wp_get_theme(); if ($call_center_services_current_screen && $call_center_services_current_screen->id !== 'appearance_page_call-center-services-guide-page') { ?>

get('Name')); ?>

`