1
0
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:
Hans-Emil Skogh 2011-12-18 21:16:20 +01:00
parent 181a309044
commit 8f50665e8c

View File

@ -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&gt;&gt;</a> '; $out.='<a href="'.makelink($query_vars, array('fdpage'=>$numpages)).'">last&gt;&gt;</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++;
} }