From 65303112be74ffccd980fea09422efc1ba4f0af6 Mon Sep 17 00:00:00 2001 From: Jan Schneider Date: Thu, 31 Jul 2014 14:56:39 +0200 Subject: [PATCH] Fix displayed URLs for shared collections (Bug #12380). --- kronolith/lib/Calendar/External/Tasks.php | 44 ++++++++++++++++++----- kronolith/lib/Calendar/Internal.php | 34 ++++++++++++++---- nag/lib/Nag.php | 4 +-- turba/lib/Form/EditAddressBook.php | 2 +- 4 files changed, 64 insertions(+), 20 deletions(-) diff --git a/kronolith/lib/Calendar/External/Tasks.php b/kronolith/lib/Calendar/External/Tasks.php index d49a78f2715..2aec8b5012c 100644 --- a/kronolith/lib/Calendar/External/Tasks.php +++ b/kronolith/lib/Calendar/External/Tasks.php @@ -42,8 +42,10 @@ public function __construct($params = array()) */ public function toHash() { - $owner = $GLOBALS['registry']->getAuth() && - $this->_share->get('owner') == $GLOBALS['registry']->getAuth(); + global $calendar_manager, $conf, $injector, $registry; + + $owner = $registry->getAuth() && + $this->_share->get('owner') == $registry->getAuth(); $hash = parent::toHash(); $hash['name'] = Kronolith::getLabel($this->_share); @@ -52,17 +54,41 @@ public function toHash() $hash['users'] = Kronolith::listShareUsers($this->_share); $hash['fg'] = Kronolith::foregroundColor($this->_share); $hash['bg'] = Kronolith::backgroundColor($this->_share); - $hash['show'] = in_array('tasks/' . $this->_share->getName(), $GLOBALS['calendar_manager']->get(Kronolith::DISPLAY_EXTERNAL_CALENDARS)); - $hash['edit'] = $this->_share->hasPermission($GLOBALS['registry']->getAuth(), Horde_Perms::EDIT); + $hash['show'] = in_array( + 'tasks/' . $this->_share->getName(), + $calendar_manager->get(Kronolith::DISPLAY_EXTERNAL_CALENDARS) + ); + $hash['edit'] = $this->_share->hasPermission( + $registry->getAuth(), + Horde_Perms::EDIT + ); try { - $hash['caldav'] = Horde::url($GLOBALS['registry']->get('webroot', 'horde') . ($GLOBALS['conf']['urls']['pretty'] == 'rewrite' ? '/rpc/calendars/' : '/rpc.php/calendars/'), true, -1) - . ($this->_share->get('owner') ? $this->_share->get('owner') : '-system-') . '/' - . $GLOBALS['injector']->getInstance('Horde_Dav_Storage')->getExternalCollectionId($this->_share->getName(), 'tasks') + $hash['caldav'] = Horde::url( + $registry->get('webroot', 'horde') + . ($conf['urls']['pretty'] == 'rewrite' + ? '/rpc/calendars/' + : '/rpc.php/calendars/'), + true, + -1 + ) + . $registry->getAuth() . '/' + . $injector->getInstance('Horde_Dav_Storage') + ->getExternalCollectionId($this->_share->getName(), 'tasks') . '/'; } catch (Horde_Exception $e) { } - $hash['sub'] = Horde::url($GLOBALS['registry']->get('webroot', 'horde') . ($GLOBALS['conf']['urls']['pretty'] == 'rewrite' ? '/rpc/nag/' : '/rpc.php/nag/'), true, -1) - . ($this->_share->get('owner') ? $this->_share->get('owner') : '-system-') . '/' + $hash['sub'] = Horde::url( + $registry->get('webroot', 'horde') + . ($conf['urls']['pretty'] == 'rewrite' + ? '/rpc/nag/' + : '/rpc.php/nag/'), + true, + -1 + ) + . ($this->_share->get('owner') + ? $this->_share->get('owner') + : '-system-') + . '/' . $this->_share->getName() . '.ics'; if ($owner) { $hash['perms'] = Kronolith::permissionToJson($this->_share->getPermission()); diff --git a/kronolith/lib/Calendar/Internal.php b/kronolith/lib/Calendar/Internal.php index 620f5ed5242..b1e715b3157 100644 --- a/kronolith/lib/Calendar/Internal.php +++ b/kronolith/lib/Calendar/Internal.php @@ -128,24 +128,44 @@ public function share() */ public function toHash() { + global $calendar_manager, $conf, $injector, $registry; + $id = $this->_share->getName(); - $owner = $GLOBALS['registry']->getAuth() && - $this->owner() == $GLOBALS['registry']->getAuth(); + $owner = $registry->getAuth() && + $this->owner() == $registry->getAuth(); $hash = parent::toHash(); $hash['name'] = $this->name(); $hash['owner'] = $owner; $hash['users'] = Kronolith::listShareUsers($this->_share); - $hash['show'] = in_array($id, $GLOBALS['calendar_manager']->get(Kronolith::DISPLAY_CALENDARS)); + $hash['show'] = in_array( + $id, + $calendar_manager->get(Kronolith::DISPLAY_CALENDARS) + ); $hash['edit'] = $this->hasPermission(Horde_Perms::EDIT); try { - $hash['caldav'] = Horde::url($GLOBALS['registry']->get('webroot', 'horde') . ($GLOBALS['conf']['urls']['pretty'] == 'rewrite' ? '/rpc/calendars/' : '/rpc.php/calendars/'), true, -1) - . ($this->owner() ? $this->owner() : '-system-') . '/' - . $GLOBALS['injector']->getInstance('Horde_Dav_Storage')->getExternalCollectionId($id, 'calendar') + $hash['caldav'] = Horde::url( + $registry->get('webroot', 'horde') + . ($conf['urls']['pretty'] == 'rewrite' + ? '/rpc/calendars/' + : '/rpc.php/calendars/'), + true, + -1 + ) + . $registry->getAuth() . '/' + . $injector->getInstance('Horde_Dav_Storage') + ->getExternalCollectionId($id, 'calendar') . '/'; } catch (Horde_Exception $e) { } - $hash['sub'] = Horde::url($GLOBALS['registry']->get('webroot', 'horde') . ($GLOBALS['conf']['urls']['pretty'] == 'rewrite' ? '/rpc/kronolith/' : '/rpc.php/kronolith/'), true, -1) + $hash['sub'] = Horde::url( + $registry->get('webroot', 'horde') + . ($conf['urls']['pretty'] == 'rewrite' + ? '/rpc/kronolith/' + : '/rpc.php/kronolith/'), + true, + -1 + ) . ($this->owner() ? $this->owner() : '-system-') . '/' . $id . '.ics'; $hash['feed'] = (string)Kronolith::feedUrl($id); diff --git a/nag/lib/Nag.php b/nag/lib/Nag.php index f64c4630670..2081f6cea48 100644 --- a/nag/lib/Nag.php +++ b/nag/lib/Nag.php @@ -731,9 +731,7 @@ public static function getUrl($type, $tasklist) $url .= '/rpc.php/calendars/'; } $url = Horde::url($url, true, -1) - . ($tasklist->get('owner') - ? $tasklist->get('owner') - : '-system-') + . $registry->getAuth() . '/' . $injector->getInstance('Horde_Dav_Storage') ->getExternalCollectionId($tasklist->getName(), 'tasks') diff --git a/turba/lib/Form/EditAddressBook.php b/turba/lib/Form/EditAddressBook.php index 80df461a74c..c3f636f17cc 100644 --- a/turba/lib/Form/EditAddressBook.php +++ b/turba/lib/Form/EditAddressBook.php @@ -73,7 +73,7 @@ public function __construct($vars, Horde_Share_Object $addressbook) . 'principals/'. $GLOBALS['registry']->getAuth() . '/'; if ($addressbook->get('owner')) { $carddavUrl = Horde::url($carddavUrl, true, -1) - . $addressbook->get('owner') + . $GLOBALS['registry']->getAuth() . '/' . $GLOBALS['injector']->getInstance('Horde_Dav_Storage')->getExternalCollectionId($addressbook->getName(), 'contacts') . '/';