[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.145.166.178: ~ $
<?php
/**
 * Helper class to manage plugin installation.
 *
 * @package Tutor\Helper
 * @author Themeum <support@themeum.com>
 * @link https://themeum.com
 * @since 3.2.0
 */

namespace Tutor\Helpers;

/**
 * PluginInstaller class.
 *
 * @since 3.2.0
 */
class PluginInstaller {

	/**
	 * Install/Upgrade the payment gateway plugin
	 *
	 * @since 3.0.0
	 *
	 * @param string $plugin_url Plugin URL.
	 * @param mixed  $plugin_basename Plugin basename.
	 *
	 * @throws \Exception If the plugin installation fails.
	 *
	 * @return bool
	 */
	public static function install_or_upgrade_plugin( $plugin_url, $plugin_basename = null ) {
		$plugin_dir = $plugin_basename ? dirname( $plugin_basename ) : null;
		if ( ! $plugin_dir ) {
			$plugin_dir = explode( '-', basename( $plugin_url ) )[0];
		}

		$args = array(
			'package'                     => $plugin_url,
			'destination'                 => WP_PLUGIN_DIR . '/' . $plugin_dir,
			'clear_destination'           => true,
			'abort_if_destination_exists' => true,
		);

		// Include necessary WordPress functions for plugin installation.
		if ( ! function_exists( 'plugins_api' ) ) {
			require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
		}
		if ( ! class_exists( 'WP_Upgrader' ) ) {
			require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
		}

		// Define the plugin installer class.
		$upgrader = new \Plugin_Upgrader( new \WP_Ajax_Upgrader_Skin() );

		if ( $plugin_basename ) {
			// Upgrade.
			$upgrade = $upgrader->run( $args );
			if ( is_wp_error( $upgrade ) ) {
				throw new \Exception( $upgrade->get_error_message() );
			} elseif ( ! $upgrade ) {
				return false;
			} else {
				return true;
			}
		} else {
			// Install the plugin.
			$install = $upgrader->install( $plugin_url, $args );
			if ( is_wp_error( $install ) ) {
				throw new \Exception( $install->get_error_message() );
			} elseif ( ! $install ) {
				return false;
			}
		}

		// Activate the plugin after installation.
		$plugin_basename = $upgrader->plugin_info(); // Retrieves the plugin basename.
		if ( $plugin_basename ) {
			$activate = activate_plugin( $plugin_basename );
			if ( is_wp_error( $activate ) ) {
				throw new \Exception( $activate->get_error_message() );
			}
		} else {
			return false;
		}

		return true;
	}

	/**
	 * Fetches the downloadable URL for a WordPress plugin from the WordPress API.
	 *
	 * @param string $plugin_slug The plugin slug.
	 *
	 * @return array An associative array with the status of the request and the download link or error message.
	 * @since 3.2.0
	 */
	public static function get_downloadable_url( $plugin_slug ) {

		$plugin_slug = strtok( $plugin_slug, '/' );
		$url         = "https://api.wordpress.org/plugins/info/1.0/{$plugin_slug}.json";
		$request     = HttpHelper::get( $url );
		$response    = $request->get_json();
		$status      = $request->get_status_code();

		if ( HttpHelper::STATUS_OK === $status && ! empty( $response->download_link ) ) {

			return array(
				'success' => true,
				'message' => $response->download_link,
			);
		}

		$message = $response->error ?? __( 'An error occurred while fetching the plugin download link.', 'tutor-pro' );

		return array(
			'success' => false,
			'message' => $message,
		);
	}
}

Filemanager

Name Type Size Permission Actions
DateTimeHelper.php File 5.55 KB 0644
HttpHelper.php File 3.51 KB 0644
PluginInstaller.php File 3.18 KB 0644
QueryHelper.php File 22.48 KB 0644
SessionHelper.php File 1.81 KB 0644
ValidationHelper.php File 9.44 KB 0644