| Server IP : 89.108.64.180 / Your IP : 216.73.216.229 Web Server : Apache/2.4.41 (Ubuntu) System : Linux 89-108-64-180.cloudvps.regruhosting.ru 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-root ( 1010) PHP Version : 8.0.30 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/poseidon-gagra.ru/wp-content/plugins/awebooking/inc/Core/ |
Upload File : |
<?php
use AweBooking\Constants;
use AweBooking\Model\Room;
use AweBooking\Calendar\Calendar;
use AweBooking\Calendar\Resource\Resource;
use AweBooking\Calendar\Resource\Resource_Interface;
use AweBooking\Calendar\Provider\Provider_Interface;
use AweBooking\Calendar\Provider\Cached_Provider;
use AweBooking\Model\Pricing\Contracts\Rate_Interval;
use AweBooking\Support\Collection;
/**
* Create a Calendar.
*
* @param mixed $resource The resource.
* @param string $provider The provider name.
* @param boolean $cached If true, wrap the provider in Cached_Provider.
* @return \AweBooking\Calendar\Calendar
*/
function abrs_calendar( $resource, $provider, $cached = false ) {
$resource = abrs_filter_resource( $resource );
if ( ! $provider instanceof Provider_Interface ) {
$provider = abrs_calendar_provider( $provider, $resource, $cached );
}
return new Calendar( $resource, $provider );
}
/**
* Create a calendar provider.
*
* @param string $provider The provider name.
* @param mixed $resource The resource.
* @param boolean $cached If true, wrap the provider in Cached_Provider.
* @return \AweBooking\Calendar\Provider\Provider_Interface
*
* @throws OutOfBoundsException
*/
function abrs_calendar_provider( $provider, $resource, $cached = false ) {
static $providers;
if ( is_null( $providers ) ) {
$providers = apply_filters( 'abrs_calendar_providers_classmap', [
'state' => \AweBooking\Calendar\Provider\Core\State_Provider::class,
'booking' => \AweBooking\Calendar\Provider\Core\Booking_Provider::class,
'pricing' => \AweBooking\Calendar\Provider\Core\Pricing_Provider::class,
]);
}
if ( ! array_key_exists( $provider, $providers ) ) {
throw new OutOfBoundsException( 'Invalid calendar provider' );
}
// Filter the resources.
if ( $resource instanceof Collection ) {
$resource = $resource->all();
}
$resource = is_array( $resource )
? array_map( 'abrs_filter_resource', $resource )
: [ abrs_filter_resource( $resource ) ];
// Create the provider instance.
$instance = new $providers[ $provider ]( $resource );
// Wrap in cached provider.
if ( $cached ) {
$instance = new Cached_Provider( $instance );
}
return apply_filters( 'abrs_calendar_provider', $instance, $provider, $resource, $cached );
}
/**
* Gets the calendar resource.
*
* @param mixed $resource The resource ID or model represent of resource (Room, Rate_Interval, etc.).
* @param mixed $value The resource value.
* @return \AweBooking\Calendar\Resource\Resource_Interface
*/
function abrs_filter_resource( $resource, $value = null ) {
// Leave if $resource already instance of Resource_Interface.
if ( $resource instanceof Resource_Interface ) {
return $resource;
}
if ( $resource instanceof Room ) {
return abrs_resource_room( $resource );
}
if ( $resource instanceof Rate_Interval ) {
return abrs_resource_rate( $resource );
}
return new Resource( (int) $resource, (int) $value );
}
/**
* Returns a resource of room.
*
* @param mixed $room The room ID.
* @return \AweBooking\Calendar\Resource\Resource_Interface|null
*/
function abrs_resource_room( $room ) {
$room = ( ! $room instanceof Room ) ? abrs_get_room( $room ) : $room;
// Leave if room not found.
if ( empty( $room ) ) {
return null;
}
// By default rooms in awebooking is alway available
// but you can apply filters to here to change that.
$resource = new Resource( $room->get_id(),
apply_filters( 'abrs_default_room_state', Constants::STATE_AVAILABLE )
);
$resource->set_reference( $room );
$resource->set_title( $room->get( 'name' ) );
return apply_filters( 'abrs_calendar_room_resource', $resource, $room );
}
/**
* Returns a resource of rate.
*
* @param mixed $rate The rate interval ID.
* @return \AweBooking\Calendar\Resource\Resource_Interface|null
*/
function abrs_resource_rate( $rate ) {
$rate = ( ! $rate instanceof Rate_Interval ) ? abrs_get_rate_interval( $rate ) : $rate;
// Leave if rate not found.
if ( empty( $rate ) ) {
return null;
}
// In calendar we store as resource integer,
// so we need convert rate amount to int value (e.g 10.9 -> 1090).
$resource = new Resource( $rate->get_id(),
abrs_decimal( $rate->get_rack_rate() )->as_raw_value()
);
$resource->set_reference( $rate );
$resource->set_title( $rate->get_name() );
return apply_filters( 'abrs_calendar_rate_resource', $resource, $rate );
}