__( 'Ovation Elements', 'camera-rental' ), 'slug' => 'ovation-elements', 'file' => 'ovation-elements.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 camera_rental_install_and_activate_plugins() { if (!current_user_can('manage_options')) { return; } check_ajax_referer('camera_rental_welcome_nonce', 'nonce'); // Define the recommended plugins $recommended_plugins = array( array( 'name' => __( 'Ovation Elements', 'camera-rental' ), 'slug' => 'ovation-elements', 'file' => 'ovation-elements.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_camera_rental_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=camera-rental-guide-page'); echo json_encode([ 'success' => true, 'data' => [ 'redirect_url' => $redirect_url, ], ]); wp_die(); } // Function to check if a plugin is installed function is_camera_rental_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_camera_rental_dismissed_notice_handler', 'camera_rental_ajax_notice_dismiss_function'); function camera_rental_ajax_notice_dismiss_function() { if (!wp_verify_nonce($_POST['wpnonce'], 'camera_rental_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 camera_rental_custom_admin_notice() { if (!get_option('dismissed-get_started_notice', false)) { $camera_rental_current_screen = get_current_screen(); $camera_rental_theme = wp_get_theme(); if ($camera_rental_current_screen && $camera_rental_current_screen->id !== 'appearance_page_camera-rental-guide-page') { ?>

get('Name')); ?>