<?php
/**
 * @package     Freemius
 * @copyright   Copyright (c) 2015, Freemius, Inc.
 * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
 * @since       1.0.3
 */

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

class FS_Site extends FS_Scope_Entity {
	/**
	 * @var string
	 */
	public $slug;
	/**
	 * @var number
	 */
	public $site_id;
	/**
	 * @var number
	 */
	public $plugin_id;
	/**
	 * @var number
	 */
	public $user_id;
	/**
	 * @var string
	 */
	public $title;
	/**
	 * @var string
	 */
	public $url;
	/**
	 * @var string
	 */
	public $version;
	/**
	 * @var string E.g. en-GB
	 */
	public $language;
	/**
	 * @var string E.g. UTF-8
	 */
	public $charset;
	/**
	 * @var string Platform version (e.g WordPress version).
	 */
	public $platform_version;
	/**
	 * Freemius SDK version
	 *
	 * @author Leo Fajardo (@leorw)
	 * @since  1.2.2
	 *
	 * @var string SDK version (e.g.: 1.2.2)
	 */
	public $sdk_version;
	/**
	 * @var string Programming language version (e.g PHP version).
	 */
	public $programming_language_version;
	/**
	 * @var FS_Plugin_Plan $plan
	 */
	public $plan;
	/**
	 * @var number|null
	 */
	public $license_id;
	/**
	 * @var number|null
	 */
	public $trial_plan_id;
	/**
	 * @var string|null
	 */
	public $trial_ends;
	/**
	 * @since 1.0.9
	 *
	 * @var bool
	 */
	public $is_premium = false;
	/**
	 * @author Leo Fajardo (@leorw)
	 *
	 * @since  1.2.1.5
	 *
	 * @var bool
	 */
	public $is_disconnected = false;

	/**
	 * @param stdClass|bool $site
	 */
	function __construct( $site = false ) {
		$this->plan = new FS_Plugin_Plan();

		parent::__construct( $site );

		if ( is_object( $site ) ) {
			$this->plan->id = $site->plan_id;
		}

		if ( ! is_bool( $this->is_disconnected ) ) {
			$this->is_disconnected = false;
		}
	}

	static function get_type() {
		return 'install';
	}

	function is_localhost() {
		// The server has no way to verify if localhost unless localhost appears in domain.
		return WP_FS__IS_LOCALHOST_FOR_SERVER;
//			return (substr($_SERVER['REMOTE_ADDR'], 0, 4) == '127.' || $_SERVER['REMOTE_ADDR'] == '::1');
	}

	/**
	 * Check if site in trial.
	 *
	 * @author Vova Feldman (@svovaf)
	 * @since  1.0.9
	 *
	 * @return bool
	 */
	function is_trial() {
		return is_numeric( $this->trial_plan_id ) && ( strtotime( $this->trial_ends ) > WP_FS__SCRIPT_START_TIME );
	}

	/**
	 * Check if user already utilized the trial with the current install.
	 *
	 * @author Vova Feldman (@svovaf)
	 * @since  1.0.9
	 *
	 * @return bool
	 */
	function is_trial_utilized() {
		return is_numeric( $this->trial_plan_id );
	}
}