public function listApps($filter = null, $assoc = false, $perms = Horde_Perms::SHOW)
{
if (is_null($filter)) {
$filter = array('notoolbar', 'active');
}
if (!$this->isAdmin() && in_array('active', $filter) && !in_array('noadmin', $filter)) {
$filter[] = 'noadmin';
}
$apps = array();
foreach ($this->applications as $app => $params) {
if (in_array($params['status'], $filter)) {
/* Topbar apps can only be displayed if the parent app is
* active. */
if ($params['status'] == 'topbar' && $this->isInactive($params['app'])) {
continue;
}
if (is_null($perms) || $this->hasPermission($app, $perms)) {
$apps[$app] = $params;
}
}
}
return $assoc ? $apps : array_keys($apps);
}