From 385705c65b24f88e157b3906c2b75a183aacba98 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Mon, 18 Jan 2016 23:58:32 +0100 Subject: [PATCH] Events get rendered. --- plugins/Bookmark/BookmarkPlugin.php | 1 - plugins/Event/EventPlugin.php | 59 ++++++++++++----------------- plugins/Event/actions/newevent.php | 19 +--------- plugins/Event/classes/Happening.php | 11 +++--- 4 files changed, 31 insertions(+), 59 deletions(-) diff --git a/plugins/Bookmark/BookmarkPlugin.php b/plugins/Bookmark/BookmarkPlugin.php index 8b4abd2b42..904c7ee9c9 100644 --- a/plugins/Bookmark/BookmarkPlugin.php +++ b/plugins/Bookmark/BookmarkPlugin.php @@ -306,7 +306,6 @@ class BookmarkPlugin extends MicroAppPlugin return true; } - common_debug('Extending activity '.$stored->id.' with '.get_called_class()); $this->extendActivity($stored, $act, $scoped); return false; } diff --git a/plugins/Event/EventPlugin.php b/plugins/Event/EventPlugin.php index 1756e851bf..7dfd061efe 100644 --- a/plugins/Event/EventPlugin.php +++ b/plugins/Event/EventPlugin.php @@ -168,7 +168,7 @@ class EventPlugin extends ActivityVerbHandlerPlugin protected function getActivityForm(ManagedAction $action, $verb, Notice $target, Profile $scoped) { - return new RSVPForm(Happening::fromNotice($target), $action); + return new RSVPForm(Happening::fromStored($target), $action); } protected function saveObjectFromActivity(Activity $act, Notice $stored, array $options=array()) @@ -218,33 +218,27 @@ class EventPlugin extends ActivityVerbHandlerPlugin { $happening = null; - switch ($notice->object_type) { - case Happening::OBJECT_TYPE: - $happening = Happening::fromNotice($notice); + switch (true) { + case ActivityUtils::compareVerbs($notice->verb, array(ActivityVerb::POST)) && + ActivityUtils::compareTypes($notice->object_type, array(Happening::OBJECT_TYPE)): + $happening = Happening::fromStored($notice); break; - case RSVP::POSITIVE: - case RSVP::NEGATIVE: - case RSVP::POSSIBLE: + // FIXME: Why are these object_type?? + case ActivityUtils::compareTypes($stored->object_type, array(RSVP::POSITIVE, RSVP::NEGATIVE, RSVP::POSSIBLE)): $rsvp = RSVP::fromNotice($notice); $happening = $rsvp->getEvent(); break; - } - - if (empty($happening)) { + default: // TRANS: Exception thrown when event plugin comes across a unknown object type. throw new Exception(_m('Unknown object type.')); } + // This is a bit weird, if it's a Notice for a Happening. We should only do this for RSVP. $notice = $happening->getNotice(); - if (empty($notice)) { - // TRANS: Exception thrown when referring to a notice that is not an event an in event context. - throw new Exception(_m('Unknown event notice.')); - } - $obj = new ActivityObject(); - $obj->id = $happening->uri; + $obj->id = $happening->getUri(); $obj->type = Happening::OBJECT_TYPE; $obj->title = $happening->title; $obj->summary = $happening->description; @@ -255,16 +249,15 @@ class EventPlugin extends ActivityVerbHandlerPlugin $obj->extra[] = array('dtstart', array('xmlns' => 'urn:ietf:params:xml:ns:xcal'), common_date_iso8601($happening->start_time)); - $obj->extra[] = array('dtend', array('xmlns' => 'urn:ietf:params:xml:ns:xcal'), common_date_iso8601($happening->end_time)); - $obj->extra[] = array('location', false, $happening->location); $obj->extra[] = array('url', false, $happening->url); // XXX: probably need other stuff here + common_debug('EVENTDEBUG: activity object from notice: '._ve($obj)); return $obj; } @@ -276,10 +269,9 @@ class EventPlugin extends ActivityVerbHandlerPlugin * @return ActivityObject */ protected function extendActivity(Notice $stored, Activity $act, Profile $scoped=null) { - switch ($stored->object_type) { - case RSVP::POSITIVE: - case RSVP::NEGATIVE: - case RSVP::POSSIBLE: + switch (true) { + // FIXME: Why are these object_type?? + case ActivityUtils::compareTypes($stored->object_type, array(RSVP::POSITIVE, RSVP::NEGATIVE, RSVP::POSSIBLE)): $act->verb = $stored->object_type; break; } @@ -307,7 +299,7 @@ class EventPlugin extends ActivityVerbHandlerPlugin switch ($notice->object_type) { case Happening::OBJECT_TYPE: common_log(LOG_DEBUG, "Deleting event from notice..."); - $happening = Happening::fromNotice($notice); + $happening = Happening::fromStored($notice); $happening->delete(); break; case RSVP::POSITIVE: @@ -352,28 +344,25 @@ class EventPlugin extends ActivityVerbHandlerPlugin protected function showNoticeContent(Notice $stored, HTMLOutputter $out, Profile $scoped=null) { - switch ($stored->object_type) { - case Happening::OBJECT_TYPE: + switch (true) { + case ActivityUtils::compareTypes($stored->verb, array(ActivityVerb::POST)) && + ActivityUtils::compareTypes($stored->object_type, array(Happening::OBJECT_TYPE)): $this->showEvent($stored, $out, $scoped); break; - case RSVP::POSITIVE: - case RSVP::NEGATIVE: - case RSVP::POSSIBLE: + case ActivityUtils::compareVerbs($stored->verb, array(RSVP::POSITIVE, RSVP::NEGATIVE, RSVP::POSSIBLE)): $this->showRSVP($stored, $out, $scoped); break; + default: + throw new ServerException('This is not an Event notice'); } + return true; } protected function showEvent(Notice $stored, HTMLOutputter $out, Profile $scoped=null) { + common_debug('shownotice'.$stored->getID()); $profile = $stored->getProfile(); - $event = Happening::fromNotice($stored); - - if (!$event instanceof Happening) { - // TRANS: Content for a deleted RSVP list item (RSVP stands for "please respond"). - $out->element('p', null, _m('Deleted.')); - return; - } + $event = Happening::fromStored($stored); $out->elementStart('div', 'h-event'); diff --git a/plugins/Event/actions/newevent.php b/plugins/Event/actions/newevent.php index cdb9e9e724..402acea035 100644 --- a/plugins/Event/actions/newevent.php +++ b/plugins/Event/actions/newevent.php @@ -132,24 +132,7 @@ class NeweventAction extends FormAction $actobj->id = UUID::gen(); $actobj->type = Happening::OBJECT_TYPE; $actobj->title = $title; - // TRANS: Rendered microformats2 tagged event description. - // TRANS: %1$s is a title, %2$s is iso8601 start time, %3$s is start time, - // TRANS: %4$s is iso8601 end time, %5$s is end time, %6$s is location, %7$s is description. - // TRANS: Class names should not be translated. - $actobj->summary = sprintf(_m('
'. - '

%1$s

'. - ' - '. - ' '. - '(%6$s): '. - '
%7$s
'. - '
'), - htmlspecialchars($title), - htmlspecialchars(common_date_iso8601($start_str)), - htmlspecialchars(common_exact_date($start_str)), - htmlspecialchars(common_date_iso8601($end_str)), - htmlspecialchars(common_exact_date($end_str)), - htmlspecialchars($location), - htmlspecialchars($description)); + $actobj->summary = $description; $actobj->extra[] = array('dtstart', array('xmlns' => 'urn:ietf:params:xml:ns:xcal'), diff --git a/plugins/Event/classes/Happening.php b/plugins/Event/classes/Happening.php index 7b7121903f..e4e1f96236 100644 --- a/plugins/Event/classes/Happening.php +++ b/plugins/Event/classes/Happening.php @@ -94,7 +94,8 @@ class Happening extends Managed_DataObject 'unique keys' => array( 'happening_uri_key' => array('uri'), ), - 'foreign keys' => array('happening_profile_id__key' => array('profile', array('profile_id' => 'id'))), + 'foreign keys' => array('happening_profile_id__key' => array('profile', array('profile_id' => 'id')), + 'happening_uri__key' => array('notice', array('uri' => 'uri'))), 'indexes' => array('happening_created_idx' => array('created'), 'happening_start_end_idx' => array('start_time', 'end_time')), ); @@ -192,14 +193,14 @@ class Happening extends Managed_DataObject return $this->uri; } - function getNotice() + public function getNotice() { - return Notice::getKV('uri', $this->getUri()); + return Notice::getByKeys(array('uri'=>$this->getUri())); } - static function fromNotice($notice) + static function fromStored(Notice $stored) { - return Happening::getKV('uri', $notice->getUri()); + return self::getByKeys(array('uri'=>$stored->getUri())); } function getRSVPs() -- 2.39.5