From d1abe71def94d4ff60d072a8ccd1bdd2016d7634 Mon Sep 17 00:00:00 2001
From: Thomas Steur <thomas.steur@gmail.com>
Date: Mon, 21 Oct 2013 04:01:32 +0000
Subject: [PATCH] moved disable_*_filters to requestConfig

---
 core/Plugin/Visualization.php        |  6 ++--
 core/ViewDataTable/Config.php        | 49 --------------------------
 core/ViewDataTable/RequestConfig.php | 52 +++++++++++++++++++++++++++-
 plugins/Live/Live.php                | 52 ----------------------------
 plugins/Live/VisitorLog.php          | 36 +++++++++++++++++++
 5 files changed, 90 insertions(+), 105 deletions(-)

diff --git a/core/Plugin/Visualization.php b/core/Plugin/Visualization.php
index c953f64145..ae73d4b769 100644
--- a/core/Plugin/Visualization.php
+++ b/core/Plugin/Visualization.php
@@ -61,7 +61,7 @@ class Visualization extends ViewDataTable
 
             $this->beforeLoadDataTable();
 
-            $this->loadDataTableFromAPI(array('disable_generic_filters' => 1));
+            $this->loadDataTableFromAPI(array('disable_generic_filters' => 1, 'disable_queued_filters' => 1));
             $this->postDataTableLoadedFromAPI();
 
             $requestPropertiesAfterLoadDataTable = $this->requestConfig->getProperties();
@@ -194,7 +194,7 @@ class Visualization extends ViewDataTable
 
         $this->beforeGenericFiltersAreAppliedToLoadedDataTable();
 
