Revision 47354
Added by Argiro Kokogiannaki about 7 years ago
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) ? '' : ('&' . implode('&', $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) ? '' : ('&' . implode('&', $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) ? '' : ('&' . implode('&', $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) ? '' : ('&' . implode('&', $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
New refine fields #2337