Project

General

Profile

« Previous | Next » 

Revision 45946

Commiting changes for new refine fields #2337

View differences:

filterhelper.php
7 7
// This helper formats filters.
8 8
abstract class FilterHelper {
9 9
	const MAX_ROW = 32;
10
	
10

  
11 11
	// Format filters.
12 12
	// $filters the filters to format
13 13
	// $statistics the available statistics
......
18 18
		$filters = ($filters == NULL) ? NULL : array_filter(array_map(function ($filter) use ($filters, $statistics, $baseUrl, $fragment) {return FilterHelper :: _formatFilter($filter, $statistics, $filters, $baseUrl, $fragment);}, $filters));
19 19
		return ($filters == NULL) ? '' : ('<h2>' . JText :: _('CURRENT_SELECTIONS') . '</h2><div class="selectorCollections">' . implode('', $filters) . ((count($filters) > 1) ? ('<div class="flowWrapper"><a href="' . JRoute :: _($baseUrl . $fragment) . '" class="clearFilters" title="' . JText :: _('CLEAR_ALL_FILTERS') . '">' . JText :: _('CLEAR_ALL') . '</a></div>') : '') . '</div>');
20 20
	}
21
	
21

  
22 22
	public static function _formatFilter($filter, $statistics, $filters, $baseUrl, $fragment) {
23 23
		$filterName = $filter -> name;
24 24
		$filterValue = ($filter -> value === TRUE) ? 'true' : (($filter -> value === FALSE) ? 'false' : $filter -> value);
......
33 33
                $funders= array();
34 34
                foreach($filters as $filter){
35 35
                   if(strpos($filter -> name, 'funder') !== FALSE){
36
                        if($filter -> value != NULL && (strpos($filter -> value, ',') !== FALSE)){                       
37
                            foreach(split(',',$filter -> value) as $id){
36
                        if($filter -> value != NULL && (strpos($filter -> value, '---') !== FALSE)){
37
                            foreach(explode('---',$filter -> value) as $id){
38 38
                                if(!empty($id)){
39 39
                                    $filtersRows[]=FilterHelper :: _formatFunderFilter($id, $filter -> name, $statistics, $filters, $baseUrl, $fragment);
40
                                }    
40
                                }
41 41
                            }
42
                        }else if($filter -> value != NULL){
43
                              $filtersRows[]=FilterHelper :: _formatFunderFilter($filter -> value, $filter -> name, $statistics, $filters, $baseUrl, $fragment);
42 44
                        }else{
43 45
                            $filtersRows[]=FilterHelper :: _formatFilter($filter, $statistics, $filters, $baseUrl, $fragment);
44
                        }                        
46
                        }
45 47
                    }else{
46 48
                        $filtersRows[]=FilterHelper :: _formatFilter($filter, $statistics, $filters, $baseUrl, $fragment);
47 49
                    }
48 50
                }
49 51
		return ($filtersRows == NULL) ? '' : ('<h2>' . JText :: _('CURRENT_SELECTIONS') . '</h2><div class="selectorCollections">' . implode('', $filtersRows) . ((count($filtersRows) > 1 ) ? ('<div class="flowWrapper"><a href="' . JRoute :: _($baseUrl . $fragment) . '" class="clearFilters" title="' . JText :: _('CLEAR_ALL_FILTERS') . '">' . JText :: _('CLEAR_ALL') . '</a></div>') : '') . '</div>');
50 52
	}
51
	
53

  
52 54
	public static function _formatFunderFilter($id, $filterName, $statistics, $filters, $baseUrl, $fragment) {
53 55
                $filterValue = ($id === TRUE) ? 'true' : (($id === FALSE) ? 'false' : $id);
54 56
		$filters = ($filters == NULL) ? NULL : array_filter(array_map(function ($otherFilter) use ($filterName,$id) {return ($otherFilter -> name == $filterName) ?  self::_f($filterName,$id,$otherFilter) : (urlencode($otherFilter -> name) . '=' . urlencode(($otherFilter -> value === TRUE) ? 'true' : (($otherFilter -> value === FALSE) ? 'false' : $otherFilter -> value)));}, $filters));
55 57
		// TODO JRoute :: _ keeps decoding urlencoded values, so this is just a hack to cope with this
56 58
                mb_internal_encoding('UTF-8');
57
		return (($statistics == NULL) || (!array_key_exists($filterName, $statistics)) || ($statistics[$filterName] -> data == NULL) || (!array_key_exists($filterValue, $statistics[$filterName] -> data))) ? '' : '<div class="element"><div class="flowWrapper"><a href="' . JRoute :: _($baseUrl . (($filters == NULL) ? '' : ('&amp;' . implode('&amp;', $filters))) . $fragment) . '"class="selectorRemove" title="' . $statistics[$filterName] -> data[$filterValue] -> name . '"><span class="fieldName">' . $statistics[$filterName] -> title . ':</span> ' . ((strlen($statistics[$filter -> name] -> data[$filterValue] -> name) > FilterHelper :: MAX_ROW) ? (mb_substr($statistics[$filterName] -> data[$filterValue] -> name, 0, FilterHelper :: MAX_ROW - strlen('...')) . '...') : $statistics[$filterName] -> data[$filterValue] -> name) . '</a></div></div>';                
59
		return (($statistics == NULL) || (!array_key_exists($filterName, $statistics)) || ($statistics[$filterName] -> data == NULL) || (!array_key_exists($filterValue, $statistics[$filterName] -> data))) ? '' : '<div class="element"><div class="flowWrapper"><a href="' . JRoute :: _($baseUrl . (($filters == NULL) ? '' : ('&amp;' . implode('&amp;', $filters))) . $fragment) . '"class="selectorRemove" title="' . $statistics[$filterName] -> data[$filterValue] -> name . '"><span class="fieldName">' . $statistics[$filterName] -> title . ':</span> ' . ((strlen($statistics[$filter -> name] -> data[$filterValue] -> name) > FilterHelper :: MAX_ROW) ? (mb_substr($statistics[$filterName] -> data[$filterValue] -> name, 0, FilterHelper :: MAX_ROW - strlen('...')) . '...') : $statistics[$filterName] -> data[$filterValue] -> name) . '</a></div></div>';
58 60
        }
