Uname: 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: 6036 (villadal)
Group: 100 (users)
Disabled functions: NONE
Safe mode: On[ PHPinfo ]
//home/villadal/www/old/////booked/lib/Application/Reservation      ( Reset | Go to )
File Name: ReservationComponentBinder.php
Edit
<?php
/**
Copyright 2012-2014 Nick Korbel

This file is part of Booked SchedulerBooked SchedulereIt 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 versBooked SchedulerduleIt 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
alBooked SchedulercheduleIt.  If not, see <http://www.gnu.org/licenses/>.
 */

interface IReservationComponentBinder
{
    public function 
Bind(IReservationComponentInitializer $initializer);
}

class 
ReservationDateBinder implements IReservationComponentBinder
{
    
/**
     * @var IScheduleRepository
     */
    
private $scheduleRepository;

    public function 
__construct(IScheduleRepository $scheduleRepository)
    {
        
$this->scheduleRepository $scheduleRepository;
    }

    public function 
Bind(IReservationComponentInitializer $initializer)
    {
        
$timezone $initializer->GetTimezone();
        
$reservationDate $initializer->GetReservationDate();
        
$requestedEndDate $initializer->GetEndDate();
        
$requestedStartDate $initializer->GetStartDate();
        
$requestedScheduleId $initializer->GetScheduleId();

        
$requestedDate = ($reservationDate == null) ? Date::Now()->ToTimezone($timezone) : $reservationDate->ToTimezone($timezone);

        
$startDate = ($requestedStartDate == null) ? $requestedDate $requestedStartDate->ToTimezone($timezone);
        
$endDate = ($requestedEndDate == null) ? $requestedDate $requestedEndDate->ToTimezone($timezone);

        if (
$initializer->IsNew())
        {
            
$resource $initializer->PrimaryResource();

            if (
$resource->GetMinimumLength() != null && !$resource->GetMinimumLength()->Interval()->IsNull())
            {
                
$endDate $startDate->ApplyDifference($resource->GetMinimumLength()->Interval());
            }
        }

        
$layout $this->scheduleRepository->GetLayout($requestedScheduleId, new ReservationLayoutFactory($timezone));
        
$startPeriods $layout->GetLayout($startDate);
        if (
count($startPeriods) > && $startPeriods[0]->Begin()->Compare($startPeriods[1]->Begin()) > 0)
        {
            
$period array_shift($startPeriods);
            
$startPeriods[] = $period;
        }
        
$endPeriods $layout->GetLayout($endDate);

        if (empty(
$requestedStartDate))
        {
            
$startDate $startDate->SetTime($startPeriods[0]->Begin());
        }
        if (empty(
$requestedEndDate))
        {
            
$endDate $endDate->SetTime($startPeriods[0]->End());
        }
        
$initializer->SetDates($startDate$endDate$startPeriods$endPeriods);

        
$hideRecurrence = !$initializer->CurrentUser()->IsAdmin && Configuration::Instance()->GetSectionKey(ConfigSection::RESERVATION,
                                                                                                            
ConfigKeys::RESERVATION_PREVENT_RECURRENCE,
                                                                                                            new 
BooleanConverter());
        
$initializer->HideRecurrence($hideRecurrence);
    }
}

class 
ReservationUserBinder implements IReservationComponentBinder
{
    
/**
     * @var IUserRepository
     */
    
private $userRepository;

    
/**
     * @var IReservationAuthorization
     */
    
private $reservationAuthorization;

    
/**
     * @param IUserRepository $userRepository
     * @param IReservationAuthorization $reservationAuthorization
     */
    
public function __construct($userRepository$reservationAuthorization)
    {
        
$this->userRepository $userRepository;
        
$this->reservationAuthorization $reservationAuthorization;
    }

    public function 
Bind(IReservationComponentInitializer $initializer)
    {
        
$userId $initializer->GetOwnerId();
        
$currentUser $initializer->CurrentUser();
        
$canChangeUser $this->reservationAuthorization->CanChangeUsers($currentUser);

        
$initializer->SetCanChangeUser($canChangeUser);

        
$reservationUser $this->userRepository->GetById($userId);
        
$initializer->SetReservationUser($reservationUser);

        
$hideUser Configuration::Instance()->GetSectionKey(ConfigSection::PRIVACY,
                                                             
ConfigKeys::PRIVACY_HIDE_USER_DETAILS,
                                                             new 
BooleanConverter());

        
$initializer->ShowUserDetails(!$hideUser || $currentUser->IsAdmin);
        
$initializer->SetShowParticipation(!$hideUser || $currentUser->IsAdmin || $currentUser->IsGroupAdmin);
    }
}

