HEX
Server: Apache
System: Linux outside 5.4.8_Algonet_ZeroMAC_0.9.4.8 #6 SMP Mon Feb 3 20:36:07 CET 2020 x86_64
User: server (1002)
PHP: 8.3.20
Disabled: exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source
Upload Files
File: /home/muoapartman/www/wp-content/plugins/motopress-hotel-booking-lite/includes/entities/service.php
<?php

namespace MPHB\Entities;

class Service {

	/**
	 *
	 * @var int
	 */
	protected $id;

	/**
	 *
	 * @var int
	 */
	protected $originalId;

	/**
	 *
	 * @var string
	 */
	protected $title;

	/**
	 *
	 * @var string
	 */
	protected $description;

	/**
	 *
	 * @var float
	 */
	protected $price;

	/**
	 *
	 * @var string
	 */
	protected $periodicity;

    protected $minQuantity;
    /** @var int|string Max quantity number or empty string (unlimited). */
    protected $maxQuantity;
    protected $isAutoLimit;

	/**
	 *
	 * @var string
	 */
	protected $repeat;

	/**
	 *
	 * @param array $atts
	 */
	protected function __construct( $atts ){
		$this->id			 = $atts['id'];
		$this->originalId	 = $atts['original_id'];
		$this->title		 = $atts['title'];
		$this->description	 = $atts['description'];
		$this->periodicity	 = $atts['periodicity'];
        $this->minQuantity   = $atts['min_quantity'];
        $this->maxQuantity   = $atts['max_quantity'];
        $this->isAutoLimit   = $atts['is_auto_limit'];
		$this->repeat		 = $atts['repeat'];
		$this->price		 = $atts['price'];
	}

	/**
	 *
	 * @return int
	 */
	public function getId(){
		return $this->id;
	}

	/**
	 *
	 * @return int
	 */
	public function getOriginalId(){
		return $this->originalId;
	}

	/**
	 *
	 * @return string
	 */
	public function getTitle(){
		return $this->title;
	}

	/**
	 *
	 * @return string
	 */
	public function getDescription(){
		return $this->description;
	}

	/**
	 *
	 * @return float
	 */
	public function getPrice(){
		return $this->price;
	}

	/**
	 *
	 * @return string
	 */
	public function getPeriodicity(){
		return $this->periodicity;
	}

    public function getMinQuantity()
    {
        return $this->minQuantity;
    }

    /**
     * @return int|string
     */
    public function getMaxQuantity()
    {
        return $this->maxQuantity;
    }

    /**
     * @return int
     */
    public function getMaxQuantityNumber()
    {
        return $this->maxQuantity !== '' ? $this->maxQuantity : 0;
    }

    public function isAutoLimit()
    {
        return $this->isAutoLimit;
    }

    public function isUnlimited()
    {
        return !$this->isAutoLimit && $this->maxQuantity === '';
    }

	/**
	 *
	 * @return string
	 */
	public function getRepeatability(){
		return $this->repeat;
	}

	/**
	 *
	 * @return bool
	 */
	public function isPayPerNight(){
		return $this->periodicity === 'per_night';
	}

	/**
	 *
	 * @return bool
	 */
	public function isPayPerAdult(){
		return $this->repeat === 'per_adult';
	}

    public function isFlexiblePay()
    {
        return $this->periodicity == 'flexible';
    }

	/**
	 *
	 * @return bool
	 */
	public function isFree(){
		return $this->price == 0;
	}

	/**
	 *
	 * @param bool $repeatability Whether to show conditions of repeatedness. Default TRUE.*
	 * @param bool $periodicity Whether to show conditions of periodicity. Default TRUE.
	 * @param bool $literalFree Whether to replace 0 price to free label. Default TRUE.
	 *
	 * @return string
	 */
	public function getPriceWithConditions( $repeatability = true, $periodicity = true, $literalFree = true ){

		$price = $this->getPriceHTML( $literalFree );

		if ( !$this->isFree() ) {
			if ( $periodicity ) {
				$price .= ' / ';
				if ( $this->isPayPerNight() ) {
					$price .= __( 'Per Day', 'motopress-hotel-booking' );
				} else if ($this->isFlexiblePay()) {
                    $price .= __('Per Instance', 'motopress-hotel-booking');
                } else {
					$price .= __( 'Once', 'motopress-hotel-booking' );
				}
			}
			if ( $repeatability ) {
				$price .= ' / ';
				if ( $this->isPayPerAdult() ) {
					$price .= __( 'Per Guest', 'motopress-hotel-booking' );
				} else {
					$price .= __( 'Per Accommodation', 'motopress-hotel-booking' );
				}
			}
		}

		return $price;
	}

	/**
	 *
	 * @param bool $literalFree
	 * @return string
	 */
	public function getPriceHTML( $literalFree = true ){
		return mphb_format_price( $this->getPrice(), array( 'literal_free' => $literalFree ) );
	}

	/**
	 *
	 * @param array $atts
	 * @return Service
	 */
	public static function create( $atts ){
		return new self( $atts );
	}

}