From a5bbfbf9bc18d29f0aad91e3a67c70d2736f93f5 Mon Sep 17 00:00:00 2001
From: Benaka Moorthi <benaka.moorthi@gmail.com>
Date: Sun, 28 Jul 2013 14:34:42 -0400
Subject: [PATCH] Refs #4040, convert DevicesDetection plugin to use display
 properties instead of ViewDataTable methods.

---
 plugins/DevicesDetection/Controller.php       |  84 ++-----------
 plugins/DevicesDetection/DevicesDetection.php | 115 ++++++++++++++++++
 2 files changed, 122 insertions(+), 77 deletions(-)

diff --git a/plugins/DevicesDetection/Controller.php b/plugins/DevicesDetection/Controller.php
index 56ee810556..94584e60b9 100644
--- a/plugins/DevicesDetection/Controller.php
+++ b/plugins/DevicesDetection/Controller.php
@@ -11,24 +11,6 @@
  */
 class Piwik_DevicesDetection_Controller extends Piwik_Controller
 {
-
-    /** The set of related reports displayed under the 'Operating Systems' header. */
-    private $osRelatedReports = null;
-    private $browserRelatedReports = null;
-
-    public function __construct()
-    {
-        parent::__construct();
-        $this->osRelatedReports = array(
-            'DevicesDetection.getOsFamilies' => Piwik_Translate('DeviceDetection_OperatingSystemFamilies'),
-            'DevicesDetection.getOsVersions' => Piwik_Translate('DeviceDetection_OperatingSystemVersions')
-        );
-        $this->browserRelatedReports = array(
-            'DevicesDetection.getBrowserFamilies' => Piwik_Translate('DevicesDetection_BrowsersFamily'),
-            'DevicesDetection.getBrowserVersions' => Piwik_Translate('DevicesDetection_BrowserVersions')
-        );
-    }
-
     public function index($fetch = false)
     {
         $view = new Piwik_View('@DevicesDetection/index');
@@ -43,88 +25,37 @@ class Piwik_DevicesDetection_Controller extends Piwik_Controller
 
     public function getType($fetch = false)
     {
-        $view = $this->getStandardDataTableUserSettings(
-                __FUNCTION__, 'DevicesDetection.getType'
-        );
-
-        $view->setColumnTranslation('label', Piwik_Translate("DevicesDetection_dataTableLabelTypes"));
-        return $this->renderView($view, $fetch);
+        return Piwik_ViewDataTable::render($this->pluginName, __FUNCTION__, $fetch);
     }
 
     public function getBrand($fetch = false)
     {
-        $view = $this->getStandardDataTableUserSettings(
-                __FUNCTION__, 'DevicesDetection.getBrand'
-        );
-
-        $view->setColumnTranslation('label', Piwik_Translate("DevicesDetection_dataTableLabelBrands"));
-        return $this->renderView($view, $fetch);
+        return Piwik_ViewDataTable::render($this->pluginName, __FUNCTION__, $fetch);
     }
 
     public function getModel($fetch = false)
     {
-        $view = $this->getStandardDataTableUserSettings(
-                __FUNCTION__, 'DevicesDetection.getModel'
-        );
-
-        $view->setColumnTranslation('label', Piwik_Translate("DevicesDetection_dataTableLabelModels"));
-
-        return $this->renderView($view, $fetch);
+        return Piwik_ViewDataTable::render($this->pluginName, __FUNCTION__, $fetch);
     }
 
     public function getOsFamilies($fetch = false)
     {
-        $view = $this->getStandardDataTableUserSettings(
-                __FUNCTION__, 'DevicesDetection.getOsFamilies'
-        );
-
-        $view->setColumnTranslation('label', Piwik_Translate("DevicesDetection_dataTableLabelSystemFamily"));
-        $view->addRelatedReports(Piwik_Translate('DeviceDetection_OperatingSystemFamilies'), $this->osRelatedReports);
-        return $this->renderView($view, $fetch);
+        return Piwik_ViewDataTable::render($this->pluginName, __FUNCTION__, $fetch);
     }
 
     public function getOsVersions($fetch = false)
     {
-        $view = $this->getStandardDataTableUserSettings(
-                __FUNCTION__, 'DevicesDetection.getOsVersions'
-        );
-
-        $view->setColumnTranslation('label', Piwik_Translate("DevicesDetection_dataTableLabelSystemVersion"));
-        $view->addRelatedReports(Piwik_Translate('DeviceDetection_OperatingSystemVersions'), $this->osRelatedReports);
-        return $this->renderView($view, $fetch);
+        return Piwik_ViewDataTable::render($this->pluginName, __FUNCTION__, $fetch);
     }
 
     public function getBrowserFamilies($fetch = false)
     {
-        $view = $this->getStandardDataTableUserSettings(
-                __FUNCTION__, 'DevicesDetection.getBrowserFamilies'
-        );
-
-        $view->setColumnTranslation('label', Piwik_Translate("DevicesDetection_dataTableLabelBrowserFamily"));
-        $view->addRelatedReports(Piwik_Translate('DevicesDetection_BrowsersFamily'), $this->browserRelatedReports);
-        return $this->renderView($view, $fetch);
+        return Piwik_ViewDataTable::render($this->pluginName, __FUNCTION__, $fetch);
     }
 
     public function getBrowserVersions($fetch = false)
     {
-        $view = $this->getStandardDataTableUserSettings(
-                __FUNCTION__, 'DevicesDetection.getBrowserVersions'
-        );
-
-        $view->setColumnTranslation('label', Piwik_Translate("DevicesDetection_dataTableLabelBrowserVersion"));
-        $view->addRelatedReports(Piwik_Translate('DevicesDetection_BrowserVersions'), $this->browserRelatedReports);
-        return $this->renderView($view, $fetch);
-    }
-
-    protected function getStandardDataTableUserSettings($currentControllerAction, $APItoCall, $defaultDatatableType = null)
-    {
-        $view = Piwik_ViewDataTable::factory($defaultDatatableType);
-        $view->init($this->pluginName, $currentControllerAction, $APItoCall);
-        $view->disableSearchBox();
-        $view->disableExcludeLowPopulation();
-        $this->setPeriodVariablesView($view);
-        $this->setMetricsVariablesView($view);
-        return $view;
+        return Piwik_ViewDataTable::render($this->pluginName, __FUNCTION__, $fetch);
     }
 
     /**
@@ -174,5 +105,4 @@ class Piwik_DevicesDetection_Controller extends Piwik_Controller
                     WHERE idvisit = " . $idVisit;
         Piwik_Query($q);
     }
-
 }
diff --git a/plugins/DevicesDetection/DevicesDetection.php b/plugins/DevicesDetection/DevicesDetection.php
index e86c5d9a98..4d3424f377 100644
--- a/plugins/DevicesDetection/DevicesDetection.php
+++ b/plugins/DevicesDetection/DevicesDetection.php
@@ -14,6 +14,23 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/DevicesDetection/functions.php';
 
 class Piwik_DevicesDetection extends Piwik_Plugin
 {
+    /** The set of related reports displayed under the 'Operating Systems' header. */
+    private $osRelatedReports = null;
+    private $browserRelatedReports = null;
+
+    public function __construct()
+    {
+        parent::__construct();
+        $this->osRelatedReports = array(
+            'DevicesDetection.getOsFamilies' => Piwik_Translate('DeviceDetection_OperatingSystemFamilies'),
+            'DevicesDetection.getOsVersions' => Piwik_Translate('DeviceDetection_OperatingSystemVersions')
+        );
+        $this->browserRelatedReports = array(
+            'DevicesDetection.getBrowserFamilies' => Piwik_Translate('DevicesDetection_BrowsersFamily'),
+            'DevicesDetection.getBrowserVersions' => Piwik_Translate('DevicesDetection_BrowserVersions')
+        );
+    }
+
     /**
      * @see Piwik_Plugin::getInformation
      */
@@ -41,6 +58,7 @@ class Piwik_DevicesDetection extends Piwik_Plugin
             'WidgetsList.add' => 'addWidgets',
             'API.getReportMetadata' => 'getReportMetadata',
             'API.getSegmentsMetadata' => 'getSegmentsMetadata',
+            'ViewDataTable.getReportDisplayProperties' => 'getReportDisplayProperties',
         );
     }
 