class 
ReservationResourceBinder implements IReservationComponentBinder
{
    
/**
     * @var IResourceService
     */
    
private $resourceService;

    public function 
__construct(IResourceService $resourceService)
    {
        
$this->resourceService $resourceService;
    }

    public function 
Bind(IReservationComponentInitializer $initializer)
    {
        
$requestedScheduleId $initializer->GetScheduleId();
        
$requestedResourceId $initializer->GetResourceId();
        
$groups $this->resourceService->GetResourceGroups($requestedScheduleId$initializer->CurrentUser());

        
$resources $groups->GetAllResources();
        if (empty(
$requestedResourceId) && count($resources) > 0)
        {
            
$first reset($resources);
            
$requestedResourceId $first->Id;
        }

        
$bindableResourceData $this->GetBindableResourceData($resources$requestedResourceId);

        if (
$bindableResourceData->NumberAccessible <= 0)
        {
            
$initializer->RedirectToError(ErrorMessages::INSUFFICIENT_PERMISSIONS);
            return;
        }

        
$initializer->BindResourceGroups($groups);
        
$initializer->BindAvailableResources($resources);
        
$accessories $this->resourceService->GetAccessories();
        
$initializer->BindAvailableAccessories($accessories);
        
$initializer->ShowAdditionalResources($bindableResourceData->NumberAccessible 0);
        
$initializer->SetReservationResource($bindableResourceData->ReservationResource);
    }

    
/**
     * @param $resources array|ResourceDto[]
     * @param $requestedResourceId int
     * @return BindableResourceData
     */
    
private function GetBindableResourceData($resources$requestedResourceId)
    {
        
$bindableResourceData = new BindableResourceData();

        
/** @var $resource ResourceDto */
        
foreach ($resources as $resource)
        {
            
$bindableResourceData->AddAvailableResource($resource);
            if (
$resource->Id == $requestedResourceId)
            {
                
$bindableResourceData->SetReservationResource($resource);
            }
        }

        return 
$bindableResourceData;
    }
}

class 
ReservationCustomAttributeBinder implements IReservationComponentBinder
{
    
/**
     * @var IAttributeRepository
     */
    
private $repository;

    public function 
__construct(IAttributeRepository $repository)
    {
        
$this->repository $repository;
    }

    public function 
Bind(IReservationComponentInitializer $initializer)
    {
        
$attributes $this->repository->GetByCategory(CustomAttributeCategory::RESERVATION);

        foreach (
$attributes as $attribute)
        {
            
$initializer->AddAttribute($attributenull);
        }
    }
}

class 
ReservationCustomAttributeValueBinder implements IReservationComponentBinder
{
    
/**
     * @var IAttributeRepository
     */
    
private $repository;

    
/**
     * @var ReservationView
     */
    
private $reservationView;

    public function 
__construct(IAttributeRepository $repositoryReservationView $reservationView)
    {
        
$this->repository $repository;
        
$this->reservationView $reservationView;
    }

    public function 
Bind(IReservationComponentInitializer $initializer)
    {
        
$attributes $this->repository->GetByCategory(CustomAttributeCategory::RESERVATION);

        foreach (
$attributes as $attribute)
        {
            
$initializer->AddAttribute($attribute$this->reservationView->GetAttributeValue($attribute->Id()));
        }
    }
}

