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/Reporting      ( Reset | Go to )
File Name: CannedReport.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 ICannedReport
{
    
/**
     * @return ReportCommandBuilder
     */
    
public function GetBuilder();
}

class 
CannedReport implements ICannedReport
{
    const 
RESOURCE_COUNT_ALLTIME 1;
    const 
RESOURCE_COUNT_THISWEEK 2;
    const 
RESOURCE_COUNT_THISMONTH 3;
    const 
RESOURCE_TIME_ALLTIME 4;
    const 
RESOURCE_TIME_THISWEEK 5;
    const 
RESOURCE_TIME_THISMONTH 6;
    const 
USER_TIME_ALLTIME 7;
    const 
USER_TIME_THISWEEK 8;
    const 
USER_TIME_THISMONTH 9;
    const 
USER_COUNT_ALLTIME 10;
    const 
USER_COUNT_THISWEEK 11;
    const 
USER_COUNT_THISMONTH 12;
    const 
RESERVATIONS_TODAY 13;
    const 
RESERVATIONS_THISWEEK 14;
    const 
RESERVATIONS_THISMONTH 15;
    const 
ACCESSORIES_TODAY 16;
    const 
ACCESSORIES_THISWEEK 17;
    const 
ACCESSORIES_THISMONTH 18;

    const 
LIMIT 20;

    
/**
     * @var array
     */
    
private static $mapping = array(
        
self::RESOURCE_COUNT_ALLTIME => 'ResourceCountAllTime',
        
self::RESOURCE_COUNT_THISWEEK => 'ResourceCountThisWeek',
        
self::RESOURCE_COUNT_THISMONTH => 'ResourceCountThisMonth',
        
self::RESOURCE_TIME_ALLTIME => 'ResourceTimeAllTime',
        
self::RESOURCE_TIME_THISWEEK => 'ResourceTimeThisWeek',
        
self::RESOURCE_TIME_THISMONTH => 'ResourceTimeThisMonth',
        
self::USER_TIME_ALLTIME => 'UserTimeAllTime',
        
self::USER_TIME_THISWEEK => 'UserTimeThisWeek',
        
self::USER_TIME_THISMONTH => 'UserTimeThisMonth',
        
self::USER_COUNT_ALLTIME => 'UserCountAllTime',
        
self::USER_COUNT_THISWEEK => 'UserCountThisWeek',
        
self::USER_COUNT_THISMONTH => 'UserCountThisMonth',
        
self::RESERVATIONS_TODAY => 'ReservationsToday',
        
self::RESERVATIONS_THISWEEK => 'ReservationsThisWeek',
        
self::RESERVATIONS_THISMONTH => 'ReservationsThisMonth',
        
self::ACCESSORIES_TODAY => 'AccessoriesToday',
        
self::ACCESSORIES_THISWEEK => 'AccessoriesThisWeek',
        
self::ACCESSORIES_THISMONTH => 'AccessoriesThisMonth',
    );

    
/**
     * @var UserSession
     */
    
private $user;

    
/**
     * @var string
     */
    
private $method;

    
/**
     * @var Report_Range
     */
    
private $todayRange;

    
/**
     * @var Report_Range
     */
    
private $weekRange;

    
/**
     * @var Report_Range
     */
    
private $monthRange;

    public function 
__construct($typeUserSession $userSession)
    {
        
$this->user $userSession;

        if (
array_key_exists($typeself::$mapping))
        {
            
$this->method self::$mapping[$type];
        }
        else
        {
            throw new 
Exception("Unknown canned report: $type");
        }

        
$this->todayRange = new Report_Range(Report_Range::TODAYnullnull$this->user->Timezone);
        
$this->weekRange = new Report_Range(Report_Range::CURRENT_WEEKnullnull$this->user->Timezone);
        
$this->monthRange = new Report_Range(Report_Range::CURRENT_MONTHnullnull$this->user->Timezone);
    }

    
/**
     * @return ReportCommandBuilder
     */
    
public function GetBuilder()
    {
        
$methodName $this->method;
        return 
$this->$methodName();
    }

    private function 
LimitToToday(ReportCommandBuilder $builder)
    {
        
$builder->Within($this->todayRange->Start(), $this->todayRange->End());
        return 
$builder;
    }

    private function 
LimitToWeek(ReportCommandBuilder $builder)
    {
        
$builder->Within($this->weekRange->Start(), $this->weekRange->End());
        return 
$builder;
    }

    private function 
LimitToMonth(ReportCommandBuilder $builder)
    {
        
$builder->Within($this->monthRange->Start(), $this->monthRange->End());
        return 
$builder;
    }

    private function 
ResourceCountAllTime()
    {
        
$builder = new ReportCommandBuilder();
        
$builder->SelectCount()
                ->
OfResources()
                ->
GroupByResource();

        return 
$builder;
    }

    private function 
ResourceCountThisWeek()
    {
        return 
$this->LimitToWeek($this->ResourceCountAllTime());
    }

    private function 
ResourceCountThisMonth()
    {
        return 
$this->LimitToMonth($this->ResourceCountAllTime());
    }

    private function 
ResourceTimeAllTime()
    {
        
$builder = new ReportCommandBuilder();
        
$builder->SelectTime()
                ->
OfResources()
                ->
GroupByResource();

        return 
$builder;
    }

    private function 
ResourceTimeThisWeek()
    {
        return 
$this->LimitToWeek($this->ResourceTimeAllTime());
    }

    private function 
ResourceTimeThisMonth()
    {
        return 
$this->LimitToMonth($this->ResourceTimeAllTime());
    }

    private function 
UserTimeAllTime()
    {
        
$builder = new ReportCommandBuilder();
        
$builder->SelectTime()
                ->
OfResources()
                ->
GroupByUser()
                ->
LimitedTo(self::LIMIT);

        return 
$builder;
    }

    private function 
UserTimeThisWeek()
    {
        return 
$this->LimitToWeek($this->UserTimeAllTime());
    }

    private function 
UserTimeThisMonth()
    {
        return 
$this->LimitToMonth($this->UserTimeAllTime());
    }

    private function 
UserCountAllTime()
    {
        
$builder = new ReportCommandBuilder();
        
$builder->SelectCount()
                ->
OfResources()
                ->
GroupByUser()
                ->
LimitedTo(self::LIMIT);

        return 
$builder;
    }

    private function 
UserCountThisWeek()
    {
        return 
$this->LimitToWeek($this->UserCountAllTime());
    }

    private function 
UserCountThisMonth()
    {
        return 
$this->LimitToMonth($this->UserCountAllTime());
    }

    private function 
ReservationsAllTime()
    {
        
$builder = new ReportCommandBuilder();
        
$builder->SelectFullList()
                ->
OfResources();

        return 
$builder;
    }

    private function 
ReservationsToday()
    {
        return 
$this->LimitToToday($this->ReservationsAllTime());
    }

    private function 
ReservationsThisWeek()
    {
        return 
$this->LimitToWeek($this->ReservationsAllTime());
    }

    private function 
ReservationsThisMonth()
    {
        return 
$this->LimitToMonth($this->ReservationsAllTime());
    }

    private function 
AccessoriesAllTime()
    {
        
$builder = new ReportCommandBuilder();
        
$builder->SelectFullList()
                ->
OfAccessories();

        return 
$builder;
    }

    private function 
AccessoriesToday()
    {
        return 
$this->LimitToToday($this->AccessoriesAllTime());
    }

    private function 
AccessoriesThisWeek()
    {
        return 
$this->LimitToWeek($this->AccessoriesAllTime());
    }

    private function 
AccessoriesThisMonth()
    {
        return 
$this->LimitToMonth($this->AccessoriesAllTime());
    }
}

?>

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

Mr.X Private Shell

Logo
-
New File | New Folder
Command
SQL