HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/lcc.kaunokolegija.lt/wp-content/plugins/countdown-builder/classes/countdown/ComingSoon.php
<?php
namespace ycd;

Class ComingSoon {
	
	public function __construct()
	{
		add_filter('YcdComingSoonPageHeader', array(&$this,'comingSoonPageHeader'), 1, 1);
		add_filter('YcdComingSoonPageMessage', array(&$this,'comingSoonPageMessage'), 1, 1);
		add_filter('YcdComingSoonPageTitle', array(&$this,'YcdComingSoonPageTitle'), 1, 1);
		add_filter('YcdComingSoonPageHeaderContent', array(&$this,'YcdComingSoonPageHeaderContent'), 1, 1);
	}
	
	public function YcdComingSoonPageHeaderContent($content)
	{
		$description = $this->getOptionValue('ycd-coming-soon-seo-description');
		$favicon = $this->getOptionValue('ycd-coming-soon-favicon');
		$customJs = $this->getOptionValue('ycd-coming-soon-countdown-custom-js');
		$customCSS = $this->getOptionValue('ycd-coming-soon-countdown-custom-css');
		
		$content .= '<meta name="description" content="'.esc_attr($description).'">';
		$content .= '<link href="'.esc_attr($favicon).'" rel="shortcut icon" type="image/x-icon" >';
	

		return $content;
	}
	
	public function YcdComingSoonPageTitle($content)
	{
		$title = $this->getOptionValue('ycd-coming-soon-title');

		return $title;
	}
	
	public function comingSoonPageHeader($content)
	{
		$header = $this->getOptionValue('ycd-coming-soon-headline');
		return '<h1>'.esc_attr($header).'</h1>';
	}
	
	public function comingSoonPageMessage($content)
	{
		$message = $this->getOptionValue('ycd-coming-soon-message');
		return  '<div>'.do_shortcode($message).'</div>';
	}

	private function checkUserDevice() {
		if (!$this->getOptionValue('ycd-coming-soon-for-devices')) {
			return true;
		}
		$status = false;
		$savedDevices = $this->getOptionValue('ycd-coming-soon-devices');

		foreach ($savedDevices as $device) {

			if ($device === 'desktop' && AdminHelperPro::isDesktop()) {
				$status = true;
				break;
			}
			if ($device === 'tablet' && AdminHelperPro::isTablet()) {
				$status = true;
				break;
			}
			if ($device === 'mobile' && AdminHelperPro::isMobile()) {
				$status = true;
				break;
			}
		}

		return !$status;
	}

	private function checkExcludeURL() {
		$status = $this->getOptionValue('ycd-coming-soon-exclude-url-enable');
		if (!$status) return false;
		$urls = $this->getOptionValue('ycd-coming-soon-exclude-url');
		$actual_link = (empty($_SERVER['HTTPS']) ? 'http' : 'https') . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
		$urlsList = explode(',', $urls);

		return in_array($actual_link, $urlsList);
	}
	
	public function allowComingSoon()
	{
		$renderStatus = true;
		$isAllow = $this->getOptionValue('ycd-enable-coming-soon');
		$status = empty($isAllow);

		if (YCD_PKG_VERSION !== YCD_FREE_VERSION) {
			if (!$this->checkUserDevice()) return  !false;
			if ($this->checkExcludeURL()) return false;
		}
		if (YCD_PKG_VERSION == YCD_FREE_VERSION) {
			$status = $status || is_user_logged_in();
		}

		if ($status) {
			return false;
		}

		$renderStatus = apply_filters('ycdComingSoonIsEnable', $renderStatus, $this);

		return $renderStatus;
	}
	
	public function render()
	{
		$comingSoonThis = $this;
		$this->changeHeaderStatus();
		require_once YCD_FRONT_VIEWS_PATH.'comingSoonTempleate.php';
		exit();
	}
	
	private function changeHeaderStatus()
	{
		$mode = $this->getOptionValue('ycd-coming-soon-mode');
		if ($mode == 'maintenanceMode') {
			status_header(503);
		}
	}
	
	public static function defaults()
	{
		$defaults = array();
		
		$defaults['ycd-coming-soon-headline'] = 'Get Ready... Something Really Cool Is Coming Soon';
		$defaults['ycd-coming-soon-message'] = '';
		$defaults['ycd-enable-coming-soon'] = 'on';
		$defaults['ycd-coming-soon-title'] = '';
		$defaults['ycd-coming-soon-seo-description'] = '';
		$defaults['ycd-coming-soon-favicon'] = '';
		$defaults['ycd-coming-soon-bg-image'] = '';
		$defaults['ycd-coming-soon-image-size'] = '';
		$defaults['ycd-coming-soon-bg-image-repeat'] = '';
		$defaults['ycd-coming-soon-bg-image-url'] = '';
		$defaults['ycd-coming-soon-background-color'] = '';
		$defaults['ycd-coming-soon-add-countdown'] = '';
		$defaults['ycd-coming-soon-countdown'] = '';
		$defaults['ycd-coming-soon-countdown-position'] = '';
		$defaults['ycd-coming-headline-color'] = '#000000';
		$defaults['ycd-coming-message-color'] = '#000000';
		$defaults['ycd-coming-soon-page-font-family'] = '';
		$defaults['ycd-coming-soon-bg-video'] = '';
		$defaults['ycd-coming-soon-bg-video-url'] = '';
		$defaults['ycd-coming-soon-mode'] = 'comingSoonMode';
		$defaults['ycd-coming-soon-countdown-custom-css'] = '';
		$defaults['ycd-coming-soon-countdown-custom-js'] = '';
		$defaults['ycd-coming-soon-whitelist-ip'] = '';
		$defaults['ycd-coming-soon-exclude-url-enable'] = '';
		$defaults['ycd-coming-soon-exclude-url'] = '';
		$defaults['ycd-coming-soon-for-loggdin'] = '';
		$defaults['ycd-coming-soon-for-devices'] = '';
		$defaults['ycd-coming-soon-devices'] = '';
		$defaults['ycd-coming-soon-automat-enable'] = '';
		$defaults['ycd-coming-soon-automat-expiration'] = '';
		$defaults['ycd-coming-soon-ip-address'] = '';
		$defaults['ycd-coming-soon-user-roles'] = '';
		$defaults['ycd-coming-soon-start'] = '';
		$defaults['ycd-coming-soon-start-timezone'] = '';
		$defaults['ycd-coming-soon-expiration'] = '';
		$defaults['ycd-coming-soon-expiration-timezone'] = '';
		$defaults['checkboxes'] = array(
			'ycd-enable-coming-soon',
			'ycd-coming-soon-bg-image',
			'ycd-coming-soon-add-countdown',
			'ycd-coming-soon-bg-video',
			'ycd-coming-soon-whitelist-ip',
			'ycd-coming-soon-for-loggdin',
			'ycd-coming-soon-for-devices',
			'ycd-coming-soon-automat-enable',
			'ycd-coming-soon-automat-expiration',
			'ycd-coming-soon-exclude-url-enable',
		);
		
		return apply_filters('ycdComingSoonDefaults', $defaults);
	}
	
	public function getSavedData()
	{
		$settings = array();
		$savedSettingsStr = get_option('ycdComingSoonSettings');
		
		if (empty($savedSettingsStr)) {
			return $settings;
		}
		
		$savedSettings = json_decode($savedSettingsStr, true);
		
		if (empty($savedSettings)) {
			return $settings;
		}
		$settings = $savedSettings;
		
		return $settings;
	}
	
	public function getOptionValue($optionName)
	{
		$defaults = ComingSoon::defaults();
		$savedData = $this->getSavedData();
		$checkboxes = $defaults['checkboxes'];
		
		$optionValue = '';
		
		if (isset($savedData[$optionName])) {
			$optionValue = $savedData[$optionName];
		}
		else if (!in_array($optionName, $checkboxes) && isset($defaults[$optionName])) {
			$optionValue = $defaults[$optionName];
		}
		
		if (in_array($optionName, $checkboxes) && !empty($optionValue)) {
			$optionValue = 'checked';
		}
		
		return $optionValue;
	}
	
	public function adminView()
	{
		require_once YCD_ADMIN_COMING_VIEWS_PATH.'comingSoon.php';
	}

	static function sanitize_text_field_array($array) {
		$sanitized_array = array();

		foreach ($array as $key => $value) {
			$sanitized_array[$key] = sanitize_text_field($value);
		}

		return $sanitized_array;
	}

	public static function saveComingSoonSettings()
	{
		$defaults = self::defaults();
		$optionsNames = array_keys($defaults);
		$savedData = array();
		
		foreach ($optionsNames as $name) {
			if (isset($_POST[$name])) {
				if (is_array($_POST[$name])) {
					$savedData[$name] = self::sanitize_text_field_array($_POST[$name]);
					continue;
				}
				$savedData[$name] = stripslashes_deep(sanitize_text_field($_POST[$name]));
			}
		}
		do_action('ycdComingSoonSave', $savedData);
		$savedDataString = json_encode($savedData);
		update_option('ycdComingSoonSettings', $savedDataString);
	}
}