<?php
namespace sgpb;

class SGPBFeedback
{
	public function __construct()
	{
		add_action('current_screen', array($this, 'actionToCurrentScreen'));
		add_action('wp_ajax_sgpb_deactivate_feedback', array($this, 'sgpbDeactivateFeedback'));
	}

	public function actionToCurrentScreen() {
		if (!$this->isPluginsScreen()) {
			return;
		}

		add_filter('sgpbAdminJsFiles', array($this, 'adminJsFilter'), 1, 1);
		add_action('admin_footer', array($this, 'renderDeactivateFeedbackDialog'));
	}

	public function adminJsFilter($jsFiles)
	{
		$jsFiles[] = array(
			'folderUrl' => SG_POPUP_JS_PATH,
			'filename' => 'Banner.js'
		);

		return $jsFiles;
	}

	public function sgpbDeactivateFeedback()
	{
		$message = '';
		check_ajax_referer(SG_AJAX_NONCE, 'nonce');
		if (!empty($_POST['formData'])) {
			// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
			parse_str($_POST['formData'],$submissionData);
		}
		array_walk_recursive($submissionData, function(&$item){
			$item = sanitize_text_field($item);
		});
		$feedbackKey = $feedbackText = 'Skipped';
		if (!empty($submissionData['reasonKey'])) {
			$feedbackKey = $submissionData['reasonKey'];
		}

		if (!empty($submissionData["reason_{$feedbackKey}"])) {
			$feedbackText = $submissionData["reason_{$feedbackKey}"];
		}
		$headers  = 'MIME-Version: 1.0'."\r\n";
		$headers .= 'From: feedbackpopupbuilder@gmail.com'."\r\n";
		$headers .= 'Content-type: text/html; charset=UTF-8'."\r\n"; //set UTF-8

		$receiver = 'feedbackpopupbuilder@gmail.com';
		$title = 'Popup Builder Deactivation Feedback From Customer';
		$message .= 'Feedback key - '.$feedbackKey.'<br>'."\n";
		$message .= 'Feedback text - '.$feedbackText."\n";

		wp_mail($receiver, $title, $message, $headers);

		wp_die(1);
	}

	public function renderDeactivateFeedbackDialog() {
		$deactivateReasons = array(
			'no_longer_needed' => array(
				'title' => __('I no longer need the plugin', SG_POPUP_TEXT_DOMAIN),
				'input_placeholder' => ''
			),
			'found_a_better_plugin' => array(
				'title' => __('I found a better plugin', SG_POPUP_TEXT_DOMAIN),
				'input_placeholder' => __( 'Please share which plugin', SG_POPUP_TEXT_DOMAIN)
			),
			'couldnt_get_the_plugin_to_work' => array(
				'title' => __('I couldn\'t get the plugin to work', SG_POPUP_TEXT_DOMAIN),
				'input_placeholder' => '',
				'extra_help' => __('Having troubles? You can always count on us. Please try to contact us via <a href="https://popup-builder.com/">Live chat</a> or send a message to <a href="mailto:support@popup-builder.com">support@popup-builder.com</a>', SG_POPUP_TEXT_DOMAIN)
			),
			'temporary_deactivation' => array(
				'title' => __('It\'s a temporary deactivation', SG_POPUP_TEXT_DOMAIN),
				'input_placeholder' => ''
			),
			'other' => array(
				'title' => __('Other', SG_POPUP_TEXT_DOMAIN),
				'input_placeholder' => __('Please share the reason', SG_POPUP_TEXT_DOMAIN),
			)
		);

		?>
		<div id="sgpb-feedback-popup">
			<div class="sgpb-feedback-popup-wrapper">
				<div class="sgpb-wrapper">
					<div class="row sgpb-feedback-popup-header sgpb-position-relative">
						<div class="col-sm-3 sgpb-add-subscriber-header-column">
							<h4>
								<?php esc_html_e('Quick Feedback', SG_POPUP_TEXT_DOMAIN)?>
							</h4>
						</div>
						<div class="col-sm-1 sgpb-add-subscriber-header-spinner-column">
							<img src="<?php echo esc_attr(SG_POPUP_IMG_URL.'ajaxSpinner.gif'); ?>" alt="gif" class="sgpb-subscribers-add-spinner js-sg-spinner js-sgpb-add-spinner sg-hide-element js-sg-import-gif" width="20px">
						</div>
						<img src="<?php echo esc_attr(SG_POPUP_IMG_URL.'subscribers_close.png'); ?>" alt="gif" class="sgpb-add-subscriber-popup-close-btn sgpb-subscriber-data-popup-close-btn-js" width="20px">
					</div>
					<div class="row">
						<div class="col-md-12">
							<h4 class="sgpb-feedback-descritpion">
								<?php _e('If you have a moment, please share why you are deactivating <b>Popup Builder</b>', SG_POPUP_TEXT_DOMAIN)?>:
							</h4>
							<p class="sgpb-feedback-error-message sg-hide-element"><?php esc_html_e('Please, select an option.', SG_POPUP_TEXT_DOMAIN)?></p>
						</div>
					</div>
					<div class="row">
						<div class="col-md-12">
							<form id="sgpb-deactivate-feedback-dialog-form" method="post">
								<?php foreach ($deactivateReasons as $reasonKey => $reason) : ?>
								<div class="row sgpb-feedback-each-reason-row">
									<div class="col-md-1">
										<input id="sgpb-deactivate-feedback-<?php echo esc_attr($reasonKey); ?>" class="sgpb-deactivate-feedback-dialog-input" type="radio" name="reasonKey" value="<?php echo esc_attr($reasonKey); ?>" />
									</div>
									<div class="col-md-11">
										<label for="sgpb-deactivate-feedback-<?php echo esc_attr($reasonKey); ?>" class="sgpb-deactivate-feedback-dialog-label"><?php echo esc_html($reason['title']); ?></label>
										<?php if (!empty($reason['input_placeholder'])) : ?>
											<input class="sgpb-feedback-text sgpb-feedback-text-input" style="display: none;" type="text" name="reason_<?php echo esc_attr( $reasonKey ); ?>" placeholder="<?php echo esc_attr($reason['input_placeholder']); ?>" />
										<?php endif; ?>
										<?php if (!empty($reason['extra_help'])) : ?>
											<p class="sgpb-feedback-text-input" style="display: none;"><?php echo wp_kses($reason['extra_help'], 'post'); ?></p>
										<?php endif; ?>
									</div>
								</div>
								<?php endforeach; ?>
								<div class="row sgpb-feedback-btns-wrapper">
									<div class="col-md-6">
										<input type="button" class="btn btn-sm btn-success sgpb-feedback-submit" name="sgpb-feedback-submit" value="<?php esc_html_e('Submit & Deactivate', SG_POPUP_TEXT_DOMAIN); ?>">
									</div>
									<div class="col-md-6">
										<input type="button" class="btn btn-sm sgpb-feedback-submit-skip" name="sgpb-feedback-submit-skip" value="<?php esc_html_e('Skip & Deactivate', SG_POPUP_TEXT_DOMAIN); ?>">
									</div>
								</div>
							</form>
						</div>
					</div>
				</div>
			</div>
		</div>
		<?php
	}

	private function isPluginsScreen() {
		return in_array(get_current_screen()->id, array('plugins', 'plugins-network'));
	}
}