-        if (!$this->config->areGenericFiltersDisabled()) {
+        if (!$this->requestConfig->areGenericFiltersDisabled()) {
             $this->applyGenericFilters();
         }
 
@@ -207,7 +207,7 @@ class Visualization extends ViewDataTable
 
         // Finally, apply datatable filters that were queued (should be 'presentation' filters that
         // do not affect the number of rows)
-        if (!$this->config->areQueuedFiltersDisabled()) {
+        if (!$this->requestConfig->areQueuedFiltersDisabled()) {
             $this->dataTable->applyQueuedFilters();
         }
     }
diff --git a/core/ViewDataTable/Config.php b/core/ViewDataTable/Config.php
index 233f9f21c8..7e4119ed9e 100644
--- a/core/ViewDataTable/Config.php
+++ b/core/ViewDataTable/Config.php
@@ -38,8 +38,6 @@ class Config
      */
     public $overridableProperties = array(
         'show_goals',
-        'disable_generic_filters',
-        'disable_queued_filters',
         'show_exclude_low_population',
         'show_flatten_table',
         'show_table',
@@ -235,24 +233,6 @@ class Config
      */
     public $custom_parameters = array();
 
-    /**
-     * Whether to run generic filters on the DataTable before rendering or not.
-     *
-     * @see Piwik_API_DataTableGenericFilter
-     *
-     * Default value: false
-     */
-    public $disable_generic_filters = false;
-
-    /**
-     * Whether to run ViewDataTable's list of queued filters or not.
-     *
-     * NOTE: Priority queued filters are always run.
-     *
-     * Default value: false
-     */
-    public $disable_queued_filters = false;
-
     /**
      * Controls whether the limit dropdown (which allows users to change the number of data shown)
      * is always shown or not.
@@ -496,35 +476,6 @@ class Config
         return get_object_vars($this);
     }
 
-    /**
-     * Returns true if queued filters have been disabled, false if otherwise.
-     *
-     * @return bool
-     */
-    public function areQueuedFiltersDisabled()
-    {
-        return isset($this->disable_queued_filters) && $this->disable_queued_filters;
-    }
-
-    /**
-     * Returns true if generic filters have been disabled, false if otherwise.
-     *
-     * @return bool
-     */
-    public function areGenericFiltersDisabled()
-    {
-        // if disable_generic_filters query param is set to '1', generic filters are disabled
-        if (Common::getRequestVar('disable_generic_filters', '0', 'string') == 1) {
-            return true;
-        }
-
-        if (isset($this->disable_generic_filters) && true === $this->disable_generic_filters) {
-            return true;
-        }
-
-        return false;
-    }
-
     public function setDefaultColumnsToDisplay($columns, $hasNbVisits, $hasNbUniqVisitors)
     {
         if ($hasNbVisits || $hasNbUniqVisitors) {
diff --git a/core/ViewDataTable/RequestConfig.php b/core/ViewDataTable/RequestConfig.php
index c92b0a3ef7..2e9a83092b 100644
--- a/core/ViewDataTable/RequestConfig.php
+++ b/core/ViewDataTable/RequestConfig.php
@@ -10,6 +10,7 @@
  */
 
 namespace Piwik\ViewDataTable;
+use Piwik\Common;
 
 /**
  * Renders a sparkline image given a PHP data array.
@@ -43,7 +44,9 @@ class RequestConfig
         'filter_pattern',
         'filter_column',
         'filter_excludelowpop',
-        'filter_excludelowpop_value'
+        'filter_excludelowpop_value',
+        'disable_generic_filters',
+        'disable_queued_filters'
     );
 
     /**
@@ -119,6 +122,24 @@ class RequestConfig
      */
     public $request_parameters_to_modify = array();
 
+    /**
+     * Whether to run generic filters on the DataTable before rendering or not.
+     *
+     * @see Piwik_API_DataTableGenericFilter
+     *
+     * Default value: false
+     */
+    public $disable_generic_filters = false;
+
+    /**
+     * Whether to run ViewDataTable's list of queued filters or not.
+     *
+     * NOTE: Priority queued filters are always run.
+     *
+     * Default value: false
+     */
+    public $disable_queued_filters = false;
+
     public $apiMethodToRequestDataTable = '';
 
     /**
@@ -159,6 +180,35 @@ class RequestConfig
         $this->filter_sort_order = 'desc';
     }
 
+    /**
+     * Returns true if queued filters have been disabled, false if otherwise.
+     *
+     * @return bool
+     */
+    public function areQueuedFiltersDisabled()
+    {
+        return isset($this->disable_queued_filters) && $this->disable_queued_filters;
+    }
+
+    /**
+     * Returns true if generic filters have been disabled, false if otherwise.
+     *
+     * @return bool
+     */
+    public function areGenericFiltersDisabled()
+    {
+        // if disable_generic_filters query param is set to '1', generic filters are disabled
+        if (Common::getRequestVar('disable_generic_filters', '0', 'string') == 1) {
+            return true;
+        }
+
+        if (isset($this->disable_generic_filters) && true === $this->disable_generic_filters) {
+            return true;
+        }
+
+        return false;
+    }
+
     public function getApiModuleToRequest()
     {
         list($module, $method) = explode('.', $this->apiMethodToRequestDataTable);
diff --git a/plugins/Live/Live.php b/plugins/Live/Live.php
index fd73ccadf1..e1640cb353 100644
--- a/plugins/Live/Live.php
+++ b/plugins/Live/Live.php
@@ -35,7 +35,6 @@ class Live extends \Piwik\Plugin
             'AssetManager.getStylesheetFiles'        => 'getStylesheetFiles',
             'WidgetsList.addWidgets'                 => 'addWidget',
             'Menu.Reporting.addItems'                => 'addMenu',
-            'ViewDataTable.configure'                => 'configureViewDataTable',
             'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
             'ViewDataTable.getDefaultType'           => 'getDefaultTypeViewDataTable'
         );
@@ -76,59 +75,8 @@ class Live extends \Piwik\Plugin
         $translationKeys[] = "Live_PageRefreshed";
     }
 
-    public function configureViewDataTable(ViewDataTable $view)
-    {
-        switch ($view->requestConfig->apiMethodToRequestDataTable) {
-            case 'Live.getLastVisitsDetails':
-                $this->configureViewForGetLastVisitsDetails($view);
-                break;
-        }
-    }
-
     public function getDefaultTypeViewDataTable(&$defaultViewTypes)
     {
         $defaultViewTypes['Live.getLastVisitsDetails'] = VisitorLog::ID;
     }
-
-    private function configureViewForGetLastVisitsDetails(ViewDataTable $view)
-    {
-        $view->config->disable_generic_filters = true;
-        $view->config->enable_sort = false;
-        $view->config->show_search = false;
-        $view->config->show_exclude_low_population = false;
-        $view->config->show_offset_information     = false;
-        $view->config->show_all_views_icons      = false;
-        $view->config->show_table_all_columns      = false;
-        $view->config->show_export_as_rss_feed     = false;
-
-        $view->requestConfig->filter_sort_column = 'idVisit';
-        $view->requestConfig->filter_sort_order  = 'asc';
-        $view->requestConfig->filter_limit       = 20;
-
-        $view->config->documentation = Piwik::translate('Live_VisitorLogDocumentation', array('<br />', '<br />'));
-        $view->config->custom_parameters = array(
-            // set a very high row count so that the next link in the footer of the data table is always shown
-            'totalRows'         => 10000000,
-
-            'filterEcommerce'   => Common::getRequestVar('filterEcommerce', 0, 'int'),
-            'pageUrlNotDefined' => Piwik::translate('General_NotDefined', Piwik::translate('Actions_ColumnPageURL'))
-        );
-
-        $view->config->footer_icons = array(
-            array(
-                'class'   => 'tableAllColumnsSwitch',
-                'buttons' => array(
-                    array(
-                        'id'    => 'Piwik\\Plugins\\Live\\VisitorLog',
-                        'title' => Piwik::translate('Live_LinkVisitorLog'),
-                        'icon'  => 'plugins/Zeitgeist/images/table.png'
-                    )
-                )
-            )
-        );
-
-        if ($view->isViewDataTableId(HtmlTable::ID)) {
-            $view->config->disable_row_actions = true;
-        }
-    }
 }
\ No newline at end of file
diff --git a/plugins/Live/VisitorLog.php b/plugins/Live/VisitorLog.php
index 4fd5ffd5aa..c886b3c201 100644
--- a/plugins/Live/VisitorLog.php
+++ b/plugins/Live/VisitorLog.php
@@ -10,6 +10,8 @@
  */
 namespace Piwik\Plugins\Live;
 
+use Piwik\Common;
+use Piwik\Piwik;
 use Piwik\View;
 use Piwik\Plugin\Visualization;
 
@@ -29,6 +31,11 @@ class VisitorLog extends Visualization
             'filter_sort_column',
             'filter_sort_order',
         ));
+
+        $this->requestConfig->filter_sort_column = 'idVisit';
+        $this->requestConfig->filter_sort_order  = 'asc';
+        $this->requestConfig->filter_limit       = 20;
+        $this->requestConfig->disable_generic_filters = true;
     }
 
     /**
@@ -37,5 +44,34 @@ class VisitorLog extends Visualization
     public function beforeRender()
     {
         $this->config->datatable_js_type = 'VisitorLog';
+        $this->config->enable_sort       = false;
+        $this->config->show_search       = false;
+        $this->config->show_exclude_low_population = false;
+        $this->config->show_offset_information     = false;
+        $this->config->show_all_views_icons        = false;
+        $this->config->show_table_all_columns      = false;
+        $this->config->show_export_as_rss_feed     = false;
+
+        $this->config->documentation = Piwik::translate('Live_VisitorLogDocumentation', array('<br />', '<br />'));
+        $this->config->custom_parameters = array(
+            // set a very high row count so that the next link in the footer of the data table is always shown
+            'totalRows'         => 10000000,
+
+            'filterEcommerce'   => Common::getRequestVar('filterEcommerce', 0, 'int'),
+            'pageUrlNotDefined' => Piwik::translate('General_NotDefined', Piwik::translate('Actions_ColumnPageURL'))
+        );
+
+        $this->config->footer_icons = array(
+            array(
+                'class'   => 'tableAllColumnsSwitch',
+                'buttons' => array(
+                    array(
+                        'id'    => 'Piwik\\Plugins\\Live\\VisitorLog',
+                        'title' => Piwik::translate('Live_LinkVisitorLog'),
+                        'icon'  => 'plugins/Zeitgeist/images/table.png'
+                    )
+                )
+            )
+        );
     }
 }
\ No newline at end of file
-- 
GitLab