Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Stats/Grouper/AbstractGrouper.php
<?php

namespace XF\Stats\Grouper;

abstract class
AbstractGrouper
{
   
/**
     * @var \XF\Language
     */
   
protected $language;

    public function
__construct(\XF\Language $language)
    {
       
$this->setLanguage($language);
    }

    abstract public function
getGrouping($timestamp);
    abstract public function
getLabel($groupValue, $timestamp);
    abstract public function
getDefaultStartDate();

    public function
getTotalTooltip($timestamp, $type, $value)
    {
        return
null;
    }

    public function
getAverageTooltip($timestamp, $type, $value)
    {
        return
null;
    }

    public function
setLanguage(\XF\Language $language)
    {
       
$language = clone $language;
       
$language->setTimeZone('UTC');
       
$this->language = $language;
    }

    public function
getGroupingsInRange($firstTs, $lastTs)
    {
       
$output = [];

       
$date = new \DateTime("@$firstTs", new \DateTimeZone('UTC'));

        do
        {
           
$ts = $date->getTimestamp();
           
$grouping = $this->getGrouping($ts);

            if (!isset(
$output[$grouping]))
            {
               
$output[$grouping] = [
                   
'ts' => $ts,
                   
'label' => $this->getLabel($grouping, $ts),
                   
'days' => 1
               
];
            }
            else
            {
               
$output[$grouping]['days']++;
            }

           
$date->modify('+1 day');
        } while (
$date->getTimestamp() <= $lastTs);

        return
$output;
    }
}