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);