Current File : /home/kelaby89/onlycnc.com.au/wp-content/plugins/gutenverse/includes/class-banner.php
<?php
/**
 * Banner
 *
 * @author Jegstudio
 * @since 1.0.0
 * @package gutenverse
 */

namespace Gutenverse;

use Gutenverse\Framework\Meta_Option;

/**
 * Class Banner
 *
 * @package gutenverse
 */
class Banner {
	/**
	 * How Long timeout until first banner shown.
	 *
	 * @var int
	 */
	private $first_time_show = 3;

	/**
	 * How Long timeout after first banner shown.
	 *
	 * @var int
	 */
	private $another_time_show = 7;

	/**
	 * Init constructor.
	 */
	public function __construct() {
		add_action( 'admin_notices', array( $this, 'notice' ) );
		add_action( 'wp_ajax_gutenverse_notice_close', array( $this, 'close' ) );
		add_action( 'wp_ajax_gutenverse_notice_review', array( $this, 'review' ) );

		// Filter.
		add_filter( 'gutenverse_initial_meta_option', array( $this, 'initial_option' ) );
	}

	/**
	 * Initial Option.
	 *
	 * @param string $options inital option.
	 *
	 * @return array
	 */
	public function initial_option( $options ) {
		$time = get_option( 'gutenverse_active_time' );

		if ( false === $time ) {
			$options['next_review_time'] = time() + $this->get_second( $this->first_time_show );
			$options['review_flag']      = false;
		} else {
			// Migrate to new meta option.
			if ( 'review' === $time ) {
				$options['review_flag'] = true;
				unset( $options['next_review_time'] );
			} else {
				$options['next_review_time'] = $time;
				$options['review_flag']      = false;
			}
		}

		return $options;
	}

	/**
	 * Enqueue Script.
	 */
	public function enqueue_script() {
		wp_enqueue_style( 'fontawesome-gutenverse' );
	}

	/**
	 * Get Second by days.
	 *
	 * @param int $days Days Number.
	 *
	 * @return int
	 */
	public function get_second( $days ) {
		return $days * 24 * 60 * 60;
	}

	/**
	 * Check if we can render notice.
	 */
	public function can_render_notice() {
		$flag = Meta_Option::instance()->get_option( 'review_flag' );

		if ( $flag ) {
			return false;
		} else {
			$next_review_time = Meta_Option::instance()->get_option( 'next_review_time' );
			return time() > $next_review_time;
		}
	}

	/**
	 * Close Button Clicked.
	 */
	public function close() {
		$next_time = time() + $this->get_second( $this->another_time_show );
		Meta_Option::instance()->set_option( 'next_review_time', $next_time );
	}

	/**
	 * Review Button Clicked.
	 */
	public function review() {
		Meta_Option::instance()->set_option( 'review_flag', true );
	}

