<?php
if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}
if ( ! class_exists( 'PostmanViewController' ) ) {
	class PostmanViewController {
		private $logger;
		private $rootPluginFilenameAndPath;
		private $options;
		private $authorizationToken;
		private $oauthScribe;
		private $importableConfiguration;
		private $adminController;
		const POSTMAN_MENU_SLUG = 'postman';

		// style sheets and scripts
		const POSTMAN_STYLE = 'postman_style';
		const JQUERY_SCRIPT = 'jquery';
		const POSTMAN_SCRIPT = 'postman_script';

		/**
		 * Constructor
		 *
		 * @param PostmanOptions          $options
		 * @param PostmanOAuthToken       $authorizationToken
		 * @param PostmanConfigTextHelper $oauthScribe
		 */
		function __construct( $rootPluginFilenameAndPath, PostmanOptions $options, PostmanOAuthToken $authorizationToken, PostmanConfigTextHelper $oauthScribe, PostmanAdminController $adminController ) {
			$this->options = $options;
			$this->rootPluginFilenameAndPath = $rootPluginFilenameAndPath;
			$this->authorizationToken = $authorizationToken;
			$this->oauthScribe = $oauthScribe;
			$this->adminController = $adminController;
			$this->logger = new PostmanLogger( get_class( $this ) );
			$hostname = PostmanOptions::getInstance()->getHostname();
			$transportType = PostmanOptions::getInstance()->getTransportType();
			$auth_type = PostmanOptions::getInstance()->getAuthenticationType();

			PostmanUtils::registerAdminMenu( $this, 'generateDefaultContent' );
			PostmanUtils::registerAdminMenu( $this, 'addPurgeDataSubmenu' );

			// initialize the scripts, stylesheets and form fields
			add_action( 'admin_init', array( $this, 'registerStylesAndScripts' ), 0 );
			add_action( 'wp_ajax_delete_lock_file', array( $this, 'delete_lock_file' ) );
			add_action( 'wp_ajax_dismiss_version_notify', array( $this, 'dismiss_version_notify' ) );
			add_action( 'wp_ajax_dismiss_donation_notify', array( $this, 'dismiss_donation_notify' ) );
			add_action( 'wp_ajax_ps-discard-less-secure-notification', array( $this, 'discard_less_secure_notification' ) );

			$show_less_secure_notification = get_option( 'ps_hide_less_secure' );

			if( !$show_less_secure_notification && $transportType == 'smtp' && $hostname == 'smtp.gmail.com' && ( $auth_type == 'plain' || $auth_type == 'login' ) ) {
				add_action( 'admin_notices', array( $this, 'google_less_secure_notice' ) );
			}

			//add_action( 'admin_init', array( $this, 'do_activation_redirect' ) );

		}

		/**
		 * Display delivery mode notification in admin bar
		*/
		public static function addDeliveryModeAdminBarNotice() {
			if ( ! class_exists( 'PostmanOptions' ) ) return;
			$run_mode = null;
			if ( method_exists( 'PostmanOptions', 'getInstance' ) ) {
				$run_mode = PostmanOptions::getInstance()->getRunMode();
			}
			if ( $run_mode === PostmanOptions::RUN_MODE_LOG_ONLY ) {
				$msg = __( 'Post SMTP is in Log Only mode', 'post-smtp' );
				$background = '#d32f2f';
				$color = '#fff';
			} elseif ( $run_mode === PostmanOptions::RUN_MODE_IGNORE ) {
				$msg = __( 'Post SMTP is in No Action mode', 'post-smtp' );
				$background = '#fbc02d';
				$color = '#fff';
			} else {
				return;
			}
			global $wp_admin_bar;
			if ( ! is_object( $wp_admin_bar ) ) return;
			$wp_admin_bar->add_node( array(
				'id'    => 'post_smtp_delivery_mode',
				'title' => '<span style="padding:4px 12px;border-radius:3px;background:' . esc_attr($background) . ';color:' . esc_attr($color) . ';font-weight:bold;">' . esc_html($msg) . '</span>',
				'meta'  => array( 'html' => true ),
			) );
		}


		function dismiss_version_notify() {
            check_admin_referer( 'postsmtp', 'security' );

			$result = update_option('postman_release_version', true );
		}

        function dismiss_donation_notify() {
            check_admin_referer( 'postsmtp', 'security' );

            $result = update_option('postman_dismiss_donation', true );
        }

		function delete_lock_file() {
            check_admin_referer( 'postman', 'security' );

			if ( ! PostmanUtils::lockFileExists() ) {
				echo esc_html__('No lock file found.', 'post-smtp' );
				die();
			}

			echo PostmanUtils::deleteLockFile() == true ? esc_html__('Success, try to send test email.', 'post-smtp' ) : esc_html__('Failed, try again.', 'post-smtp' );
			die();
		}

		function do_activation_redirect() {

			// Bail if no activation redirect
		    if ( ! get_transient( '_post_activation_redirect' ) ) {
				return;
			}

			// Delete the redirect transient
			delete_transient( '_post_activation_redirect' );

			// Bail if activating from network, or bulk
			if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
				return;
			}

			// Bail if the current user cannot see the about page
			if ( ! current_user_can( 'manage_options' ) ) {
				return;
			}

			// Redirect to bbPress about page
			wp_safe_redirect( add_query_arg( array( 'page' => 'post-about' ), admin_url( 'index.php' ) ) );
		}

		public static function getPageUrl( $slug ) {
			return PostmanUtils::getPageUrl( $slug );
		}

		/**
		 * Add options page
		 * 
		 * @since 2.1 Added `add_submenu_page`
		 */
		public function generateDefaultContent() {
			// This page will be under "Settings"
			$pageTitle = sprintf( __( '%s Setup', 'post-smtp' ), __( 'Post SMTP', 'post-smtp' ) );
			$pluginName = __( 'Post SMTP', 'post-smtp' );
			$uniqueId = self::POSTMAN_MENU_SLUG;
			$pageOptions = array(
					$this,
					'outputDefaultContent',
			);
			$mainPostmanSettingsPage = add_menu_page( $pageTitle, $pluginName, Postman::MANAGE_POSTMAN_CAPABILITY_NAME, $uniqueId, $pageOptions, 'dashicons-email' );
			
			//To change the text of top level menu
			add_submenu_page( $uniqueId, $pageTitle, 'Dashboard', Postman::MANAGE_POSTMAN_CAPABILITY_NAME, $uniqueId, $pageOptions );

			// When the plugin options page is loaded, also load the stylesheet
			add_action( 'admin_print_styles-' . $mainPostmanSettingsPage, array(
					$this,
					'enqueueHomeScreenStylesheet',
			) );
		}
		function enqueueHomeScreenStylesheet() {
			wp_enqueue_style( PostmanViewController::POSTMAN_STYLE );
			wp_enqueue_script( PostmanViewController::POSTMAN_SCRIPT );
		}

		/**
		 * Register the Email Test screen
		 */
		public function addPurgeDataSubmenu() {
			$page = add_submenu_page( ' ', sprintf( __( '%s Setup', 'post-smtp' ), __( 'Post SMTP', 'post-smtp' ) ), __( 'Post SMTP', 'post-smtp' ), Postman::MANAGE_POSTMAN_CAPABILITY_NAME, PostmanAdminController::MANAGE_OPTIONS_PAGE_SLUG, array(
					$this,
					'outputPurgeDataContent',
			) );
			// When the plugin options page is loaded, also load the stylesheet
			add_action( 'admin_print_styles-' . $page, array(
					$this,
					'enqueueHomeScreenStylesheet',
			) );
		}

		/**
		 * Register and add settings
		 */
		public function registerStylesAndScripts() {
			if ( $this->logger->isTrace() ) {
				$this->logger->trace( 'registerStylesAndScripts()' );
			}
			// register the stylesheet and javascript external resources
			$pluginData = apply_filters( 'postman_get_plugin_metadata', null );
			wp_register_style( PostmanViewController::POSTMAN_STYLE, plugins_url( 'style/postman.css', $this->rootPluginFilenameAndPath ), null, $pluginData ['version'] );
			wp_register_style( 'jquery_ui_style', plugins_url( 'style/jquery-steps/jquery-ui.css', $this->rootPluginFilenameAndPath ), PostmanViewController::POSTMAN_STYLE, '1.1.0' );
			wp_register_style( 'jquery_steps_style', plugins_url( 'style/jquery-steps/jquery.steps.css', $this->rootPluginFilenameAndPath ), PostmanViewController::POSTMAN_STYLE, '1.1.0' );

			wp_register_script( PostmanViewController::POSTMAN_SCRIPT, plugins_url( 'script/postman.js', $this->rootPluginFilenameAndPath ), array(
					PostmanViewController::JQUERY_SCRIPT,
				'jquery-ui-core',
				'jquery-ui-datepicker',
			), $pluginData ['version'] );
			wp_register_script( 'sprintf', plugins_url( 'script/sprintf/sprintf.min.js', $this->rootPluginFilenameAndPath ), null, '1.0.2' );
			wp_register_script( 'jquery_steps_script', plugins_url( 'script/jquery-steps/jquery.steps.min.js', $this->rootPluginFilenameAndPath ), array(
					PostmanViewController::JQUERY_SCRIPT
			), '1.1.0' );
			wp_register_script( 'jquery_validation', plugins_url( 'script/jquery-validate/jquery.validate.min.js', $this->rootPluginFilenameAndPath ), array(
					PostmanViewController::JQUERY_SCRIPT
			), '1.13.1' );

			wp_localize_script( PostmanViewController::POSTMAN_SCRIPT, 'postman_ajax_msg', array(
					'bad_response' 			=>	__( 'An unexpected error occurred', 'post-smtp' ),
					'corrupt_response' 		=>	__( 'Unexpected PHP messages corrupted the Ajax response', 'post-smtp' )
			) );

			wp_localize_script( PostmanViewController::POSTMAN_SCRIPT, 'postman_ajax', array(
				'lessSecureNotice'	=>	wp_create_nonce( 'less-secure-security' )
		) );
		}

		/**
		 * Options page callback
		 */
		public function outputDefaultContent() {
            if ( apply_filters( 'post_smtp__new_dashboard', __return_false() ) ) {
                do_action( 'post_smtp__new_dashboard_content' );
            } else {
	            // Set class property
	            print '<div class="wrap">';
	            print '<div class="ps-main-container-wrap">';

	            $version = PostmanState::getInstance()->getVersion();

	            printf(
		            '<div class="ps-main-header post-smtp-welcome-panel"><h2>%s</h2></div>',
		            esc_html__( 'Post SMTP Setup', 'post-smtp' )
	            );

	            //Top Notification message
	            if( !PostmanPreRequisitesCheck::isReady() ) {

		            printf(
			            '<div class="ps-config-bar"><span>%s</span><span style="color: red" class="dashicons dashicons-dismiss"></span></div>',
			            esc_html__( 'Postman is unable to run. Email delivery is being handled by WordPress (or another plugin).', 'post-smtp' )
		            );

	            }
	            else {

		            $ready_messsage = PostmanTransportRegistry::getInstance()->getReadyMessage();
		            $statusMessage = $ready_messsage['message'];

		            $transport = PostmanTransportRegistry::getInstance()->getSelectedTransport();

		            if ( PostmanTransportRegistry::getInstance()->getActiveTransport()->isConfiguredAndReady() ) {

			            if ( $this->options->getRunMode() != PostmanOptions::RUN_MODE_PRODUCTION ) {
				            printf(
					            '<div class="ps-config-bar">
								<span>%s</span><span style="color: orange;" class="dashicons dashicons-yes-alt"></span>
							</div>',
					            wp_kses_post( $statusMessage )
				            );
			            }
			            else {
				            printf(
					            '<div class="ps-config-bar">
								<span>%s</span><span style="color: green" class="dashicons dashicons-yes-alt"></span>
								<div class="ps-right">
									What\'s Next? Get Started by Sending a Test Email! <a href="%s" class="button button-primary"> Send a Test Email</a>
								</div>
								<div class="clear"></div>
							</div>',
					            wp_kses_post( $statusMessage ),
					            esc_url( $this->getPageUrl( PostmanSendTestEmailController::EMAIL_TEST_SLUG ) )
				            );
			            }
		            }
                    elseif ( !$transport->has_granted() ) {

			            $notice = $transport->get_not_granted_notice();

			            printf(
				            '<div class="ps-config-bar">
							<span >%s</span>
							<div class="ps-right">
								<img src="%s" style="vertical-align: middle;width: 30px;" />
								<a href="%s" class="button button-primary">%s</a>
							</div>
						</div>',
				            esc_html( $notice['message'] ),
				            esc_url( POST_SMTP_ASSETS . 'images/icons/hand.png' ),
				            esc_attr( $notice['url'] ),
				            esc_html(  $notice['url_text'] )
			            );

		            }
		            else {

			            /**
			             * Filter the URL of the Postman SMTP Wizard
			             *
			             * @param string $slug The URL page of the Postman SMTP Wizard
			             *
			             * @since 2.9.4
			             */
			            $slug = apply_filters( 'post_smtp_wizard_url_page', PostmanConfigurationController::CONFIGURATION_WIZARD_SLUG );

			            printf(
				            '<div class="ps-config-bar">
							<span >%s</span>
							<span style="color: red" class="dashicons dashicons-dismiss"></span>
							<div class="ps-right">
								%s <a href="%s" class="button button-primary">%s</a>
							</div>
						</div>',
				            wp_kses_post( $statusMessage ),
				            esc_html__( 'Get Started by Setup Wizard!', 'post-smtp' ),
				            esc_attr( $this->getPageUrl( $slug ) ),
				            esc_html__( 'Start the Wizard', 'post-smtp' )
			            );
		            }

	            }

	            //Main Content

	            /**
	             * Filter the URL of the Postman SMTP Wizard
	             *
	             * @param string $slug The URL page of the Postman SMTP Wizard
	             *
	             * @since 2.9.4
	             */
	            $slug = apply_filters( 'post_smtp_wizard_url_page', PostmanConfigurationController::CONFIGURATION_WIZARD_SLUG );
	            ?>
                <div class="ps-flex ps-home-main">
                    <div class="ps-setting-box">
                        <div>
                            <img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/configuration.png' ) ?>" />
                            <h3 class="ps-ib ps-vm"><?php esc_html_e( 'Configuration', 'post-smtp' ); ?></h3>
                        </div>
                        <div class="ps-wizard">
                            <a href="<?php esc_attr_e( $this->getPageUrl( $slug ) ) ?>" class="button button-primary"><?php esc_html_e( 'Start the Wizard', 'post-smtp' ); ?></a>
                            <h4><?php esc_html_e( 'OR', 'post-smtp' ); ?></h4>
                            <div>
                                <a href="<?php echo esc_url( $this->getPageUrl( PostmanConfigurationController::CONFIGURATION_SLUG ) ) ?>">
                                    <img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" />
						            <?php esc_html_e( 'Show All Settings', 'post-smtp' ) ?>
                                </a>
                            </div>
                        </div>
                    </div>
                    <div class="ps-setting-box">
                        <img src="<?php echo esc_attr( POST_SMTP_ASSETS . 'images/icons/action.png' ) ?>" />
                        <h3 class="ps-ib ps-vm"><?php esc_html_e( 'Actions', 'post-smtp' ); ?></h3>
			            <?php
				            // Grant permission with Google
				            ob_start();
				            PostmanTransportRegistry::getInstance()->getSelectedTransport()->printActionMenuItem();
				            $oauth_link = ob_get_clean();
				            $oauth_link = apply_filters( 'post_smtp_oauth_actions', $oauth_link );
				            $has_link =  preg_match('/<\s?[^\>]*\/?\s?>/i', $oauth_link );

				            if( $has_link ): ?>
                                <div>
                                    <img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" />
						            <?php echo wp_kses_post( $oauth_link ); ?>
                                </div>
				            <?php endif; ?>
                        <div>
				            <?php
					            if ( PostmanWpMailBinder::getInstance()->isBound() ) {

						            echo '
								<div>
									<a href="'.esc_url( $this->getPageUrl( PostmanSendTestEmailController::EMAIL_TEST_SLUG ) ).'">
										<img src="'.esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ).'" width="15" />
										'.esc_html__( 'Send a Test Email', 'post-smtp' ).
						                 '</a>
								</div>';

					            } else {

						            echo '
								<div>
									<img src="'.esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ).'" width="15" />
									'.esc_html__( 'Send a Test Email', 'post-smtp' ) .'
								</div>
								';

					            }
				            ?>
                        </div>
                        <div>
				            <?php

					            $purgeLinkPattern = '
							<a href="%1$s">
								<img src="'.esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ).'" width="15" />
								%2$s
							</a>';
							$tab_heading = postman_is_bfcm() ? __( 'Get More with Pro [24%OFF]', 'post-smtp' ) : __( 'Get More with Pro', 'post-smtp' );

					            $importTitle = __( 'Import', 'post-smtp' );
					            $exportTile = __( 'Export', 'post-smtp' );
					            $resetTitle = __( 'Reset Plugin', 'post-smtp' );
					            $importExportReset = sprintf( '%s/%s/%s', $importTitle, $exportTile, $resetTitle );

					            printf(
						            wp_kses_post( $purgeLinkPattern ),
						            esc_url( $this->getPageUrl( PostmanAdminController::MANAGE_OPTIONS_PAGE_SLUG ) ),
						            sprintf( '%s', esc_html( $importExportReset ) )
					            );

					            do_action( 'post_smtp_extension_reset_link' );

					            if( !post_smtp_has_pro() ) {

						            $badgesDisplay = "ps-dashboard-pro";

					            }
					            else{

						            $badgesDisplay = "ps-dashboard-pro-hide";
					            }
				            ?>
                        </div>
                    </div>
                    <div class="ps-setting-box">
                        <div>
                            <img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/extentions.png' ) ?>" />
                            <h3 class="ps-ib ps-vm"><?php esc_html_e( 'Extensions', 'post-smtp' ); ?></h3>
                        </div>
                        <div>
                            <a href="<?php echo esc_url( 'https://postmansmtp.com/extensions/office-365-extension-for-post-smtp/?utm_source=plugin&utm_medium=dashboard&utm_campaign=plugin' ); ?>" target="_blank"><img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" /><?php echo esc_html__( 'Microsoft 365/ Office 365', 'post-smtp' ); ?></a>
                            <span class="<?php echo $badgesDisplay; ?>">Pro</span>
                        </div>
                        <div>
                            <a href="<?php echo esc_url( 'https://postmansmtp.com/extensions/post-smtp-extension-for-amazon-ses/?utm_source=plugin&utm_medium=dashboard&utm_campaign=plugin' ); ?>" target="_blank"><img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" ><?php echo esc_html__( 'Amazon SES', 'post-smtp' ); ?></a>
                            <span class="<?php echo $badgesDisplay; ?>">Pro</span>
                        </div>
                        <div>
                            <a href="<?php echo esc_url( 'https://postmansmtp.com/extensions/email-log-attachment/?utm_source=plugin&utm_medium=dashboard&utm_campaign=plugin' ); ?>" target="_blank"><img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" ><?php echo esc_html__( 'Email Log attachment support', 'post-smtp' ); ?></a>
                            <span class="<?php echo $badgesDisplay; ?>">Pro</span>
                        </div>
                        <div>
                            <a href="<?php echo esc_url( 'https://postmansmtp.com/extensions/reporting-and-tracking-extension/?utm_source=plugin&utm_medium=dashboard&utm_campaign=plugin' ); ?>" target="_blank"><img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" ><?php echo esc_html__( 'Report & Tracking', 'post-smtp' ); ?></a>
                            <span class="<?php echo $badgesDisplay; ?>">Pro</span>
                        </div>
                        <div>
                            <a href="<?php echo esc_url( 'https://postmansmtp.com/extensions/advanced-email-delivery/?utm_source=plugin&utm_medium=dashboard&utm_campaign=plugin' ); ?>" target="_blank"><img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" ><?php echo esc_html__( 'Advanced Email Delivery & Logs', 'post-smtp' ); ?></a>
                            <span class="<?php echo $badgesDisplay; ?>">Pro</span>
                        </div>
                        <div>
                            <a href="<?php echo esc_url( 'https://postmansmtp.com/extensions/twilio-extension-pro/?utm_source=plugin&utm_medium=dashboard&utm_campaign=plugin' ); ?>" target="_blank"><img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" ><?php echo esc_html__( 'Twilio', 'post-smtp' ); ?></a>
                            <span class="<?php echo $badgesDisplay; ?>">Pro</span>
                        </div>
                        <div>
                            <a href="<?php echo esc_url( 'https://postmansmtp.com/extensions/zoho-mail-pro-extension/?utm_source=plugin&utm_medium=dashboard&utm_campaign=plugin' ); ?>" target="_blank"><img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" ><?php echo esc_html__( 'Zoho Mail', 'post-smtp' ); ?></a>
                            <span class="<?php echo $badgesDisplay; ?>">Pro</span>
                        </div>
                    </div>
                    <div class="ps-setting-box">
                        <div>
                            <img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/troubleshooting.png' ) ?>" />
                            <h3 class="ps-ib ps-vm"><?php esc_html_e( 'Troubleshooting', 'post-smtp' ); ?></h3>
                        </div>
                        <div>
                            <a href="<?php echo esc_url( 'https://postmansmtp.com/help-configure-post-smtp/' ); ?>" target="_blank" >
                                <img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" />
					            <?php echo esc_html__( 'Need help setup everything? (paid)', 'post-smtp' ); ?>
                            </a>
                        </div>
                        <div>
                            <a href="<?php echo $this->getPageUrl( PostmanConnectivityTestController::PORT_TEST_SLUG ); ?>">
                                <img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" />
					            <?php echo esc_html__( 'Connectivity Test', 'post-smtp' ); ?>
                            </a>
                        </div>
                        <div>
                            <a href="<?php echo $this->getPageUrl( PostmanDiagnosticTestController::DIAGNOSTICS_SLUG ); ?>">
                                <img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" />
					            <?php echo esc_html__( 'Diagnostic Test', 'post-smtp' ); ?>
                            </a>
                        </div>
                        <div>
                            <a href="#" class="release-lock-file" data-security="<?php esc_attr_e( wp_create_nonce( "postman" ) ); ?>" >
                                <img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" />
					            <?php echo esc_html__( 'Release Lock File Error', 'post-smtp' ); ?>
                            </a>
                        </div>
                        <div>
                            <a href="<?php echo esc_url( 'https://postmansmtp.com/forums/' ); ?>" target="_blank">
                                <img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" />
					            <?php echo esc_html__( 'Online Support', 'post-smtp' ); ?>
                            </a>
                        </div>
                        <div>
                            <a href="<?php echo esc_url( 'https://www.facebook.com/groups/post.smtp' ); ?>" target="_blank">
                                <img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" />
					            <?php echo esc_html__( 'Facebook Group', 'post-smtp' ); ?>
                            </a>
                        </div>
                        <div>
                            <a href="<?php echo esc_url( 'https://postmansmtp.com/category/guides/' ); ?>" target="_blank">
                                <img src="<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/finger.png' ) ?>" width="15" />
					            <?php echo esc_html__( 'Guides', 'post-smtp' ); ?>
                            </a>
                        </div>
                    </div>
                    <div class="clear"></div>
                </div>
                <div class="ps-home-middle">
                    <div class="ps-home-middle-left">
			            <?php
				            /**
				             * Fires after the Postman SMTP dashboard configuration.
				             *
				             * @since 2.5.9.3
				             */
				            do_action( 'post_smtp_dashboard_after_config' );

				            if ( PostmanPreRequisitesCheck::isReady() ) {

					            $this->printDeliveryDetails();
					            /* translators: where %d is the number of emails delivered */
					            print '<p><span>';
					            printf(
						            wp_kses_post( _n(
							            'Postman has delivered <span style="color:green">%d</span> email.',
							            'Postman has delivered <span style="color:green">%d</span> emails.',
							            esc_attr( PostmanState::getInstance()->getSuccessfulDeliveries() ) , 'post-smtp'
						            ) ),
						            esc_attr( PostmanState::getInstance()->getSuccessfulDeliveries() )
					            );
					            if ( $this->options->isMailLoggingEnabled() ) {
						            print ' ';
						            printf(
							            wp_kses_post( __(
								            'The last %1$d email attempts are recorded <a href="%2$s">in the log</a>.', 'post-smtp'
							            ) ),
							            esc_attr( PostmanOptions::getInstance()->getMailLoggingMaxEntries() ),
							            esc_attr( PostmanUtils::getEmailLogPageUrl() )
						            );
					            }
					            print '</span></p>';

				            }

				            if ( $this->options->isNew() ) {
					            printf(
						            '<h3 style="padding-top:10px">%s</h3>',
						            esc_html__( 'Thank-you for choosing Postman!', 'post-smtp' )
					            );
					            /* translators: where %s is the URL of the Setup Wizard */
					            printf(
						            '<p><span>%s</span></p>',
						            sprintf(
							            wp_kses_post( 'Let\'s get started! All users are strongly encouraged to <a href="%s">run the Setup Wizard</a>.', 'post-smtp' ),
							            esc_url( $this->getPageUrl( PostmanConfigurationController::CONFIGURATION_WIZARD_SLUG ) )
						            )
					            );
					            printf(
						            '<p><span>%s</span></p>',
						            sprintf(
							            wp_kses_post( 'Alternately, <a href="%s">manually configure</a> your own settings and/or modify advanced options.', 'post-smtp' ),
							            esc_attr( $this->getPageUrl( PostmanConfigurationController::CONFIGURATION_SLUG ) )
						            )
					            );
				            } else {
					            if ( PostmanState::getInstance()->isTimeToReviewPostman() && ! PostmanOptions::getInstance()->isNew() ) {
						            print '</br><hr width="70%"></br>';
						            /* translators: where %s is the URL to the WordPress.org review and ratings page */
						            printf(
							            '<p>%s <a href="%s">%s</a>%s</p>',
							            esc_html__( 'Please consider', 'post-smtp' ),
							            esc_url( 'https://wordpress.org/support/plugin/post-smtp/reviews/?filter=5' ),
							            esc_html__( 'leaving a review', 'post-smtp' ),
							            __( 'to help spread the word! :D', 'post-smtp' )
						            );
					            }

					            printf(
						            esc_html__( '%1$s Postman needs translators! Please take a moment to %2$s translate a few sentences on-line %3$s', 'post-smtp' ),
						            '<p><span>',
						            '<a href="https://translate.wordpress.org/projects/wp-plugins/post-smtp/stable">',
						            '</a> :-)</span></p>'
					            );
				            }
				            printf(
					            '<p><span><b style="
					background-color:#2172b3; color: #fff;">%1$s</b>%2$s</span>&nbsp;<a target="_blank" href="%3$s">%4$s</a></p>',
					            esc_html__( 'New for v1.9.8!', 'post-smtp' ),
					            esc_html__( ' Fallback - setup a second delivery method when the first one is failing', 'post-smtp' ),
					            esc_url( 'https://postmansmtp.com/post-smtp-1-9-7-the-smtp-fallback/' ),
					            esc_html__( 'Check the detailes here', 'post-smtp')
				            );

			            ?>
                    </div>

                    <div class="ps-home-middle-right" style="background-image: url(<?php echo esc_url( POST_SMTP_ASSETS . 'images/icons/mobile-banner.png' ) ?>)">
                        <div class="ps-mobile-notice-content">
                            <p><?php _e( 'Introducing NEW Post SMTP Mobile App' ); ?></p>
                            <div class="ps-mobile-notice-features">
                                <div class="ps-mobile-feature-left">
                                    <span class="dashicons dashicons-yes-alt"></span>
                                    Easy Email Tracking
                                    <br>
                                    <span class="dashicons dashicons-yes-alt"></span>
                                    Quickly View Error Details
                                    <br>
                                    <span class="dashicons dashicons-yes-alt"></span>
                                    Easy Email Tracking
                                </div>
                                <div class="ps-mobile-feature-right">
                                    <span class="dashicons dashicons-yes-alt"></span>
                                    Get Email Preview
                                    <br>
                                    <span class="dashicons dashicons-yes-alt"></span>
                                    Resend Failed Emails
                                    <br>
                                    <span class="dashicons dashicons-yes-alt"></span>
                                    Support multiple sites
                                </div>
                            </div>
                            <div style="display: flex;">
                                <div class="ps-app-download-button">
                                    <a href="https://play.google.com/store/apps/details?id=com.postsmtp&referrer=utm_source%3Dplugin%26utm_medium%3Ddashboard%26utm_campaign%3Dplugin%26anid%3Dadmob" target="_blank">Download on Android</a>
                                </div>
                                <div class="ps-app-download-button">
                                    <a href="https://apps.apple.com/us/app/post-smtp/id6473368559?utm_source=plugin&utm_medium=dashboard&utm_campaign=plugin" target="_blank">Download on iOS</a>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div style="clear: both"></div>
                </div>
                </div>
                </div>

	            <?php

            }
		}

		/**
		 */
		private function printDeliveryDetails() {
			$currentTransport = PostmanTransportRegistry::getInstance()->getActiveTransport();
			$deliveryDetails = $currentTransport->getDeliveryDetails( $this->options );
			printf( 
				'<p><span>%s</span></p>',
				wp_kses_post( $deliveryDetails )  
			);
		}

		/**
		 *
		 * @param mixed $title
		 * @param string  $slug
		 */
		public static function outputChildPageHeader( $title, $slug = '' ) {

			$content = '';
			$content .= sprintf( '<h2>%s</h2>', sprintf( __( '%s Setup', 'post-smtp' ), __( 'Post SMTP', 'post-smtp' ) ) );
			$content .= "
			<div id='postman-main-menu' class='post-smtp-welcome-panel {$slug}'>
				<div class='post-smtp-welcome-panel-content'>
					<div class='welcome-panel-column-container'>
						<div class='welcome-panel-last'>
							<div class='ps-left'>
								<h1>{$title}<h1/>
							</div>";
			$content .= sprintf( '<div class="ps-right"><div class="back-to-menu-link"><a href="%s" class="button button-primary" >%s</a></div></div>', PostmanUtils::getSettingsPageUrl(), _x( 'Back To Main Menu', 'Return to main menu link', 'post-smtp' ) );
			$content .= '
							<div class="clear"></div>
						</div>
					</div>
				</div>
			</div>';

			echo wp_kses_post( $content );
			
		}

		/**
		 */
		public function outputPurgeDataContent() {
			$importTitle = __( 'Import', 'post-smtp' );
			$exportTile = __( 'Export', 'post-smtp' );
			$resetTitle = __( 'Reset Plugin', 'post-smtp' );
			$options = $this->options;
			print '<div class="wrap">';
			PostmanViewController::outputChildPageHeader( sprintf( '%s/%s/%s', $importTitle, $exportTile, $resetTitle ) );
			print '<section id="export_settings" class="ps-left">';
			printf( '<h3><span>%s<span></h3>', esc_html( $exportTile ) );
			printf( '<p><span>%s</span></p>', esc_html__( 'Copy this data into another instance of Postman to duplicate the configuration.', 'post-smtp' ) );
			$data = '';
			if ( ! PostmanPreRequisitesCheck::checkZlibEncode() ) {
				$extraDeleteButtonAttributes = sprintf( 'disabled="true"' );
				$data = '';
			} else {
				$extraDeleteButtonAttributes = '';
				if ( ! $options->isNew() ) {
					$data = $options->export();
				}
			}
			printf( 
				'<textarea cols="80" rows="10" class="ps-textarea" readonly="true" name="settings" %s>%s</textarea>', 
				esc_attr( $extraDeleteButtonAttributes ), esc_textarea( $data ) 
			);
			print '</section>';
			print '<section id="import_settings" class="ps-right">';
			printf( 
				'<h3><span>%s<span></h3>', 
				esc_html( $importTitle ) 
			);
			print '<form method="POST" action="' . esc_attr( get_admin_url() ) . 'admin-post.php">';
			wp_nonce_field( PostmanAdminController::IMPORT_SETTINGS_SLUG );
			printf( 
				'<input type="hidden" name="action" value="%s" />', 
				esc_attr( PostmanAdminController::IMPORT_SETTINGS_SLUG  )
			);
			print '<p>';
			printf( 
				'<span>%s</span>',
				esc_html__( 'Paste data from another instance of Postman here to duplicate the configuration.', 'post-smtp' ) 
			);
			if ( PostmanTransportRegistry::getInstance()->getSelectedTransport()->isOAuthUsed( PostmanOptions::getInstance()->getAuthenticationType() ) ) {
				$warning = __( 'Warning', 'post-smtp' );
				$errorMessage = __( 'Using the same OAuth 2.0 Client ID and Client Secret from this site at the same time as another site will cause failures.', 'post-smtp' );
				printf( ' <span><b>%s</b>: %s</span>', esc_html( $warning ), esc_html( $errorMessage ) );
			}
			print '</p>';
			printf( 
				'<textarea cols="80" rows="10" class="ps-textarea" name="settings" %s></textarea>', 
				esc_textarea( $extraDeleteButtonAttributes ) 
			);
			submit_button( __( 'Import', 'post-smtp' ), 'button button-primary', 'import', true, $extraDeleteButtonAttributes );
			print '</form>';
			print '</section>';
			print '<div class="clear"></div>';
			print '<section id="delete_settings">';
			printf( '<h3><span>%s<span></h3>', esc_html( $resetTitle ) );
			print '<form class="post-smtp-reset-options" method="POST" action="' . esc_attr( get_admin_url() ) . 'admin-post.php">';
			wp_nonce_field( PostmanAdminController::PURGE_DATA_SLUG );
			printf( 
				'<input type="hidden" name="action" value="%s" />', 
				esc_attr( PostmanAdminController::PURGE_DATA_SLUG ) 
			);
			printf( 
				'<p><span>%s</span></p><p><span>%s</span></p>',
				esc_html__( 'This will purge all of Postman\'s settings, including account credentials and the email log.', 'post-smtp' ), 
				esc_html__( 'Are you sure?', 'post-smtp' ) 
			);

			printf(
				'<input type="checkbox" name="ps_preserve_email_logs" value="1" checked /> %s',
				esc_html__( 'Preserve my email logs', 'post-smtp' )
			);

			submit_button( $resetTitle, 'delete button button-secondary', 'submit', true );
			print '</form>';
			print '</section>';
			print '</div>';
		}

		public function google_less_secure_notice() {

			?>
			<div class="notice notice-error is-dismissible ps-less-secure-notice">
			<?php 
				printf(
					'<p>
						%1$s
						<a href="%2$s" target="blank">%3$s</a>
						%4$s
						<a href="%5$s" target="blank">%6$s</a>
						%7$s
						<br />
						<a href="%8$s" target="_blank">%9$s</a>
						<br />
						<a href="#" id="discard-less-secure-notification">%10$s</a>
					</p>',
					esc_html__( 'To help keep your account secure, Google will no longer support using third-party apps to sign in to your Google Account using only your username and primary password. You can ', 'post-smtp' ),
					esc_url( 'https://postmansmtp.com/gmail-is-disabling-less-secure-apps-feature-soon/' ),
					esc_html__( 'switch to the Auth 2.0', 'post-smtp' ),
					esc_html__( 'alternative or use your ', 'post-smtp' ),
					esc_url( 'https://postmansmtp.com/documentation/#setting-up-an-app-password-in-your-google-account' ),
					esc_html__( 'App Password', 'post-smtp' ),
					esc_html__( 'option to continue.	', 'post-smtp' ),
					esc_url( 'https://postmansmtp.com/gmail-is-disabling-less-secure-apps' ),
					esc_html__( 'Click here for more info', 'post-smtp' ),
					esc_html__( 'I understand and would like to discard this notice', 'post-smtp' )
				);
			?>
			</div>
			<?php

		}

		/**
		 * Discards less secure notification
		 * 
		 * @since 2.1.2
		 * @version 1.0
		 */
		public function discard_less_secure_notification() {

			if( !wp_verify_nonce( $_POST['_wp_nonce'], 'less-secure-security' ) ) {
				die( 'Not Secure.' );
			}

			$result = update_option( 'ps_hide_less_secure', 1 );
			
			if( $result ) {
				wp_send_json_success( 
					array( 'message' => 'Success' ),
					200 
				);
			}

			wp_send_json_error( 
				array( 'message' => 'Something went wrong' ),
				500 
			);

		}
	}
}