<?php

namespace DeployerForGit\Subpages\InstallPluginPage;

use DeployerForGit\Subpages\InstallPackage;

/**
 * Class InstallPlugin
 *
 * @package DeployerForGit\Subpages\InstallPluginPage
 */
class InstallPlugin extends InstallPackage {

	/**
	 * Initializes the menu.
	 */
	public function init_menu() {
		$menu_slug  = \DeployerForGit\Helper::menu_slug();
		$page_title = esc_attr__( 'Install Plugin', 'deployer-for-git' );
		$capability = is_multisite() ? 'manage_network_options' : 'manage_options';

		add_submenu_page(
			$menu_slug,
			$page_title,
			$page_title,
			$capability,
			"{$menu_slug}-install-plugin",
			array( $this, 'init_page' )
		);
	}

	/**
	 * Installs a plugin from a zip file.
	 *
	 * @param string $package_zip_url The URL of the zip file.
	 * @param string $package_slug The slug of the package.
	 * @param string $package_provider The provider of the package (github, bitbucket, gitlab, gitea).
	 * @param array  $options The options.
	 * @return WP_Error|bool Returns WP_Error object for failure or true for success.
	 */
	public static function install_plugin_from_zip_url( $package_zip_url, $package_slug, $package_provider, $options = array() ) {
		return parent::install_package_from_zip_url( $package_zip_url, $package_slug, 'plugin', $package_provider, $options );
	}

	/**
	 * Initializes the page.
	 */
	public function init_page() {
		// Handle package installation form.
		$install_result = parent::handle_package_install_form();

		include_once __DIR__ . '/template.php';
	}
}