diff --git a/core/Plugin/Controller.php b/core/Plugin/Controller.php index 99d5a9668d2e89aca25e5891e6a35cada78101f5..be1ccd4d409b0d29018c4001edd1169487fe0683 100644 --- a/core/Plugin/Controller.php +++ b/core/Plugin/Controller.php @@ -32,7 +32,7 @@ use Piwik\SettingsPiwik; use Piwik\Site; use Piwik\Url; use Piwik\View; -use Piwik\ViewDataTable; +use Piwik\ViewDataTable as ViewDataTableBuilder; /** * Parent class of all plugins Controllers (located in /plugins/PluginName/Controller.php @@ -179,7 +179,7 @@ abstract class Controller */ protected function getLastUnitGraph($currentModuleName, $currentControllerAction, $apiMethod) { - $view = ViewDataTable::factory( + $view = ViewDataTableBuilder::factory( 'graphEvolution', $apiMethod, $currentModuleName . '.' . $currentControllerAction, $forceDefault = true); $view->show_goals = false; return $view; diff --git a/core/Plugin/ViewDataTable.php b/core/Plugin/ViewDataTable.php index 676256279ff147cfe49ec998af9d3bc7ef3fed7f..3d2e1cc6943bbc03a858d1752ac83f907477f3cb 100644 --- a/core/Plugin/ViewDataTable.php +++ b/core/Plugin/ViewDataTable.php @@ -22,7 +22,6 @@ use Piwik\Piwik; use Piwik\Plugins\API\API; use Piwik\Plugins\PrivacyManager\PrivacyManager; use Piwik\Site; -use Piwik\ViewDataTable\Visualization; use Piwik\ViewDataTable\VisualizationPropertiesProxy; use Piwik\Visualization\Config as VizConfig; use Piwik\Visualization\Request as VizRequest; @@ -116,6 +115,9 @@ abstract class ViewDataTable $this->config = new VizConfig($currentControllerName, $currentControllerAction); $this->config->subtable_controller_action = $currentControllerAction; + // TODO remove me + $this->config->visualization_properties = new VisualizationPropertiesProxy(get_class($this)); + $this->request = new \Piwik\ViewDataTable\Request($this->requestConfig); $this->setViewProperties($defaultReportProperties); @@ -251,6 +253,7 @@ abstract class ViewDataTable return null; } + // TODO parent class should not know anything about children $visualizationIds = Visualization::getVisualizationIdsWithInheritance(get_class($this)); foreach ($visualizationIds as $visualizationId) { if (empty($properties[$visualizationId])) { @@ -423,7 +426,7 @@ abstract class ViewDataTable } if ($this->config->show_non_core_visualizations) { - $nonCoreVisualizations = Visualization::getNonCoreVisualizations(); + $nonCoreVisualizations = \Piwik\ViewDataTable::getNonCoreVisualizations(); $nonCoreVisualizationInfo = Visualization::getVisualizationInfoFor($nonCoreVisualizations); foreach ($nonCoreVisualizationInfo as $format => $info) { @@ -484,6 +487,22 @@ abstract class ViewDataTable } } + /** + * Returns an array mapping visualization IDs with information necessary for adding the + * visualizations to the footer of DataTable views. + * + * @param array $visualizations An array mapping visualization IDs w/ their associated classes. + * @return array + */ + public static function getVisualizationInfoFor($visualizations) + { + $result = array(); + foreach ($visualizations as $vizId => $vizClass) { + $result[$vizId] = array('table_icon' => $vizClass::FOOTER_ICON, 'title' => $vizClass::FOOTER_ICON_TITLE); + } + return $result; + } + public static function getDefaultPropertyValues() { return array(); @@ -501,9 +520,7 @@ abstract class ViewDataTable */ public function getOverridableProperties() { - $params = array_merge(VizConfig::$overridableProperties, VizRequest::$overridableProperties); - - return $this->getPropertyNameListWithMetaProperty($params, __FUNCTION__); + return array_merge(VizConfig::$overridableProperties, VizRequest::$overridableProperties); } private function overrideViewPropertiesWithQueryParams() @@ -534,14 +551,4 @@ abstract class ViewDataTable $type = is_numeric($defaultValue) ? 'int' : null; return Common::getRequestVar($name, $defaultValue, $type); } - - /** - * Helper function for getCliendSiteProperties/getClientSideParameters/etc. - */ - protected function getPropertyNameListWithMetaProperty($propertyNames, $getPropertiesFunctionName) - { - $klass = get_class($this); - $propertyNames = array_merge($propertyNames, $klass::$getPropertiesFunctionName()); - return $propertyNames; - } } \ No newline at end of file diff --git a/core/Plugin/Visualization.php b/core/Plugin/Visualization.php index 9604fcb25921fe6b731a95c101ec128ae2f27f17..a41282248871a1322f5050c060535ed159aa3c1b 100644 --- a/core/Plugin/Visualization.php +++ b/core/Plugin/Visualization.php @@ -27,7 +27,6 @@ use Piwik\Plugins\API\API; use Piwik\Plugins\PrivacyManager\PrivacyManager; use Piwik\Site; use Piwik\View; -use Piwik\ViewDataTable\VisualizationPropertiesProxy; use Piwik\Visualization\Config as VizConfig; use Piwik\Visualization\Request as VizRequest; @@ -100,8 +99,8 @@ class Visualization extends ViewDataTable } $vizView = new View(static::TEMPLATE_FILE); - // TODO there used to be the Visualization class - $vizView->assign(array_merge($this->requestConfig->getProperties(), $this->config->getProperties())); + $vizView->assign(array_merge(get_class_vars(get_class($this)), $this->requestConfig->getProperties(), $this->config->getProperties())); + $vizView->dataTable = $this->dataTable; $view->visualization = $vizView; $view->visualizationCssClass = $this->getDefaultDataTableCssClass(); @@ -531,7 +530,7 @@ class Visualization extends ViewDataTable { $klasses = array_merge(array($klass), array_values(class_parents($klass, $autoload = false))); - $idx = array_search('Piwik\\ViewDataTable\\Visualization', $klasses); + $idx = array_search('Piwik\\Plugin\\Visualization', $klasses); if ($idx !== false) { $klasses = array_slice($klasses, 0, $idx); } @@ -559,59 +558,11 @@ class Visualization extends ViewDataTable return $result; } - /** - * Returns all available visualizations that are not part of the CoreVisualizations plugin. - * - * @return array Array mapping visualization IDs with their associated visualization classes. - */ - public static function getNonCoreVisualizations() - { - $result = array(); - foreach (self::getAvailableVisualizations() as $vizId => $vizClass) { - if (strpos($vizClass, 'Piwik\\Plugins\\CoreVisualizations') === false) { - $result[$vizId] = $vizClass; - } - } - return $result; - } - - /** - * Returns an array mapping visualization IDs with information necessary for adding the - * visualizations to the footer of DataTable views. - * - * @param array $visualizations An array mapping visualization IDs w/ their associated classes. - * @return array - */ - public static function getVisualizationInfoFor($visualizations) - { - $result = array(); - foreach ($visualizations as $vizId => $vizClass) { - $result[$vizId] = array('table_icon' => $vizClass::FOOTER_ICON, 'title' => $vizClass::FOOTER_ICON_TITLE); - } - return $result; - } - - /** - * Returns the visualization class by it's viewDataTable ID. - * - * @param string $id The visualization ID. - * @return string The visualization class name. If $id is not a valid ID, the HtmlTable visualization - * is returned. - */ - public static function getClassFromId($id) - { - $visualizationClasses = self::getAvailableVisualizations(); - if (!isset($visualizationClasses[$id])) { - return $visualizationClasses['table']; - } - return $visualizationClasses[$id]; - } - /** * Helper function that merges the static field values of every class in this * classes inheritance hierarchy. Uses late-static binding. */ - protected function getPropertyNameListWithMetaProperty($staticFieldName) + protected function getPropertyNameListWithMetaProperty($baseProperties, $staticFieldName) { if (isset(static::$$staticFieldName)) { $result = array(); @@ -623,10 +574,12 @@ class Visualization extends ViewDataTable } } + $result = array_merge($baseProperties, $result); + return array_unique($result); } - return array(); + return $baseProperties; } private function getFiltersToRun() diff --git a/core/ViewDataTable.php b/core/ViewDataTable.php index aefef18577dfa2bfdf6a629bf7a0d9c0c2850001..128135a801da20b140d3f8061c2e0179ac9fdd6b 100644 --- a/core/ViewDataTable.php +++ b/core/ViewDataTable.php @@ -131,7 +131,7 @@ class ViewDataTable throw new \Exception("Visualization class '$viz' does not extend Plugin/ViewDataTable"); } - $vizId = $viz->getViewDataTableId(); + $vizId = $viz::getViewDataTableId(); if (isset($result[$vizId])) { throw new \Exception("Visualization ID '$vizId' is already in use!"); @@ -143,6 +143,22 @@ class ViewDataTable return $result; } + /** + * Returns all available visualizations that are not part of the CoreVisualizations plugin. + * + * @return array Array mapping visualization IDs with their associated visualization classes. + */ + public static function getNonCoreVisualizations() + { + $result = array(); + foreach (\Piwik\ViewDataTable::getAvailableVisualizations() as $vizId => $vizClass) { + if (strpos($vizClass, 'Piwik\\Plugins\\CoreVisualizations') === false) { + $result[$vizId] = $vizClass; + } + } + return $result; + } + /** * Convenience method that creates and renders a ViewDataTable for a API method. * diff --git a/core/ViewDataTable/Graph.php b/core/ViewDataTable/Graph.php index 00404f5c055830540856d0012010805ddfb8243b..38ff4db9fb7a8cb8c53b8bbe0d56f2fe0dd527b7 100644 --- a/core/ViewDataTable/Graph.php +++ b/core/ViewDataTable/Graph.php @@ -14,6 +14,7 @@ use Piwik\DataTable\Row; use Piwik\DataTable; use Piwik\DataTable\DataTableInterface; use Piwik\Piwik; +use Piwik\Plugin\Visualization; use Piwik\Visualization\Config; use Piwik\Visualization\Request; @@ -128,11 +129,11 @@ abstract class Graph extends Visualization public $selectableRows = array(); - public function configureVisualization(Config $properties) + public function configureVisualization() { - if ($properties->show_goals) { - $properties->translations['nb_conversions'] = Piwik::translate('Goals_ColumnConversions'); - $properties->translations['revenue'] = Piwik::translate('General_TotalRevenue'); + if ($this->config->show_goals) { + $this->config->translations['nb_conversions'] = Piwik::translate('Goals_ColumnConversions'); + $this->config->translations['revenue'] = Piwik::translate('General_TotalRevenue'); } } @@ -161,22 +162,22 @@ abstract class Graph extends Visualization * Defaults the selectable_columns property if it has not been set and then transforms * it into something the SeriesPicker JavaScript class can use. */ - public function afterAllFilteresAreApplied(DataTableInterface $dataTable, Config $properties, Request $request) + public function afterAllFilteresAreApplied() { - $properties->visualization_properties->selectable_rows = array_values($this->selectableRows); + $this->config->visualization_properties->selectable_rows = array_values($this->selectableRows); - $selectableColumns = $properties->visualization_properties->selectable_columns; + $selectableColumns = $this->config->visualization_properties->selectable_columns; // set default selectable columns, if none specified if ($selectableColumns === false) { $selectableColumns = array('nb_visits', 'nb_actions'); - if (in_array('nb_uniq_visitors', $dataTable->getColumns())) { + if (in_array('nb_uniq_visitors', $this->dataTable->getColumns())) { $selectableColumns[] = 'nb_uniq_visitors'; } } - if ($properties->show_goals) { + if ($this->config->show_goals) { $goalMetrics = array('nb_conversions', 'revenue'); $selectableColumns = array_merge($selectableColumns, $goalMetrics); } @@ -185,38 +186,39 @@ abstract class Graph extends Visualization foreach ($selectableColumns as $column) { $transformed[] = array( 'column' => $column, - 'translation' => @$properties->translations[$column], - 'displayed' => in_array($column, $properties->columns_to_display) + 'translation' => @$this->config->translations[$column], + 'displayed' => in_array($column, $this->config->columns_to_display) ); } - $properties->visualization_properties->selectable_columns = $transformed; + $this->config->visualization_properties->selectable_columns = $transformed; } /** * Determines what rows are selectable and stores them in the selectable_rows property in * a format the SeriesPicker JavaScript class can use. */ - public function beforeLoadDataTable(Request $request, Config $properties) + public function beforeLoadDataTable() { // TODO: this should not be required here. filter_limit should not be a view property, instead HtmlTable should use 'limit' or something, // and manually set request_parameters_to_modify['filter_limit'] based on that. (same for filter_offset). - $request->request_parameters_to_modify['filter_limit'] = false; + $this->config->request_parameters_to_modify['filter_limit'] = false; - if ($properties->visualization_properties->max_graph_elements) { - $request->request_parameters_to_modify['filter_truncate'] = $properties->visualization_properties->max_graph_elements - 1; + if ($this->config->visualization_properties->max_graph_elements) { + $this->requestConfig->request_parameters_to_modify['filter_truncate'] = $this->config->visualization_properties->max_graph_elements - 1; } - if ($properties->visualization_properties->row_picker_match_rows_by === false) { + if ($this->config->visualization_properties->row_picker_match_rows_by === false) { return; } } - public function beforeGenericFiltersAreAppliedToLoadedDataTable(DataTableInterface $dataTable, Config $properties, Request $request) + public function beforeGenericFiltersAreAppliedToLoadedDataTable() { // collect all selectable rows $self = $this; + $properties = $this->config; - $dataTable->filter(function ($dataTable) use ($self, $properties) { + $this->dataTable->filter(function ($dataTable) use ($self, $properties) { foreach ($dataTable->getRows() as $row) { $rowLabel = $row->getColumn('label'); if ($rowLabel === false) { diff --git a/core/ViewDataTable/Request.php b/core/ViewDataTable/Request.php index 1ce92ad444a2b50f3648b9e2cd733e859220a70d..4e6df3ad2775c8ca54b81cd891ff2a78b73aecdc 100644 --- a/core/ViewDataTable/Request.php +++ b/core/ViewDataTable/Request.php @@ -53,7 +53,7 @@ class Request } /** - * @return string URL to call the API, eg. "method=Referrers.getKeywords&period=day&date=yesterday"... + * @return array URL to call the API, eg. "method=Referrers.getKeywords&period=day&date=yesterday"... */ public function getRequestArray() { @@ -148,8 +148,8 @@ class Request // if filter_column_recursive & filter_pattern_recursive are supplied, and flat isn't supplied // we have to load all the child subtables. return Common::getRequestVar('filter_column_recursive', false) !== false - && Common::getRequestVar('filter_pattern_recursive', false) !== false - && Common::getRequestVar('flat', false) === false; + && Common::getRequestVar('filter_pattern_recursive', false) !== false + && Common::getRequestVar('flat', false) === false; } } \ No newline at end of file diff --git a/core/ViewDataTable/Visualization.php b/core/ViewDataTable/Visualization.php deleted file mode 100644 index 2562bbae37b3c309ec73a9f7e4c7afc77266d4c9..0000000000000000000000000000000000000000 --- a/core/ViewDataTable/Visualization.php +++ /dev/null @@ -1,310 +0,0 @@ -<?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 - * @package Piwik - */ - -namespace Piwik\ViewDataTable; - -use Piwik\DataTable; -use Piwik\DataTable\DataTableInterface; -use Piwik\Piwik; -use Piwik\View; -use Piwik\ViewDataTable; -use Piwik\Visualization\Config; -use Piwik\Visualization\Request; - -/** - * Base class for all DataTable visualizations. Different visualizations are used to - * handle different values of the viewDataTable query parameter. Each one will display - * DataTable data in a different way. - * - * TODO: must be more in depth - */ -abstract class Visualization extends View -{ - const GET_AVAILABLE_EVENT = 'Visualization.addVisualizations'; - const TEMPLATE_FILE = ''; - - /** - * The view data table - * @var ViewDataTable - */ - protected $viewDataTable; - - final public function __construct($view) - { - $templateFile = static::TEMPLATE_FILE; - - if (empty($templateFile)) { - throw new \Exception('You have not defined a constant named TEMPLATE_FILE in your visualization class.'); - } - - parent::__construct($templateFile); - - $this->viewDataTable = $view; - $this->init(); - } - - protected function init() - { - // do your init stuff here, do not overwrite constructor - // maybe setting my view properties $this->vizTitle - } - - public function configureVisualization(Config $properties) - { - // our stuff goes in here - // like $properties->showFooterColumns = true; - } - - public function beforeLoadDataTable(Request $request, Config $properties) - { - // change request --> $requestProperties... - // like defining filter_column - // $requestProperties->filterColumn = 54; - // $requestProperties->setFilterColumn(); - } - - public function beforeGenericFiltersAreAppliedToLoadedDataTable(DataTableInterface $dataTable, Config $properties, Request $request) - { - - } - - public function afterGenericFiltersAreAppliedToLoadedDataTable(DataTableInterface $dataTable, Config $properties, Request $request) - { - - } - - public function afterAllFilteresAreApplied(DataTableInterface $dataTable, Config $properties, Request $request) - { - // filter and format requested data here - // $dataTable ...f - - // $this->generator = new GeneratorFoo($dataTable); - } - - /** - * Default implementation of getDefaultPropertyValues static function. - * - * @return array - */ - public static function getDefaultPropertyValues() - { - return array(); - } - - /** - * Returns the array of view properties that a DataTable visualization will require - * to be both visible to client side JavaScript, and passed along as query parameters - * in every AJAX request. - * - * Derived Visualizations can specify client side parameters by declaring - * a static $clientSideParameters field that contains a list of view property - * names. - * - * @return array - */ - public static function getClientSideRequestParameters() - { - return self::getPropertyNameListWithMetaProperty('clientSideRequestParameters'); - } - - /** - * Returns an array of view property names that a DataTable visualization will - * require to be visible to client side JavaScript. Unlike 'client side parameters', - * these will not be passed with AJAX requests as query parameters. - * - * Derived Visualizations can specify client side properties by declaring - * a static $clientSideProperties field that contains a list of view property - * names. - * - * @return array - */ - public static function getClientSideConfigProperties() - { - return self::getPropertyNameListWithMetaProperty('clientSideConfigProperties'); - } - - /** - * Returns an array of view property names that can be overriden by query parameters. - * If a query parameter is sent with the same name as a view property, the view - * property will be set to the value of the query parameter. - * - * Derived Visualizations can specify overridable properties by declaring - * a static $overridableProperties field that contains a list of view property - * names. - */ - public static function getOverridableProperties() - { - return self::getPropertyNameListWithMetaProperty('overridableProperties'); - } - - /** - * Returns the viewDataTable ID for this DataTable visualization. Derived classes - * should declare a const ID field with the viewDataTable ID. - * - * @return string - */ - public static function getViewDataTableId() - { - if (defined('static::ID')) { - return static::ID; - } else { - return get_called_class(); - } - } - - /** - * Returns the list of parents for a Visualization class excluding the - * Visualization class and above. - * - * @param string $klass The class name of the Visualization. - * @return Visualization[] The list of parent classes in order from highest - * ancestor to the descended class. - */ - public static function getVisualizationClassLineage($klass) - { - $klasses = array_merge(array($klass), array_values(class_parents($klass, $autoload = false))); - - $idx = array_search('Piwik\\ViewDataTable\\Visualization', $klasses); - if ($idx !== false) { - $klasses = array_slice($klasses, 0, $idx); - } - - return array_reverse($klasses); - } - - /** - * Returns the viewDataTable IDs of a visualization's class lineage. - * - * @see self::getVisualizationClassLineage - * - * @param string $klass The visualization class. - * - * @return array - */ - public static function getVisualizationIdsWithInheritance($klass) - { - $klasses = self::getVisualizationClassLineage($klass); - - $result = array(); - foreach ($klasses as $klass) { - $result[] = $klass::getViewDataTableId(); - } - return $result; - } - - /** - * Returns all registered visualization classes. Uses the 'Visualization.getAvailable' - * event to retrieve visualizations. - * - * @return array Array mapping visualization IDs with their associated visualization classes. - * @throws \Exception If a visualization class does not exist or if a duplicate visualization ID - * is found. - */ - public static function getAvailableVisualizations() - { - /** @var self[] $visualizations */ - $visualizations = array(); - - /** - * This event is used to gather all available DataTable visualizations. Callbacks should add visualization - * class names to the incoming array. - */ - Piwik::postEvent(self::GET_AVAILABLE_EVENT, array(&$visualizations)); - - $result = array(); - foreach ($visualizations as $viz) { - if (!class_exists($viz)) { - throw new \Exception( - "Invalid visualization class '$viz' found in Visualization.getAvailableVisualizations."); - } - - if (is_subclass_of($viz, __CLASS__)) { - $vizId = $viz::getViewDataTableId(); - if (isset($result[$vizId])) { - throw new \Exception("Visualization ID '$vizId' is already in use!"); - } - - $result[$vizId] = $viz; - } - } - return $result; - } - - /** - * Returns all available visualizations that are not part of the CoreVisualizations plugin. - * - * @return array Array mapping visualization IDs with their associated visualization classes. - */ - public static function getNonCoreVisualizations() - { - $result = array(); - foreach (self::getAvailableVisualizations() as $vizId => $vizClass) { - if (strpos($vizClass, 'Piwik\\Plugins\\CoreVisualizations') === false) { - $result[$vizId] = $vizClass; - } - } - return $result; - } - - /** - * Returns an array mapping visualization IDs with information necessary for adding the - * visualizations to the footer of DataTable views. - * - * @param array $visualizations An array mapping visualization IDs w/ their associated classes. - * @return array - */ - public static function getVisualizationInfoFor($visualizations) - { - $result = array(); - foreach ($visualizations as $vizId => $vizClass) { - $result[$vizId] = array('table_icon' => $vizClass::FOOTER_ICON, 'title' => $vizClass::FOOTER_ICON_TITLE); - } - return $result; - } - - /** - * Returns the visualization class by it's viewDataTable ID. - * - * @param string $id The visualization ID. - * @return string The visualization class name. If $id is not a valid ID, the HtmlTable visualization - * is returned. - */ - public static function getClassFromId($id) - { - $visualizationClasses = self::getAvailableVisualizations(); - if (!isset($visualizationClasses[$id])) { - return $visualizationClasses['table']; - } - return $visualizationClasses[$id]; - } - - /** - * Helper function that merges the static field values of every class in this - * classes inheritance hierarchy. Uses late-static binding. - */ - private static function getPropertyNameListWithMetaProperty($staticFieldName) - { - if (isset(static::$$staticFieldName)) { - $result = array(); - - $lineage = static::getVisualizationClassLineage(get_called_class()); - foreach ($lineage as $klass) { - if (isset($klass::$$staticFieldName)) { - $result = array_merge($result, $klass::$$staticFieldName); - } - } - - return array_unique($result); - } else { - return array(); - } - } -} \ No newline at end of file diff --git a/core/ViewDataTable/VisualizationPropertiesProxy.php b/core/ViewDataTable/VisualizationPropertiesProxy.php index b100cd5c9298f592c95d99e083e6d9e46372e33f..673b45bfa4b0b9cb396115e3e1d72a3ba95561d1 100644 --- a/core/ViewDataTable/VisualizationPropertiesProxy.php +++ b/core/ViewDataTable/VisualizationPropertiesProxy.php @@ -59,11 +59,13 @@ class VisualizationPropertiesProxy */ public function &__get($name) { - if ($this->visualizationClass !== null) { - static::checkValidVisualizationProperty($this->visualizationClass, $name); + if (array_key_exists($name, $this->visualizationProperties)) { + return $this->visualizationProperties[$name]; } - return $this->visualizationProperties[$name]; + $null = null; + + return $null; } /** diff --git a/plugins/Actions/Actions.php b/plugins/Actions/Actions.php index 030a7fe6b9e4e1d17f4352f82aa11c286b271b21..83167eb89ea512cb733966c6957d3df82a468170 100644 --- a/plugins/Actions/Actions.php +++ b/plugins/Actions/Actions.php @@ -673,7 +673,7 @@ class Actions extends \Piwik\Plugin // so users can see that they can set it to 1 (see #3365) $result['custom_parameters'] = array('flat' => 0); - if (ViewDataTable::shouldLoadExpanded()) { + if (ViewDataTable\Request::shouldLoadExpanded()) { $result['visualization_properties']['table']['show_expanded'] = true; $result['filters'][] = function ($dataTable) { diff --git a/plugins/CoreVisualizations/Visualizations/Cloud.php b/plugins/CoreVisualizations/Visualizations/Cloud.php index 53e6e6b936bfaadf4629e29917da0996b9a76336..b6fe403da3902001223ef3722689ad2d4c1634b1 100644 --- a/plugins/CoreVisualizations/Visualizations/Cloud.php +++ b/plugins/CoreVisualizations/Visualizations/Cloud.php @@ -12,10 +12,9 @@ namespace Piwik\Plugins\CoreVisualizations\Visualizations; use Piwik\Common; use Piwik\DataTable; -use Piwik\DataTable\DataTableInterface; use Piwik\Log; use Piwik\View; -use Piwik\ViewDataTable\Visualization; +use Piwik\Plugin\Visualization; use Piwik\Visualization\Config; use Piwik\Visualization\Request; @@ -49,18 +48,18 @@ class Cloud extends Visualization protected $wordsArray = array(); public $truncatingLimit = 50; - public function afterAllFilteresAreApplied(DataTable $dataTable, Config $properties, Request $request) + public function afterAllFilteresAreApplied() { - if ($dataTable->getRowsCount() == 0) { + if ($this->dataTable->getRowsCount() == 0) { return; } - $columnToDisplay = isset($properties->columns_to_display[1]) ? $properties->columns_to_display[1] : 'nb_visits'; + $columnToDisplay = isset($this->config->columns_to_display[1]) ? $this->config->columns_to_display[1] : 'nb_visits'; $labelMetadata = array(); - foreach ($dataTable->getRows() as $row) { + foreach ($this->dataTable->getRows() as $row) { $logo = false; - if ($properties->visualization_properties->display_logo_instead_of_label) { + if ($this->config->visualization_properties->display_logo_instead_of_label) { $logo = $row->getMetadata('logo'); } @@ -82,11 +81,11 @@ class Cloud extends Visualization $this->cloudValues = $cloudValues; } - public function configureVisualization(Config $properties) + public function configureVisualization() { - $properties->show_exclude_low_population = false; - $properties->show_offset_information = false; - $properties->show_limit_control = false; + $this->config->show_exclude_low_population = false; + $this->config->show_offset_information = false; + $this->config->show_limit_control = false; } public static function getDefaultPropertyValues() diff --git a/plugins/CoreVisualizations/Visualizations/HtmlTable.php b/plugins/CoreVisualizations/Visualizations/HtmlTable.php index 84085cf7ff440771b910aedffb2626c1b1e1ffce..a74f28f7b7efb6407bbdd8490fa8b89ba6f745a2 100644 --- a/plugins/CoreVisualizations/Visualizations/HtmlTable.php +++ b/plugins/CoreVisualizations/Visualizations/HtmlTable.php @@ -18,7 +18,7 @@ use Piwik\Piwik; use Piwik\Plugins\Goals\API as APIGoals; use Piwik\Site; use Piwik\View; -use Piwik\ViewDataTable\Visualization; +use Piwik\Plugin\Visualization; use Piwik\Visualization\Config as VizConfig; require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php'; @@ -149,12 +149,12 @@ class HtmlTable extends Visualization 'highlight_summary_row', ); - public function configureVisualization(VizConfig $properties) + public function configureVisualization() { if (Common::getRequestVar('idSubtable', false) - && $properties->visualization_properties->show_embedded_subtable + && $this->config->visualization_properties->show_embedded_subtable ) { - $properties->show_visualization_only = true; + $this->config->show_visualization_only = true; } } diff --git a/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php b/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php index d03ba2c05c0060ede852916c65f2c4f0f6d66ce2..2dc5ee43cc62322fbc734a5c6d20473184d4a97b 100644 --- a/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php +++ b/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php @@ -31,21 +31,22 @@ class AllColumns extends HtmlTable { const ID = 'tableAllColumns'; - public function configureVisualization(Config $properties) + public function configureVisualization() { - $properties->visualization_properties->show_extra_columns = true; + $this->config->visualization_properties->show_extra_columns = true; - $properties->show_exclude_low_population = true; - $properties->datatable_css_class = 'dataTableVizAllColumns'; + $this->config->show_exclude_low_population = true; + $this->config->datatable_css_class = 'dataTableVizAllColumns'; - parent::configureVisualization($properties); + parent::configureVisualization(); } - public function beforeGenericFiltersAreAppliedToLoadedDataTable(DataTableInterface $dataTable, Config $properties, Request $request) + public function beforeGenericFiltersAreAppliedToLoadedDataTable() { - $dataTable->filter('AddColumnsProcessedMetrics'); + $this->dataTable->filter('AddColumnsProcessedMetrics'); + $properties = $this->config; - $dataTable->filter(function ($dataTable) use ($properties) { + $this->dataTable->filter(function ($dataTable) use ($properties) { $columnsToDisplay = array('label', 'nb_visits'); if (in_array('nb_uniq_visitors', $dataTable->getColumns())) { @@ -67,7 +68,7 @@ class AllColumns extends HtmlTable $prettifyTime = array('\Piwik\MetricsFormatter', 'getPrettyTimeFromSeconds'); - $dataTable->filter('ColumnCallbackReplace', array('avg_time_on_site', $prettifyTime)); + $this->dataTable->filter('ColumnCallbackReplace', array('avg_time_on_site', $prettifyTime)); } } \ No newline at end of file diff --git a/plugins/CoreVisualizations/Visualizations/HtmlTable/Goals.php b/plugins/CoreVisualizations/Visualizations/HtmlTable/Goals.php index 71aec3fe2fd2b7775f7bdd9a9a83fffa222f0621..d63230107adcd951f927eaec3d6fc73d689043b0 100644 --- a/plugins/CoreVisualizations/Visualizations/HtmlTable/Goals.php +++ b/plugins/CoreVisualizations/Visualizations/HtmlTable/Goals.php @@ -29,63 +29,61 @@ class Goals extends HtmlTable { const ID = 'tableGoals'; - public function configureVisualization(Config $properties) + public function configureVisualization() { - $properties->visualization_properties->show_goals_columns = true; + $this->config->visualization_properties->show_goals_columns = true; - $properties->datatable_css_class = 'dataTableVizGoals'; - $properties->show_exclude_low_population = true; - $properties->show_goals = true; + $this->config->datatable_css_class = 'dataTableVizGoals'; + $this->config->show_exclude_low_population = true; + $this->config->show_goals = true; - $properties->translations += array( + $this->config->translations += array( 'nb_conversions' => Piwik::translate('Goals_ColumnConversions'), 'conversion_rate' => Piwik::translate('General_ColumnConversionRate'), 'revenue' => Piwik::translate('General_ColumnRevenue'), 'revenue_per_visit' => Piwik::translate('General_ColumnValuePerVisit'), ); - $properties->metrics_documentation['nb_visits'] = Piwik::translate('Goals_ColumnVisits'); + $this->config->metrics_documentation['nb_visits'] = Piwik::translate('Goals_ColumnVisits'); if (Common::getRequestVar('documentationForGoalsPage', 0, 'int') == 1) { // TODO: should not use query parameter - $properties->documentation = Piwik::translate('Goals_ConversionByTypeReportDocumentation', + $this->config->documentation = Piwik::translate('Goals_ConversionByTypeReportDocumentation', array('<br />', '<br />', '<a href="http://piwik.org/docs/tracking-goals-web-analytics/" target="_blank">', '</a>')); } - if (!$properties->visualization_properties->disable_subtable_when_show_goals) { - $properties->subtable_controller_action = null; + if (!$this->config->visualization_properties->disable_subtable_when_show_goals) { + $this->config->subtable_controller_action = null; } $this->setShowGoalsColumnsProperties(); - parent::configureVisualization($properties); + parent::configureVisualization(); } private function setShowGoalsColumnsProperties() { - $view = $this->viewDataTable; - // set view properties based on goal requested $idSite = Common::getRequestVar('idSite', null, 'int'); $idGoal = Common::getRequestVar('idGoal', AddColumnsProcessedMetricsGoal::GOALS_OVERVIEW, 'string'); if ($idGoal == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) { - $this->setPropertiesForEcommerceView($view); + $this->setPropertiesForEcommerceView(); } else if ($idGoal == AddColumnsProcessedMetricsGoal::GOALS_FULL_TABLE) { - $this->setPropertiesForGoals($view, $idSite, 'all'); + $this->setPropertiesForGoals($idSite, 'all'); } else if ($idGoal == AddColumnsProcessedMetricsGoal::GOALS_OVERVIEW) { - $this->setPropertiesForGoalsOverview($view, $idSite); + $this->setPropertiesForGoalsOverview($idSite); } else { - $this->setPropertiesForGoals($view, $idSite, array($idGoal)); + $this->setPropertiesForGoals($idSite, array($idGoal)); } // add goals columns - $view->filters[] = array('AddColumnsProcessedMetricsGoal', array($ignore = true, $idGoal), $priority = true); + $this->config->filters[] = array('AddColumnsProcessedMetricsGoal', array($ignore = true, $idGoal), $priority = true); // prettify columns $setRatePercent = function ($rate, $thang = false) { return $rate == 0 ? "0%" : $rate; }; - foreach ($view->columns_to_display as $columnName) { + foreach ($this->config->columns_to_display as $columnName) { if (strpos($columnName, 'conversion_rate') !== false) { - $view->filters[] = array('ColumnCallbackReplace', array($columnName, $setRatePercent)); + $this->config->filters[] = array('ColumnCallbackReplace', array($columnName, $setRatePercent)); } } @@ -93,9 +91,9 @@ class Goals extends HtmlTable return MetricsFormatter::getPrettyMoney(sprintf("%.1f", $value), $idSite); }; - foreach ($view->columns_to_display as $columnName) { + foreach ($this->config->columns_to_display as $columnName) { if ($this->isRevenueColumn($columnName)) { - $view->filters[] = array('ColumnCallbackReplace', array($columnName, $formatPercent)); + $this->config->filters[] = array('ColumnCallbackReplace', array($columnName, $formatPercent)); } } @@ -103,25 +101,25 @@ class Goals extends HtmlTable $identityFunction = function ($value) { return $value; }; - foreach ($view->columns_to_display as $columnName) { + foreach ($this->config->columns_to_display as $columnName) { if (!$this->isRevenueColumn($columnName)) { - $view->filters[] = array('ColumnCallbackReplace', array($columnName, $identityFunction)); + $this->config->filters[] = array('ColumnCallbackReplace', array($columnName, $identityFunction)); } } } - private function setPropertiesForEcommerceView($view) + private function setPropertiesForEcommerceView() { - $view->filter_sort_column = 'goal_ecommerceOrder_revenue'; - $view->filter_sort_order = 'desc'; + $this->requestConfig->filter_sort_column = 'goal_ecommerceOrder_revenue'; + $this->requestConfig->filter_sort_order = 'desc'; - $view->columns_to_display = array( + $this->config->columns_to_display = array( 'label', 'nb_visits', 'goal_ecommerceOrder_nb_conversions', 'goal_ecommerceOrder_revenue', 'goal_ecommerceOrder_conversion_rate', 'goal_ecommerceOrder_avg_order_revenue', 'goal_ecommerceOrder_items', 'goal_ecommerceOrder_revenue_per_visit' ); - $view->translations += array( + $this->config->translations += array( 'goal_ecommerceOrder_conversion_rate' => Piwik::translate('Goals_ConversionRate', Piwik::translate('Goals_EcommerceOrder')), 'goal_ecommerceOrder_nb_conversions' => Piwik::translate('General_EcommerceOrders'), 'goal_ecommerceOrder_revenue' => Piwik::translate('General_TotalRevenue'), @@ -131,7 +129,7 @@ class Goals extends HtmlTable ); $goalName = Piwik::translate('General_EcommerceOrders'); - $view->metrics_documentation += array( + $this->config->metrics_documentation += array( 'goal_ecommerceOrder_conversion_rate' => Piwik::translate('Goals_ColumnConversionRateDocumentation', $goalName), 'goal_ecommerceOrder_nb_conversions' => Piwik::translate('Goals_ColumnConversionsDocumentation', $goalName), 'goal_ecommerceOrder_revenue' => Piwik::translate('Goals_ColumnRevenueDocumentation', $goalName), @@ -142,28 +140,28 @@ class Goals extends HtmlTable ); } - private function setPropertiesForGoalsOverview($view, $idSite) + private function setPropertiesForGoalsOverview($idSite) { $allGoals = $this->getGoals($idSite); // set view properties - $view->columns_to_display = array('label', 'nb_visits'); + $this->config->columns_to_display = array('label', 'nb_visits'); foreach ($allGoals as $goal) { $column = "goal_{$goal['idgoal']}_conversion_rate"; - $view->columns_to_display[] = $column; - $view->translations[$column] = Piwik::translate('Goals_ConversionRate', $goal['name']); - $view->metrics_documentation[$column] + $this->config->columns_to_display[] = $column; + $this->config->translations[$column] = Piwik::translate('Goals_ConversionRate', $goal['name']); + $this->config->metrics_documentation[$column] = Piwik::translate('Goals_ColumnConversionRateDocumentation', $goal['quoted_name'] ? : $goal['name']); } - $view->columns_to_display[] = 'revenue_per_visit'; - $view->metrics_documentation['revenue_per_visit'] = + $this->config->columns_to_display[] = 'revenue_per_visit'; + $this->config->metrics_documentation['revenue_per_visit'] = Piwik::translate('Goals_ColumnRevenuePerVisitDocumentation', Piwik::translate('Goals_EcommerceAndGoalsMenu')); } - private function setPropertiesForGoals($view, $idSite, $idGoals) + private function setPropertiesForGoals($idSite, $idGoals) { $allGoals = $this->getGoals($idSite); @@ -171,11 +169,11 @@ class Goals extends HtmlTable $idGoals = array_keys($allGoals); } else { // only sort by a goal's conversions if not showing all goals (for FULL_REPORT) - $view->filter_sort_column = 'goal_' . reset($idGoals) . '_nb_conversions'; - $view->filter_sort_order = 'desc'; + $this->requestConfig->filter_sort_column = 'goal_' . reset($idGoals) . '_nb_conversions'; + $this->requestConfig->filter_sort_order = 'desc'; } - $view->columns_to_display = array('label', 'nb_visits'); + $this->config->columns_to_display = array('label', 'nb_visits'); $goalColumnTemplates = array( 'goal_%s_nb_conversions', @@ -189,7 +187,7 @@ class Goals extends HtmlTable foreach ($goalColumnTemplates as $idx => $columnTemplate) { foreach ($idGoals as $idGoal) { $column = sprintf($columnTemplate, $idGoal); - $view->columns_to_display[] = $column; + $this->config->columns_to_display[] = $column; } } @@ -198,7 +196,7 @@ class Goals extends HtmlTable $goalName = $allGoals[$idGoal]['name']; $quotedGoalName = $allGoals[$idGoal]['quoted_name'] ? : $goalName; - $view->translations += array( + $this->config->translations += array( 'goal_' . $idGoal . '_nb_conversions' => Piwik::translate('Goals_Conversions', $goalName), 'goal_' . $idGoal . '_conversion_rate' => Piwik::translate('Goals_ConversionRate', $goalName), 'goal_' . $idGoal . '_revenue' => @@ -207,7 +205,7 @@ class Goals extends HtmlTable Piwik::translate('%s ' . Piwik::translate('General_ColumnValuePerVisit'), $goalName), ); - $view->metrics_documentation += array( + $this->config->metrics_documentation += array( 'goal_' . $idGoal . '_nb_conversions' => Piwik::translate('Goals_ColumnConversionsDocumentation', $quotedGoalName), 'goal_' . $idGoal . '_conversion_rate' => Piwik::translate('Goals_ColumnConversionRateDocumentation', $quotedGoalName), 'goal_' . $idGoal . '_revenue' => Piwik::translate('Goals_ColumnRevenueDocumentation', $quotedGoalName), @@ -216,7 +214,7 @@ class Goals extends HtmlTable ); } - $view->columns_to_display[] = 'revenue_per_visit'; + $this->config->columns_to_display[] = 'revenue_per_visit'; } private function getGoals($idSite) diff --git a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Bar.php b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Bar.php index bb364e5f761d9c171e740ea101ebdea8be520ce4..33478c97b0a122af4f0cda2a2f69254ccbbecc39 100644 --- a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Bar.php +++ b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Bar.php @@ -22,11 +22,11 @@ class Bar extends JqplotGraph { const ID = 'graphVerticalBar'; - public function configureVisualization(Config $properties) + public function configureVisualization() { - parent::configureVisualization($properties); + parent::configureVisualization(); - $properties->datatable_js_type = 'JqplotBarGraphDataTable'; + $this->config->datatable_js_type = 'JqplotBarGraphDataTable'; } public static function getDefaultPropertyValues() diff --git a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php index 75f07864270cb937e847ec218651317f93e95c70..0501174ea876b02abb1b794a1ce540e0c2051125 100644 --- a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php +++ b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php @@ -41,35 +41,35 @@ class Evolution extends JqplotGraph public static $overridableProperties = array('show_line_graph'); - public function configureVisualization(Config $properties) + public function configureVisualization() { - $this->calculateEvolutionDateRange($properties); + $this->calculateEvolutionDateRange(); - parent::configureVisualization($properties); + parent::configureVisualization(); - $properties->datatable_js_type = 'JqplotEvolutionGraphDataTable'; + $this->config->datatable_js_type = 'JqplotEvolutionGraphDataTable'; } - public function beforeLoadDataTable(Request $request, Config $properties) + public function beforeLoadDataTable() { - parent::beforeLoadDataTable($request, $properties); + parent::beforeLoadDataTable(); // period will be overridden when 'range' is requested in the UI // but the graph will display for each day of the range. // Default 'range' behavior is to return the 'sum' for the range if (Common::getRequestVar('period', false) == 'range') { - $request->request_parameters_to_modify['period'] = 'day'; + $this->requestConfig->request_parameters_to_modify['period'] = 'day'; } } - public function afterAllFilteresAreApplied(DataTableInterface $dataTable, Config $properties, Request $request) + public function afterAllFilteresAreApplied() { - parent::afterAllFilteresAreApplied($dataTable, $properties, $request); + parent::afterAllFilteresAreApplied(); - if ($properties->visualization_properties->x_axis_step_size === false) { + if ($this->config->visualization_properties->x_axis_step_size === false) { - $size = $this->getDefaultXAxisStepSize($dataTable->getRowsCount()); - $properties->visualization_properties->x_axis_step_size = $size; + $size = $this->getDefaultXAxisStepSize($this->dataTable->getRowsCount()); + $this->config->visualization_properties->x_axis_step_size = $size; } } @@ -94,16 +94,15 @@ class Evolution extends JqplotGraph * 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(Config $properties) + private function calculateEvolutionDateRange() { - $view = $this->viewDataTable; $period = Common::getRequestVar('period'); $defaultLastN = self::getDefaultLastN($period); $originalDate = Common::getRequestVar('date', 'last' . $defaultLastN, 'string'); if ($period != 'range') { // show evolution limit if the period is not a range - $properties->show_limit_control = true; + $this->config->show_limit_control = true; // set the evolution_{$period}_last_n query param if (Range::parseDateRange($originalDate)) { // if a multiple period @@ -112,11 +111,11 @@ class Evolution extends JqplotGraph $lastN = count($oPeriod->getSubperiods()); } else { // if not a multiple period list($newDate, $lastN) = self::getDateRangeAndLastN($period, $originalDate, $defaultLastN); - $view->request_parameters_to_modify['date'] = $newDate; - $properties->custom_parameters['dateUsedInGraph'] = $newDate; + $this->requestConfig->request_parameters_to_modify['date'] = $newDate; + $this->config->custom_parameters['dateUsedInGraph'] = $newDate; } $lastNParamName = self::getLastNParamName($period); - $properties->custom_parameters[$lastNParamName] = $lastN; + $this->config->custom_parameters[$lastNParamName] = $lastN; } } diff --git a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Pie.php b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Pie.php index e6db071c9ff9787b64ca372cb69b79657572a7c1..593e3768a3b4c0b18f5f0d301f08d35267b64cb4 100644 --- a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Pie.php +++ b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Pie.php @@ -24,25 +24,25 @@ class Pie extends JqplotGraph { const ID = 'graphPie'; - public function configureVisualization(Config $properties) + public function configureVisualization() { - parent::configureVisualization($properties); + parent::configureVisualization(); - $properties->visualization_properties->show_all_ticks = true; - $properties->datatable_js_type = 'JqplotPieGraphDataTable'; + $this->config->visualization_properties->show_all_ticks = true; + $this->config->datatable_js_type = 'JqplotPieGraphDataTable'; } - public function afterAllFilteresAreApplied(DataTableInterface $dataTable, Config $properties, Request $request) + public function afterAllFilteresAreApplied() { - parent::afterAllFilteresAreApplied($dataTable, $properties, $request); + parent::afterAllFilteresAreApplied(); - $metricColumn = reset($properties->columns_to_display); + $metricColumn = reset($this->config->columns_to_display); if ($metricColumn == 'label') { - $metricColumn = next($properties->columns_to_display); + $metricColumn = next($this->config->columns_to_display); } - $properties->columns_to_display = array($metricColumn ? : 'nb_visits'); + $this->config->columns_to_display = array($metricColumn ? : 'nb_visits'); } public static function getDefaultPropertyValues() diff --git a/plugins/CoreVisualizations/templates/_dataTableViz_htmlTable.twig b/plugins/CoreVisualizations/templates/_dataTableViz_htmlTable.twig index f18a7afa99c09f75fce0eae127ee8c5e9cf10d58..0cfd21266b1fddcf41f6548f2d6786765d3d2b0b 100644 --- a/plugins/CoreVisualizations/templates/_dataTableViz_htmlTable.twig +++ b/plugins/CoreVisualizations/templates/_dataTableViz_htmlTable.twig @@ -36,7 +36,7 @@ {% endfor %} </tr> {% endif %} - + {# display subtable if present and showing expanded datatable #} {% if properties.visualization_properties.show_expanded|default(false) and rowHasSubtable %} {% include "@CoreVisualizations/_dataTableViz_htmlTable.twig" with {'dataTable': row.getSubtable(), 'idSubtable': row.getIdSubDataTable()} %} diff --git a/plugins/ExampleVisualization/SimpleTable.php b/plugins/ExampleVisualization/SimpleTable.php index abd5c8aff2030d7fecbfd93bcbbadde64ada3807..07e686e8fddc52a3790a4a7d0d28ac4ea59359ef 100644 --- a/plugins/ExampleVisualization/SimpleTable.php +++ b/plugins/ExampleVisualization/SimpleTable.php @@ -13,7 +13,7 @@ namespace Piwik\Plugins\ExampleVisualization; use Piwik\DataTable; use Piwik\DataTable\DataTableInterface; -use Piwik\ViewDataTable\Visualization; +use Piwik\Plugin\Visualization; use Piwik\Visualization\Config; use Piwik\Visualization\Request; @@ -34,33 +34,33 @@ class SimpleTable extends Visualization $this->vizTitle = 'MyAwesomeTitle'; } - public function configureVisualization(Config $properties) + public function configureVisualization() { // Configure how your visualization should look like, for instance you can disable search - // $properties->show_search = false + // $this->config->show_search = false } - public function beforeLoadDataTable(Request $request, Config $properties) + public function beforeLoadDataTable() { // Here you can change the request that is sent to the API, for instance - // $properties->filter_sort_order = 'desc'; + // $this->requestConfig->filter_sort_order = 'desc'; } - public function beforeGenericFiltersAreAppliedToLoadedDataTable(DataTableInterface $dataTable, Config $properties, Request $request) + public function beforeGenericFiltersAreAppliedToLoadedDataTable() { // this hook is executed before generic filters like "filter_limit" and "filter_offset" are applied // Usage: - // $dateTable->filter($nameOrClosure); + // $this->dateTable->filter($nameOrClosure); } - public function afterGenericFiltersAreAppliedToLoadedDataTable(DataTableInterface $dataTable, Config $properties, Request $request) + public function afterGenericFiltersAreAppliedToLoadedDataTable() { // this hook is executed after generic filters like "filter_limit" and "filter_offset" are applied // Usage: - // $dateTable->filter($nameOrClosure, $parameters); + // $this->dateTable->filter($nameOrClosure, $parameters); } - public function afterAllFilteresAreApplied(DataTableInterface $dataTable, Config $properties, Request $request) + public function afterAllFilteresAreApplied() { // this hook is executed after the data table is loaded and after all filteres are applied. // format your data here that you want to pass to the view diff --git a/plugins/Live/VisitorLog.php b/plugins/Live/VisitorLog.php index 88b7260bbe9eb8f3fd22ba1c635423a50b139754..6383a9b07c23a0d503af77ea589935fd80b0ffb5 100644 --- a/plugins/Live/VisitorLog.php +++ b/plugins/Live/VisitorLog.php @@ -11,7 +11,7 @@ namespace Piwik\Plugins\Live; use Piwik\View; -use Piwik\ViewDataTable\Visualization; +use Piwik\Plugin\Visualization; use Piwik\Visualization\Config; /** @@ -31,8 +31,8 @@ class VisitorLog extends Visualization /** * Configure visualization. */ - public function configureVisualization(Config $properties) + public function configureVisualization() { - $properties->datatable_js_type = 'VisitorLog'; + $this->config->datatable_js_type = 'VisitorLog'; } } \ No newline at end of file