public static function listInternalCalendars($owneronly = false, $permission = Horde_Perms::SHOW, $user = null)
{
if ($owneronly && !$GLOBALS['registry']->getAuth()) {
return array();
}
if (empty($user)) {
$user = $GLOBALS['registry']->getAuth();
}
$kronolith_shares = $GLOBALS['injector']->getInstance('Kronolith_Shares');
if ($owneronly || empty($GLOBALS['conf']['share']['hidden'])) {
try {
$calendars = $kronolith_shares->listShares($user, array('perm' => $permission, 'attributes' => $owneronly ? $user : null, 'sort_by' => 'name'));
} catch (Horde_Share_Exception $e) {
Horde::log($e);
return array();
}
} else {
try {
$calendars = $kronolith_shares->listShares($GLOBALS['registry']->getAuth(), array('perm' => $permission, 'attributes' => $user, 'sort_by' => 'name'));
} catch (Horde_Share_Exception $e) {
Horde::log($e);
return array();
}
$display_calendars = @unserialize($GLOBALS['prefs']->getValue('display_cals'));
if (is_array($display_calendars)) {
foreach ($display_calendars as $id) {
try {
$calendar = $kronolith_shares->getShare($id);
if ($calendar->hasPermission($user, $permission)) {
$calendars[$id] = $calendar;
}
} catch (Horde_Exception_NotFound $e) {
} catch (Horde_Share_Exception $e) {
Horde::log($e);
return array();
}
}
}
}
$default_share = $GLOBALS['prefs']->getValue('default_share');
if (isset($calendars[$default_share])) {
$calendar = $calendars[$default_share];
unset($calendars[$default_share]);
if (!$owneronly || $owneronly && $calendar->get('owner') == $GLOBALS['registry']->getAuth()) {
$calendars = array($default_share => $calendar) + $calendars;
}
}
return $calendars;
}