59 61
        public static function _f($name, $value, $otherfilter) {
60 62
                    $temp='';
61
                    if($name== $otherfilter -> name && (strpos($name, 'funder') !== FALSE)){   
62
                       if($otherfilter -> value != NULL && (strpos($otherfilter -> value, ',') !== FALSE)){                                                  
63
                           foreach(split(',', $otherfilter -> value) as $id){
63
                    if($name== $otherfilter -> name && (strpos($name, 'funder') !== FALSE)){
64
                       if($otherfilter -> value != NULL && (strpos($otherfilter -> value, '---') !== FALSE)){
65
                           foreach(explode('---', $otherfilter -> value) as $id){
64 66
                               if(!empty($id) && $id!==$value){
65
                                  $temp.=$id.',' ;
67
                                  $temp.=$id.'---' ;
66 68
                               }
67 69
                           }
68
                           $temp=$name.'='.substr($temp, 0, -1);                           
69
                       }                       
70
                           $temp=$name.'='.substr($temp, 0, -3);
71
                       }
70 72
                    }
71 73
                    return $temp;
72
        }     
74
        }
73 75
        public static function _formatFilter($filter, $statistics, $filters, $baseUrl, $fragment) {
74 76
                $filterName = $filter -> name;
75 77
		$filterValue = ($filter -> value === TRUE) ? 'true' : (($filter -> value === FALSE) ? 'false' : $filter -> value);
76 78
		$filters = ($filters == NULL) ? NULL : array_filter(array_map(function ($otherFilter) use ($filterName) {return ($otherFilter -> name == $filterName) ? '' : (urlencode($otherFilter -> name) . '=' . urlencode(($otherFilter -> value === TRUE) ? 'true' : (($otherFilter -> value === FALSE) ? 'false' : $otherFilter -> value)));}, $filters));
77 79
		// TODO JRoute :: _ keeps decoding urlencoded values, so this is just a hack to cope with this
78 80
                mb_internal_encoding('UTF-8');
79
		return (($statistics == NULL) || (!array_key_exists($filter -> name, $statistics)) || ($statistics[$filter -> name] -> data == NULL) || (!array_key_exists($filterValue, $statistics[$filter -> name] -> data))) ? '' : '<div class="element"><div class="flowWrapper"><a href="' . JRoute :: _($baseUrl . (($filters == NULL) ? '' : ('&amp;' . implode('&amp;', $filters))) . $fragment) . '"class="selectorRemove" title="' . $statistics[$filter -> name] -> data[$filterValue] -> name . '"><span class="fieldName">' . $statistics[$filter -> name] -> title . ':</span> ' . ((strlen($statistics[$filter -> name] -> data[$filterValue] -> name) > FilterHelper :: MAX_ROW) ? (mb_substr($statistics[$filter -> name] -> data[$filterValue] -> name, 0, FilterHelper :: MAX_ROW - strlen('...')) . '...') : $statistics[$filter -> name] -> data[$filterValue] -> name) . '</a></div></div>';                
81
		return (($statistics == NULL) || (!array_key_exists($filter -> name, $statistics)) || ($statistics[$filter -> name] -> data == NULL) || (!array_key_exists($filterValue, $statistics[$filter -> name] -> data))) ? '' : '<div class="element"><div class="flowWrapper"><a href="' . JRoute :: _($baseUrl . (($filters == NULL) ? '' : ('&amp;' . implode('&amp;', $filters))) . $fragment) . '"class="selectorRemove" title="' . $statistics[$filter -> name] -> data[$filterValue] -> name . '"><span class="fieldName">' . $statistics[$filter -> name] -> title . ':</span> ' . ((strlen($statistics[$filter -> name] -> data[$filterValue] -> name) > FilterHelper :: MAX_ROW) ? (mb_substr($statistics[$filter -> name] -> data[$filterValue] -> name, 0, FilterHelper :: MAX_ROW - strlen('...')) . '...') : $statistics[$filter -> name] -> data[$filterValue] -> name) . '</a></div></div>';
80 82
	}
81
        
83

  
82 84
}
83

  

Also available in: Unified diff