chiark / gitweb /
Retabbed the wordpress plugin
authorCiaran Gultnieks <ciaran@ciarang.com>
Sat, 22 Jan 2011 13:15:10 +0000 (13:15 +0000)
committerCiaran Gultnieks <ciaran@ciarang.com>
Sun, 23 Jan 2011 21:22:30 +0000 (21:22 +0000)
wp-fdroid/wp-fdroid.php

index 0d27665cc1fbb61d9c81f60c2b68192b37507599..7cb186eeaa8437d0154c54d24e0fe3b0b53274b4 100644 (file)
@@ -15,276 +15,276 @@ Revision history
 class FDroid\r
 {\r
 \r
-       // Our text domain, for internationalisation\r
-       var $textdom='wp-fdroid';\r
+    // Our text domain, for internationalisation\r
+    var $textdom='wp-fdroid';\r
 \r
         var $site_path = "/var/www/fdroid";\r
 \r
-       // Constructor\r
-       function FDroid() {\r
-               // Add filters etc here!\r
-               add_shortcode('fdroidrepo',array($this, 'do_shortcode'));\r
-               add_filter('query_vars',array($this, 'queryvars'));\r
-               $this->inited=false;\r
-       }\r
-\r
-\r
-       // Register additional query variables. (Handler for the 'query_vars' filter)\r
-       function queryvars($qvars) {\r
-               $qvars[]='fdfilter';\r
-               $qvars[]='fdid';\r
-               $qvars[]='fdpage';\r
-               return $qvars;\r
-       }\r
-\r
-\r
-       // Lazy initialise. All non-trivial members should call this before doing anything else.\r
-       function lazyinit() {\r
-               if(!$this->inited) {\r
-                       load_plugin_textdomain($this->textdom, PLUGINDIR.'/'.dirname(plugin_basename(__FILE__)), dirname(plugin_basename(__FILE__)));\r
-\r
-                       $this->inited=true;\r
-               }\r
-       }\r
-\r
-       // Gets a required query parameter by name.\r
-       function getrequiredparam($name) {\r
-               global $wp_query;\r
-               if(!isset($wp_query->query_vars[$name]))\r
-                       wp_die("Missing parameter ".$name,"Error");\r
-               return $wp_query->query_vars[$name];\r
-       }\r
-\r
-       // Make a link to this page, with the given query parameter string added\r
-       function makelink($params) {\r
-               $link=get_permalink();\r
-               if(strlen($params)==0)\r
-                       return $link;\r
-               if(strpos($link,'?')===false)\r
-                       $link.='?';\r
-               else\r
-                       $link.='&';\r
-               $link.=$params;\r
-               return $link;\r
-       }\r
-\r
-       // Handler for the 'fdroidrepo' shortcode.\r
-       //  $attribs - shortcode attributes\r
-       //  $content - optional content enclosed between the starting and\r
-       //             ending shortcode\r
-       // Returns the generated content.\r
-       function do_shortcode($attribs,$content=null) {\r
-               global $wp_query,$wp_rewrite;\r
-               $this->lazyinit();\r
-\r
-               $page=1;\r
-               if(isset($wp_query->query_vars['fdpage'])) {\r
-                       $page=(int)$wp_query->query_vars['fdpage'];\r
-                       if($page==0)\r
-                               $page=1;\r
-               }\r
-\r
-               $filter=$wp_query->query_vars['fdfilter'];\r
-               $fdid=$wp_query->query_vars['fdid'];\r
-\r
-               if($fdid!==null)\r
-                       $out=$this->get_app($fdid);\r
-               else\r
-                       $out=$this->get_apps($page,$filter);\r
-               return $out;\r
-\r
-       }\r
-\r
-\r
-       function get_app($id) {\r
-\r
-               $xml = simplexml_load_file($this->site_path."/repo/index.xml");\r
-               foreach($xml->children() as $app) {\r
-\r
-                       $attrs=$app->attributes();\r
-                       if($attrs['id']==$id) {\r
-                               $apks=array();;\r
-                               foreach($app->children() as $el) {\r
-                                       switch($el->getName()) {\r
-                                               case "name":\r
-                                                       $name=$el;\r
-                                                       break;\r
-                                               case "icon":\r
-                                                       $icon=$el;\r
-                                                       break;\r
-                                               case "summary":\r
-                                                       $summary=$el;\r
-                                                       break;\r
-                                               case "description":\r
-                                                       $desc=$el;\r
-                                                       break;\r
-                                               case "license":\r
-                                                       $license=$el;\r
-                                                       break;\r
-                                               case "source":\r
-                                                       $source=$el;\r
-                                                       break;\r
-                                               case "tracker":\r
-                                                       $issues=$el;\r
-                                                       break;\r
-                                               case "web":\r
-                                                       $web=$el;\r
-                                                       break;\r
-                                               case "package":\r
-                                                       $thisapk=array();\r
-                                                       foreach($el->children() as $pel) {\r
-                                                               switch($pel->getName()) {\r
-                                                               case "version":\r
-                                                                       $thisapk['version']=$pel;\r
-                                                                       break;\r
-                                                               case "vercode":\r
-                                                                       $thisapk['vercode']=$pel;\r
-                                                                       break;\r
-                                                               case "apkname":\r
-                                                                       $thisapk['apkname']=$pel;\r
-                                                                       break;\r
-                                                               case "hash":\r
-                                                                       $thisapk['hash']=$pel;\r
-                                                                       break;\r
-                                                               case "size":\r
-                                                                       $thisapk['size']=$pel;\r
-                                                                       break;\r
-                                                               case "sdkver":\r
-                                                                       $thisapk['sdkver']=$pel;\r
-                                                                       break;\r
-                                                               case "permissions":\r
-                                                                       $thisapk['permissions']=$pel;\r
-                                                                       break;\r
-                                                               }\r
-                                                       }\r
-                                                       $apks[]=$thisapk;\r
-\r
-                                       }\r
-                               }\r
-\r
-                               $out='<div id="appheader">';\r
-                               $out.='<div style="float:left;padding-right:10px;"><img src="http://f-droid.org/repo/icons/'.$icon.'" width=48></div>';\r
-                               $out.='<p><span style="font-size:20px">'.$name."</span>";\r
-                               $out.="<br>".$summary."</p>";\r
-                               $out.="</div>";\r
-\r
-                               $out.="<p>".$desc."</p>";\r
-\r
-                               $out.="<p><b>License:</b> ".$license."</p>";\r
-\r
-                               $out.="<p>";\r
-                               if(strlen($web)>0)\r
-                                       $out.='<b>Website:</b> <a href="'.$web.'">'.$web.'</a><br />';\r
-                               if(strlen($issues)>0)\r
-                                       $out.='<b>Issue Tracker:</b> <a href="'.$issues.'">'.$issues.'</a><br />';\r
-                               if(strlen($source)>0)\r
-                                       $out.='<b>Source Code:</b> <a href="'.$source.'">'.$source.'</a><br />';\r
-                               $out.="</p>";\r
-\r
-                               $out.="<h3>Packages</h3>";\r
-                               foreach($apks as $apk) {\r
-                                       $out.="<p><b>Version ".$apk['version']."</b> - ";\r
-                                       $out.='<a href="http://f-droid.org/repo/'.$apk['apkname'].'">download</a> ';\r
-                                       $out.=$apk['size']." bytes";\r
-                                       $out.="</p>";\r
-                               }\r
-\r
-                               $out.='<hr><p><a href="'.$this->makelink("").'">Index</a></p>';\r
-\r
-                               return $out;\r
-                       }\r
-               }\r
-               return "<p>Application not found</p>";\r
-       }\r
-\r
-\r
-       function get_apps($page,$filter=null) {\r
-\r
-               if($filter===null)\r
-                       $out="<p>All applications";\r
-               else\r
-                       $out="<p>Applications matching ".$filter;\r
-               $out.="</p>";\r
-\r
-               $perpage=30;\r
-               $skipped=0;\r
-               $got=0;\r
-               $total=0;\r
-\r
-               $xml = simplexml_load_file($this->site_path."/repo/index.xml");\r
-               foreach($xml->children() as $app) {\r
-\r
-                       if($app->getName() == 'repo') continue;\r
-                       $attrs=$app->attributes();\r
-                       $id=$attrs['id'];\r
-                       foreach($app->children() as $el) {\r
-                               switch($el->getName()) {\r
-                                       case "name":\r
-                                               $name=$el;\r
-                                               break;\r
-                                       case "icon":\r
-                                               $icon=$el;\r
-                                               break;\r
-                                       case "summary":\r
-                                               $summary=$el;\r
-                                               break;\r
-                                       case "license":\r
-                                               $license=$el;\r
-                                               break;\r
-                               }\r
-                       }\r
-\r
-                       if($filter===null || stristr($name,$filter)) {\r
-                               if($skipped<($page-1)*$perpage) {\r
-                                       $skipped++;\r
-                               } else if($got<$perpage) {\r
-\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/'.$icon.'" style="width:48px;"></div>';\r
-\r
-                                       $out.='<div style="float:right;">';\r
-                                       $out.='<p><a href="';\r
-                                       $out.=$this->makelink("fdid=".$id);\r
-                                       $out.='">Details...</a>';\r
-                                       $out.="</p>";\r
-                                       $out.="</div>\n";\r
-\r
-                                       $out.='<p><span style="font-size:20px">'.$name."</span>";\r
-                                       $out.="<br>".$summary."</p>\n";\r
-\r
-                                       $out.="</div>\n";\r
-\r
-                                       $got++;\r
-                               }\r
-                               $total++;\r
-                       }\r
-\r
-               }\r
-\r
-               $numpages=ceil((float)$total/$perpage);\r
-\r
-               $out.='<hr><p>';\r
-               if($page==1) {\r
-                       $out.="&lt;&lt;first ";\r
-                       $out.="&lt;prev ";\r
-               } else {\r
-                       $out.='<a href="'.$this->makelink("fdpage=1").'">&lt;&lt;first</a> ';\r
-                       $out.='<a href="'.$this->makelink("fdpage=".($page-1)).'">&lt;&lt;prev</a> ';\r
-               }\r
-               $out.=" Page $page of $numpages ";\r
-               if($page==$numpages) {\r
-                       $out.="next&gt; ";\r
-                       $out.="last&gt;&gt; ";\r
-               } else {\r
-                       $out.='<a href="'.$this->makelink("fdpage=".($page+1)).'">next&gt;</a> ';\r
-                       $out.='<a href="'.$this->makelink("fdpage=".$numpages).'">last&gt;&gt;</a> ';\r
-               }\r
-               $out.='</p>';\r
-\r
-               return $out;\r
-       }\r
+    // Constructor\r
+    function FDroid() {\r
+        // Add filters etc here!\r
+        add_shortcode('fdroidrepo',array($this, 'do_shortcode'));\r
+        add_filter('query_vars',array($this, 'queryvars'));\r
+        $this->inited=false;\r
+    }\r
+\r
+\r
+    // Register additional query variables. (Handler for the 'query_vars' filter)\r
+    function queryvars($qvars) {\r
+        $qvars[]='fdfilter';\r
+        $qvars[]='fdid';\r
+        $qvars[]='fdpage';\r
+        return $qvars;\r
+    }\r
+\r
+\r
+    // Lazy initialise. All non-trivial members should call this before doing anything else.\r
+    function lazyinit() {\r
+        if(!$this->inited) {\r
+            load_plugin_textdomain($this->textdom, PLUGINDIR.'/'.dirname(plugin_basename(__FILE__)), dirname(plugin_basename(__FILE__)));\r
+\r
+            $this->inited=true;\r
+        }\r
+    }\r
+\r
+    // Gets a required query parameter by name.\r
+    function getrequiredparam($name) {\r
+        global $wp_query;\r
+        if(!isset($wp_query->query_vars[$name]))\r
+            wp_die("Missing parameter ".$name,"Error");\r
+        return $wp_query->query_vars[$name];\r
+    }\r
+\r
+    // Make a link to this page, with the given query parameter string added\r
+    function makelink($params) {\r
+        $link=get_permalink();\r
+        if(strlen($params)==0)\r
+            return $link;\r
+        if(strpos($link,'?')===false)\r
+            $link.='?';\r
+        else\r
+            $link.='&';\r
+        $link.=$params;\r
+        return $link;\r
+    }\r
+\r
+    // Handler for the 'fdroidrepo' shortcode.\r
+    //  $attribs - shortcode attributes\r
+    //  $content - optional content enclosed between the starting and\r
+    //             ending shortcode\r
+    // Returns the generated content.\r
+    function do_shortcode($attribs,$content=null) {\r
+        global $wp_query,$wp_rewrite;\r
+        $this->lazyinit();\r
+\r
+        $page=1;\r
+        if(isset($wp_query->query_vars['fdpage'])) {\r
+            $page=(int)$wp_query->query_vars['fdpage'];\r
+            if($page==0)\r
+                $page=1;\r
+        }\r
+\r
+        $filter=$wp_query->query_vars['fdfilter'];\r
+        $fdid=$wp_query->query_vars['fdid'];\r
+\r
+        if($fdid!==null)\r
+            $out=$this->get_app($fdid);\r
+        else\r
+            $out=$this->get_apps($page,$filter);\r
+        return $out;\r
+\r
+    }\r
+\r
+\r
+    function get_app($id) {\r
+\r
+        $xml = simplexml_load_file($this->site_path."/repo/index.xml");\r
+        foreach($xml->children() as $app) {\r
+\r
+            $attrs=$app->attributes();\r
+            if($attrs['id']==$id) {\r
+                $apks=array();;\r
+                foreach($app->children() as $el) {\r
+                    switch($el->getName()) {\r
+                        case "name":\r
+                            $name=$el;\r
+                            break;\r
+                        case "icon":\r
+                            $icon=$el;\r
+                            break;\r
+                        case "summary":\r
+                            $summary=$el;\r
+                            break;\r
+                        case "description":\r
+                            $desc=$el;\r
+                            break;\r
+                        case "license":\r
+                            $license=$el;\r
+                            break;\r
+                        case "source":\r
+                            $source=$el;\r
+                            break;\r
+                        case "tracker":\r
+                            $issues=$el;\r
+                            break;\r
+                        case "web":\r
+                            $web=$el;\r
+                            break;\r
+                        case "package":\r
+                            $thisapk=array();\r
+                            foreach($el->children() as $pel) {\r
+                                switch($pel->getName()) {\r
+                                case "version":\r
+                                    $thisapk['version']=$pel;\r
+                                    break;\r
+                                case "vercode":\r
+                                    $thisapk['vercode']=$pel;\r
+                                    break;\r
+                                case "apkname":\r
+                                    $thisapk['apkname']=$pel;\r
+                                    break;\r
+                                case "hash":\r
+                                    $thisapk['hash']=$pel;\r
+                                    break;\r
+                                case "size":\r
+                                    $thisapk['size']=$pel;\r
+                                    break;\r
+                                case "sdkver":\r
+                                    $thisapk['sdkver']=$pel;\r
+                                    break;\r
+                                case "permissions":\r
+                                    $thisapk['permissions']=$pel;\r
+                                    break;\r
+                                }\r
+                            }\r
+                            $apks[]=$thisapk;\r
+\r
+                    }\r
+                }\r
+\r
+                $out='<div id="appheader">';\r
+                $out.='<div style="float:left;padding-right:10px;"><img src="http://f-droid.org/repo/icons/'.$icon.'" width=48></div>';\r
+                $out.='<p><span style="font-size:20px">'.$name."</span>";\r
+                $out.="<br>".$summary."</p>";\r
+                $out.="</div>";\r
+\r
+                $out.="<p>".$desc."</p>";\r
+\r
+                $out.="<p><b>License:</b> ".$license."</p>";\r
+\r
+                $out.="<p>";\r
+                if(strlen($web)>0)\r
+                    $out.='<b>Website:</b> <a href="'.$web.'">'.$web.'</a><br />';\r
+                if(strlen($issues)>0)\r
+                    $out.='<b>Issue Tracker:</b> <a href="'.$issues.'">'.$issues.'</a><br />';\r
+                if(strlen($source)>0)\r
+                    $out.='<b>Source Code:</b> <a href="'.$source.'">'.$source.'</a><br />';\r
+                $out.="</p>";\r
+\r
+                $out.="<h3>Packages</h3>";\r
+                foreach($apks as $apk) {\r
+                    $out.="<p><b>Version ".$apk['version']."</b> - ";\r
+                    $out.='<a href="http://f-droid.org/repo/'.$apk['apkname'].'">download</a> ';\r
+                    $out.=$apk['size']." bytes";\r
+                    $out.="</p>";\r
+                }\r
+\r
+                $out.='<hr><p><a href="'.$this->makelink("").'">Index</a></p>';\r
+\r
+                return $out;\r
+            }\r
+        }\r
+        return "<p>Application not found</p>";\r
+    }\r
+\r
+\r
+    function get_apps($page,$filter=null) {\r
+\r
+        if($filter===null)\r
+            $out="<p>All applications";\r
+        else\r
+            $out="<p>Applications matching ".$filter;\r
+        $out.="</p>";\r
+\r
+        $perpage=30;\r
+        $skipped=0;\r
+        $got=0;\r
+        $total=0;\r
+\r
+        $xml = simplexml_load_file($this->site_path."/repo/index.xml");\r
+        foreach($xml->children() as $app) {\r
+\r
+            if($app->getName() == 'repo') continue;\r
+            $attrs=$app->attributes();\r
+            $id=$attrs['id'];\r
+            foreach($app->children() as $el) {\r
+                switch($el->getName()) {\r
+                    case "name":\r
+                        $name=$el;\r
+                        break;\r
+                    case "icon":\r
+                        $icon=$el;\r
+                        break;\r
+                    case "summary":\r
+                        $summary=$el;\r
+                        break;\r
+                    case "license":\r
+                        $license=$el;\r
+                        break;\r
+                }\r
+            }\r
+\r
+            if($filter===null || stristr($name,$filter)) {\r
+                if($skipped<($page-1)*$perpage) {\r
+                    $skipped++;\r
+                } else if($got<$perpage) {\r
+\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/'.$icon.'" style="width:48px;"></div>';\r
+\r
+                    $out.='<div style="float:right;">';\r
+                    $out.='<p><a href="';\r
+                    $out.=$this->makelink("fdid=".$id);\r
+                    $out.='">Details...</a>';\r
+                    $out.="</p>";\r
+                    $out.="</div>\n";\r
+\r
+                    $out.='<p><span style="font-size:20px">'.$name."</span>";\r
+                    $out.="<br>".$summary."</p>\n";\r
+\r
+                    $out.="</div>\n";\r
+\r
+                    $got++;\r
+                }\r
+                $total++;\r
+            }\r
+\r
+        }\r
+\r
+        $numpages=ceil((float)$total/$perpage);\r
+\r
+        $out.='<hr><p>';\r
+        if($page==1) {\r
+            $out.="&lt;&lt;first ";\r
+            $out.="&lt;prev ";\r
+        } else {\r
+            $out.='<a href="'.$this->makelink("fdpage=1").'">&lt;&lt;first</a> ';\r
+            $out.='<a href="'.$this->makelink("fdpage=".($page-1)).'">&lt;&lt;prev</a> ';\r
+        }\r
+        $out.=" Page $page of $numpages ";\r
+        if($page==$numpages) {\r
+            $out.="next&gt; ";\r
+            $out.="last&gt;&gt; ";\r
+        } else {\r
+            $out.='<a href="'.$this->makelink("fdpage=".($page+1)).'">next&gt;</a> ';\r
+            $out.='<a href="'.$this->makelink("fdpage=".$numpages).'">last&gt;&gt;</a> ';\r
+        }\r
+        $out.='</p>';\r
+\r
+        return $out;\r
+    }\r
 \r
 \r
 \r