| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Plugins\CoreHome\Columns; |
|
|
| use Piwik\Common; |
| use Piwik\Date; |
| use Piwik\Period; |
| use Piwik\Plugin\Dimension\VisitDimension; |
| use Piwik\Site; |
| use Piwik\Tracker\Action; |
| use Piwik\Tracker\Request; |
| use Piwik\Tracker\Visitor; |
| use Piwik\Metrics\Formatter; |
|
|
| require_once PIWIK_INCLUDE_PATH . '/plugins/VisitTime/functions.php'; |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| class VisitLastActionTime extends VisitDimension |
| { |
| protected $columnName = 'visit_last_action_time'; |
| protected $type = self::TYPE_DATETIME; |
| protected $nameSingular = 'VisitTime_ColumnVisitEndSiteHour'; |
| protected $sqlSegment = 'HOUR(log_visit.visit_last_action_time)'; |
| protected $segmentName = 'visitServerHour'; |
| protected $acceptValues = '0, 1, 2, 3, ..., 20, 21, 22, 23'; |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| public static function convertHourToHourInSiteTimezone($hour, $idSite) |
| { |
| $date = Date::now(); |
| $dateString = Common::getRequestVar('date', '', 'string'); |
| $periodString = Common::getRequestVar('period', '', 'string'); |
| if (!empty($dateString) && !empty($periodString)) { |
| try { |
| $date = Period\Factory::build($periodString, $dateString)->getDateStart(); |
| } catch (\Exception $e) { |
| |
| } |
| } |
| $timezone = Site::getTimezoneFor($idSite); |
| $datetime = $date->toString() . ' ' . $hour . ':00:00'; |
| $hourInTz = (int)Date::factory($datetime, $timezone)->toString('H'); |
| return $hourInTz; |
| } |
|
|
| public function formatValue($value, $idSite, Formatter $formatter) |
| { |
| $hourInTz = self::convertHourToHourInSiteTimezone($value, $idSite); |
|
|
| return \Piwik\Plugins\VisitTime\getTimeLabel($hourInTz); |
| } |
|
|
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| public function onNewVisit(Request $request, Visitor $visitor, $action) |
| { |
| return Date::getDatetimeFromTimestamp($request->getCurrentTimestamp()); |
| } |
|
|
| |
| |
| |
| |
| public function onExistingVisit(Request $request, Visitor $visitor, $action) |
| { |
| if ($request->getParam('ping') == 1) { |
| return false; |
| } |
|
|
| $originalVisitLastActionTime = $visitor->getPreviousVisitColumn('visit_last_action_time'); |
|
|
| if ( |
| !empty($originalVisitLastActionTime) |
| && Date::factory($originalVisitLastActionTime)->getTimestamp() > $request->getCurrentTimestamp() |
| ) { |
| |
| return $originalVisitLastActionTime; |
| } |
|
|
| return $this->onNewVisit($request, $visitor, $action); |
| } |
| } |
|
|