diff --git a/core/ViewDataTable.php b/core/ViewDataTable.php index 05d62e4cc8b9bbf11bf58f01799722a4938231df..b8a2d8616fb840761f4da6244227b424b78ff374 100644 --- a/core/ViewDataTable.php +++ b/core/ViewDataTable.php @@ -1110,9 +1110,15 @@ class ViewDataTable $this->overrideViewProperties(); try { + + $visualization->beforeLoadDataTable(); + $this->loadDataTableFromAPI(); $this->postDataTableLoadedFromAPI(); $this->executeAfterDataLoadedCallbacks(); + + $visualization->afterLoadDataTable(); + } catch (NoAccessException $e) { throw $e; } catch (\Exception $e) { diff --git a/core/ViewDataTable/Visualization.php b/core/ViewDataTable/Visualization.php index 0eb4543d22ac100ca393ee0ef126a5e7a84f2957..2920638979e7464b89e1b4ec93faf6e44f300621 100644 --- a/core/ViewDataTable/Visualization.php +++ b/core/ViewDataTable/Visualization.php @@ -14,6 +14,7 @@ namespace Piwik\ViewDataTable; use Piwik\DataTable; use Piwik\Piwik; use Piwik\View; +use Piwik\ViewDataTable; /** * Base class for all DataTable visualizations. Different visualizations are used to @@ -29,10 +30,16 @@ abstract class Visualization extends View protected $templateFile = ''; + /** + * @var ViewDataTable + */ + protected $viewDataTable; + public function __construct($view) { parent::__construct($this->templateFile); + $this->viewDataTable = $view; $this->init($view); } @@ -41,6 +48,16 @@ abstract class Visualization extends View // do your stuff here, do not overwrite constructor } + public function beforeLoadDataTable() + { + + } + + public function afterLoadDataTable() + { + + } + /** * Default implementation of getDefaultPropertyValues static function. *