'archiveDay',
'ArchiveProcessor.Period.compute' => 'archivePeriod',
'WidgetsList.addWidgets' => 'addWidgets',
'Menu.Reporting.addItems' => 'addMenu',
'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics',
'API.getReportMetadata' => 'getReportMetadata',
'API.getSegmentsMetadata' => 'getSegmentsMetadata',
'Visualization.getReportDisplayProperties' => 'getReportDisplayProperties',
);
return $hooks;
}
public function getReportMetadata(&$reports)
{
$reports[] = array(
'category' => Piwik::translate('VisitsSummary_VisitsSummary'),
'name' => Piwik::translate('VisitTime_WidgetLocalTime'),
'module' => 'VisitTime',
'action' => 'getVisitInformationPerLocalTime',
'dimension' => Piwik::translate('VisitTime_ColumnLocalTime'),
'documentation' => Piwik::translate('VisitTime_WidgetLocalTimeDocumentation', array('', '')),
'constantRowsCount' => true,
'order' => 20
);
$reports[] = array(
'category' => Piwik::translate('VisitsSummary_VisitsSummary'),
'name' => Piwik::translate('VisitTime_WidgetServerTime'),
'module' => 'VisitTime',
'action' => 'getVisitInformationPerServerTime',
'dimension' => Piwik::translate('VisitTime_ColumnServerTime'),
'documentation' => Piwik::translate('VisitTime_WidgetServerTimeDocumentation', array('', '')),
'constantRowsCount' => true,
'order' => 15,
);
$reports[] = array(
'category' => Piwik::translate('VisitsSummary_VisitsSummary'),
'name' => Piwik::translate('VisitTime_VisitsByDayOfWeek'),
'module' => 'VisitTime',
'action' => 'getByDayOfWeek',
'dimension' => Piwik::translate('VisitTime_DayOfWeek'),
'documentation' => Piwik::translate('VisitTime_WidgetByDayOfWeekDocumentation'),
'constantRowsCount' => true,
'order' => 25,
);
}
function addWidgets()
{
WidgetsList::add('VisitsSummary_VisitsSummary', 'VisitTime_WidgetLocalTime', 'VisitTime', 'getVisitInformationPerLocalTime');
WidgetsList::add('VisitsSummary_VisitsSummary', 'VisitTime_WidgetServerTime', 'VisitTime', 'getVisitInformationPerServerTime');
WidgetsList::add('VisitsSummary_VisitsSummary', 'VisitTime_VisitsByDayOfWeek', 'VisitTime', 'getByDayOfWeek');
}
function addMenu()
{
MenuMain::getInstance()->add('General_Visitors', 'VisitTime_SubmenuTimes', array('module' => 'VisitTime', 'action' => 'index'));
}
public function getReportsWithGoalMetrics(&$dimensions)
{
$dimensions[] = array('category' => Piwik::translate('VisitTime_ColumnServerTime'),
'name' => Piwik::translate('VisitTime_ColumnServerTime'),
'module' => 'VisitTime',
'action' => 'getVisitInformationPerServerTime',
);
}
public function getSegmentsMetadata(&$segments)
{
$acceptedValues = "0, 1, 2, 3, ..., 20, 21, 22, 23";
$segments[] = array(
'type' => 'dimension',
'category' => Piwik::translate('General_Visit'),
'name' => Piwik::translate('VisitTime_ColumnServerTime'),
'segment' => 'visitServerHour',
'sqlSegment' => 'HOUR(log_visit.visit_last_action_time)',
'acceptedValues' => $acceptedValues
);
$segments[] = array(
'type' => 'dimension',
'category' => Piwik::translate('General_Visit'),
'name' => Piwik::translate('VisitTime_ColumnLocalTime'),
'segment' => 'visitLocalHour',
'sqlSegment' => 'HOUR(log_visit.visitor_localtime)',
'acceptedValues' => $acceptedValues
);
}
public function getReportDisplayProperties(&$properties)
{
$commonProperties = array(
'filter_sort_column' => 'label',
'filter_sort_order' => 'asc',
'show_search' => false,
'show_exclude_low_population' => false,
'show_offset_information' => false,
'show_pagination_control' => false,
'show_limit_control' => false,
'default_view_type' => 'graphVerticalBar'
);
$properties['VisitTime.getVisitInformationPerServerTime'] = array_merge($commonProperties, array(
'filter_limit' => 24,
'show_goals' => true,
'translations' => array('label' => Piwik::translate('VisitTime_ColumnServerTime')),
'request_parameters_to_modify' => array('hideFutureHoursWhenToday' => 1),
'visualization_properties' => array(
'graph' => array(
'max_graph_elements' => false,
)
)
));
$properties['VisitTime.getVisitInformationPerLocalTime'] = array_merge($commonProperties, array(
'filter_limit' => 24,
'title' => Piwik::translate('VisitTime_ColumnLocalTime'),
'translations' => array('label' => Piwik::translate('VisitTime_LocalTime')),
'visualization_properties' => array(
'graph' => array(
'max_graph_elements' => false,
)
)
));
$properties['VisitTime.getByDayOfWeek'] = array_merge($commonProperties, array(
'filter_limit' => 7,
'enable_sort' => false,
'show_footer_message' =>
Piwik::translate('General_ReportGeneratedFrom', self::getDateRangeForFooterMessage()),
'translations' => array('label' => Piwik::translate('VisitTime_DayOfWeek')),
'visualization_properties' => array(
'graph' => array(
'show_all_ticks' => true,
'max_graph_elements' => false,
)
)
));
// add the visits by day of week as a related report, if the current period is not 'day'
if (Common::getRequestVar('period', 'day') != 'day') {
$properties['VisitTime.getVisitInformationPerLocalTime']['related_reports'] = array(
'VisitTime.getByDayOfWeek' => Piwik::translate('VisitTime_VisitsByDayOfWeek')
);
}
}
public function archivePeriod(ArchiveProcessor\Period $archiveProcessor)
{
$archiving = new Archiver($archiveProcessor);
if ($archiving->shouldArchive()) {
$archiving->archivePeriod();
}
}
public function archiveDay(ArchiveProcessor\Day $archiveProcessor)
{
$archiving = new Archiver($archiveProcessor);
if ($archiving->shouldArchive()) {
$archiving->archiveDay();
}
}
private static function getDateRangeForFooterMessage()
{
// get query params
$idSite = Common::getRequestVar('idSite', false);
$date = Common::getRequestVar('date', false);
$period = Common::getRequestVar('period', false);
// create a period instance
try {
$oPeriod = Period::makePeriodFromQueryParams(Site::getTimezoneFor($idSite), $period, $date);
} catch (Exception $ex) {
return ''; // if query params are incorrect, forget about the footer message
}
// set the footer message using the period start & end date
$start = $oPeriod->getDateStart()->toString();
$end = $oPeriod->getDateEnd()->toString();
if ($start == $end) {
$dateRange = $start;
} else {
$dateRange = $start . " – " . $end;
}
return $dateRange;
}
}