@@ -246,4 +264,101 @@ class Piwik_DevicesDetection extends Piwik_Plugin
     {
         Piwik_AddMenu('General_Visitors', 'DevicesDetection_submenu', array('module' => 'DevicesDetection', 'action' => 'index'));
     }
+
+    public function getReportDisplayProperties(&$properties)
+    {
+        $properties['DevicesDetection.getType'] = $this->getDisplayPropertiesForGetType();
+        $properties['DevicesDetection.getBrand'] = $this->getDisplayPropertiesForGetBrand();
+        $properties['DevicesDetection.getModel'] = $this->getDisplayPropertiesForGetModel();
+        $properties['DevicesDetection.getOsFamilies'] = $this->getDisplayPropertiesForGetOsFamilies();
+        $properties['DevicesDetection.getOsVersions'] = $this->getDisplayPropertiesForGetOsVersions();
+        $properties['DevicesDetection.getBrowserFamilies'] = $this->getDisplayPropertiesForGetBrowserFamilies();
+        $properties['DevicesDetection.getBrowserVersions'] = $this->getDisplayPropertiesForGetBrowserVersions();
+    }
+
+    private function getDisplayPropertiesForGetType()
+    {
+        return array(
+            'show_search' => false,
+            'show_exclude_low_population' => false,
+            'translations' => array('label' => Piwik_Translate("DevicesDetection_dataTableLabelTypes"))
+        );
+    }
+
+    private function getDisplayPropertiesForGetBrand()
+    {
+        return array(
+            'show_search' => false,
+            'show_exclude_low_population' => false,
+            'translations' => array('label' => Piwik_Translate("DevicesDetection_dataTableLabelBrands"))
+        );
+    }
+
+    private function getDisplayPropertiesForGetModel()
+    {
+        return array(
+            'show_search' => false,
+            'show_exclude_low_population' => false,
+            'translations' => array('label' => Piwik_Translate("DevicesDetection_dataTableLabelModels"))
+        );
+    }
+
+    private function getDisplayPropertiesForGetOsFamilies()
+    {
+        return array(
+            'show_search' => false,
+            'show_exclude_low_population' => false,
+            'translations' => array('label' => Piwik_Translate("DevicesDetection_dataTableLabelSystemFamily")),
+            'title' => Piwik_Translate('DeviceDetection_OperatingSystemFamilies'),
+            'relatedReports' => $this->getOsRelatedReports()
+        );
+    }
+
+    private function getDisplayPropertiesForGetOsVersions()
+    {
+        return array(
+            'show_search' => false,
+            'show_exclude_low_population' => false,
+            'translations' => array('label' => Piwik_Translate("DevicesDetection_dataTableLabelSystemVersion")),
+            'title' => Piwik_Translate('DeviceDetection_OperatingSystemVersions'),
+            'relatedReports' => $this->getOsRelatedReports()
+        );
+    }
+
+    private function getDisplayPropertiesForGetBrowserFamilies()
+    {
+        return array(
+            'show_search' => false,
+            'show_exclude_low_population' => false,
+            'translations' => array('label' => Piwik_Translate("DevicesDetection_dataTableLabelBrowserFamily")),
+            'title' => Piwik_Translate('DevicesDetection_BrowsersFamily'),
+            'relatedReports' => $this->getBrowserRelatedReports()
+        );
+    }
+
+    private function getDisplayPropertiesForGetBrowserVersions()
+    {
+        return array(
+            'show_search' => false,
+            'show_exclude_low_population' => false,
+            'translations' => array('label' => Piwik_Translate("DevicesDetection_dataTableLabelBrowserVersion")),
+            'relatedReports' => $this->getBrowserRelatedReports()
+        );
+    }
+
+    private function getOsRelatedReports()
+    {
+        return array(
+            'DevicesDetection.getOsFamilies' => Piwik_Translate('DeviceDetection_OperatingSystemFamilies'),
+            'DevicesDetection.getOsVersions' => Piwik_Translate('DeviceDetection_OperatingSystemVersions')
+        );
+    }
+
+    private function getBrowserRelatedReports()
+    {
+        return array(
+            'DevicesDetection.getBrowserFamilies' => Piwik_Translate('DevicesDetection_BrowsersFamily'),
+            'DevicesDetection.getBrowserVersions' => Piwik_Translate('DevicesDetection_BrowserVersions')
+        );
+    }
 }
-- 
GitLab