	/**
	 * Show Notice.
	 */
	public function notice() {
		if ( $this->can_render_notice() ) {
			$this->enqueue_script();
			?>
			<div class="notice gutenverse-banner">
				<div class="gutenverse-banner-logo">
					<svg width="20" height="18" fill="none" xmlns="http://www.w3.org/2000/svg">
						<path d="M16.667 14.432h-10L5 11.546H5L3.334 8.659 1.666 5.771 0 8.658v.001l1.666 2.887 1.667 2.886L5 17.32h10l1.667-2.888z" fill="#3B57F7"></path><path d="M3.33 8.66h6.667l1.667 2.886 1.666 2.886h3.333l-1.666-2.886-3.333-5.775H1.662L3.33 8.66z" fill="#3B57F7"></path><path d="M18.333 5.774l-1.666-2.887L15 0H5L3.332 2.887h10.002l1.665 2.886 1.667 2.888 1.667 2.887L20 8.66H20l-1.667-2.887z" fill="#5CD0DA"></path>
					</svg>
				</div>
				<div class="gutenverse-banner-content">
					<h2><?php esc_html_e( 'Enjoy Using Gutenverse?', 'gutenverse' ); ?></h2>
					<p><?php esc_html_e( 'Hi there! It\'s been sometime since you use Gutenverse plugin. We hope our plugin is proving helpful in building your website. If you can spare a few moments, please let us know what you think of Gutenverse by leaving a rating we\'d be super grateful — Thanks a lot!', 'gutenverse' ); ?></p>
					<div class="gutenverse-notice-action">
						<div class="gutenverse-notice-action-left">
							<a href="https://wordpress.org/support/plugin/gutenverse/reviews/#new-post" target="_blank" class="gutenverse-notice-action-button">
								<?php esc_html_e( 'Yes, You deserve ★★★★★', 'gutenverse' ); ?>
							</a>
							<a href="#" class="gutenverse-notice-close"><?php esc_html_e( 'Remind me again next week', 'gutenverse' ); ?></a>
							<a href="#" class="gutenverse-notice-already"><?php esc_html_e( 'I already review Gutenverse', 'gutenverse' ); ?></a>
						</div>
						<div class="gutenverse-notice-action-right">
							<a href='https://www.facebook.com/groups/gutenversecommunity' target="_blank" class="community">
								<?php esc_html_e( 'Join our community', 'gutenverse' ); ?>
							</a>
							<a href='https://wordpress.org/support/plugin/gutenverse/' target="_blank" class="support">
								<?php esc_html_e( 'Got Question?', 'gutenverse' ); ?>
							</a>
							<a href='https://gutenverse.com/docs/' target="_blank" class="documentation">
								<?php esc_html_e( 'Documentation', 'gutenverse' ); ?>
							</a>
						</div>
					</div>
				</div>
			</div>
			<script>
				(function ($) {
					$('.gutenverse-notice-close').on('click', function () {
						$('.gutenverse-banner').fadeOut();
						$.post( ajaxurl, {
							action: 'gutenverse_notice_close'
						});
					});

					$('.gutenverse-notice-action-button', '.gutenverse-notice-already').on('click', function () {
						$.post( ajaxurl, {
							action: 'gutenverse_notice_review'
						});
						return true;
					});

					$('.gutenverse-notice-already').on('click', function () {
						$('.gutenverse-banner').fadeOut();
						$.post( ajaxurl, {
							action: 'gutenverse_notice_review'
						});
						return true;
					});
				})(jQuery);
			</script>
			<style>
				#wpbody-content .wrap{
					max-width: 100%;
				}
				.gutenverse-banner {
					position: relative;
					display: flex;
					margin: 10px 0 20px !important;
					padding: 0 !important;
					border: 1px solid #c3c4c7;
					border-left-width: 0;
				}

				.gutenverse-banner .gutenverse-banner-logo {
					background: #ECF0F8;
					padding: 20px 15px;
					border-left: 4px;
					border-right: 0;
					border-style: solid;
					border-image: linear-gradient(to bottom, #3F3BF7, #5CD0DA) 1 100%;
				}

				.gutenverse-banner .gutenverse-banner-content {
					width: 100%;
					padding: 20px 20px 25px 20px;
				}

				.gutenverse-banner .gutenverse-banner-content h2 {
					margin-top: 0;
					margin-bottom: 10px;
				}

				.gutenverse-notice-action {
					display: flex;
					justify-content: space-between;
					margin-top: 20px;
				}

				.gutenverse-notice-action .gutenverse-notice-action-button {
					color: #fff;
					background: #1B67A5;
					border-radius: 3px;
					cursor: pointer;
					padding: 7px 15px;
					text-decoration: none;
				}

				.gutenverse-notice-action-left {
					display: flex;
					gap: 20px;
					vertical-align: middle;
					align-items: center;
				}

				.gutenverse-notice-action-left a {
					color: #1B67A5;
				}

				.gutenverse-notice-action-right {
					display: flex;
					gap: 20px;
				}

				.gutenverse-notice-action-right a {
					display: flex;
					gap: 7px;
					text-decoration: none;
					color: #1B67A5;
					justify-content: center;
					align-items: center;
				}

				.gutenverse-notice-action-right a:before {
					display: block;
					font-size: 16px;
				}

				.gutenverse-notice-action .community:before {
					font-family: 'Font Awesome 5 Brands';
					content: "\f09a";
				}

				.gutenverse-notice-action .support:before {
					font-family: 'Font Awesome 5 Free';
					content: "\f1cd";
				}

				.gutenverse-notice-action .documentation:before {
					font-family: 'Font Awesome 5 Brands';
					content: "\f791";
				}

				.gutenverse-notice-action-right {
					display: flex;
				}
			</style>
			<?php
		}
	}

}
Page not found – Hello World !