mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-09 17:00:12 +01:00
Implemented searching for apps in the repository.
Adds a new shortcode attribute "search" for the shortcode "fdroidrepo". When this is set, a search field will be shown above the app listing. Uses the fdfilter search code to do the search result filtering.
This commit is contained in:
parent
181a309044
commit
8f50665e8c
@ -81,10 +81,20 @@ class FDroid
|
|||||||
$query_vars['fdpage'] = 1;
|
$query_vars['fdpage'] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($query_vars['fdid']!==null)
|
$out = '';
|
||||||
$out=$this->get_app($query_vars);
|
|
||||||
else
|
if(isset($attribs['search']) && $query_vars['fdfilter']===null) {
|
||||||
$out=$this->get_apps($query_vars);
|
$query_vars['fdfilter'] = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if($query_vars['fdid']!==null) {
|
||||||
|
$out.=$this->get_app($query_vars);
|
||||||
|
} else {
|
||||||
|
if($query_vars['fdfilter'] !== null)
|
||||||
|
$out.=$this->show_search($query_vars);
|
||||||
|
|
||||||
|
$out.=$this->get_apps($query_vars);
|
||||||
|
}
|
||||||
return $out;
|
return $out;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -204,13 +214,18 @@ class FDroid
|
|||||||
|
|
||||||
function get_apps($query_vars) {
|
function get_apps($query_vars) {
|
||||||
|
|
||||||
|
$xml = simplexml_load_file($this->site_path."/repo/index.xml");
|
||||||
|
$matches = $this->show_apps($xml,$query_vars,$numpages);
|
||||||
|
|
||||||
$out='';
|
$out='';
|
||||||
|
|
||||||
|
if(($query_vars['fdfilter']===null || $query_vars['fdfilter']!='') && $numpages>0)
|
||||||
|
{
|
||||||
$out.='<div style="float:left;">';
|
$out.='<div style="float:left;">';
|
||||||
if($query_vars['fdfilter']===null)
|
if($query_vars['fdfilter']===null)
|
||||||
$out.="All applications";
|
$out.="All applications";
|
||||||
else
|
else
|
||||||
$out.="Applications matching ".$query_vars['fdfilter'];
|
$out.='Applications matching "'.$query_vars['fdfilter'].'"';
|
||||||
$out.="</div>";
|
$out.="</div>";
|
||||||
|
|
||||||
$out.='<div style="float:right;">';
|
$out.='<div style="float:right;">';
|
||||||
@ -219,9 +234,10 @@ class FDroid
|
|||||||
$out.='</div>';
|
$out.='</div>';
|
||||||
|
|
||||||
$out.='<br break="all"/>';
|
$out.='<br break="all"/>';
|
||||||
|
}
|
||||||
|
|
||||||
$xml = simplexml_load_file($this->site_path."/repo/index.xml");
|
if($numpages>0) {
|
||||||
$out.=$this->show_apps($xml,$query_vars,$numpages);
|
$out.=$matches;
|
||||||
|
|
||||||
$out.='<hr><p>';
|
$out.='<hr><p>';
|
||||||
if($query_vars['fdpage']==1) {
|
if($query_vars['fdpage']==1) {
|
||||||
@ -240,6 +256,28 @@ class FDroid
|
|||||||
$out.='<a href="'.makelink($query_vars, array('fdpage'=>$numpages)).'">last>></a> ';
|
$out.='<a href="'.makelink($query_vars, array('fdpage'=>$numpages)).'">last>></a> ';
|
||||||
}
|
}
|
||||||
$out.='</p>';
|
$out.='</p>';
|
||||||
|
} else if($query_vars['fdfilter']!='') {
|
||||||
|
$out.='<p>No matches</p>';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function show_search($query_vars) {
|
||||||
|
|
||||||
|
$out='';
|
||||||
|
$out.='<form name="searchform" action="" method="get">';
|
||||||
|
$out.='<p><input name="fdfilter" type="text" value="'.$query_vars['fdfilter'].'" size="30"> ';
|
||||||
|
$out.='<input type="submit" value="Search"></p>';
|
||||||
|
|
||||||
|
$out.='<input type="hidden" name="page_id" value="'.get_query_var('page_id').'">';
|
||||||
|
foreach($query_vars as $name => $value) {
|
||||||
|
if($value !== null && $name != 'fdfilter')
|
||||||
|
$out.='<input type="hidden" name="'.$name.'" value="'.$value.'">';
|
||||||
|
}
|
||||||
|
|
||||||
|
$out.='</form>'."\n";
|
||||||
|
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
@ -283,11 +321,10 @@ class FDroid
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($query_vars['fdfilter']===null || stristr($appinfo['name'],$query_vars['fdfilter'])) {
|
if($query_vars['fdfilter']===null || $query_vars['fdfilter']!='' && (stristr($appinfo['name'],$query_vars['fdfilter']) || stristr($appinfo['summary'],$query_vars['fdfilter']))) {
|
||||||
if($skipped<($query_vars['fdpage']-1)*$outputter->perpage) {
|
if($skipped<($query_vars['fdpage']-1)*$outputter->perpage) {
|
||||||
$skipped++;
|
$skipped++;
|
||||||
} else if($got<$outputter->perpage) {
|
} else if($got<$outputter->perpage) {
|
||||||
|
|
||||||
$out.=$outputter->outputEntry($query_vars, $appinfo);
|
$out.=$outputter->outputEntry($query_vars, $appinfo);
|
||||||
$got++;
|
$got++;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user