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:
authorThomas Steur <thomas.steur@gmail.com>2013-10-16 08:07:16 +0400
committerThomas Steur <thomas.steur@gmail.com>2013-10-16 08:07:16 +0400
commit74117a851377fba8d439d349dc82ca1e3c2db3ee (patch)
tree196a40b519d42e017fefdd16dfc5b29cf7638b7e
parentfd5ee5a95d3b4f2edfd68bdb90d7e771d3508d1c (diff)
removed more magic, force visualization developers to define an ID: I do not like it when there are two ways to define an ID
-rw-r--r--core/Plugin/ViewDataTable.php45
-rw-r--r--plugins/ExampleVisualization/SimpleTable.php1
2 files changed, 25 insertions, 21 deletions
diff --git a/core/Plugin/ViewDataTable.php b/core/Plugin/ViewDataTable.php
index 2534243aec..8da59f8118 100644
--- a/core/Plugin/ViewDataTable.php
+++ b/core/Plugin/ViewDataTable.php
@@ -62,6 +62,7 @@ use \Piwik\ViewDataTable\Request as ViewDataTableRequest;
*/
abstract class ViewDataTable implements ViewInterface
{
+ const ID = '';
const CONFIGURE_FOOTER_ICONS_EVENT = 'Visualization.configureFooterIcons';
/**
@@ -129,11 +130,14 @@ abstract class ViewDataTable implements ViewInterface
$this->overrideViewPropertiesWithQueryParams();
}
- public function __call($method, $args)
+ public function getDefaultConfig()
{
- if (property_exists($this, $method)) {
- return $this->$method;
- }
+ return new VizConfig();
+ }
+
+ public function getDefaultRequestConfig()
+ {
+ return new VizRequest();
}
protected function loadDataTableFromAPI()
@@ -155,15 +159,19 @@ abstract class ViewDataTable implements ViewInterface
* Returns the viewDataTable ID for this DataTable visualization. Derived classes
* should declare a const ID field with the viewDataTable ID.
*
+ * @throws \Exception
* @return string
*/
public static function getViewDataTableId()
{
- if (defined('static::ID')) {
- return static::ID;
- } else {
- return get_called_class();
+ $id = static::ID;
+
+ if (empty($id)) {
+ $message = sprintf('ViewDataTable %s does not define an ID. Set the ID constant to fix this issue', get_called_class());
+ throw new \Exception($message);
}
+
+ return $id;
}
/**
@@ -279,7 +287,10 @@ abstract class ViewDataTable implements ViewInterface
$result = array();
foreach ($klasses as $klass) {
- $result[] = $klass::getViewDataTableId();
+ if ('Piwik\\Plugin\\ViewDataTable' != $klass
+ && 'Piwik\\Plugin\\Visualization' != $klass) {
+ $result[] = $klass::getViewDataTableId();
+ }
}
return $result;
@@ -431,8 +442,8 @@ abstract class ViewDataTable implements ViewInterface
}
if ($this->config->show_non_core_visualizations) {
- $nonCoreVisualizations = \Piwik\ViewDataTable::getNonCoreVisualizations();
- $nonCoreVisualizationInfo = Visualization::getVisualizationInfoFor($nonCoreVisualizations);
+ $nonCoreVisualizations = \Piwik\ViewDataTable::getNonCoreVisualizations();
+ $nonCoreVisualizationInfo = static::getVisualizationInfoFor($nonCoreVisualizations);
foreach ($nonCoreVisualizationInfo as $format => $info) {
$graphViewIcons['buttons'][] = array(
@@ -495,20 +506,12 @@ abstract class ViewDataTable implements ViewInterface
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 function getDefaultConfig()
- {
- return new VizConfig();
- }
- public function getDefaultRequestConfig()
- {
- return new VizRequest();
+ return $result;
}
protected function convertForJson($value)
diff --git a/plugins/ExampleVisualization/SimpleTable.php b/plugins/ExampleVisualization/SimpleTable.php
index 9472e47d34..304d69efb9 100644
--- a/plugins/ExampleVisualization/SimpleTable.php
+++ b/plugins/ExampleVisualization/SimpleTable.php
@@ -19,6 +19,7 @@ use Piwik\Plugin\Visualization;
*/
class SimpleTable extends Visualization
{
+ const ID = 'simpleTable';
const TEMPLATE_FILE = '@ExampleVisualization/simpleTable.twig';
const FOOTER_ICON_TITLE = 'Simple Table';
const FOOTER_ICON = 'plugins/ExampleVisualization/images/table.png';