public function getServiceLink($type, $app = null, $full = false)
{
$opts = array('app' => 'horde');
switch ($type) {
case 'ajax':
if (is_null($app)) {
$app = 'horde';
}
return Horde::url('services/ajax.php/' . $app . '/', $full, $opts)->add('token', $GLOBALS['session']->getToken());
case 'cache':
$opts['append_session'] = -1;
return Horde::url('services/cache.php', $full, $opts);
case 'download':
return Horde::url('services/download/', $full, $opts)->add('app', $app);
case 'emailconfirm':
return Horde::url('services/confirm.php', $full, $opts);
case 'go':
return Horde::url('services/go.php', $full, $opts);
case 'help':
return Horde::url('services/help/', $full, $opts)->add('module', $app);
case 'imple':
return Horde::url('services/imple.php', $full, $opts);
case 'login':
return Horde::url('login.php', $full, $opts);
case 'logintasks':
return Horde::url('services/logintasks.php', $full, $opts)->add('app', $app);
case 'logout':
return $this->getLogoutUrl(array('reason' => Horde_Auth::REASON_LOGOUT));
case 'pixel':
return Horde::url('services/images/pixel.php', $full, $opts);
case 'prefs':
if (!in_array($GLOBALS['conf']['prefs']['driver'], array('', 'none'))) {
$url = Horde::url('services/prefs.php', $full, $opts);
if (!is_null($app)) {
$url->add('app', $app);
}
return $url;
}
break;
case 'portal':
return $this->getView() == Horde_Registry::VIEW_SMARTMOBILE ? Horde::url('services/portal/smartmobile.php', $full, $opts) : Horde::url('services/portal/', $full, $opts);
break;
case 'problem':
return Horde::url('services/problem.php', $full, $opts)->add('return_url', Horde_Util::getFormData('location', Horde::selfUrl(true, true, true)));
case 'sidebar':
return Horde::url('services/sidebar.php', $full, $opts);
case 'twitter':
return Horde::url('services/twitter/', true);
}
throw new BadFunctionCallException('Invalid service requested: ' . print_r(debug_backtrace(false), true));
}