overfactoring namedArgs, they are used by default with a colon as a separator

git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@4236 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
gwoo 2007-01-01 15:37:45 +00:00
parent 07985626fb
commit 315529507c
2 changed files with 39 additions and 42 deletions

View file

@ -212,60 +212,57 @@ class Dispatcher extends Object {
$controller->data = null;
}
$namedArgs = array();
if (is_array($controller->namedArgs)) {
if(array_key_exists($params['action'], $controller->namedArgs)) {
$namedArgs = $controller->namedArgs[$params['action']];
} else {
$namedArgs = $controller->namedArgs;
}
$controller->namedArgs = true;
}
if (!empty($controller->params['pass'])) {
$controller->passed_args =& $controller->params['pass'];
$controller->passedArgs =& $controller->params['pass'];
if (is_array($controller->namedArgs)) {
if(array_key_exists($params['action'], $controller->namedArgs)) {
$args = $controller->namedArgs[$params['action']];
} else {
$args = $controller->namedArgs;
}
foreach($args as $arg => $value) {
if($controller->argSeparator === '/') {
if(in_array($arg, $controller->passedArgs)) {
$argKey = array_search($arg, $controller->passedArgs);
$argVal = $argKey + 1;
$controller->passedArgs[$controller->passedArgs[$argKey]] = $controller->passedArgs[$argVal];
$controller->namedArgs[$controller->passedArgs[$argKey]] = $controller->passedArgs[$argVal];
unset($controller->passedArgs[$argKey], $controller->passedArgs[$argVal]);
unset($params['pass'][$argKey], $params['pass'][$argVal]);
}
} else {
$controller->passedArgs[$arg] = $value;
$controller->namedArgs[$arg] = $value;
}
}
} else if($controller->namedArgs === true) {
$controller->namedArgs = array();
}
if (is_array($controller->namedArgs)) {
if ($controller->namedArgs === true) {
$controller->namedArgs = array();
$c = count($controller->passedArgs);
for ($i = $c - 1; $i > -1; $i--) {
for ($i = 0; $i <= $c; $i++) {
if (isset($controller->passedArgs[$i]) && strpos($controller->passedArgs[$i], $controller->argSeparator) !== false) {
list($argKey, $argVal) = explode($controller->argSeparator, $controller->passedArgs[$i]);
$controller->passedArgs[$argKey] = $argVal;
$controller->namedArgs[$argKey] = $argVal;
unset($controller->passedArgs[$i]);
unset($params['pass'][$i]);
if(empty($namedArgs) || (!empty($namedArgs) && in_array($argKey, array_keys($namedArgs)))) {
$controller->passedArgs[$argKey] = $argVal;
$controller->namedArgs[$argKey] = $argVal;
unset($controller->passedArgs[$i]);
unset($params['pass'][$i]);
}
} else if($controller->argSeparator === '/') {
$ii = $i + 1;
if(isset($controller->passedArgs[$i]) && isset($controller->passedArgs[$ii])) {
$argKey = $controller->passedArgs[$i];
$argVal = $controller->passedArgs[$ii];
if(empty($namedArgs) || (!empty($namedArgs) && in_array($argKey, array_keys($namedArgs)))) {
$controller->passedArgs[$argKey] = $argVal;
$controller->namedArgs[$argKey] = $argVal;
unset($controller->passedArgs[$i], $controller->passedArgs[$ii]);
unset($params['pass'][$i], $params['pass'][$ii]);
}
}
}
}
$controller->passedArgs = am($namedArgs, $controller->passedArgs);
$controller->namedArgs = am($namedArgs, $controller->namedArgs);
}
} else {
$controller->passed_args = null;
$controller->passedArgs = null;
if (is_array($controller->namedArgs)) {
if(array_key_exists($params['action'], $controller->namedArgs)) {
$args = $controller->namedArgs[$params['action']];
} else {
$args = $controller->namedArgs;
}
foreach($args as $arg => $value) {
$controller->passedArgs[$arg] = $value;
$controller->namedArgs[$arg] = $value;
}
/* set default namedArgs if they exist*/
if ($controller->namedArgs === true) {
$controller->passedArgs = array();
$controller->namedArgs = array();
$controller->passedArgs = am($namedArgs, $controller->passedArgs);
$controller->namedArgs = am($namedArgs, $controller->namedArgs);
}
}