diff --git a/application/controllers/system/Filters.php b/application/controllers/system/Filters.php index fcf37f158..648868d61 100644 --- a/application/controllers/system/Filters.php +++ b/application/controllers/system/Filters.php @@ -39,11 +39,11 @@ class Filters extends VileSci_Controller $session = $this->_readSession($this->_getFilterUniqueId()); - $json->selectedFields = $session['selectedFields']; - $json->columnsAliases = $session['columnsAliases']; - $json->additionalColumns = $session['additionalColumns']; - $json->checkboxes = $session['checkboxes']; - $json->dataset = $session['dataset']; + $json->selectedFields = $this->_getFromSession('selectedFields'); + $json->columnsAliases = $this->_getFromSession('columnsAliases'); + $json->additionalColumns = $this->_getFromSession('additionalColumns'); + $json->checkboxes = $this->_getFromSession('checkboxes'); + $json->dataset = $this->_getFromSession('dataset'); $this->output->set_content_type('application/json')->set_output(json_encode($json)); } @@ -57,11 +57,11 @@ class Filters extends VileSci_Controller $session = $this->_readSession($this->_getFilterUniqueId()); - $json->allSelectedFields = $session['allSelectedFields']; - $json->allColumnsAliases = $session['allColumnsAliases']; + $json->allSelectedFields = $this->_getFromSession('allSelectedFields'); + $json->allColumnsAliases = $this->_getFromSession('allColumnsAliases'); - $json->selectedFields = $session['selectedFields']; - $json->columnsAliases = $session['columnsAliases']; + $json->selectedFields = $this->_getFromSession('selectedFields'); + $json->columnsAliases = $this->_getFromSession('columnsAliases'); $this->output->set_content_type('application/json')->set_output(json_encode($json)); } @@ -79,11 +79,11 @@ class Filters extends VileSci_Controller $session = $this->_readSession($filterUniqueId); - $allSelectedFields = $session['allSelectedFields']; - $allColumnsAliases = $session['allColumnsAliases']; + $allSelectedFields = $this->_getFromSession('allSelectedFields'); + $allColumnsAliases = $this->_getFromSession('allColumnsAliases'); - $json->selectedFields = $session['selectedFields']; - $json->columnsAliases = $session['columnsAliases']; + $json->selectedFields = $this->_getFromSession('selectedFields'); + $json->columnsAliases = $this->_getFromSession('columnsAliases'); if (isset($selectedFieldsLst) && is_array($selectedFieldsLst)) { @@ -121,10 +121,10 @@ class Filters extends VileSci_Controller $session = $this->_readSession($this->_getFilterUniqueId()); - $json->allSelectedFields = $session['allSelectedFields']; - $json->allColumnsAliases = $session['allColumnsAliases']; + $json->allSelectedFields = $this->_getFromSession('allSelectedFields'); + $json->allColumnsAliases = $this->_getFromSession('allColumnsAliases'); - $json->selectedFilters = $session['selectedFilters']; + $json->selectedFilters = $this->_getFromSession('selectedFilters'); $json->selectedFiltersAliases = array(); $json->selectedFiltersMetaData = array(); @@ -132,10 +132,10 @@ class Filters extends VileSci_Controller $json->selectedFiltersActiveFiltersOperation = array(); $json->selectedFiltersActiveFiltersOption = array(); - $metaData = $session['metaData']; - $activeFilters = $session['activeFilters']; - $activeFiltersOperation = $session['activeFiltersOperation']; - $activeFiltersOption = $session['activeFiltersOption']; + $metaData = $this->_getFromSession('metaData'); + $activeFilters = $this->_getFromSession('activeFilters'); + $activeFiltersOperation = $this->_getFromSession('activeFiltersOperation'); + $activeFiltersOption = $this->_getFromSession('activeFiltersOption'); for ($i = 0; $i < count($json->selectedFilters); $i++) { @@ -302,11 +302,11 @@ class Filters extends VileSci_Controller $session = $this->_readSession($filterUniqueId); - $allSelectedFields = $session['allSelectedFields']; - $allColumnsAliases = $session['allColumnsAliases']; + $allSelectedFields = $this->_getFromSession('allSelectedFields'); + $allColumnsAliases = $this->_getFromSession('allColumnsAliases'); - $selectedFields = $session['selectedFields']; - $columnsAliases = $session['columnsAliases']; + $selectedFields = $this->_getFromSession('selectedFields'); + $columnsAliases = $this->_getFromSession('columnsAliases'); if (($pos = array_search($fieldName, $selectedFields)) !== false) { @@ -341,10 +341,10 @@ class Filters extends VileSci_Controller $session = $this->_readSession($filterUniqueId); - $selectedFilters = $session['selectedFilters']; - $selectedFiltersActiveFilters = $session['activeFilters']; - $selectedFiltersActiveFiltersOperation = $session['activeFiltersOperation']; - $selectedFiltersActiveFiltersOption = $session['activeFiltersOption']; + $selectedFilters = $this->_getFromSession('selectedFilters'); + $selectedFiltersActiveFilters = $this->_getFromSession('activeFilters'); + $selectedFiltersActiveFiltersOperation = $this->_getFromSession('activeFiltersOperation'); + $selectedFiltersActiveFiltersOption = $this->_getFromSession('activeFiltersOption'); if (($pos = array_search($fieldName, $selectedFilters)) !== false) { @@ -379,11 +379,11 @@ class Filters extends VileSci_Controller $session = $this->_readSession($filterUniqueId); - $allSelectedFields = $session['allSelectedFields']; - $allColumnsAliases = $session['allColumnsAliases']; + $allSelectedFields = $this->_getFromSession('allSelectedFields'); + $allColumnsAliases = $this->_getFromSession('allColumnsAliases'); - $selectedFields = $session['selectedFields']; - $columnsAliases = $session['columnsAliases']; + $selectedFields = $this->_getFromSession('selectedFields'); + $columnsAliases = $this->_getFromSession('columnsAliases'); if (($pos = array_search($fieldName, $allSelectedFields)) !== false && array_search($fieldName, $selectedFields) === false) @@ -419,10 +419,10 @@ class Filters extends VileSci_Controller $session = $this->_readSession($filterUniqueId); - $selectedFilters = $session['selectedFilters']; - $selectedFiltersActiveFilters = $session['activeFilters']; - $selectedFiltersActiveFiltersOperation = $session['activeFiltersOperation']; - $selectedFiltersActiveFiltersOption = $session['activeFiltersOption']; + $selectedFilters = $this->_getFromSession('selectedFilters'); + $selectedFiltersActiveFilters = $this->_getFromSession('activeFilters'); + $selectedFiltersActiveFiltersOperation = $this->_getFromSession('activeFiltersOperation'); + $selectedFiltersActiveFiltersOption = $this->_getFromSession('activeFiltersOption'); if (!in_array($fieldName, $selectedFilters)) { @@ -487,7 +487,7 @@ class Filters extends VileSci_Controller $session = $this->_readSession($this->_getFilterUniqueId()); - $dataset = $session['dataset']; + $dataset = $this->_getFromSession('dataset'); if (is_array($dataset)) { @@ -540,4 +540,16 @@ class Filters extends VileSci_Controller return $_getFilterUniqueId; } + + /** + * + */ + private function _getFromSession($el) + { + $_getFromSession = null; + + if (isset($_SESSION[$el])) return $_SESSION[$el]; + + return $_getFromSession; + } } diff --git a/application/models/system/Filters_model.php b/application/models/system/Filters_model.php index d84cddf80..eb81dbb32 100644 --- a/application/models/system/Filters_model.php +++ b/application/models/system/Filters_model.php @@ -44,7 +44,6 @@ class Filters_model extends DB_Model $filterParametersArray = array( 'app' => $app, 'dataset_name' => $dataset_name, - 'default_filter' => false, 'array_length(description, 1) >' => 0, 'uid' => $uid ); diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index c209ae16b..fe74a661f 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -131,7 +131,7 @@ class FilterWidget extends Widget } // - if ($filterSessionArray[self::FILTER_ID] != $this->filterId) + if ($this->filterId <= 0 || $filterSessionArray[self::FILTER_ID] != $this->filterId) { // $this->_loadFilter(); @@ -143,75 +143,79 @@ class FilterWidget extends Widget // $this->FiltersModel->resetQuery(); - // - $this->dataset = @$this->FiltersModel->execReadOnlyQuery($this->_generateQuery()); - - // - $this->listFields = $this->FiltersModel->getExecutedQueryListFields(); - - // - $selectedFields = array(); - $filterSessionArray = $this->_readSession(); - if (isset($filterSessionArray[self::SELECTED_FIELDS])) + $query = $this->_generateQuery(); + if ($query != null) { - $selectedFields = $filterSessionArray[self::SELECTED_FIELDS]; - } + // + $this->dataset = @$this->FiltersModel->execReadOnlyQuery($query); - // - if (count($selectedFields) == 0) - { - $filterSessionArray[self::SELECTED_FIELDS] = $this->listFields; - } + // + $this->listFields = $this->FiltersModel->getExecutedQueryListFields(); - // - if ($this->columnsAliases != null && count($this->listFields) != count($this->columnsAliases)) - { - show_error('Parameter columnsAliases does not have a number of items equal to those returned by the query'); - } - - $filterSessionArray[self::COLUMNS_ALIASES] = $this->_getColumnAliasesFromPost(); - $filterSessionArray[self::CHECKBOXES] = $this->checkboxes; - - if ($this->app != null) - { - $filterSessionArray[self::APP_PARAMETER] = $this->app; - } - - if ($this->datasetName != null) - { - $filterSessionArray[self::DATASET_NAME_PARAMETER] = $this->datasetName; - } - - $filterSessionArray[self::ALL_SELECTED_FIELDS] = $this->listFields; - $filterSessionArray[self::ALL_COLUMNS_ALIASES] = $this->columnsAliases; - - /* ------------------------------------------------------------ */ - - $tmpDataset = null; - if (hasData($this->dataset)) - { - $tmpDataset = array(); - - for ($resultsCounter = 0; $resultsCounter < count($this->dataset->retval); $resultsCounter++) + // + $selectedFields = array(); + $filterSessionArray = $this->_readSession(); + if (isset($filterSessionArray[self::SELECTED_FIELDS])) { - $result = $this->dataset->retval[$resultsCounter]; - - $class = $this->_markRow($result); - $formattedResult = $this->_formatRaw($result); - $formattedResult->FILTER_CLASS_MARK_ROW = $class; - $tmpDataset[] = $formattedResult; + $selectedFields = $filterSessionArray[self::SELECTED_FIELDS]; } + + // + if (count($selectedFields) == 0) + { + $filterSessionArray[self::SELECTED_FIELDS] = $this->listFields; + } + + // + if ($this->columnsAliases != null && count($this->listFields) != count($this->columnsAliases)) + { + show_error('Parameter columnsAliases does not have a number of items equal to those returned by the query'); + } + + $filterSessionArray[self::COLUMNS_ALIASES] = $this->_getColumnAliasesFromPost(); + $filterSessionArray[self::CHECKBOXES] = $this->checkboxes; + + if ($this->app != null) + { + $filterSessionArray[self::APP_PARAMETER] = $this->app; + } + + if ($this->datasetName != null) + { + $filterSessionArray[self::DATASET_NAME_PARAMETER] = $this->datasetName; + } + + $filterSessionArray[self::ALL_SELECTED_FIELDS] = $this->listFields; + $filterSessionArray[self::ALL_COLUMNS_ALIASES] = $this->columnsAliases; + + /* ------------------------------------------------------------ */ + + $tmpDataset = null; + if (hasData($this->dataset)) + { + $tmpDataset = array(); + + for ($resultsCounter = 0; $resultsCounter < count($this->dataset->retval); $resultsCounter++) + { + $result = $this->dataset->retval[$resultsCounter]; + + $class = $this->_markRow($result); + $formattedResult = $this->_formatRaw($result); + $formattedResult->FILTER_CLASS_MARK_ROW = $class; + $tmpDataset[] = $formattedResult; + } + } + + $filterSessionArray[self::DATASET_PARAMETER] = $tmpDataset; + + /* ------------------------------------------------------------ */ + + // + $this->metaData = $this->FiltersModel->getExecutedQueryMetaData(); + + $filterSessionArray[self::METADATA_PARAMETER] = $this->metaData; } - $filterSessionArray[self::DATASET_PARAMETER] = $tmpDataset; - - /* ------------------------------------------------------------ */ - - // - $this->metaData = $this->FiltersModel->getExecutedQueryMetaData(); - - $filterSessionArray[self::METADATA_PARAMETER] = $this->metaData; - $this->_writeSession($filterSessionArray); // @@ -631,12 +635,13 @@ class FilterWidget extends Widget $whereParameters = null; - if ($this->filterId == null) + if ($this->filterId <= 0) { + // Try to load the custom filter (person_id = logged user person_id) with the given "app" and "dataset_name" + // that is set as default filter (default_filter = true) $whereParameters = array( 'app' => $this->app, 'dataset_name' => $this->datasetName, - 'filter_kurzbz' => $this->filterKurzbz, 'uid' => getAuthUID(), 'default_filter' => true ); @@ -660,6 +665,24 @@ class FilterWidget extends Widget $jsonEncodedFilter = json_decode($filter->retval[0]->filter); } } + else // Try to load the global filter (person_id = null) with the given "app" and "dataset_name" that is set as + // default filter (default_filter = true) + { + $whereParameters = array( + 'app' => $this->app, + 'dataset_name' => $this->datasetName, + 'default_filter' => true + ); + + $filter = $this->FiltersModel->loadWhere($whereParameters); + if (hasData($filter)) + { + if (isset($filter->retval[0]->filter) && trim($filter->retval[0]->filter) != '') + { + $jsonEncodedFilter = json_decode($filter->retval[0]->filter); + } + } + } if ($jsonEncodedFilter != null) { @@ -1053,7 +1076,7 @@ class FilterWidget extends Widget */ private function _generateQuery() { - $query = $this->query; + $query = null;//$this->query; $activeFilters = array(); $activeFiltersOperation = array(); diff --git a/public/js/FilterWidget.js b/public/js/FilterWidget.js index 190eb30ea..004f4ddac 100644 --- a/public/js/FilterWidget.js +++ b/public/js/FilterWidget.js @@ -81,20 +81,23 @@ var FHC_FilterWidget = { var strDropDown = ''; $("#addField").append(strDropDown); - for (var i = 0; i < data.allSelectedFields.length; i++) + if (data.allSelectedFields != null) { - var fieldName = data.allSelectedFields[i]; - var fieldToDisplay = data.allSelectedFields[i]; - - if (data.selectedFields.indexOf(fieldName) < 0) + for (var i = 0; i < data.allSelectedFields.length; i++) { - if (data.allColumnsAliases != null && $.isArray(data.allColumnsAliases)) - { - fieldToDisplay = data.allColumnsAliases[i]; - } + var fieldName = data.allSelectedFields[i]; + var fieldToDisplay = data.allSelectedFields[i]; - strDropDown = ''; - $("#addField").append(strDropDown); + if (data.selectedFields.indexOf(fieldName) < 0) + { + if (data.allColumnsAliases != null && $.isArray(data.allColumnsAliases)) + { + fieldToDisplay = data.allColumnsAliases[i]; + } + + strDropDown = ''; + $("#addField").append(strDropDown); + } } } } @@ -126,44 +129,50 @@ var FHC_FilterWidget = { var strDropDown = ''; $("#addFilter").append(strDropDown); - for (var i = 0; i < data.selectedFilters.length; i++) + if (data.selectedFilters != null) { - var selectedFilters = '
'; + for (var i = 0; i < data.selectedFilters.length; i++) + { + var selectedFilters = '
'; - selectedFilters += ''; - selectedFilters += data.selectedFiltersAliases[i]; - selectedFilters += ''; + selectedFilters += ''; + selectedFilters += data.selectedFiltersAliases[i]; + selectedFilters += ''; - selectedFilters += FHC_FilterWidget._getSelectedFilterFields( - data.selectedFiltersMetaData[i], - data.selectedFiltersActiveFilters[i], - data.selectedFiltersActiveFiltersOperation[i], - data.selectedFiltersActiveFiltersOption[i] - ); + selectedFilters += FHC_FilterWidget._getSelectedFilterFields( + data.selectedFiltersMetaData[i], + data.selectedFiltersActiveFilters[i], + data.selectedFiltersActiveFiltersOperation[i], + data.selectedFiltersActiveFiltersOption[i] + ); - selectedFilters += ''; - selectedFilters += ''; - selectedFilters += ''; + selectedFilters += ''; + selectedFilters += ''; + selectedFilters += ''; - selectedFilters += '
'; + selectedFilters += '
'; - $("#selectedFilters").append(selectedFilters); + $("#selectedFilters").append(selectedFilters); + } } - for (var i = 0; i < data.allSelectedFields.length; i++) + if (data.allSelectedFields != null) { - var fieldName = data.allSelectedFields[i]; - var fieldToDisplay = data.allSelectedFields[i]; - - if (data.selectedFilters.indexOf(fieldName) < 0) + for (var i = 0; i < data.allSelectedFields.length; i++) { - if (data.allColumnsAliases != null && $.isArray(data.allColumnsAliases)) - { - fieldToDisplay = data.allColumnsAliases[i]; - } + var fieldName = data.allSelectedFields[i]; + var fieldToDisplay = data.allSelectedFields[i]; - strDropDown = ''; - $("#addFilter").append(strDropDown); + if (data.selectedFilters.indexOf(fieldName) < 0) + { + if (data.allColumnsAliases != null && $.isArray(data.allColumnsAliases)) + { + fieldToDisplay = data.allColumnsAliases[i]; + } + + strDropDown = ''; + $("#addFilter").append(strDropDown); + } } } } @@ -279,7 +288,7 @@ var FHC_FilterWidget = { } else { - console.log("No fields to display!!!"); + // console.log("No fields to display!!!"); } } else