update Piwik to version 2.16 (fixes #91)

This commit is contained in:
oliver 2016-04-10 18:55:57 +02:00
commit 47263617c5
30 changed files with 418860 additions and 226988 deletions

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -9,10 +9,10 @@
namespace Piwik\Plugins\CoreVisualizations;
use Piwik\Common;
use Piwik\ViewDataTable\Manager as ViewDataTableManager;
require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/JqplotDataGenerator.php';
require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/Cloud.php';
require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/HtmlTable.php';
require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/JqplotGraph.php';
/**
* This plugin contains all core visualizations, such as the normal HTML table and
@ -21,27 +21,39 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/Jq
class CoreVisualizations extends \Piwik\Plugin
{
/**
* @see Piwik\Plugin::getListHooksRegistered
* @see Piwik\Plugin::registerEvents
*/
public function getListHooksRegistered()
public function registerEvents()
{
return array(
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'ViewDataTable.addViewDataTable' => 'getAvailableDataTableVisualizations',
'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys'
'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
'UsersManager.deleteUser' => 'deleteUser',
'ViewDataTable.addViewDataTable' => 'addViewDataTable'
);
}
public function getAvailableDataTableVisualizations(&$visualizations)
public function deleteUser($userLogin)
{
$visualizations[] = 'Piwik\\Plugins\\CoreVisualizations\\Visualizations\\Sparkline';
$visualizations[] = 'Piwik\\Plugins\\CoreVisualizations\\Visualizations\\HtmlTable';
$visualizations[] = 'Piwik\\Plugins\\CoreVisualizations\\Visualizations\\HtmlTable\\AllColumns';
$visualizations[] = 'Piwik\\Plugins\\CoreVisualizations\\Visualizations\\Cloud';
$visualizations[] = 'Piwik\\Plugins\\CoreVisualizations\\Visualizations\\JqplotGraph\\Pie';
$visualizations[] = 'Piwik\\Plugins\\CoreVisualizations\\Visualizations\\JqplotGraph\\Bar';
$visualizations[] = 'Piwik\\Plugins\\CoreVisualizations\\Visualizations\\JqplotGraph\\Evolution';
ViewDataTableManager::clearUserViewDataTableParameters($userLogin);
}
public function addViewDataTable(&$viewDataTable)
{
// Both are the same HtmlTable, just the Pivot one has some extra logic in case Pivot is used.
// We don't want to use the same HtmlTable twice in the UI. Therefore we always need to remove one.
if (Common::getRequestVar('pivotBy', '')) {
$tableToRemove = 'Visualizations\HtmlTable';
} else {
$tableToRemove = 'HtmlTable\PivotBy';
}
foreach ($viewDataTable as $index => $table) {
if (Common::stringEndsWith($table, $tableToRemove)) {
unset($viewDataTable[$index]);
}
}
}
public function getStylesheetFiles(&$stylesheets)

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -10,7 +10,6 @@
namespace Piwik\Plugins\CoreVisualizations;
use Exception;
use Piwik\Common;
use Piwik\DataTable;
use Piwik\Metrics;
@ -33,7 +32,6 @@ class JqplotDataGenerator
*/
protected $properties;
protected $graphType;
/**
@ -139,7 +137,10 @@ class JqplotDataGenerator
// the bar charts contain the labels a first series
// this series has to be removed from the units
if ($this->graphType == 'bar') {
reset($units);
if ($this->graphType == 'bar'
&& key($units) == 'label'
) {
array_shift($units);
}

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -14,7 +14,7 @@ use Piwik\ProxyHttp;
/**
*
*/
class Chart
class Chart
{
// the data kept here conforms to the jqplot data layout
// @see http://www.jqplot.com/docs/files/jqPlotOptions-txt.html
@ -59,7 +59,7 @@ class Chart
);
array_walk($data, function (&$v) {
$v = (float)$v;
$v = (float) Common::forceDotAsSeparatorForDecimalPoint($v);
});
$this->data[] = & $data;
}

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
use Piwik\Archive\DataTableFactory;
use Piwik\Common;
use Piwik\DataTable;
@ -78,7 +77,7 @@ class Evolution extends JqplotDataGenerator
$axisXOnClick = array();
$queryStringAsHash = $this->getQueryStringAsHash();
foreach ($dataTable->getDataTables() as $idDataTable => $metadataDataTable) {
foreach ($dataTable->getDataTables() as $metadataDataTable) {
$dateInUrl = $metadataDataTable->getMetadata(DataTableFactory::TABLE_METADATA_PERIOD_INDEX)->getDateStart();
$parameters = array(
'idSite' => $idSite,

View file

@ -0,0 +1,45 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Plugins\CoreVisualizations\Metrics\Formatter;
use Piwik\Common;
use Piwik\Metrics\Formatter;
/**
* A metrics formatter that prettifies metric values without returning string values.
* Results of this class can be converted to numeric values and processed further in
* some way.
*/
class Numeric extends Formatter
{
public function getPrettyNumber($value, $precision = 0)
{
return round($value, $precision);
}
public function getPrettyTimeFromSeconds($numberOfSeconds, $displayTimeAsSentence = false, $round = false)
{
return $round ? (int)$numberOfSeconds : (float) Common::forceDotAsSeparatorForDecimalPoint($numberOfSeconds);
}
public function getPrettySizeFromBytes($size, $unit = null, $precision = 1)
{
list($size, $sizeUnit) = $this->getPrettySizeFromBytesWithUnit($size, $unit, $precision);
return $size;
}
public function getPrettyMoney($value, $idSite)
{
return $value;
}
public function getPrettyPercentFromQuotient($value)
{
return $value * 100;
}
}

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -26,10 +26,10 @@ class Cloud extends Visualization
{
const ID = 'cloud';
const TEMPLATE_FILE = "@CoreVisualizations/_dataTableViz_tagCloud.twig";
const FOOTER_ICON = 'plugins/Zeitgeist/images/tagcloud.png';
const FOOTER_ICON = 'plugins/Morpheus/images/tagcloud.png';
const FOOTER_ICON_TITLE = 'General_TagCloud';
/** Used by integration tests to make sure output is consistent. */
/** Used by system tests to make sure output is consistent. */
public static $debugDisableShuffle = false;
public $truncatingLimit = 50;
@ -143,7 +143,7 @@ class Cloud extends Visualization
$tmpArray = $this->wordsArray;
$this->wordsArray = array();
foreach ($keys as $key => $value) {
foreach ($keys as $value) {
$this->wordsArray[$value] = $tmpArray[$value];
}
@ -174,6 +174,8 @@ class Cloud extends Visualization
*/
private function truncateWordIfNeeded($word)
{
$word = Common::unsanitizeInputValue($word);
if (Common::mb_strlen($word) > $this->truncatingLimit) {
return Common::mb_substr($word, 0, $this->truncatingLimit - 3) . '...';
}

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -8,8 +8,9 @@
*/
namespace Piwik\Plugins\CoreVisualizations\Visualizations;
use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\DataTable\Row;
use Piwik\Plugins\CoreVisualizations\Metrics\Formatter\Numeric;
use Piwik\Piwik;
use Piwik\Plugin\Visualization;
@ -58,7 +59,9 @@ abstract class Graph extends Visualization
$this->requestConfig->request_parameters_to_modify['filter_truncate'] = $this->config->max_graph_elements - 1;
}
$this->requestConfig->request_parameters_to_modify['disable_queued_filters'] = 1;
$this->requestConfig->request_parameters_to_modify['format_metrics'] = 1;
$this->metricsFormatter = new Numeric();
}
/**
@ -135,7 +138,7 @@ abstract class Graph extends Visualization
// set default selectable columns, if none specified
$selectableColumns = $this->config->selectable_columns;
if (false === $selectableColumns) {
$selectableColumns = array('nb_visits', 'nb_actions', 'nb_uniq_visitors');
$selectableColumns = array('nb_visits', 'nb_actions', 'nb_uniq_visitors', 'nb_users');
if ($this->config->show_goals) {
$goalMetrics = array('nb_conversions', 'revenue');

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -8,11 +8,11 @@
*/
namespace Piwik\Plugins\CoreVisualizations\Visualizations;
use Piwik\Plugin\Visualization;
use Piwik\View;
use Piwik\API\Request as ApiRequest;
use Piwik\Common;
use Piwik\Period;
use Piwik\API\Request as ApiRequest;
use Piwik\Plugin\Visualization;
use Piwik\View;
/**
* DataTable visualization that shows DataTable data in an HTML table.
@ -23,7 +23,7 @@ class HtmlTable extends Visualization
{
const ID = 'table';
const TEMPLATE_FILE = "@CoreVisualizations/_dataTableViz_htmlTable.twig";
const FOOTER_ICON = 'plugins/Zeitgeist/images/table.png';
const FOOTER_ICON = 'plugins/Morpheus/images/table.png';
const FOOTER_ICON_TITLE = 'General_DisplaySimpleTable';
public static function getDefaultConfig()
@ -51,7 +51,6 @@ class HtmlTable extends Visualization
}
if ($this->dataTable->getRowsCount()) {
$request = new ApiRequest(array(
'method' => 'API.get',
'module' => 'API',
@ -64,14 +63,13 @@ class HtmlTable extends Visualization
'filter_offset' => 0,
'period' => $period,
'showColumns' => implode(',', $this->config->columns_to_display),
'columns' => implode(',', $this->config->columns_to_display)
'columns' => implode(',', $this->config->columns_to_display),
'pivotBy' => ''
));
$dataTable = $request->process();
$this->assignTemplateVar('siteSummary', $dataTable);
}
}
}

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -9,6 +9,8 @@
namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\DataTable;
use Piwik\Metrics;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\View;
@ -18,7 +20,7 @@ use Piwik\View;
class AllColumns extends HtmlTable
{
const ID = 'tableAllColumns';
const FOOTER_ICON = 'plugins/Zeitgeist/images/table_more.png';
const FOOTER_ICON = 'plugins/Morpheus/images/table_more.png';
const FOOTER_ICON_TITLE = 'General_DisplayTableWithMoreMetrics';
public function beforeRender()
@ -36,13 +38,19 @@ class AllColumns extends HtmlTable
$properties = $this->config;
$this->dataTable->filter(function ($dataTable) use ($properties) {
$this->dataTable->filter(function (DataTable $dataTable) use ($properties) {
$columnsToDisplay = array('label', 'nb_visits');
if (in_array('nb_uniq_visitors', $dataTable->getColumns())) {
$columns = $dataTable->getColumns();
if (in_array('nb_uniq_visitors', $columns)) {
$columnsToDisplay[] = 'nb_uniq_visitors';
}
if (in_array('nb_users', $columns)) {
$columnsToDisplay[] = 'nb_users';
}
$columnsToDisplay = array_merge(
$columnsToDisplay, array('nb_actions', 'nb_actions_per_visit', 'avg_time_on_site', 'bounce_rate')
);
@ -56,11 +64,4 @@ class AllColumns extends HtmlTable
$properties->columns_to_display = $columnsToDisplay;
});
}
public function afterGenericFiltersAreAppliedToLoadedDataTable()
{
$prettifyTime = array('\Piwik\MetricsFormatter', 'getPrettyTimeFromSeconds');
$this->dataTable->filter('ColumnCallbackReplace', array('avg_time_on_site', $prettifyTime));
}
}

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later

View file

@ -0,0 +1,36 @@
<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\DataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\View;
/**
* DataTable Visualization that derives from HtmlTable and sets show_extra_columns to true.
*/
class PivotBy extends HtmlTable
{
public function beforeGenericFiltersAreAppliedToLoadedDataTable()
{
$this->config->columns_to_display = $this->dataTable->getColumns();
$this->dataTable->applyQueuedFilters();
parent::beforeGenericFiltersAreAppliedToLoadedDataTable();
}
public function beforeRender()
{
parent::beforeRender();
$this->config->columns_to_display = $this->dataTable->getColumns();
}
}

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -11,6 +11,7 @@ namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Common;
use Piwik\Config as PiwikConfig;
use Piwik\Metrics;
use Piwik\ViewDataTable\RequestConfig as VisualizationRequestConfig;
/**
@ -33,7 +34,12 @@ class RequestConfig extends VisualizationRequestConfig
$this->filter_limit = PiwikConfig::getInstance()->General['datatable_default_limit'];
if (Common::getRequestVar('enable_filter_excludelowpop', false) == '1') {
$this->filter_excludelowpop = 'nb_visits';
if (Common::getRequestVar('flat', 0, 'int') === 1) {
$this->filter_excludelowpop = 'nb_visits';
} else {
$this->filter_excludelowpop = Metrics::INDEX_NB_VISITS;
}
$this->filter_excludelowpop_value = false;
}

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\CoreVisualizations\Visualizations;
use Piwik\DataTable;
use Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
use Piwik\View;

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -18,7 +18,7 @@ use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph;
class Bar extends JqplotGraph
{
const ID = 'graphVerticalBar';
const FOOTER_ICON = 'plugins/Zeitgeist/images/chart_bar.png';
const FOOTER_ICON = 'plugins/Morpheus/images/chart_bar.png';
const FOOTER_ICON_TITLE = 'General_VBarGraph';
public function beforeRender()

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later

View file

@ -1,6 +1,6 @@
<?php
/**
* Piwik - Open source web analytics
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
@ -18,7 +18,7 @@ use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph;
class Pie extends JqplotGraph
{
const ID = 'graphPie';
const FOOTER_ICON = 'plugins/Zeitgeist/images/chart_pie.png';
const FOOTER_ICON = 'plugins/Morpheus/images/chart_pie.png';
const FOOTER_ICON_TITLE = 'General_Piechart';
public static function getDefaultConfig()

Some files were not shown because too many files have changed in this diff Show more