class 
ReservationDetailsBinder implements IReservationComponentBinder
{
    
/**
     * @var IReservationAuthorization
     */
    
private $reservationAuthorization;

    
/**
     * @var IExistingReservationPage
     */
    
private $page;

    
/**
     * @var ReservationView
     */
    
private $reservationView;

    
/**
     * @var IPrivacyFilter
     */
    
private $privacyFilter;

    public function 
__construct(IReservationAuthorization $reservationAuthorizationIExistingReservationPage $page,
                                
ReservationView $reservationViewIPrivacyFilter $privacyFilter)
    {
        
$this->reservationAuthorization $reservationAuthorization;
        
$this->page $page;
        
$this->reservationView $reservationView;
        
$this->privacyFilter $privacyFilter;
    }

    public function 
Bind(IReservationComponentInitializer $initializer)
    {
        
$this->page->SetAdditionalResources($this->reservationView->AdditionalResourceIds);
        
$this->page->SetTitle($this->reservationView->Title);
        
$this->page->SetDescription($this->reservationView->Description);
        
$this->page->SetReferenceNumber($this->reservationView->ReferenceNumber);
        
$this->page->SetReservationId($this->reservationView->ReservationId);

        
$this->page->SetIsRecurring($this->reservationView->IsRecurring());
        
$this->page->SetRepeatType($this->reservationView->RepeatType);
        
$this->page->SetRepeatInterval($this->reservationView->RepeatInterval);
        
$this->page->SetRepeatMonthlyType($this->reservationView->RepeatMonthlyType);

        if (
$this->reservationView->RepeatTerminationDate != null)
        {
            
$this->page->SetRepeatTerminationDate($this->reservationView->RepeatTerminationDate->ToTimezone($initializer->GetTimezone()));
        }
        
$this->page->SetRepeatWeekdays($this->reservationView->RepeatWeekdays);


        
$participants $this->reservationView->Participants;
        
$invitees $this->reservationView->Invitees;

        
$this->page->SetParticipants($participants);
        
$this->page->SetInvitees($invitees);
        
$this->page->SetAccessories($this->reservationView->Accessories);

        
$currentUser $initializer->CurrentUser();

        
$this->page->SetCurrentUserParticipating($this->IsCurrentUserParticipating($currentUser->UserId));
        
$this->page->SetCurrentUserInvited($this->IsCurrentUserInvited($currentUser->UserId));

        
$canBeEdited $this->reservationAuthorization->CanEdit($this->reservationView$currentUser);
        
$this->page->SetIsEditable($canBeEdited);
        
$this->page->SetIsApprovable($this->reservationAuthorization->CanApprove($this->reservationView$currentUser));

        
$this->page->SetAttachments($this->reservationView->Attachments);

        
$showUser $this->privacyFilter->CanViewUser($initializer->CurrentUser(), $this->reservationView);
        
$showDetails $this->privacyFilter->CanViewDetails($initializer->CurrentUser(), $this->reservationView);


        
$initializer->ShowUserDetails($showUser);
        
$initializer->ShowReservationDetails($showDetails);

        if (!empty(
$this->reservationView->StartReminder))
        {
            
$this->page->SetStartReminder($this->reservationView->StartReminder->GetValue(),
                                          
$this->reservationView->StartReminder->GetInterval());
        }
        if (!empty(
$this->reservationView->EndReminder))
        {
            
$this->page->SetEndReminder($this->reservationView->EndReminder->GetValue(),
                                        
$this->reservationView->EndReminder->GetInterval());
        }
    }

    private function 
IsCurrentUserParticipating($currentUserId)
    {
        
/** @var $user ReservationUserView */
        
foreach ($this->reservationView->Participants as $user)
        {
            if (
$user->UserId == $currentUserId)
            {
                return 
true;
            }
        }
        return 
false;
    }

    private function 
IsCurrentUserInvited($currentUserId)
    {
        
/** @var $user ReservationUserView */
        
foreach ($this->reservationView->Invitees as $user)
        {
            if (
$user->UserId == $currentUserId)
            {
                return 
true;
            }
        }
        return 
false;
    }
}

?>

All system for education purposes only. For more tools: Telegram @jackleet

Mr.X Private Shell

Logo
-
New File | New Folder
Command
SQL