<?php


if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class Iconvert_Shoply_Plugin_Install {


	public function __construct() {
		add_action( 'admin_enqueue_scripts', array( $this, 'plugin_install_scripts' ) );
	}


	public function plugin_install_scripts( $hook_suffix ) {


		wp_enqueue_script( 'iconvert-shoply-plugin-install', get_template_directory_uri() . '/assets/js/plugin-install.js', array( 'jquery', 'updates' ), ICONVERT_SHOPLY_VERSION, 'all' );
        wp_enqueue_style( 'iconvert-shoply-plugin-install', get_template_directory_uri() . '/assets/css/plugin-install.css', array(), ICONVERT_SHOPLY_VERSION, 'all' );

	}


	public static function install_plugin_button( $plugin_slug, $plugin_file, $plugin_name, $classes = array(), $activated = '', $activate = '', $install = '' ) {
		if ( current_user_can( 'install_plugins' ) && current_user_can( 'activate_plugins' ) ) {
			if ( is_plugin_active( $plugin_slug . '/' . $plugin_file ) ) {
				// The plugin is already active.
				$button = array(
					'message' => esc_attr__( 'Activated', 'iconvert-shoply' ),
					'url'     => '#',
					'classes' => array( 'iconvert-shoply-button', 'disabled' ),
				);

				if ( '' !== $activated ) {
					$button['message'] = esc_attr( $activated );
				}
			} elseif ( self::is_plugin_installed( $plugin_slug ) ) {
				$url = self::is_plugin_installed( $plugin_slug );

				// The plugin exists but isn't activated yet.
				$button = array(
					'message' => esc_attr__( 'Activate', 'iconvert-shoply' ),
					'url'     => $url,
					'classes' => array( 'activate-now' ),
				);

				if ( '' !== $activate ) {
					$button['message'] = esc_attr( $activate );
				}
			} else {
				// The plugin doesn't exist.
				$url    = wp_nonce_url(
					add_query_arg(
						array(
							'action' => 'install-plugin',
							'plugin' => $plugin_slug,
						),
						self_admin_url( 'update.php' )
					),
					'install-plugin_' . $plugin_slug
				);
				$button = array(
					'message' => esc_attr__( 'Install now', 'iconvert-shoply' ),
					'url'     => $url,
					'classes' => array( 'iconvert-shoply-install-now', 'install-now', 'install-' . $plugin_slug ),
				);

				if ( '' !== $install ) {
					$button['message'] = esc_attr( $install );
				}
			}

			if ( ! empty( $classes ) ) {
				$button['classes'] = array_merge( $button['classes'], $classes );
			}

			$button['classes'] = implode( ' ', $button['classes'] );

			?>
				<span class="plugin-card-<?php echo esc_attr( $plugin_slug ); ?>">
					<a href="<?php echo esc_url( $button['url'] ); ?>" class="<?php echo esc_attr( $button['classes'] ); ?>" data-originaltext="<?php echo esc_attr( $button['message'] ); ?>" data-name="<?php echo esc_attr( $plugin_name ); ?>" data-slug="<?php echo esc_attr( $plugin_slug ); ?>" aria-label="<?php echo esc_attr( $button['message'] ); ?>"><?php echo esc_html( $button['message'] ); ?></a>
				</span> <?php echo /* translators: conjunction of two alternative options user can choose (in missing plugin admin notice). Example: "Activate WooCommerce or learn more" */ esc_html__( 'or', 'iconvert-shoply' ); ?>
				<a href="https://wordpress.org/plugins/<?php echo esc_attr( $plugin_slug ); ?>" target="_blank"><?php esc_html_e( 'learn more', 'iconvert-shoply' ); ?></a>
				<?php
		}
	}


	private static function is_plugin_installed( $plugin_slug ) {
		if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_slug ) ) {
			$plugins = get_plugins( '/' . $plugin_slug );
			if ( ! empty( $plugins ) ) {
				$keys        = array_keys( $plugins );
				$plugin_file = $plugin_slug . '/' . $keys[0];
				$url         = wp_nonce_url(
					add_query_arg(
						array(
							'action' => 'activate',
							'plugin' => $plugin_file,
						),
						admin_url( 'plugins.php' )
					),
					'activate-plugin_' . $plugin_file
				);
				return $url;
			}
		}
		return false;
	}
}

return new Iconvert_Shoply_Plugin_Install();
