Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattab <matthieu.aubry@gmail.com>2013-03-28 03:42:39 +0400
committermattab <matthieu.aubry@gmail.com>2013-03-28 03:42:40 +0400
commitae4b03163792f0b6e933933e5d37df87dc3fd566 (patch)
treed1d7510a9728f587d3d63ebd03e4ecf3d904838b /plugins/VisitorInterest
parent158c2150f5f2e13ece459b8d131244c11b763997 (diff)
Mass conversion of all files to the newly agreed coding standard: PSR 1/2
Converting Piwik core source files, PHP, JS, TPL, CSS More info: http://piwik.org/participate/coding-standards/
Diffstat (limited to 'plugins/VisitorInterest')
-rw-r--r--plugins/VisitorInterest/API.php208
-rw-r--r--plugins/VisitorInterest/Controller.php196
-rw-r--r--plugins/VisitorInterest/VisitorInterest.php633
-rw-r--r--plugins/VisitorInterest/templates/index.tpl1
4 files changed, 514 insertions, 524 deletions
diff --git a/plugins/VisitorInterest/API.php b/plugins/VisitorInterest/API.php
index 72b43207f5..7adfd7ca4e 100644
--- a/plugins/VisitorInterest/API.php
+++ b/plugins/VisitorInterest/API.php
@@ -1,10 +1,10 @@
<?php
/**
* Piwik - Open source web analytics
- *
+ *
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
+ *
* @category Piwik_Plugins
* @package Piwik_VisitorInterest
*/
@@ -12,118 +12,114 @@
/**
* VisitorInterest API lets you access two Visitor Engagement reports: number of visits per number of pages,
* and number of visits per visit duration.
- *
+ *
* @package Piwik_VisitorInterest
*/
-class Piwik_VisitorInterest_API
+class Piwik_VisitorInterest_API
{
- static private $instance = null;
- static public function getInstance()
- {
- if (self::$instance == null)
- {
- self::$instance = new self;
- }
- return self::$instance;
- }
+ static private $instance = null;
- protected function getDataTable($name, $idSite, $period, $date, $segment, $column = Piwik_Archive::INDEX_NB_VISITS)
- {
- Piwik::checkUserHasViewAccess( $idSite );
- $archive = Piwik_Archive::build($idSite, $period, $date, $segment );
- $dataTable = $archive->getDataTable($name);
- $dataTable->queueFilter('ReplaceColumnNames');
- return $dataTable;
- }
-
- public function getNumberOfVisitsPerVisitDuration( $idSite, $period, $date, $segment = false )
- {
- $dataTable = $this->getDataTable('VisitorInterest_timeGap', $idSite, $period, $date, $segment);
- $dataTable->queueFilter('Sort', array('label', 'asc', true));
- $dataTable->queueFilter('BeautifyTimeRangeLabels', array(
- Piwik_Translate('VisitorInterest_BetweenXYSeconds'),
- Piwik_Translate('VisitorInterest_OneMinute'),
- Piwik_Translate('VisitorInterest_PlusXMin')));
- return $dataTable;
- }
+ static public function getInstance()
+ {
+ if (self::$instance == null) {
+ self::$instance = new self;
+ }
+ return self::$instance;
+ }
- public function getNumberOfVisitsPerPage( $idSite, $period, $date, $segment = false )
- {
- $dataTable = $this->getDataTable('VisitorInterest_pageGap', $idSite, $period, $date, $segment);
- $dataTable->queueFilter('Sort', array('label', 'asc', true));
- $dataTable->queueFilter('BeautifyRangeLabels', array(
- Piwik_Translate('VisitorInterest_OnePage'),
- Piwik_Translate('VisitorInterest_NPages')));
- return $dataTable;
- }
-
- /**
- * Returns a DataTable that associates counts of days (N) with the count of visits that
- * occurred within N days of the last visit.
- *
- * @param int $idSite The site to select data from.
- * @param string $period The period type.
- * @param string $date The date type.
- * @param string|bool $segment The segment.
- * @return Piwik_DataTable the archived report data.
- */
- public function getNumberOfVisitsByDaysSinceLast( $idSite, $period, $date, $segment = false )
- {
- $recordName = 'VisitorInterest_daysSinceLastVisit';
- $dataTable = $this->getDataTable(
- $recordName, $idSite, $period, $date, $segment, Piwik_Archive::INDEX_NB_VISITS);
+ protected function getDataTable($name, $idSite, $period, $date, $segment, $column = Piwik_Archive::INDEX_NB_VISITS)
+ {
+ Piwik::checkUserHasViewAccess($idSite);
+ $archive = Piwik_Archive::build($idSite, $period, $date, $segment);
+ $dataTable = $archive->getDataTable($name);
+ $dataTable->queueFilter('ReplaceColumnNames');
+ return $dataTable;
+ }
- $dataTable->queueFilter('BeautifyRangeLabels', array(
- Piwik_Translate('General_OneDay'), Piwik_Translate('General_NDays')));
-
- return $dataTable;
- }
-
- /**
- * Returns a DataTable that associates ranges of visit numbers with the count of visits
- * whose visit number falls within those ranges.
- *
- * @param int $idSite The site to select data from.
- * @param string $period The period type.
- * @param string $date The date type.
- * @param string|bool $segment The segment.
- * @return Piwik_DataTable the archived report data.
- */
- public function getNumberOfVisitsByVisitCount( $idSite, $period, $date, $segment = false )
- {
- $dataTable = $this->getDataTable(
- 'VisitorInterest_visitsByVisitCount', $idSite, $period, $date, $segment, Piwik_Archive::INDEX_NB_VISITS);
+ public function getNumberOfVisitsPerVisitDuration($idSite, $period, $date, $segment = false)
+ {
+ $dataTable = $this->getDataTable('VisitorInterest_timeGap', $idSite, $period, $date, $segment);
+ $dataTable->queueFilter('Sort', array('label', 'asc', true));
+ $dataTable->queueFilter('BeautifyTimeRangeLabels', array(
+ Piwik_Translate('VisitorInterest_BetweenXYSeconds'),
+ Piwik_Translate('VisitorInterest_OneMinute'),
+ Piwik_Translate('VisitorInterest_PlusXMin')));
+ return $dataTable;
+ }
- $dataTable->queueFilter('BeautifyRangeLabels', array(
- Piwik_Translate('General_OneVisit'), Piwik_Translate('General_NVisits')));
+ public function getNumberOfVisitsPerPage($idSite, $period, $date, $segment = false)
+ {
+ $dataTable = $this->getDataTable('VisitorInterest_pageGap', $idSite, $period, $date, $segment);
+ $dataTable->queueFilter('Sort', array('label', 'asc', true));
+ $dataTable->queueFilter('BeautifyRangeLabels', array(
+ Piwik_Translate('VisitorInterest_OnePage'),
+ Piwik_Translate('VisitorInterest_NPages')));
+ return $dataTable;
+ }
- // add visit percent column
- self::addVisitsPercentColumn($dataTable);
+ /**
+ * Returns a DataTable that associates counts of days (N) with the count of visits that
+ * occurred within N days of the last visit.
+ *
+ * @param int $idSite The site to select data from.
+ * @param string $period The period type.
+ * @param string $date The date type.
+ * @param string|bool $segment The segment.
+ * @return Piwik_DataTable the archived report data.
+ */
+ public function getNumberOfVisitsByDaysSinceLast($idSite, $period, $date, $segment = false)
+ {
+ $recordName = 'VisitorInterest_daysSinceLastVisit';
+ $dataTable = $this->getDataTable(
+ $recordName, $idSite, $period, $date, $segment, Piwik_Archive::INDEX_NB_VISITS);
- return $dataTable;
- }
+ $dataTable->queueFilter('BeautifyRangeLabels', array(
+ Piwik_Translate('General_OneDay'), Piwik_Translate('General_NDays')));
- /**
- * Utility function that adds a visit percent column to a data table,
- * regardless of whether the data table is an data table array or just
- * a data table.
- *
- * @param Piwik_DataTable $dataTable The data table to modify.
- */
- private static function addVisitsPercentColumn( $dataTable )
- {
- if ($dataTable instanceof Piwik_DataTable_Array)
- {
- foreach($dataTable->getArray() as $table)
- {
- self::addVisitsPercentColumn($table);
- }
- }
- else
- {
- $totalVisits = array_sum($dataTable->getColumn(Piwik_Archive::INDEX_NB_VISITS));
- $dataTable->queueFilter('ColumnCallbackAddColumnPercentage', array(
- 'nb_visits_percentage', 'nb_visits', $totalVisits));
- }
- }
+ return $dataTable;
+ }
+
+ /**
+ * Returns a DataTable that associates ranges of visit numbers with the count of visits
+ * whose visit number falls within those ranges.
+ *
+ * @param int $idSite The site to select data from.
+ * @param string $period The period type.
+ * @param string $date The date type.
+ * @param string|bool $segment The segment.
+ * @return Piwik_DataTable the archived report data.
+ */
+ public function getNumberOfVisitsByVisitCount($idSite, $period, $date, $segment = false)
+ {
+ $dataTable = $this->getDataTable(
+ 'VisitorInterest_visitsByVisitCount', $idSite, $period, $date, $segment, Piwik_Archive::INDEX_NB_VISITS);
+
+ $dataTable->queueFilter('BeautifyRangeLabels', array(
+ Piwik_Translate('General_OneVisit'), Piwik_Translate('General_NVisits')));
+
+ // add visit percent column
+ self::addVisitsPercentColumn($dataTable);
+
+ return $dataTable;
+ }
+
+ /**
+ * Utility function that adds a visit percent column to a data table,
+ * regardless of whether the data table is an data table array or just
+ * a data table.
+ *
+ * @param Piwik_DataTable $dataTable The data table to modify.
+ */
+ private static function addVisitsPercentColumn($dataTable)
+ {
+ if ($dataTable instanceof Piwik_DataTable_Array) {
+ foreach ($dataTable->getArray() as $table) {
+ self::addVisitsPercentColumn($table);
+ }
+ } else {
+ $totalVisits = array_sum($dataTable->getColumn(Piwik_Archive::INDEX_NB_VISITS));
+ $dataTable->queueFilter('ColumnCallbackAddColumnPercentage', array(
+ 'nb_visits_percentage', 'nb_visits', $totalVisits));
+ }
+ }
}
diff --git a/plugins/VisitorInterest/Controller.php b/plugins/VisitorInterest/Controller.php
index 6acef00f43..ef50ad5cac 100644
--- a/plugins/VisitorInterest/Controller.php
+++ b/plugins/VisitorInterest/Controller.php
@@ -1,10 +1,10 @@
<?php
/**
* Piwik - Open source web analytics
- *
+ *
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
+ *
* @category Piwik_Plugins
* @package Piwik_VisitorInterest
*/
@@ -12,101 +12,101 @@
/**
* @package Piwik_VisitorInterest
*/
-class Piwik_VisitorInterest_Controller extends Piwik_Controller
+class Piwik_VisitorInterest_Controller extends Piwik_Controller
{
- function index()
- {
- $view = Piwik_View::factory('index');
- $view->dataTableNumberOfVisitsPerVisitDuration = $this->getNumberOfVisitsPerVisitDuration(true);
- $view->dataTableNumberOfVisitsPerPage = $this->getNumberOfVisitsPerPage(true);
- $view->dataTableNumberOfVisitsByVisitNum = $this->getNumberOfVisitsByVisitCount(true);
- $view->dataTableNumberOfVisitsByDaysSinceLast = $this->getNumberOfVisitsByDaysSinceLast(true);
- echo $view->render();
- }
-
- function getNumberOfVisitsPerVisitDuration( $fetch = false)
- {
- $view = Piwik_ViewDataTable::factory( 'cloud' );
- $view->init( $this->pluginName, __FUNCTION__, "VisitorInterest.getNumberOfVisitsPerVisitDuration" );
-
- $view->setColumnsToDisplay( array('label','nb_visits') );
- $view->setSortedColumn( 'label', 'asc' );
- $view->setColumnTranslation('label', Piwik_Translate('VisitorInterest_ColumnVisitDuration'));
- $view->setGraphLimit(10);
- $view->disableSort();
- $view->disableExcludeLowPopulation();
- $view->disableOffsetInformationAndPaginationControls();
- $view->disableSearchBox();
- $view->disableShowAllColumns();
-
- return $this->renderView($view, $fetch);
- }
-
- function getNumberOfVisitsPerPage( $fetch = false)
- {
- $view = Piwik_ViewDataTable::factory( 'cloud' );
- $view->init( $this->pluginName, __FUNCTION__, "VisitorInterest.getNumberOfVisitsPerPage" );
- $view->setColumnsToDisplay( array('label','nb_visits') );
- $view->setSortedColumn( 'label', 'asc' );
- $view->setColumnTranslation('label', Piwik_Translate('VisitorInterest_ColumnPagesPerVisit'));
- $view->setGraphLimit(10);
- $view->disableExcludeLowPopulation();
- $view->disableOffsetInformationAndPaginationControls();
- $view->disableSearchBox();
- $view->disableSort();
- $view->disableShowAllColumns();
-
- return $this->renderView($view, $fetch);
- }
-
- /**
- * Returns a report that lists the count of visits for different ranges of
- * a visitor's visit number.
- *
- * @param bool $fetch Whether to return the rendered view as a string or echo it.
- * @return string The rendered report or nothing if $fetch is set to false.
- */
- public function getNumberOfVisitsByVisitCount( $fetch = false )
- {
- $view = Piwik_ViewDataTable::factory( );
- $view->init( $this->pluginName, __FUNCTION__, "VisitorInterest.getNumberOfVisitsByVisitCount" );
- $view->setColumnsToDisplay( array('label', 'nb_visits', 'nb_visits_percentage') );
- $view->setSortedColumn('label', 'asc');
- $view->setColumnTranslation('label', Piwik_Translate('VisitorInterest_VisitNum'));
- $view->setColumnTranslation('nb_visits_percentage', str_replace(' ', '&nbsp;', Piwik_Translate('General_ColumnPercentageVisits')));
- $view->disableExcludeLowPopulation();
- $view->disableOffsetInformationAndPaginationControls();
- $view->disableShowAllViewsIcons();
- $view->setLimit(15);
- $view->disableSearchBox();
- $view->disableSort();
- $view->disableShowAllColumns();
-
- return $this->renderView($view, $fetch);
- }
-
- /**
- * Returns a rendered report that lists the count of visits for different ranges
- * of days since a visitor's last visit.
- *
- * @param bool $fetch Whether to return the rendered view as a string or echo it.
- * @return string The rendered report or nothing if $fetch is set to false.
- */
- public function getNumberOfVisitsByDaysSinceLast( $fetch = false )
- {
- $view = Piwik_ViewDataTable::factory( );
- $view->init( $this->pluginName, __FUNCTION__, 'VisitorInterest.getNumberOfVisitsByDaysSinceLast' );
- $view->setColumnsToDisplay( array('label', 'nb_visits') );
- $view->setSortedColumn('label', 'asc');
- $view->setColumnTranslation('label', Piwik_Translate('General_DaysSinceLastVisit'));
- $view->disableExcludeLowPopulation();
- $view->disableOffsetInformationAndPaginationControls();
- $view->disableShowAllViewsIcons();
- $view->setLimit(15);
- $view->disableSearchBox();
- $view->disableSort();
- $view->disableShowAllColumns();
-
- return $this->renderView($view, $fetch);
- }
+ function index()
+ {
+ $view = Piwik_View::factory('index');
+ $view->dataTableNumberOfVisitsPerVisitDuration = $this->getNumberOfVisitsPerVisitDuration(true);
+ $view->dataTableNumberOfVisitsPerPage = $this->getNumberOfVisitsPerPage(true);
+ $view->dataTableNumberOfVisitsByVisitNum = $this->getNumberOfVisitsByVisitCount(true);
+ $view->dataTableNumberOfVisitsByDaysSinceLast = $this->getNumberOfVisitsByDaysSinceLast(true);
+ echo $view->render();
+ }
+
+ function getNumberOfVisitsPerVisitDuration($fetch = false)
+ {
+ $view = Piwik_ViewDataTable::factory('cloud');
+ $view->init($this->pluginName, __FUNCTION__, "VisitorInterest.getNumberOfVisitsPerVisitDuration");
+
+ $view->setColumnsToDisplay(array('label', 'nb_visits'));
+ $view->setSortedColumn('label', 'asc');
+ $view->setColumnTranslation('label', Piwik_Translate('VisitorInterest_ColumnVisitDuration'));
+ $view->setGraphLimit(10);
+ $view->disableSort();
+ $view->disableExcludeLowPopulation();
+ $view->disableOffsetInformationAndPaginationControls();
+ $view->disableSearchBox();
+ $view->disableShowAllColumns();
+
+ return $this->renderView($view, $fetch);
+ }
+
+ function getNumberOfVisitsPerPage($fetch = false)
+ {
+ $view = Piwik_ViewDataTable::factory('cloud');
+ $view->init($this->pluginName, __FUNCTION__, "VisitorInterest.getNumberOfVisitsPerPage");
+ $view->setColumnsToDisplay(array('label', 'nb_visits'));
+ $view->setSortedColumn('label', 'asc');
+ $view->setColumnTranslation('label', Piwik_Translate('VisitorInterest_ColumnPagesPerVisit'));
+ $view->setGraphLimit(10);
+ $view->disableExcludeLowPopulation();
+ $view->disableOffsetInformationAndPaginationControls();
+ $view->disableSearchBox();
+ $view->disableSort();
+ $view->disableShowAllColumns();
+
+ return $this->renderView($view, $fetch);
+ }
+
+ /**
+ * Returns a report that lists the count of visits for different ranges of
+ * a visitor's visit number.
+ *
+ * @param bool $fetch Whether to return the rendered view as a string or echo it.
+ * @return string The rendered report or nothing if $fetch is set to false.
+ */
+ public function getNumberOfVisitsByVisitCount($fetch = false)
+ {
+ $view = Piwik_ViewDataTable::factory();
+ $view->init($this->pluginName, __FUNCTION__, "VisitorInterest.getNumberOfVisitsByVisitCount");
+ $view->setColumnsToDisplay(array('label', 'nb_visits', 'nb_visits_percentage'));
+ $view->setSortedColumn('label', 'asc');
+ $view->setColumnTranslation('label', Piwik_Translate('VisitorInterest_VisitNum'));
+ $view->setColumnTranslation('nb_visits_percentage', str_replace(' ', '&nbsp;', Piwik_Translate('General_ColumnPercentageVisits')));
+ $view->disableExcludeLowPopulation();
+ $view->disableOffsetInformationAndPaginationControls();
+ $view->disableShowAllViewsIcons();
+ $view->setLimit(15);
+ $view->disableSearchBox();
+ $view->disableSort();
+ $view->disableShowAllColumns();
+
+ return $this->renderView($view, $fetch);
+ }
+
+ /**
+ * Returns a rendered report that lists the count of visits for different ranges
+ * of days since a visitor's last visit.
+ *
+ * @param bool $fetch Whether to return the rendered view as a string or echo it.
+ * @return string The rendered report or nothing if $fetch is set to false.
+ */
+ public function getNumberOfVisitsByDaysSinceLast($fetch = false)
+ {
+ $view = Piwik_ViewDataTable::factory();
+ $view->init($this->pluginName, __FUNCTION__, 'VisitorInterest.getNumberOfVisitsByDaysSinceLast');
+ $view->setColumnsToDisplay(array('label', 'nb_visits'));
+ $view->setSortedColumn('label', 'asc');
+ $view->setColumnTranslation('label', Piwik_Translate('General_DaysSinceLastVisit'));
+ $view->disableExcludeLowPopulation();
+ $view->disableOffsetInformationAndPaginationControls();
+ $view->disableShowAllViewsIcons();
+ $view->setLimit(15);
+ $view->disableSearchBox();
+ $view->disableSort();
+ $view->disableShowAllColumns();
+
+ return $this->renderView($view, $fetch);
+ }
}
diff --git a/plugins/VisitorInterest/VisitorInterest.php b/plugins/VisitorInterest/VisitorInterest.php
index d4895502ce..00689e5c2c 100644
--- a/plugins/VisitorInterest/VisitorInterest.php
+++ b/plugins/VisitorInterest/VisitorInterest.php
@@ -15,326 +15,321 @@
*/
class Piwik_VisitorInterest extends Piwik_Plugin
{
- public function getInformation()
- {
- $info = array(
- 'description' => Piwik_Translate('VisitorInterest_PluginDescription'),
- 'author' => 'Piwik',
- 'author_homepage' => 'http://piwik.org/',
- 'version' => Piwik_Version::VERSION,
- );
- return $info;
- }
-
- function getListHooksRegistered()
- {
- $hooks = array(
- 'ArchiveProcessing_Day.compute' => 'archiveDay',
- 'ArchiveProcessing_Period.compute' => 'archivePeriod',
- 'WidgetsList.add' => 'addWidgets',
- 'Menu.add' => 'addMenu',
- 'API.getReportMetadata' => 'getReportMetadata',
- );
- return $hooks;
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- public function getReportMetadata($notification)
- {
- $reports = &$notification->getNotificationObject();
- $reports[] = array(
- 'category' => Piwik_Translate('General_Visitors'),
- 'name' => Piwik_Translate('VisitorInterest_WidgetLengths'),
- 'module' => 'VisitorInterest',
- 'action' => 'getNumberOfVisitsPerVisitDuration',
- 'dimension' => Piwik_Translate('VisitorInterest_ColumnVisitDuration'),
- 'metrics' => array( 'nb_visits' ),
- 'processedMetrics' => false,
- 'constantRowsCount' => true,
- 'documentation' => Piwik_Translate('VisitorInterest_WidgetLengthsDocumentation')
- .'<br />'.Piwik_Translate('General_ChangeTagCloudView'),
- 'order' => 15
- );
-
- $reports[] = array(
- 'category' => Piwik_Translate('General_Visitors'),
- 'name' => Piwik_Translate('VisitorInterest_WidgetPages'),
- 'module' => 'VisitorInterest',
- 'action' => 'getNumberOfVisitsPerPage',
- 'dimension' => Piwik_Translate('VisitorInterest_ColumnPagesPerVisit'),
- 'metrics' => array( 'nb_visits' ),
- 'processedMetrics' => false,
- 'constantRowsCount' => true,
- 'documentation' => Piwik_Translate('VisitorInterest_WidgetPagesDocumentation')
- .'<br />'.Piwik_Translate('General_ChangeTagCloudView'),
- 'order' => 20
- );
-
- $reports[] = array(
- 'category' => Piwik_Translate('General_Visitors'),
- 'name' => Piwik_Translate('VisitorInterest_visitsByVisitCount'),
- 'module' => 'VisitorInterest',
- 'action' => 'getNumberOfVisitsByVisitCount',
- 'dimension' => Piwik_Translate('VisitorInterest_visitsByVisitCount'),
- 'metrics' => array(
- 'nb_visits',
- 'nb_visits_percentage' => Piwik_Translate('General_ColumnPercentageVisits')
- ),
- 'processedMetrics' => false,
- 'constantRowsCount' => true,
- 'documentation' => Piwik_Translate('VisitorInterest_WidgetVisitsByNumDocumentation')
- .'<br />'.Piwik_Translate('General_ChangeTagCloudView'),
- 'order' => 25
- );
-
- $reports[] = array(
- 'category' => Piwik_Translate('General_Visitors'),
- 'name' => Piwik_Translate('VisitorInterest_VisitsByDaysSinceLast'),
- 'module' => 'VisitorInterest',
- 'action' => 'getNumberOfVisitsByDaysSinceLast',
- 'dimension' => Piwik_Translate('VisitorInterest_VisitsByDaysSinceLast'),
- 'metrics' => array( 'nb_visits' ),
- 'processedMetrics' => false,
- 'constantRowsCount' => true,
- 'documentation' => Piwik_Translate('VisitorInterest_WidgetVisitsByDaysSinceLastDocumentation'),
- 'order' => 30
- );
- }
-
- function addWidgets()
- {
- Piwik_AddWidget( 'General_Visitors', 'VisitorInterest_WidgetLengths', 'VisitorInterest', 'getNumberOfVisitsPerVisitDuration');
- Piwik_AddWidget( 'General_Visitors', 'VisitorInterest_WidgetPages', 'VisitorInterest', 'getNumberOfVisitsPerPage');
- Piwik_AddWidget( 'General_Visitors', 'VisitorInterest_visitsByVisitCount', 'VisitorInterest', 'getNumberOfVisitsByVisitCount');
- Piwik_AddWidget( 'General_Visitors', 'VisitorInterest_WidgetVisitsByDaysSinceLast', 'VisitorInterest', 'getNumberOfVisitsByDaysSinceLast');
- }
-
- function addMenu()
- {
- Piwik_RenameMenuEntry('General_Visitors', 'VisitFrequency_SubmenuFrequency',
- 'General_Visitors', 'VisitorInterest_Engagement' );
- }
-
- function postLoad()
- {
- Piwik_AddAction('template_headerVisitsFrequency', array('Piwik_VisitorInterest','headerVisitsFrequency'));
- Piwik_AddAction('template_footerVisitsFrequency', array('Piwik_VisitorInterest','footerVisitsFrequency'));
- }
-
- // third element is unit (s for seconds, default is munutes)
- protected static $timeGap = array(
- array(0, 10, 's'),
- array(11, 30, 's'),
- array(31, 60, 's'),
- array(1, 2),
- array(2, 4),
- array(4, 7),
- array(7, 10),
- array(10, 15),
- array(15, 30),
- array(30)
- );
-
- protected static $pageGap = array(
- array(1, 1),
- array(2, 2),
- array(3, 3),
- array(4, 4),
- array(5, 5),
- array(6, 7),
- array(8, 10),
- array(11, 14),
- array(15, 20),
- array(20)
- );
-
- /**
- * The set of ranges used when calculating the 'visitors who visited at least N times' report.
- */
- protected static $visitNumberGap = array(
- array(1, 1),
- array(2, 2),
- array(3, 3),
- array(4, 4),
- array(5, 5),
- array(6, 6),
- array(7, 7),
- array(8, 8),
- array(9, 14),
- array(15, 25),
- array(26, 50),
- array(51, 100),
- array(101, 200),
- array(200)
- );
-
- /**
- * The set of ranges used when calculating the 'days since last visit' report.
- */
- protected static $daysSinceLastVisitGap = array(
- array(0, 0),
- array(1, 1),
- array(2, 2),
- array(3, 3),
- array(4, 4),
- array(5, 5),
- array(6, 6),
- array(7, 7),
- array(8, 14),
- array(15, 30),
- array(31, 60),
- array(61, 120),
- array(121, 364),
- array(364)
- );
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- * @return mixed
- */
- function archivePeriod( $notification )
- {
- $archiveProcessing = $notification->getNotificationObject();
-
- if(!$archiveProcessing->shouldProcessReportsForPlugin($this->getPluginName())) return;
-
- $dataTableToSum = array(
- 'VisitorInterest_timeGap',
- 'VisitorInterest_pageGap',
- 'VisitorInterest_visitsByVisitCount',
- 'VisitorInterest_daysSinceLastVisit'
- );
- $archiveProcessing->archiveDataTable($dataTableToSum);
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- * @return mixed
- */
- public function archiveDay( $notification )
- {
- $this->archiveProcessing = $notification->getNotificationObject();
-
- if(!$this->archiveProcessing->shouldProcessReportsForPlugin($this->getPluginName())) return;
-
- // these prefixes are prepended to the 'SELECT as' parts of each SELECT expression. detecting
- // these prefixes allows us to get all the data in one query.
- $timeGapPrefix = 'tg';
- $pageGapPrefix = 'pg';
- $visitsByVisitNumPrefix = 'vbvn';
- $daysSinceLastVisitPrefix = 'dslv';
-
- // extra condition for the SQL SELECT that makes sure only returning visits are counted
- // when creating the 'days since last visit' report. the SELECT expression below it
- // is used to count all new visits.
- $daysSinceLastExtraCondition = 'and log_visit.visitor_returning = 1';
- $selectAs = $daysSinceLastVisitPrefix.'General_NewVisits';
- $newVisitCountSelect = "sum(case when log_visit.visitor_returning = 0 then 1 else 0 end) as `$selectAs`";
-
- // create the select expressions to use
- $timeGapSelects = Piwik_ArchiveProcessing_Day::buildReduceByRangeSelect(
- 'visit_total_time', self::getSecondsGap(), 'log_visit', $timeGapPrefix);
- $pageGapSelects = Piwik_ArchiveProcessing_Day::buildReduceByRangeSelect(
- 'visit_total_actions', self::$pageGap, 'log_visit', $pageGapPrefix);
- $visitsByVisitNumSelects = Piwik_ArchiveProcessing_Day::buildReduceByRangeSelect(
- 'visitor_count_visits', self::$visitNumberGap, 'log_visit', $visitsByVisitNumPrefix);
-
- $daysSinceLastVisitSelects = Piwik_ArchiveProcessing_Day::buildReduceByRangeSelect(
- 'visitor_days_since_last', self::$daysSinceLastVisitGap, 'log_visit', $daysSinceLastVisitPrefix,
- $daysSinceLastExtraCondition);
- array_unshift($daysSinceLastVisitSelects, $newVisitCountSelect);
-
- $selects = array_merge(
- $timeGapSelects, $pageGapSelects, $visitsByVisitNumSelects, $daysSinceLastVisitSelects);
-
- // select data for every report
- $row = $this->archiveProcessing->queryVisitsSimple(implode(',', $selects));
-
- // archive visits by total time report
- $recordName = 'VisitorInterest_timeGap';
- $this->archiveRangeStats($recordName, $row, Piwik_Archive::INDEX_NB_VISITS, $timeGapPrefix);
-
- // archive visits by total actions report
- $recordName = 'VisitorInterest_pageGap';
- $this->archiveRangeStats($recordName, $row, Piwik_Archive::INDEX_NB_VISITS, $pageGapPrefix);
-
- // archive visits by visit number report
- $recordName = 'VisitorInterest_visitsByVisitCount';
- $this->archiveRangeStats($recordName, $row, Piwik_Archive::INDEX_NB_VISITS, $visitsByVisitNumPrefix);
-
- // archive days since last visit report
- $recordName = 'VisitorInterest_daysSinceLastVisit';
- $this->archiveRangeStats($recordName, $row, Piwik_Archive::INDEX_NB_VISITS, $daysSinceLastVisitPrefix);
- }
-
- /**
- * Transforms and returns the set of ranges used to calculate the 'visits by total time'
- * report from ranges in minutes to equivalent ranges in seconds.
- */
- protected static function getSecondsGap()
- {
- $secondsGap = array();
- foreach(self::$timeGap as $gap)
- {
- if (count($gap) == 3 && $gap[2] == 's') // if the units are already in seconds, just assign them
- {
- $secondsGap[] = array($gap[0], $gap[1]);
- }
- else if (count($gap) == 2)
- {
- $secondsGap[] = array($gap[0] * 60, $gap[1] * 60);
- }
- else
- {
- $secondsGap[] = array($gap[0] * 60);
- }
- }
- return $secondsGap;
- }
-
- /**
- * Creates and archives a DataTable from some (or all) elements of a supplied database
- * row.
- *
- * @param string $recordName The record name to use when inserting the new archive.
- * @param array $row The database row to use.
- * @param string $selectAsPrefix The string to look for as the prefix of SELECT as
- * expressions. Elements in $row that have a SELECT as
- * with this string as a prefix are used in creating
- * the DataTable.'
- */
- protected function archiveRangeStats($recordName, $row, $index, $selectAsPrefix)
- {
- // create the DataTable from parts of the result row
- $dataTable = $this->archiveProcessing->getSimpleDataTableFromRow($row, $index, $selectAsPrefix);
-
- // insert the data table as a blob archive
- $this->archiveProcessing->insertBlobRecord($recordName, $dataTable->getSerialized());
- destroy($dataTable);
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- static public function headerVisitsFrequency($notification)
- {
- $out =& $notification->getNotificationObject();
- $out = '<div id="leftcolumn">';
- }
-
- /**
- * @param Piwik_Event_Notification $notification notification object
- */
- static public function footerVisitsFrequency($notification)
- {
- $out =& $notification->getNotificationObject();
- $out = '</div>
+ public function getInformation()
+ {
+ $info = array(
+ 'description' => Piwik_Translate('VisitorInterest_PluginDescription'),
+ 'author' => 'Piwik',
+ 'author_homepage' => 'http://piwik.org/',
+ 'version' => Piwik_Version::VERSION,
+ );
+ return $info;
+ }
+
+ function getListHooksRegistered()
+ {
+ $hooks = array(
+ 'ArchiveProcessing_Day.compute' => 'archiveDay',
+ 'ArchiveProcessing_Period.compute' => 'archivePeriod',
+ 'WidgetsList.add' => 'addWidgets',
+ 'Menu.add' => 'addMenu',
+ 'API.getReportMetadata' => 'getReportMetadata',
+ );
+ return $hooks;
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ public function getReportMetadata($notification)
+ {
+ $reports = & $notification->getNotificationObject();
+ $reports[] = array(
+ 'category' => Piwik_Translate('General_Visitors'),
+ 'name' => Piwik_Translate('VisitorInterest_WidgetLengths'),
+ 'module' => 'VisitorInterest',
+ 'action' => 'getNumberOfVisitsPerVisitDuration',
+ 'dimension' => Piwik_Translate('VisitorInterest_ColumnVisitDuration'),
+ 'metrics' => array('nb_visits'),
+ 'processedMetrics' => false,
+ 'constantRowsCount' => true,
+ 'documentation' => Piwik_Translate('VisitorInterest_WidgetLengthsDocumentation')
+ . '<br />' . Piwik_Translate('General_ChangeTagCloudView'),
+ 'order' => 15
+ );
+
+ $reports[] = array(
+ 'category' => Piwik_Translate('General_Visitors'),
+ 'name' => Piwik_Translate('VisitorInterest_WidgetPages'),
+ 'module' => 'VisitorInterest',
+ 'action' => 'getNumberOfVisitsPerPage',
+ 'dimension' => Piwik_Translate('VisitorInterest_ColumnPagesPerVisit'),
+ 'metrics' => array('nb_visits'),
+ 'processedMetrics' => false,
+ 'constantRowsCount' => true,
+ 'documentation' => Piwik_Translate('VisitorInterest_WidgetPagesDocumentation')
+ . '<br />' . Piwik_Translate('General_ChangeTagCloudView'),
+ 'order' => 20
+ );
+
+ $reports[] = array(
+ 'category' => Piwik_Translate('General_Visitors'),
+ 'name' => Piwik_Translate('VisitorInterest_visitsByVisitCount'),
+ 'module' => 'VisitorInterest',
+ 'action' => 'getNumberOfVisitsByVisitCount',
+ 'dimension' => Piwik_Translate('VisitorInterest_visitsByVisitCount'),
+ 'metrics' => array(
+ 'nb_visits',
+ 'nb_visits_percentage' => Piwik_Translate('General_ColumnPercentageVisits')
+ ),
+ 'processedMetrics' => false,
+ 'constantRowsCount' => true,
+ 'documentation' => Piwik_Translate('VisitorInterest_WidgetVisitsByNumDocumentation')
+ . '<br />' . Piwik_Translate('General_ChangeTagCloudView'),
+ 'order' => 25
+ );
+
+ $reports[] = array(
+ 'category' => Piwik_Translate('General_Visitors'),
+ 'name' => Piwik_Translate('VisitorInterest_VisitsByDaysSinceLast'),
+ 'module' => 'VisitorInterest',
+ 'action' => 'getNumberOfVisitsByDaysSinceLast',
+ 'dimension' => Piwik_Translate('VisitorInterest_VisitsByDaysSinceLast'),
+ 'metrics' => array('nb_visits'),
+ 'processedMetrics' => false,
+ 'constantRowsCount' => true,
+ 'documentation' => Piwik_Translate('VisitorInterest_WidgetVisitsByDaysSinceLastDocumentation'),
+ 'order' => 30
+ );
+ }
+
+ function addWidgets()
+ {
+ Piwik_AddWidget('General_Visitors', 'VisitorInterest_WidgetLengths', 'VisitorInterest', 'getNumberOfVisitsPerVisitDuration');
+ Piwik_AddWidget('General_Visitors', 'VisitorInterest_WidgetPages', 'VisitorInterest', 'getNumberOfVisitsPerPage');
+ Piwik_AddWidget('General_Visitors', 'VisitorInterest_visitsByVisitCount', 'VisitorInterest', 'getNumberOfVisitsByVisitCount');
+ Piwik_AddWidget('General_Visitors', 'VisitorInterest_WidgetVisitsByDaysSinceLast', 'VisitorInterest', 'getNumberOfVisitsByDaysSinceLast');
+ }
+
+ function addMenu()
+ {
+ Piwik_RenameMenuEntry('General_Visitors', 'VisitFrequency_SubmenuFrequency',
+ 'General_Visitors', 'VisitorInterest_Engagement');
+ }
+
+ function postLoad()
+ {
+ Piwik_AddAction('template_headerVisitsFrequency', array('Piwik_VisitorInterest', 'headerVisitsFrequency'));
+ Piwik_AddAction('template_footerVisitsFrequency', array('Piwik_VisitorInterest', 'footerVisitsFrequency'));
+ }
+
+ // third element is unit (s for seconds, default is munutes)
+ protected static $timeGap = array(
+ array(0, 10, 's'),
+ array(11, 30, 's'),
+ array(31, 60, 's'),
+ array(1, 2),
+ array(2, 4),
+ array(4, 7),
+ array(7, 10),
+ array(10, 15),
+ array(15, 30),
+ array(30)
+ );
+
+ protected static $pageGap = array(
+ array(1, 1),
+ array(2, 2),
+ array(3, 3),
+ array(4, 4),
+ array(5, 5),
+ array(6, 7),
+ array(8, 10),
+ array(11, 14),
+ array(15, 20),
+ array(20)
+ );
+
+ /**
+ * The set of ranges used when calculating the 'visitors who visited at least N times' report.
+ */
+ protected static $visitNumberGap = array(
+ array(1, 1),
+ array(2, 2),
+ array(3, 3),
+ array(4, 4),
+ array(5, 5),
+ array(6, 6),
+ array(7, 7),
+ array(8, 8),
+ array(9, 14),
+ array(15, 25),
+ array(26, 50),
+ array(51, 100),
+ array(101, 200),
+ array(200)
+ );
+
+ /**
+ * The set of ranges used when calculating the 'days since last visit' report.
+ */
+ protected static $daysSinceLastVisitGap = array(
+ array(0, 0),
+ array(1, 1),
+ array(2, 2),
+ array(3, 3),
+ array(4, 4),
+ array(5, 5),
+ array(6, 6),
+ array(7, 7),
+ array(8, 14),
+ array(15, 30),
+ array(31, 60),
+ array(61, 120),
+ array(121, 364),
+ array(364)
+ );
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ * @return mixed
+ */
+ function archivePeriod($notification)
+ {
+ $archiveProcessing = $notification->getNotificationObject();
+
+ if (!$archiveProcessing->shouldProcessReportsForPlugin($this->getPluginName())) return;
+
+ $dataTableToSum = array(
+ 'VisitorInterest_timeGap',
+ 'VisitorInterest_pageGap',
+ 'VisitorInterest_visitsByVisitCount',
+ 'VisitorInterest_daysSinceLastVisit'
+ );
+ $archiveProcessing->archiveDataTable($dataTableToSum);
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ * @return mixed
+ */
+ public function archiveDay($notification)
+ {
+ $this->archiveProcessing = $notification->getNotificationObject();
+
+ if (!$this->archiveProcessing->shouldProcessReportsForPlugin($this->getPluginName())) return;
+
+ // these prefixes are prepended to the 'SELECT as' parts of each SELECT expression. detecting
+ // these prefixes allows us to get all the data in one query.
+ $timeGapPrefix = 'tg';
+ $pageGapPrefix = 'pg';
+ $visitsByVisitNumPrefix = 'vbvn';
+ $daysSinceLastVisitPrefix = 'dslv';
+
+ // extra condition for the SQL SELECT that makes sure only returning visits are counted
+ // when creating the 'days since last visit' report. the SELECT expression below it
+ // is used to count all new visits.
+ $daysSinceLastExtraCondition = 'and log_visit.visitor_returning = 1';
+ $selectAs = $daysSinceLastVisitPrefix . 'General_NewVisits';
+ $newVisitCountSelect = "sum(case when log_visit.visitor_returning = 0 then 1 else 0 end) as `$selectAs`";
+
+ // create the select expressions to use
+ $timeGapSelects = Piwik_ArchiveProcessing_Day::buildReduceByRangeSelect(
+ 'visit_total_time', self::getSecondsGap(), 'log_visit', $timeGapPrefix);
+ $pageGapSelects = Piwik_ArchiveProcessing_Day::buildReduceByRangeSelect(
+ 'visit_total_actions', self::$pageGap, 'log_visit', $pageGapPrefix);
+ $visitsByVisitNumSelects = Piwik_ArchiveProcessing_Day::buildReduceByRangeSelect(
+ 'visitor_count_visits', self::$visitNumberGap, 'log_visit', $visitsByVisitNumPrefix);
+
+ $daysSinceLastVisitSelects = Piwik_ArchiveProcessing_Day::buildReduceByRangeSelect(
+ 'visitor_days_since_last', self::$daysSinceLastVisitGap, 'log_visit', $daysSinceLastVisitPrefix,
+ $daysSinceLastExtraCondition);
+ array_unshift($daysSinceLastVisitSelects, $newVisitCountSelect);
+
+ $selects = array_merge(
+ $timeGapSelects, $pageGapSelects, $visitsByVisitNumSelects, $daysSinceLastVisitSelects);
+
+ // select data for every report
+ $row = $this->archiveProcessing->queryVisitsSimple(implode(',', $selects));
+
+ // archive visits by total time report
+ $recordName = 'VisitorInterest_timeGap';
+ $this->archiveRangeStats($recordName, $row, Piwik_Archive::INDEX_NB_VISITS, $timeGapPrefix);
+
+ // archive visits by total actions report
+ $recordName = 'VisitorInterest_pageGap';
+ $this->archiveRangeStats($recordName, $row, Piwik_Archive::INDEX_NB_VISITS, $pageGapPrefix);
+
+ // archive visits by visit number report
+ $recordName = 'VisitorInterest_visitsByVisitCount';
+ $this->archiveRangeStats($recordName, $row, Piwik_Archive::INDEX_NB_VISITS, $visitsByVisitNumPrefix);
+
+ // archive days since last visit report
+ $recordName = 'VisitorInterest_daysSinceLastVisit';
+ $this->archiveRangeStats($recordName, $row, Piwik_Archive::INDEX_NB_VISITS, $daysSinceLastVisitPrefix);
+ }
+
+ /**
+ * Transforms and returns the set of ranges used to calculate the 'visits by total time'
+ * report from ranges in minutes to equivalent ranges in seconds.
+ */
+ protected static function getSecondsGap()
+ {
+ $secondsGap = array();
+ foreach (self::$timeGap as $gap) {
+ if (count($gap) == 3 && $gap[2] == 's') // if the units are already in seconds, just assign them
+ {
+ $secondsGap[] = array($gap[0], $gap[1]);
+ } else if (count($gap) == 2) {
+ $secondsGap[] = array($gap[0] * 60, $gap[1] * 60);
+ } else {
+ $secondsGap[] = array($gap[0] * 60);
+ }
+ }
+ return $secondsGap;
+ }
+
+ /**
+ * Creates and archives a DataTable from some (or all) elements of a supplied database
+ * row.
+ *
+ * @param string $recordName The record name to use when inserting the new archive.
+ * @param array $row The database row to use.
+ * @param string $selectAsPrefix The string to look for as the prefix of SELECT as
+ * expressions. Elements in $row that have a SELECT as
+ * with this string as a prefix are used in creating
+ * the DataTable.'
+ */
+ protected function archiveRangeStats($recordName, $row, $index, $selectAsPrefix)
+ {
+ // create the DataTable from parts of the result row
+ $dataTable = $this->archiveProcessing->getSimpleDataTableFromRow($row, $index, $selectAsPrefix);
+
+ // insert the data table as a blob archive
+ $this->archiveProcessing->insertBlobRecord($recordName, $dataTable->getSerialized());
+ destroy($dataTable);
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ static public function headerVisitsFrequency($notification)
+ {
+ $out =& $notification->getNotificationObject();
+ $out = '<div id="leftcolumn">';
+ }
+
+ /**
+ * @param Piwik_Event_Notification $notification notification object
+ */
+ static public function footerVisitsFrequency($notification)
+ {
+ $out =& $notification->getNotificationObject();
+ $out = '</div>
<div id="rightcolumn">
';
- $out .= Piwik_FrontController::getInstance()->fetchDispatch('VisitorInterest','index');
- $out .= '</div>';
- }
+ $out .= Piwik_FrontController::getInstance()->fetchDispatch('VisitorInterest', 'index');
+ $out .= '</div>';
+ }
}
diff --git a/plugins/VisitorInterest/templates/index.tpl b/plugins/VisitorInterest/templates/index.tpl
index 22e3fa2421..6ba4cc6c5a 100644
--- a/plugins/VisitorInterest/templates/index.tpl
+++ b/plugins/VisitorInterest/templates/index.tpl
@@ -1,4 +1,3 @@
-
<h2>{'VisitorInterest_VisitsPerDuration'|translate}</h2>
{$dataTableNumberOfVisitsPerVisitDuration}