mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-27 15:19:57 +09:00
parent
88165abbf9
commit
cece2c6b4a
1 changed files with 23 additions and 71 deletions
|
|
@ -18,29 +18,29 @@ class Router
|
||||||
*/
|
*/
|
||||||
private static $routes = array(
|
private static $routes = array(
|
||||||
// rss , blogAPI
|
// rss , blogAPI
|
||||||
'(rss|atom)' => array('module' => 'rss', 'act' => '$1', '[L]' => TRUE),
|
'(rss|atom)' => array('module' => 'rss', 'act' => '$1'),
|
||||||
'([a-zA-Z0-9_]+)/(rss|atom|api)' => array('mid' => '$1', 'act' => '$2', '[L]' => TRUE),
|
'([a-zA-Z0-9_]+)/(rss|atom|api)' => array('mid' => '$1', 'act' => '$2'),
|
||||||
'([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/(rss|atom|api)' => array('vid' => '$1', 'mid' => '$2', 'act' => '$3', '[L]' => TRUE),
|
'([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/(rss|atom|api)' => array('vid' => '$1', 'mid' => '$2', 'act' => '$3'),
|
||||||
// trackback
|
// trackback
|
||||||
'([0-9]+)/(.+)/trackback' => array('document_srl' => '$1', 'key' => '$2', 'act' => 'trackback', '[L]' => TRUE),
|
'([0-9]+)/(.+)/trackback' => array('document_srl' => '$1', 'key' => '$2', 'act' => 'trackback'),
|
||||||
'([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback' => array('mid' => '$1', 'document_srl' => '$2', 'key' => '$3', 'act' => 'trackback', '[L]' => TRUE),
|
'([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback' => array('mid' => '$1', 'document_srl' => '$2', 'key' => '$3', 'act' => 'trackback'),
|
||||||
'([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback' => array('vid' => '$1', 'mid' => '$2', 'document_srl' => '$3' , 'key' => '$4', 'act' => 'trackback', '[L]' => TRUE),
|
'([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback' => array('vid' => '$1', 'mid' => '$2', 'document_srl' => '$3' , 'key' => '$4', 'act' => 'trackback'),
|
||||||
// document_srl
|
|
||||||
'([0-9]+)' => array('document_srl' => '$1', '[L]' => TRUE),
|
|
||||||
// mid
|
// mid
|
||||||
'([a-zA-Z0-9_]+)/?' => array('mid' => '$1', '[L]' => TRUE),
|
'([a-zA-Z0-9_]+)/?' => array('mid' => '$1'),
|
||||||
// mid + document_srl
|
// mid + document_srl
|
||||||
'([a-zA-Z0-9_]+)/([0-9]+)' => array('mid' => '$1', 'document_srl' => '$2', '[L]' => TRUE),
|
'([a-zA-Z0-9_]+)/([0-9]+)' => array('mid' => '$1', 'document_srl' => '$2'),
|
||||||
// vid + mid
|
// vid + mid
|
||||||
'([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/' => array('vid' => '$1', 'mid' => '$2', '[L]' => TRUE),
|
'([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/' => array('vid' => '$1', 'mid' => '$2'),
|
||||||
// vid + mid + document_srl
|
// vid + mid + document_srl
|
||||||
'([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([0-9]+)?' => array('vid' => '$1', 'mid' => '$2', 'document_srl' => '$3', '[L]' => TRUE),
|
'([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([0-9]+)?' => array('vid' => '$1', 'mid' => '$2', 'document_srl' => '$3'),
|
||||||
|
// document_srl
|
||||||
|
'([0-9]+)' => array('document_srl' => '$1'),
|
||||||
// mid + entry title
|
// mid + entry title
|
||||||
'([a-zA-Z0-9_]+)/entry/(.+)' => array('mid' => '$1', 'entry' => '$2', '[L]' => TRUE),
|
'([a-zA-Z0-9_]+)/entry/(.+)' => array('mid' => '$1', 'entry' => '$2'),
|
||||||
// vid + mid + entry title
|
// vid + mid + entry title
|
||||||
'([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/(.+)' => array('vid' => '$1', 'mid' => '$2', 'entry' => '$3', '[L]' => TRUE),
|
'([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/(.+)' => array('vid' => '$1', 'mid' => '$2', 'entry' => '$3'),
|
||||||
// shop / vid / [category|product] / identifier
|
// shop / vid / [category|product] / identifier
|
||||||
'([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_\.-]+)' => array('act' => 'route', 'vid' => '$1', 'type' => '$2', 'identifier'=> '$3', '[L]' => TRUE)
|
'([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-zA-Z0-9_\.-]+)' => array('act' => 'route', 'vid' => '$1', 'type' => '$2', 'identifier'=> '$3')
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -72,7 +72,6 @@ class Router
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get relative path from request uri
|
|
||||||
$path = parse_url($uri, PHP_URL_PATH);
|
$path = parse_url($uri, PHP_URL_PATH);
|
||||||
|
|
||||||
// Do some final cleaning of the URI and return it
|
// Do some final cleaning of the URI and return it
|
||||||
|
|
@ -81,80 +80,33 @@ class Router
|
||||||
if(strlen($path) > 0)
|
if(strlen($path) > 0)
|
||||||
{
|
{
|
||||||
self::$segments = explode('/', $path);
|
self::$segments = explode('/', $path);
|
||||||
|
|
||||||
|
// Remove the meanless segment
|
||||||
|
unset(self::$segments[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isset(self::$routes[$path]))
|
if(isset(self::$routes[$path]))
|
||||||
{
|
{
|
||||||
foreach(self::$routes[$path] as $key => $val)
|
foreach(self::$routes[$path] as $key => $val)
|
||||||
{
|
{
|
||||||
if(strlen($val) > 0)
|
$val = preg_replace('#^\$([0-9]+)$#e', '\$matches[$1]', $val);
|
||||||
{
|
|
||||||
if(substr_compare($val, '$', 0, 1) == 0)
|
|
||||||
{
|
|
||||||
$segment_index = (int) substr($val, 1) - 1;
|
|
||||||
if($segment_index < 0)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
Context::set($key, self::$segments[$segment_index], TRUE);
|
Context::set($key, $val, TRUE);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Context::set($key, $val, TRUE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Context::set($key, '', TRUE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$break = FALSE;
|
|
||||||
|
|
||||||
// Apply routes
|
// Apply routes
|
||||||
foreach(self::$routes as $regex => $query)
|
foreach(self::$routes as $regex => $query)
|
||||||
{
|
{
|
||||||
// Stop the routing proccess
|
|
||||||
if($break)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(preg_match('#^' . $regex . '$#', $path, $matches))
|
if(preg_match('#^' . $regex . '$#', $path, $matches))
|
||||||
{
|
{
|
||||||
foreach($query as $key => $val)
|
foreach($query as $key => $val)
|
||||||
{
|
{
|
||||||
// If [L] keyword is defined
|
$val = preg_replace('#^\$([0-9]+)$#e', '\$matches[$1]', $val);
|
||||||
if($key == '[L]')
|
|
||||||
{
|
|
||||||
// Stop the routing process and don't apply any more rules
|
|
||||||
$break = TRUE;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(strlen($val) > 0)
|
Context::set($key, $val, TRUE);
|
||||||
{
|
|
||||||
if(substr($val, 0, 1) == '$')
|
|
||||||
{
|
|
||||||
$segment_index = (int) substr($val, 1) - 1;
|
|
||||||
if($segment_index < 0)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
Context::set($key, self::$segments[$segment_index], TRUE);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Context::set($key, $val, TRUE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Context::set($key, '', TRUE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -198,7 +150,7 @@ class Router
|
||||||
*/
|
*/
|
||||||
public static function getSegment($index)
|
public static function getSegment($index)
|
||||||
{
|
{
|
||||||
return self::$segments[$index - 1];
|
return self::$segments[$index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue