getTag(); $model = $this -> getModel(self :: MODEL); $this -> statistics = $model -> getDatasetStatistics($locale,true); $this -> minYear = ($this -> statistics['year'] -> data == NULL) ? date('Y') : min(array_keys($this -> statistics['year'] -> data)); $this -> maxYear = ($this -> statistics['year'] -> data == NULL) ? date('Y') : max(array_keys($this -> statistics['year'] -> data)); $input = JFactory :: getApplication() -> input; $this -> itemId = JRequest :: getUInt('Itemid', 0); $this -> keywords = $this -> getParameter('keyword'); $this -> fields = $this -> getParameter('field'); $this -> constraints = $this -> getParameter('constraint'); $this -> types = $this -> getParameter('type'); $this -> languages = $this -> getParameter('language'); $this -> funders = $this -> getParameter('funder'); $this -> fundingStreams = $this -> getParameter('fundingStream'); $this -> scientificAreas = $this -> getParameter('scientificArea'); $this -> fundingStreamsLevel2 = $this -> getParameter('fundingStreamLevel2'); $this -> date = JRequest :: getInt('date', -1); $this -> fromMonth = JRequest :: getUInt('fromMonth', self :: DEFAULT_FROM_MONTH); $this -> fromYear = JRequest :: getUInt('fromYear', $this -> minYear); $this -> toMonth = JRequest :: getUInt('toMonth', self :: DEFAULT_TO_MONTH); $this -> toYear = JRequest :: getUInt('toYear', $this -> maxYear); $this -> accessModes = $this -> getParameter('accessMode'); $this -> datasources = $this -> getParameter('datasource'); $this -> filters = array(); $type = JRequest :: getString('typeFilter'); if ($type != NULL) { $this -> filters['typeFilter'] = new JObject(); $this -> filters['typeFilter'] -> name = 'typeFilter'; $this -> filters['typeFilter'] -> value = $type; } $language = JRequest :: getString('languageFilter'); if ($language != NULL) { $this -> filters['languageFilter'] = new JObject(); $this -> filters['languageFilter'] -> name = 'languageFilter'; $this -> filters['languageFilter'] -> value = $language; } $funder = JRequest :: getString('funderFilter'); if ($funder != NULL) { $this -> filters['funderFilter'] = new JObject(); $this -> filters['funderFilter'] -> name = 'funderFilter'; $this -> filters['funderFilter'] -> value = $funder; } $fundingStream = JRequest :: getString('fundingStreamFilter'); if ($fundingStream != NULL) { $this -> filters['fundingStreamFilter'] = new JObject(); $this -> filters['fundingStreamFilter'] -> name = 'fundingStreamFilter'; $this -> filters['fundingStreamFilter'] -> value = $fundingStream; } $scientificArea = JRequest :: getString('fundingStreamLevel1Filter'); if ($scientificArea != NULL) { $this -> filters['fundingStreamLevel1Filter'] = new JObject(); $this -> filters['fundingStreamLevel1Filter'] -> name = 'fundingStreamLevel1Filter'; $this -> filters['fundingStreamLevel1Filter'] -> value = $scientificArea; } $fundingStreamLevel2 = JRequest :: getString('fundingStreamLevel2Filter'); if ($fundingStreamLevel2 != NULL) { $this -> filters['fundingStreamLevel2Filter'] = new JObject(); $this -> filters['fundingStreamLevel2Filter'] -> name = 'fundingStreamLevel2Filter'; $this -> filters['fundingStreamLevel2Filter'] -> value = $fundingStreamLevel2; } $year = JRequest :: getString('yearFilter'); if ($year != NULL) { $this -> filters['yearFilter'] = new JObject(); $this -> filters['yearFilter'] -> name = 'yearFilter'; $this -> filters['yearFilter'] -> value = $year; } $accessMode = JRequest :: getString('accessModeFilter'); if ($accessMode != NULL) { $this -> filters['accessModeFilter'] = new JObject(); $this -> filters['accessModeFilter'] -> name = 'accessModeFilter'; $this -> filters['accessModeFilter'] -> value = $accessMode; } $datasource = JRequest :: getString('datasourceFilter'); if ($datasource != NULL) { $this -> filters['datasourceFilter'] = new JObject(); $this -> filters['datasourceFilter'] -> name = 'datasourceFilter'; $this -> filters['datasourceFilter'] -> value = $datasource; } $this -> page = JRequest :: getUInt('page', self :: DEFAULT_PAGE); $this -> size = JRequest :: getUInt('size', self :: MIN_SIZE); $this -> size = ($this -> size > self :: MAX_SIZE || $this -> size < 1) ? self :: MIN_SIZE : $this -> size; if ((($this -> keywords != NULL) && ($this -> fields != NULL) && ($this -> constraints != NULL)) || ($this -> types != NULL) || ($this -> languages != NULL) || ($this -> funders != NULL) || ($this -> fundingStreams != NULL) || ($this -> scientificAreas != NULL)|| ($this -> fundingStreamsLevel2 != NULL) || ($this -> date != -1) || ($this -> accessModes != NULL) || ($this -> datasources != NULL)) { JViewLegacy :: loadHelper('PiwikHelper'); PiwikHelper :: logPageView('Advanced Search Datasets'); $this -> result = $model -> advancedSearchDatasets($this -> keywords, $this -> fields, $this -> constraints, $this -> types, $this -> languages, $this -> funders, $this -> fundingStreams, $this -> scientificAreas,$this -> fundingStreamsLevel2, $this -> date, $this -> fromMonth, $this -> fromYear, $this -> toMonth, $this -> toYear, $this -> accessModes, $this -> datasources, $type, $language, $funder, $fundingStream, $scientificArea, $fundingStreamLevel2, $year, $accessMode, $datasource, $this -> page, $this -> size, $locale); $this -> totalPages = ($this -> result == NULL) ? NULL : ceil($this -> result -> totalDatasets / $this -> size); if ($this -> totalPages == NULL) $this -> totalPages = 1; $this -> page = ($this -> page > $this -> totalPages)? $this -> totalPages:$this -> page; $this -> pagingStart = $this -> page; $this -> pagingEnd = $this -> page; while (($this -> pagingEnd - $this -> pagingStart < self :: MAX_PAGES - 1) && (($this -> pagingStart != 1) || ($this -> pagingEnd != $this -> totalPages))) { if ($this -> pagingStart > 1) $this -> pagingStart --; if ($this -> pagingEnd < $this -> totalPages) $this -> pagingEnd++; } } else $this -> result = NULL; if (count($errors = $this -> get('Errors')) > 0) { JLog :: add('Error viewing advancedsearchdatasets: ' . implode("\n", $errors), JLog :: ERROR, self :: LOG); return FALSE; } parent :: display($template); } private function getParameter($name) { $values = JFactory :: getApplication() -> input -> get($name, NULL, NULL); if ($values == NULL) $values = array(); else if (!is_array($values)) { $value = $values; $values = array(); $values[] = $value; } return $values; } }