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:
Diffstat (limited to 'core/ViewDataTable/GenerateGraphHTML/ChartEvolution.php')
-rw-r--r--core/ViewDataTable/GenerateGraphHTML/ChartEvolution.php358
1 files changed, 175 insertions, 183 deletions
diff --git a/core/ViewDataTable/GenerateGraphHTML/ChartEvolution.php b/core/ViewDataTable/GenerateGraphHTML/ChartEvolution.php
index 26cad88ea0..2a3f921405 100644
--- a/core/ViewDataTable/GenerateGraphHTML/ChartEvolution.php
+++ b/core/ViewDataTable/GenerateGraphHTML/ChartEvolution.php
@@ -18,189 +18,181 @@
class Piwik_ViewDataTable_GenerateGraphHTML_ChartEvolution extends Piwik_ViewDataTable_GenerateGraphHTML
{
- protected $height = 170;
- protected $graphType = 'evolution';
-
- /**
- * The value of the date query parameter (or a default value) before it is turned
- * into a date range. Set in 'calculateEvolutionDateRange' and used by
- * 'getJavascriptVariablesToSet'.
- *
- * @var string
- */
- private $originalDate;
-
- protected function getViewDataTableId()
- {
- return 'graphEvolution';
- }
-
- protected function getViewDataTableIdToLoad()
- {
- return 'generateDataChartEvolution';
- }
-
- function init($currentControllerName,
- $currentControllerAction,
- $apiMethodToRequestDataTable,
- $controllerActionCalledWhenRequestSubTable = null)
- {
- parent::init($currentControllerName,
- $currentControllerAction,
- $apiMethodToRequestDataTable,
- $controllerActionCalledWhenRequestSubTable);
-
- $this->calculateEvolutionDateRange();
- $this->disableShowAllViewsIcons();
- $this->disableShowTable();
- $this->disableShowAllColumns();
- $this->showAnnotationsView();
- }
-
- /**
- * Makes sure 'date' parameter is not overridden.
- */
- protected function getJavascriptVariablesToSet()
- {
- $result = parent::getJavascriptVariablesToSet();
-
- // Graphs use a Range instead of the input date - we will use this same range for "Export" icons
- $result['dateUsedInGraph'] = $result['date'];
-
- // Other datatable features may require the original input date (eg. the limit dropdown below evolution graph)
- $result['date'] = $this->originalDate;
- return $result;
- }
-
- /**
+ protected $height = 170;
+ protected $graphType = 'evolution';
+
+ /**
+ * The value of the date query parameter (or a default value) before it is turned
+ * into a date range. Set in 'calculateEvolutionDateRange' and used by
+ * 'getJavascriptVariablesToSet'.
+ *
+ * @var string
+ */
+ private $originalDate;
+
+ protected function getViewDataTableId()
+ {
+ return 'graphEvolution';
+ }
+
+ protected function getViewDataTableIdToLoad()
+ {
+ return 'generateDataChartEvolution';
+ }
+
+ function init($currentControllerName,
+ $currentControllerAction,
+ $apiMethodToRequestDataTable,
+ $controllerActionCalledWhenRequestSubTable = null)
+ {
+ parent::init($currentControllerName,
+ $currentControllerAction,
+ $apiMethodToRequestDataTable,
+ $controllerActionCalledWhenRequestSubTable);
+
+ $this->calculateEvolutionDateRange();
+ $this->disableShowAllViewsIcons();
+ $this->disableShowTable();
+ $this->disableShowAllColumns();
+ $this->showAnnotationsView();
+ }
+
+ /**
+ * Makes sure 'date' parameter is not overridden.
+ */
+ protected function getJavascriptVariablesToSet()
+ {
+ $result = parent::getJavascriptVariablesToSet();
+
+ // Graphs use a Range instead of the input date - we will use this same range for "Export" icons
+ $result['dateUsedInGraph'] = $result['date'];
+
+ // Other datatable features may require the original input date (eg. the limit dropdown below evolution graph)
+ $result['date'] = $this->originalDate;
+ return $result;
+ }
+
+ /**
* We ensure that the graph for a given Goal has a different ID than the 'Goals Overview' graph
* so that both can display on the dashboard at the same time
- * @return null|string
- */
- public function getUniqueIdViewDataTable()
- {
- $id = parent::getUniqueIdViewDataTable();
- if (!empty($this->parametersToModify['idGoal']))
- {
- $id .= $this->parametersToModify['idGoal'];
- }
- return $id;
- }
-
- /**
- * Sets the columns that will be displayed on output evolution chart
- * By default all columns are displayed ($columnsNames = array() will display all columns)
- *
- * @param array $columnsNames Array of column names eg. array('nb_visits','nb_hits')
- */
- public function setColumnsToDisplay($columnsNames)
- {
- if (!is_array($columnsNames))
- {
- if (strpos($columnsNames, ',') !== false)
- {
- // array values are comma separated
- $columnsNames = explode(',', $columnsNames);
- }
- else
- {
- $columnsNames = array($columnsNames);
- }
- }
- $this->setParametersToModify(array('columns' => $columnsNames));
- }
-
- /**
- * Based on the period, date and evolution_{$period}_last_n query parameters,
- * calculates the date range this evolution chart will display data for.
- */
- private function calculateEvolutionDateRange()
- {
- $period = Piwik_Common::getRequestVar('period');
-
- $defaultLastN = self::getDefaultLastN($period);
- $this->originalDate = Piwik_Common::getRequestVar('date', 'last'.$defaultLastN, 'string');
-
- if ($period != 'range') // show evolution limit if the period is not a range
- {
- $this->alwaysShowLimitDropdown();
-
- // set the evolution_{$period}_last_n query param
- if (Piwik_Period_Range::parseDateRange($this->originalDate)) // if a multiple period
- {
- // overwrite last_n param using the date range
- $oPeriod = new Piwik_Period_Range($period, $this->originalDate);
- $lastN = count($oPeriod->getSubperiods());
- }
- else // if not a multiple period
- {
- list($newDate, $lastN) = self::getDateRangeAndLastN($period, $this->originalDate, $defaultLastN);
- $this->setParametersToModify(array('date' => $newDate));
- }
- $lastNParamName = self::getLastNParamName($period);
- $this->setParametersToModify(array($lastNParamName => $lastN));
- }
- }
-
- /**
- * Returns the entire date range and lastN value for the current request, based on
- * a period type and end date.
- *
- * @param string $period The period type, 'day', 'week', 'month' or 'year'
- * @param string $endDate The end date.
- * @param int|null $defaultLastN The default lastN to use. If null, the result of
- * getDefaultLastN is used.
- * @return array An array w/ two elements. The first is a whole date range and the second
- * is the lastN number used, ie, array('2010-01-01,2012-01-02', 2).
- */
- public static function getDateRangeAndLastN( $period, $endDate, $defaultLastN = null )
- {
- if ($defaultLastN === null)
- {
- $defaultLastN = self::getDefaultLastN($period);
- }
-
- $lastNParamName = self::getLastNParamName($period);
- $lastN = Piwik_Common::getRequestVar($lastNParamName, $defaultLastN, 'int');
-
- $site = new Piwik_Site(Piwik_Common::getRequestVar('idSite'));
-
- $dateRange = Piwik_Controller::getDateRangeRelativeToEndDate($period, 'last'.$lastN, $endDate, $site);
-
- return array($dateRange, $lastN);
- }
-
- /**
- * Returns the default last N number of dates to display for a given period.
- *
- * @param string $period 'day', 'week', 'month' or 'year'
- * @return int
- */
- public static function getDefaultLastN( $period )
- {
- switch ($period)
- {
- case 'week':
- return 26;
- case 'month':
- return 24;
- case 'year':
- return 5;
- case 'day':
- default:
- return 30;
- }
- }
-
- /**
- * Returns the query parameter that stores the lastN number of periods to get for
- * the evolution graph.
- *
- * @param string $period The period type, 'day', 'week', 'month' or 'year'.
- * @return string
- */
- public static function getLastNParamName( $period )
- {
- return "evolution_{$period}_last_n";
- }
+ * @return null|string
+ */
+ public function getUniqueIdViewDataTable()
+ {
+ $id = parent::getUniqueIdViewDataTable();
+ if (!empty($this->parametersToModify['idGoal'])) {
+ $id .= $this->parametersToModify['idGoal'];
+ }
+ return $id;
+ }
+
+ /**
+ * Sets the columns that will be displayed on output evolution chart
+ * By default all columns are displayed ($columnsNames = array() will display all columns)
+ *
+ * @param array $columnsNames Array of column names eg. array('nb_visits','nb_hits')
+ */
+ public function setColumnsToDisplay($columnsNames)
+ {
+ if (!is_array($columnsNames)) {
+ if (strpos($columnsNames, ',') !== false) {
+ // array values are comma separated
+ $columnsNames = explode(',', $columnsNames);
+ } else {
+ $columnsNames = array($columnsNames);
+ }
+ }
+ $this->setParametersToModify(array('columns' => $columnsNames));
+ }
+
+ /**
+ * Based on the period, date and evolution_{$period}_last_n query parameters,
+ * calculates the date range this evolution chart will display data for.
+ */
+ private function calculateEvolutionDateRange()
+ {
+ $period = Piwik_Common::getRequestVar('period');
+
+ $defaultLastN = self::getDefaultLastN($period);
+ $this->originalDate = Piwik_Common::getRequestVar('date', 'last' . $defaultLastN, 'string');
+
+ if ($period != 'range') // show evolution limit if the period is not a range
+ {
+ $this->alwaysShowLimitDropdown();
+
+ // set the evolution_{$period}_last_n query param
+ if (Piwik_Period_Range::parseDateRange($this->originalDate)) // if a multiple period
+ {
+ // overwrite last_n param using the date range
+ $oPeriod = new Piwik_Period_Range($period, $this->originalDate);
+ $lastN = count($oPeriod->getSubperiods());
+ } else // if not a multiple period
+ {
+ list($newDate, $lastN) = self::getDateRangeAndLastN($period, $this->originalDate, $defaultLastN);
+ $this->setParametersToModify(array('date' => $newDate));
+ }
+ $lastNParamName = self::getLastNParamName($period);
+ $this->setParametersToModify(array($lastNParamName => $lastN));
+ }
+ }
+
+ /**
+ * Returns the entire date range and lastN value for the current request, based on
+ * a period type and end date.
+ *
+ * @param string $period The period type, 'day', 'week', 'month' or 'year'
+ * @param string $endDate The end date.
+ * @param int|null $defaultLastN The default lastN to use. If null, the result of
+ * getDefaultLastN is used.
+ * @return array An array w/ two elements. The first is a whole date range and the second
+ * is the lastN number used, ie, array('2010-01-01,2012-01-02', 2).
+ */
+ public static function getDateRangeAndLastN($period, $endDate, $defaultLastN = null)
+ {
+ if ($defaultLastN === null) {
+ $defaultLastN = self::getDefaultLastN($period);
+ }
+
+ $lastNParamName = self::getLastNParamName($period);
+ $lastN = Piwik_Common::getRequestVar($lastNParamName, $defaultLastN, 'int');
+
+ $site = new Piwik_Site(Piwik_Common::getRequestVar('idSite'));
+
+ $dateRange = Piwik_Controller::getDateRangeRelativeToEndDate($period, 'last' . $lastN, $endDate, $site);
+
+ return array($dateRange, $lastN);
+ }
+
+ /**
+ * Returns the default last N number of dates to display for a given period.
+ *
+ * @param string $period 'day', 'week', 'month' or 'year'
+ * @return int
+ */
+ public static function getDefaultLastN($period)
+ {
+ switch ($period) {
+ case 'week':
+ return 26;
+ case 'month':
+ return 24;
+ case 'year':
+ return 5;
+ case 'day':
+ default:
+ return 30;
+ }
+ }
+
+ /**
+ * Returns the query parameter that stores the lastN number of periods to get for
+ * the evolution graph.
+ *
+ * @param string $period The period type, 'day', 'week', 'month' or 'year'.
+ * @return string
+ */
+ public static function getLastNParamName($period)
+ {
+ return "evolution_{$period}_last_n";
+ }
}