From: Michael J. Rubinsky Date: Tue, 9 Mar 2010 16:48:43 +0000 (-0500) Subject: When tagging events, tag them with the event->creator as well as the share owner. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=749b2145b131f868b41790c325c29e104c68038c;p=horde.git When tagging events, tag them with the event->creator as well as the share owner. Needed since the event owner may not necessarily be the share owner. --- diff --git a/kronolith/lib/Ajax/Imple/TagActions.php b/kronolith/lib/Ajax/Imple/TagActions.php index c42e63020..b6bac1451 100644 --- a/kronolith/lib/Ajax/Imple/TagActions.php +++ b/kronolith/lib/Ajax/Imple/TagActions.php @@ -51,12 +51,11 @@ class Kronolith_Ajax_Imple_TagActions extends Horde_Ajax_Imple_Base // Check perms only calendar owners may tag a calendar, only event // creator can tag an event. - if ($post['type'] == 'calendar') { - $cal = $GLOBALS['kronolith_shares']->getShare($post['resource']); - $owner = $cal->get('owner'); - } elseif($post['type'] == 'event') { + $cal = $GLOBALS['kronolith_shares']->getShare($post['resource']); + $cal_owner = $cal->get('owner'); + if($post['type'] == 'event') { $event = Kronolith::getDriver()->getByUID($post['resource']); - $owner = $event->creator; + $event_owner = $event->creator; } // $owner is null for system-owned shares, so an admin has perms, @@ -67,7 +66,10 @@ class Kronolith_Ajax_Imple_TagActions extends Horde_Ajax_Imple_Base $tagger = Kronolith::getTagger(); switch ($request) { case 'add': - $tagger->tag($post['resource'], $tags, $owner, $post['type']); + $tagger->tag($post['resource'], $tags, $cal_owner, $post['type']); + if (!empty($event_owner)) { + $tagger->tag($post['resource'], $tags, $event_owner, $post['type']); + } break; case 'remove': $tagger->untag($post['resource'], (int)$tags, $post['type']); diff --git a/kronolith/lib/Driver/Kolab.php b/kronolith/lib/Driver/Kolab.php index 4c84e20c0..f49902a73 100644 --- a/kronolith/lib/Driver/Kolab.php +++ b/kronolith/lib/Driver/Kolab.php @@ -367,6 +367,9 @@ class Kronolith_Driver_Kolab extends Kronolith_Driver $tagger->tag($event->uid, $event->tags, $event->creator, 'event'); } + $cal = $GLOBALS['kronolith_shares']->getShare($event->calendar); + $tagger->tag($event->uid, $event->tags, $cal->get('owner'), 'event'); + /* Notify about the changed event. */ Kronolith::sendNotification($event, $edit ? 'edit' : 'add'); diff --git a/kronolith/lib/Driver/Sql.php b/kronolith/lib/Driver/Sql.php index 643ecba28..21c543dff 100644 --- a/kronolith/lib/Driver/Sql.php +++ b/kronolith/lib/Driver/Sql.php @@ -572,6 +572,10 @@ class Kronolith_Driver_Sql extends Kronolith_Driver $tagger = Kronolith::getTagger(); $tagger->replaceTags($event->uid, $event->tags, $event->creator, 'event'); + /* Add tags again, but as the share owner (replaceTags removes ALL tags). */ + $cal = $GLOBALS['kronolith_shares']->getShare($event->calendar); + $tagger->tag($event->uid, $event->tags, $cal->get('owner'), 'event'); + /* Update Geolocation */ if ($gDriver = Kronolith::getGeoDriver()) { $gDriver->setLocation($event->id, $event->geoLocation); @@ -630,6 +634,10 @@ class Kronolith_Driver_Sql extends Kronolith_Driver $tagger = Kronolith::getTagger(); $tagger->tag($event->uid, $event->tags, $event->creator, 'event'); + /* Add tags again, but as the share owner (replaceTags removes ALL tags). */ + $cal = $GLOBALS['kronolith_shares']->getShare($event->calendar); + $tagger->tag($event->uid, $event->tags, $cal->get('owner'), 'event'); + /* Update Geolocation */ if ($event->geoLocation && $gDriver = Kronolith::getGeoDriver()) { $gDriver->setLocation($event->id, $event->geoLocation);