public static function urlFor($controller, $data, $full = false, $append_session = 0)
{
$rewrite = isset($GLOBALS['conf']['urls']['pretty']) && $GLOBALS['conf']['urls']['pretty'] == 'rewrite';
switch ($controller) {
case 'queue':
if ($rewrite) {
if (is_array($data)) {
if (empty($data['slug'])) {
$slug = (int) $data['id'];
} else {
$slug = $data['slug'];
}
} else {
$slug = (int) $data;
}
return Horde::url('queue/' . $slug, $full, $append_session);
} else {
if (is_array($data)) {
$id = $data['id'];
} else {
$id = $data;
}
return Horde::url('queue/?id=' . $id, $full, $append_session);
}
break;
case 'ticket':
$id = (int) $data;
if ($rewrite) {
return Horde::url('ticket/' . $id, $full, $append_session);
} else {
return Horde::url('ticket/?id=' . $id, $full, $append_session);
}
break;
case 'ticket_rss':
$id = (int) $data;
if ($rewrite) {
return Horde::url('ticket/' . $id . '/rss', $full, $append_session);
} else {
return Horde::url('ticket/rss.php?id=' . $id, $full, $append_session);
}
break;
case 'ticket_action':
list($controller, $id) = $data;
if ($rewrite) {
return Horde::url('ticket/' . $id . '/' . $controller, $full, $append_session = 0);
} else {
return Horde::url('ticket/' . $controller . '.php?id=' . $id, $full, $append_session = 0);
}
case 'query':
case 'query_rss':
if ($rewrite) {
if (is_array($data)) {
if (isset($data['slug'])) {
$slug = $data['slug'];
} else {
$slug = $data['id'];
}
} else {
$slug = (int) $data;
}
$url = 'query/' . $slug;
if ($controller == 'query_rss') {
$url .= '/rss';
}
return Horde::url($url, $full, $append_session);
} else {
if (is_array($data)) {
if (isset($data['slug'])) {
$param = array('slug' => $data['slug']);
} else {
$param = array('query' => $data['id']);
}
} else {
$param = array('query' => $data);
}
$url = $controller == 'query' ? 'query/run.php' : 'query/rss.php';
return Horde::url($url, $full, $append_session)->add($param);
}
break;
}
}