}
return $params;
}
-}
-class IPF_Project_Template_Tag_Url extends IPF_Template_Tag
-{
- function start()
+ public static function urlTag($args)
{
- $args = func_get_args();
$count = count($args);
if ($count === 0)
throw new IPF_Exception('No view specified');
$view = array_shift($args);
if ($count === 2 && is_array($args[0])) {
- echo IPF_HTTP_URL::urlForView($view, $args[0]);
+ return IPF_HTTP_URL::urlForView($view, $args[0]);
} elseif ($count === 3 && is_array($args[0]) && is_array($args[1])) {
- echo IPF_HTTP_URL::urlForView($view, $args[0], $args[1]);
+ return IPF_HTTP_URL::urlForView($view, $args[0], $args[1]);
} else {
- echo IPF_HTTP_URL::urlForView($view, $args);
+ return IPF_HTTP_URL::urlForView($view, $args);
}
}
-}
-class IPF_Project_Template_Tag_Params extends IPF_Template_Tag
-{
- private function setParam(&$params, $key, $value)
- {
- if ($value === null)
- unset($params[$key]);
- else
- $params[$key] = $value;
- }
-
- function start()
+ public static function paramsTag($args)
{
$params = array();
- $args = func_get_args();
$count = count($args);
- for ($i = 0; $i < $count; ++$i) {
+ for ($i = 0; $i < $count; ) {
if (is_array($args[$i])) {
- foreach ($args[$i] as $key => $value)
- $this->setParam($params, $key, $value);
+ foreach ($args[$i] as $key => $value) {
+ if ($value === null)
+ unset($params[$key]);
+ else
+ $params[$key] = $value;
+ }
+
+ ++$i;
} else {
$key = $args[$i];
$value = $args[$i+1];
- $this->setParam($params, $key, $value);
- ++$i;
+ if ($value === null)
+ unset($params[$key]);
+ else
+ $params[$key] = $value;
+
+ $i += 2;
}
}
- echo IPF_HTTP_URL::generateParams($params);
+ return IPF_HTTP_URL::generateParams($params);
+ }
+}
+
+class IPF_Project_Template_Tag_Url extends IPF_Template_Tag
+{
+ function start()
+ {
+ echo IPF_Project_Template::urlTag(func_get_args());
+ }
+}
+
+class IPF_Project_Template_Tag_Params extends IPF_Template_Tag
+{
+ function start()
+ {
+ echo IPF_Project_Template::paramsTag(func_get_args());
}
}