svn: /pear2/sandbox/pear2.php.net/trunk/ src/pear2web/Router.php www/index.php

[email protected] (Brett Bieber)
Newsgroups php.pear.cvs,php.pear.core
Message-ID <[email protected]>
saltybeagle                              Fri, 11 Jun 2010 13:56:01 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=300384

Log:
Move router logic into separate source file. Always require the router.

Changed paths:
    A   pear2/sandbox/pear2.php.net/trunk/src/
    A   pear2/sandbox/pear2.php.net/trunk/src/pear2web/
    A   pear2/sandbox/pear2.php.net/trunk/src/pear2web/Router.php
    U   pear2/sandbox/pear2.php.net/trunk/www/index.php

Added: pear2/sandbox/pear2.php.net/trunk/src/pear2web/Router.php
===================================================================
--- pear2/sandbox/pear2.php.net/trunk/src/pear2web/Router.php	                        (rev 0)
+++ pear2/sandbox/pear2.php.net/trunk/src/pear2web/Router.php	2010-06-11 13:56:01 UTC (rev 300384)
@@ -0,0 +1,38 @@
+<?php
+namespace pear2web;
+class Router
+{
+    public static function getRoute($requestURI)
+    {
+        if (!empty($_SERVER['QUERY_STRING'])) {
+            $requestURI = substr($requestURI, 0, strlen($_SERVER['QUERY_STRING'])*-1-1);
+        }
+
+        $base = preg_quote(\PEAR2\SimpleChannelFrontend\Main::getURL(), '/');
+
+        $options = array();
+
+        switch(true) {
+            case ($requestURI == '/'):
+                // Short circuit
+                $options['view'] = 'News';
+                break;
+
+            case preg_match('/\/(?<package>[0-9a-z_]+)(-(?<version>[0-9ab.]+))?$/i',
+                    $requestURI, $matches):
+
+                // Viewing an individual package
+                $options['view']    = 'package';
+                $options['package'] = $matches['package'];
+
+                // Release selected
+                if (isset($matches['version'])) {
+                    $options['view']           = 'release';
+                    $options['packageVersion'] = $matches['version'];
+                }
+                break;
+        }
+
+        return $options;
+    }
+}
\ No newline at end of file

Modified: pear2/sandbox/pear2.php.net/trunk/www/index.php
===================================================================
--- pear2/sandbox/pear2.php.net/trunk/www/index.php	2010-06-11 13:51:43 UTC (rev 300383)
+++ pear2/sandbox/pear2.php.net/trunk/www/index.php	2010-06-11 13:56:01 UTC (rev 300384)
@@ -1,23 +1,12 @@
 <?php
 require_once dirname(__FILE__).'/../config.inc.php';
+require_once dirname(__FILE__).'/../src/pear2web/Router.php';

 $options = $_GET;

-if (isset($_SERVER['REDIRECT_URL'])) {
-    $options['view'] = 'package';
-    preg_match('/\/(?<package>[0-9a-z_]+)(-(?<version>[0-9ab.]+))?$/i',
-        $_SERVER['REDIRECT_URL'], $matches);
-    $options['package'] = $matches['package'];
-
-    if (isset($matches['version'])) {
-        $options['packageVersion'] = $matches['version'];
-        $options['view']           = 'release';
-    }
-}
-
 $channel = new \PEAR2\Pyrus\ChannelFile(__DIR__ . '/channel.xml');

-$frontend = new PEAR2\SimpleChannelFrontend\Main($channel, $options);
+$frontend = new PEAR2\SimpleChannelFrontend\Main($channel, pear2web\Router::getRoute($_SERVER['REQUEST_URI']) + $_GET);

 $savant = new PEAR2\Templates\Savant\Main();
 $savant->setClassToTemplateMapper(new PEAR2\SimpleChannelFrontend\TemplateMapper);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.