コード例 #1
0
 /**
  * Support method for getVisData() -- extract details from applied filters.
  *
  * @param array $filters Current filter list
  *
  * @return array
  * @access protected
  */
 protected function processDateFacets($filters)
 {
     $result = array();
     $from = $to = '';
     if (isset($filters[$this->filterField])) {
         foreach ($filters[$this->filterField] as $filter) {
             if ($range = VuFindSolrUtils::parseSpatialDateRange($filter, $this->searchObject->getSpatialDateRangeFilterType())) {
                 $startDate = new DateTime("@{$range['from']}");
                 $endDate = new DateTime("@{$range['to']}");
                 $from = $startDate->format('Y');
                 $to = $endDate->format('Y');
                 break;
             }
         }
     }
     $result[$this->filterField] = array($from, $to);
     $result[$this->filterField]['label'] = $this->searchObject->getFacetLabel($this->filterField);
     return $result;
 }
コード例 #2
0
ファイル: Advanced.php プロジェクト: bharatm/NDL-VuFind
 /**
  * Get the current settings for the spatial date range facet, if it is set:
  *
  * @param object $savedSearch Saved search object (false if none)
  *
  * @return array              Date range: Key 0 = from, Key 1 = to.
  * @access protected
  */
 protected function getSpatialDateRangeSettings($savedSearch = false)
 {
     // Default to blank strings:
     $from = $to = '';
     // Check to see if there is an existing range in the search object:
     if ($savedSearch) {
         $filters = $savedSearch->getFilters();
         if (isset($filters['search_sdaterange_mv'])) {
             foreach ($filters['search_sdaterange_mv'] as $current) {
                 if ($range = VuFindSolrUtils::parseSpatialDateRange($current)) {
                     $from = $range['from'] == '*' ? '' : $range['from'];
                     $to = $range['to'] == '*' ? '' : $range['to'];
                     $savedSearch->removeFilter('search_sdaterange_mv:' . $current);
                     break;
                 }
             }
         }
     }
     // Send back the settings:
     if ($from === '' || $to === '') {
         return array('', '');
     }
     $startDate = new DateTime("@{$from}");
     $endDate = new DateTime("@{$to}");
     if ($startDate->format('m') == 1 && $startDate->format('d') == 1 && $endDate->format('m') == 12 && $endDate->format('d') == 31) {
         return array(ltrim($startDate->format('Y'), '0'), ltrim($endDate->format('Y'), '0'));
     }
     return array($startDate->format('Y-m-d'), $endDate->format('Y-m-d'));
 }
コード例 #3
0
ファイル: Base.php プロジェクト: bharatm/NDL-VuFind
 /**
  * Convert spatial date range filter to displayable string
  *
  * @param string $filter Spatial date range filter
  *
  * @return string Resulting display string
  */
 protected function spatialDateRangeFilterToString($filter)
 {
     $range = VuFindSolrUtils::parseSpatialDateRange($filter, $this->spatialDateRangeFilterType);
     if ($range === false) {
         return $filter;
     }
     $startDate = new DateTime("@{$range['from']}");
     $endDate = new DateTime("@{$range['to']}");
     if ($startDate->format('m') == 1 && $startDate->format('d') == 1 && $endDate->format('m') == 12 && $endDate->format('d') == 31) {
         return $startDate->format('Y') . ' - ' . $endDate->format('Y');
     }
     $date = new VuFindDate();
     return $date->convertToDisplayDate('U', $range['from']) . ' - ' . $date->convertToDisplayDate('U', $range['to']);
 }