// Our text domain, for internationalisation\r
private $textdom='wp-fdroid';\r
\r
- private $site_path;\r
+ private $site_path;\r
\r
// Constructor\r
function FDroid() {\r
global $wp_query,$wp_rewrite;\r
$this->lazyinit();\r
\r
- \r
- // Init local query vars\r
- foreach($this->queryvars(array()) as $qv) {\r
- if(array_key_exists($qv,$wp_query->query_vars)) {\r
- $query_vars[$qv] = $wp_query->query_vars[$qv];\r
- } else {\r
- $query_vars[$qv] = null;\r
- }\r
- }\r
- \r
- // Santiy check query vars\r
- if(!isset($query_vars['fdpage']) || !is_numeric($query_vars['fdpage']) || $query_vars['fdpage'] <= 0) {\r
- $query_vars['fdpage'] = 1;\r
- }\r
-\r
- $out = '';\r
-\r
- if(isset($attribs['search']) && $query_vars['fdfilter']===null) {\r
- $query_vars['fdfilter'] = '';\r
- }\r
-\r
- if($query_vars['fdid']!==null) {\r
+ \r
+ // Init local query vars\r
+ foreach($this->queryvars(array()) as $qv) {\r
+ if(array_key_exists($qv,$wp_query->query_vars)) {\r
+ $query_vars[$qv] = $wp_query->query_vars[$qv];\r
+ } else {\r
+ $query_vars[$qv] = null;\r
+ }\r
+ }\r
+ \r
+ // Santiy check query vars\r
+ if(!isset($query_vars['fdpage']) || !is_numeric($query_vars['fdpage']) || $query_vars['fdpage'] <= 0) {\r
+ $query_vars['fdpage'] = 1;\r
+ }\r
+\r
+ $out = '';\r
+\r
+ if(isset($attribs['search']) && $query_vars['fdfilter']===null) {\r
+ $query_vars['fdfilter'] = '';\r
+ }\r
+\r
+ if($query_vars['fdid']!==null) {\r
$out.=$this->get_app($query_vars);\r
- } else {\r
- if($query_vars['fdfilter'] !== null)\r
- $out.=$this->show_search($query_vars);\r
+ } else {\r
+ if($query_vars['fdfilter'] !== null)\r
+ $out.=$this->show_search($query_vars);\r
\r
$out.=$this->get_apps($query_vars);\r
- }\r
+ }\r
return $out;\r
\r
}\r
\r
function get_apps($query_vars) {\r
\r
- $xml = simplexml_load_file($this->site_path."/repo/index.xml");\r
- $matches = $this->show_apps($xml,$query_vars,$numpages);\r
- \r
- $out='';\r
-\r
- if(($query_vars['fdfilter']===null || $query_vars['fdfilter']!='') && $numpages>0)\r
- {\r
- $out.='<div style="float:left;">';\r
- if($query_vars['fdfilter']===null)\r
- $out.="All applications";\r
- else\r
- $out.='Applications matching "'.$query_vars['fdfilter'].'"';\r
- $out.="</div>";\r
-\r
- $out.='<div style="float:right;">';\r
- $out.='<a href="'.makelink($query_vars, array('fdstyle'=>'list','fdpage'=>'1')).'">List</a> | ';\r
- $out.='<a href="'.makelink($query_vars, array('fdstyle'=>'grid','fdpage'=>'1')).'">Grid</a>';\r
- $out.='</div>';\r
-\r
- $out.='<br break="all"/>';\r
- } \r
- \r
- if($numpages>0) {\r
- $out.=$matches;\r
- \r
- $out.='<hr><p>';\r
- if($query_vars['fdpage']==1) {\r
- $out.="<<first ";\r
- $out.="<prev ";\r
- } else {\r
- $out.='<a href="'.makelink($query_vars, array('fdpage'=>1)).'"><<first</a> ';\r
- $out.='<a href="'.makelink($query_vars, array('fdpage'=>($query_vars['fdpage']-1))).'"><<prev</a> ';\r
- }\r
- $out.=' Page '.$query_vars['fdpage'].' of '.$numpages.' ';\r
- if($query_vars['fdpage']==$numpages) {\r
- $out.="next> ";\r
- $out.="last>> ";\r
- } else {\r
- $out.='<a href="'.makelink($query_vars, array('fdpage'=>($query_vars['fdpage']+1))).'">next></a> ';\r
- $out.='<a href="'.makelink($query_vars, array('fdpage'=>$numpages)).'">last>></a> ';\r
- }\r
- $out.='</p>';\r
- } else if($query_vars['fdfilter']!='') {\r
- $out.='<p>No matches</p>';\r
- }\r
+ $xml = simplexml_load_file($this->site_path."/repo/index.xml");\r
+ $matches = $this->show_apps($xml,$query_vars,$numpages);\r
+ \r
+ $out='';\r
+\r
+ if(($query_vars['fdfilter']===null || $query_vars['fdfilter']!='') && $numpages>0)\r
+ {\r
+ $out.='<div style="float:left;">';\r
+ if($query_vars['fdfilter']===null)\r
+ $out.="All applications";\r
+ else\r
+ $out.='Applications matching "'.$query_vars['fdfilter'].'"';\r
+ $out.="</div>";\r
+\r
+ $out.='<div style="float:right;">';\r
+ $out.='<a href="'.makelink($query_vars, array('fdstyle'=>'list','fdpage'=>'1')).'">List</a> | ';\r
+ $out.='<a href="'.makelink($query_vars, array('fdstyle'=>'grid','fdpage'=>'1')).'">Grid</a>';\r
+ $out.='</div>';\r
+\r
+ $out.='<br break="all"/>';\r
+ } \r
+ \r
+ if($numpages>0) {\r
+ $out.=$matches;\r
+ \r
+ $out.='<hr><p>';\r
+ if($query_vars['fdpage']==1) {\r
+ $out.="<<first ";\r
+ $out.="<prev ";\r
+ } else {\r
+ $out.='<a href="'.makelink($query_vars, array('fdpage'=>1)).'"><<first</a> ';\r
+ $out.='<a href="'.makelink($query_vars, array('fdpage'=>($query_vars['fdpage']-1))).'"><<prev</a> ';\r
+ }\r
+ $out.=' Page '.$query_vars['fdpage'].' of '.$numpages.' ';\r
+ if($query_vars['fdpage']==$numpages) {\r
+ $out.="next> ";\r
+ $out.="last>> ";\r
+ } else {\r
+ $out.='<a href="'.makelink($query_vars, array('fdpage'=>($query_vars['fdpage']+1))).'">next></a> ';\r
+ $out.='<a href="'.makelink($query_vars, array('fdpage'=>$numpages)).'">last>></a> ';\r
+ }\r
+ $out.='</p>';\r
+ } else if($query_vars['fdfilter']!='') {\r
+ $out.='<p>No matches</p>';\r
+ }\r
\r
return $out;\r
}\r
\r
- \r
+ \r
function show_search($query_vars) {\r
\r
- $out='';\r
- $out.='<form name="searchform" action="" method="get">';\r
- $out.='<p><input name="fdfilter" type="text" value="'.$query_vars['fdfilter'].'" size="30"> ';\r
- $out.='<input type="submit" value="Search"></p>';\r
-\r
- $out.='<input type="hidden" name="page_id" value="'.get_query_var('page_id').'">';\r
- foreach($query_vars as $name => $value) {\r
- if($value !== null && $name != 'fdfilter')\r
- $out.='<input type="hidden" name="'.$name.'" value="'.$value.'">';\r
- }\r
- \r
- $out.='</form>'."\n";\r
- \r
+ $out='';\r
+ $out.='<form name="searchform" action="" method="get">';\r
+ $out.='<p><input name="fdfilter" type="text" value="'.$query_vars['fdfilter'].'" size="30"> ';\r
+ $out.='<input type="submit" value="Search"></p>';\r
+\r
+ $out.='<input type="hidden" name="page_id" value="'.get_query_var('page_id').'">';\r
+ foreach($query_vars as $name => $value) {\r
+ if($value !== null && $name != 'fdfilter')\r
+ $out.='<input type="hidden" name="'.$name.'" value="'.$value.'">';\r
+ }\r
+ \r
+ $out.='</form>'."\n";\r
+ \r
return $out;\r
}\r
- \r
+ \r
\r
function show_apps($xml,$query_vars,&$numpages) {\r
- \r
+ \r
$skipped=0;\r
$got=0;\r
$total=0;\r
\r
- if($query_vars['fdstyle']=='grid') {\r
- $outputter = new FDOutGrid();\r
- } else {\r
- $outputter = new FDOutList();\r
- }\r
- \r
- $out = "";\r
- \r
- $out.=$outputter->outputStart();\r
- \r
+ if($query_vars['fdstyle']=='grid') {\r
+ $outputter = new FDOutGrid();\r
+ } else {\r
+ $outputter = new FDOutList();\r
+ }\r
+ \r
+ $out = "";\r
+ \r
+ $out.=$outputter->outputStart();\r
+ \r
foreach($xml->children() as $app) {\r
\r
if($app->getName() == 'repo') continue;\r
if($skipped<($query_vars['fdpage']-1)*$outputter->perpage) {\r
$skipped++;\r
} else if($got<$outputter->perpage) {\r
- $out.=$outputter->outputEntry($query_vars, $appinfo);\r
+ $out.=$outputter->outputEntry($query_vars, $appinfo);\r
$got++;\r
}\r
$total++;\r
}\r
\r
}\r
- \r
- $out.=$outputter->outputEnd();\r
- \r
- $numpages = ceil((float)$total/$outputter->perpage);\r
- \r
- return $out;\r
- }\r
+ \r
+ $out.=$outputter->outputEnd();\r
+ \r
+ $numpages = ceil((float)$total/$outputter->perpage);\r
+ \r
+ return $out;\r
+ }\r
}\r
\r
// Class to output app entries in a detailed list format\r
class FDOutList\r
{\r
- var $perpage=30;\r
-\r
- function FDOutList() {\r
- }\r
-\r
- function outputStart() {\r
- return '';\r
- }\r
- \r
- function outputEntry($query_vars, $appinfo) {\r
- $out="";\r
- $out.="<hr>\n";\r
- $out.='<div id="appheader">';\r
-\r
- $out.='<div style="float:left;padding-right:10px;"><img src="http://f-droid.org/repo/icons/'.$appinfo['icon'].'" style="width:48px;"></div>';\r
-\r
- $out.='<div style="float:right;">';\r
- $out.='<p><a href="';\r
- $out.=makelink($query_vars, array('fdid'=>$appinfo['id']));\r
- $out.='">Details...</a>';\r
- $out.="</p>";\r
- $out.="</div>\n";\r
-\r
- $out.='<p><span style="font-size:20px">'.$appinfo['name']."</span>";\r
- $out.="<br>".$appinfo['summary']."</p>\n";\r
-\r
- $out.="</div>\n";\r
- \r
- return $out;\r
- }\r
-\r
- function outputEnd() {\r
- return '';\r
- }\r
+ var $perpage=30;\r
+\r
+ function FDOutList() {\r
+ }\r
+\r
+ function outputStart() {\r
+ return '';\r
+ }\r
+ \r
+ function outputEntry($query_vars, $appinfo) {\r
+ $out="";\r
+ $out.="<hr>\n";\r
+ $out.='<div id="appheader">';\r
+\r
+ $out.='<div style="float:left;padding-right:10px;"><img src="http://f-droid.org/repo/icons/'.$appinfo['icon'].'" style="width:48px;"></div>';\r
+\r
+ $out.='<div style="float:right;">';\r
+ $out.='<p><a href="';\r
+ $out.=makelink($query_vars, array('fdid'=>$appinfo['id']));\r
+ $out.='">Details...</a>';\r
+ $out.="</p>";\r
+ $out.="</div>\n";\r
+\r
+ $out.='<p><span style="font-size:20px">'.$appinfo['name']."</span>";\r
+ $out.="<br>".$appinfo['summary']."</p>\n";\r
+\r
+ $out.="</div>\n";\r
+ \r
+ return $out;\r
+ }\r
+\r
+ function outputEnd() {\r
+ return '';\r
+ }\r
}\r
\r
// Class to output app entries in a compact grid format\r
class FDOutGrid\r
{\r
- var $perpage=80;\r
-\r
- var $itemCount = 0;\r
-\r
- function FDOutGrid() {\r
- }\r
-\r
- function outputStart() {\r
- return "\n".'<table border="0" width="100%"><tr>'."\n";\r
- }\r
- \r
- function outputEntry($query_vars, $appinfo) {\r
- $link=makelink($query_vars, array('fdid'=>$appinfo['id']));\r
-\r
- $out='';\r
-\r
- if($this->itemCount%4 == 0 && $this->itemCount > 0)\r
- {\r
- $out.='</tr><tr>'."\n";\r
- }\r
-\r
- $out.='<td align="center" valign="top" style="background-color:#F8F8F8;">';\r
- $out.='<p>';\r
- $out.='<div id="appheader" style="text-align:center;width:110px;">';\r
-\r
- $out.='<a href="'.$link.'" style="border-bottom-style:none;">';\r
- $out.='<img src="http://f-droid.org/repo/icons/'.$appinfo['icon'].'" style="width:48px;border-width:0;padding-top:5px;padding-bottom:5px;"><br/>';\r
- $out.=$appinfo['name'].'<br/>';\r
- $out.='</a>';\r
-\r
- $out.="</div>";\r
- $out.='</p>';\r
- $out.="</td>\n";\r
- \r
- $this->itemCount++;\r
- return $out;\r
- }\r
-\r
- function outputEnd() {\r
- return '</tr></table>'."\n";\r
- }\r
+ var $perpage=80;\r
+\r
+ var $itemCount = 0;\r
+\r
+ function FDOutGrid() {\r
+ }\r
+\r
+ function outputStart() {\r
+ return "\n".'<table border="0" width="100%"><tr>'."\n";\r
+ }\r
+ \r
+ function outputEntry($query_vars, $appinfo) {\r
+ $link=makelink($query_vars, array('fdid'=>$appinfo['id']));\r
+\r
+ $out='';\r
+\r
+ if($this->itemCount%4 == 0 && $this->itemCount > 0)\r
+ {\r
+ $out.='</tr><tr>'."\n";\r
+ }\r
+\r
+ $out.='<td align="center" valign="top" style="background-color:#F8F8F8;">';\r
+ $out.='<p>';\r
+ $out.='<div id="appheader" style="text-align:center;width:110px;">';\r
+\r
+ $out.='<a href="'.$link.'" style="border-bottom-style:none;">';\r
+ $out.='<img src="http://f-droid.org/repo/icons/'.$appinfo['icon'].'" style="width:48px;border-width:0;padding-top:5px;padding-bottom:5px;"><br/>';\r
+ $out.=$appinfo['name'].'<br/>';\r
+ $out.='</a>';\r
+\r
+ $out.="</div>";\r
+ $out.='</p>';\r
+ $out.="</td>\n";\r
+ \r
+ $this->itemCount++;\r
+ return $out;\r
+ }\r
+\r
+ function outputEnd() {\r
+ return '</tr></table>'."\n";\r
+ }\r
}\r
\r
// Make a link to this page, with the current query vars attached and desired params added/modified\r
function makelink($query_vars, $params=array()) {\r
- $link=get_permalink();\r
- $vars=linkify(array_merge($query_vars, $params));\r
- if(strlen($vars)==0)\r
- return $link;\r
- if(strpos($link,'?')===false)\r
- $link.='?';\r
- else\r
- $link.='&';\r
- return $link.$vars;\r
+ $link=get_permalink();\r
+ $vars=linkify(array_merge($query_vars, $params));\r
+ if(strlen($vars)==0)\r
+ return $link;\r
+ if(strpos($link,'?')===false)\r
+ $link.='?';\r
+ else\r
+ $link.='&';\r
+ return $link.$vars;\r
}\r
\r
// Return the key value pairs in http-get-parameter format as a string\r
function linkify($vars) {\r
- $retvar = '';\r
- foreach($vars as $k => $v) {\r
- if($k!==null && $v!==null && $v!='')\r
- $retvar .= $k.'='.$v.'&';\r
- }\r
- return substr($retvar,0,-1);\r
+ $retvar = '';\r
+ foreach($vars as $k => $v) {\r
+ if($k!==null && $v!==null && $v!='')\r
+ $retvar .= $k.'='.$v.'&';\r
+ }\r
+ return substr($retvar,0,-1);\r
}\r
\r
\r