blob: d8b9d6f14c3e142d1f48283fd79bf64cf251d8ca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
<?php
/**
* Piwik - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\VisitTime\DataTable\Filter;
use Piwik\DataTable;
use Piwik\Period;
/**
* Adds a segment value to each row by interpreting the label value as hour in the website's timezone and
* converting the hour to UTC.
*
* **Basic usage example**
*
* $dataTable->filter('AddSegmentByLabelInUTC', array($idSite = 'UTC+1', $period = 'day', $date = 'today');
*/
class AddSegmentByLabelInUTC extends DataTable\Filter\AddSegmentValue
{
private $timezone;
private $date;
/**
* @param DataTable $table
* @param int $timezone The timezone of the current selected site / the timezone of the labels
* @param string $period The requested period and date is needed to respect daylight saving etc.
* @param string $date
*/
public function __construct($table, $timezone, $period, $date)
{
$this->timezone = $timezone;
$this->date = Period\Factory::build($period, $date)->getDateEnd();
$self = $this;
parent::__construct($table, function ($label) use ($self) {
$hour = str_pad($label, 2, 0, STR_PAD_LEFT);
return $self->convertHourToUtc($hour);
});
}
public function convertHourToUTC($hour)
{
$dateWithHour = $this->date->setTime($hour . ':00:00');
$dateInTimezone = $dateWithHour->setTimezone($this->timezone);
$hourInUTC = $dateInTimezone->getHourUTC();
return $hourInUTC;
}
}
|