X-Git-Url: https://git.mxchange.org/?p=quix0rs-gnu-social.git;a=blobdiff_plain;f=plugins%2FEvent%2FEventPlugin.php;fp=plugins%2FEvent%2FEventPlugin.php;h=01e6da902cefefa5a38f0f57505dafa421dcd138;hp=33f08d69c99e2abd467903d8b0129057d47a66c7;hb=95d415257a43d5d4338ce22089463c1820b6bf8b;hpb=3e1a6a65e65e0f5a051e39b3b792b53e1cc358cb diff --git a/plugins/Event/EventPlugin.php b/plugins/Event/EventPlugin.php index 33f08d69c9..01e6da902c 100644 --- a/plugins/Event/EventPlugin.php +++ b/plugins/Event/EventPlugin.php @@ -46,6 +46,9 @@ if (!defined('STATUSNET')) { */ class EventPlugin extends MicroAppPlugin { + + var $oldSaveNew = true; + /** * Set up our tables (event and rsvp) * @@ -64,6 +67,12 @@ class EventPlugin extends MicroAppPlugin return true; } + public function onBeforePluginCheckSchema() + { + RSVP::beforeSchemaUpdate(); + return true; + } + /** * Map URLs to actions * @@ -87,6 +96,10 @@ class EventPlugin extends MicroAppPlugin array('id' => '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')); $m->connect('main/event/updatetimes', array('action' => 'timelist')); + + $m->connect(':nickname/events', + array('action' => 'events'), + array('nickname' => Nickname::DISPLAY_FMT)); return true; } @@ -112,10 +125,7 @@ class EventPlugin extends MicroAppPlugin } function types() { - return array(Happening::OBJECT_TYPE, - RSVP::POSITIVE, - RSVP::NEGATIVE, - RSVP::POSSIBLE); + return array(Happening::OBJECT_TYPE); } function verbs() { @@ -149,17 +159,51 @@ class EventPlugin extends MicroAppPlugin throw new Exception(_m('Wrong type for object.')); } + $dtstart = $happeningObj->element->getElementsByTagName('dtstart'); + if($dtstart->length == 0) { + // TRANS: Exception thrown when has no start date + throw new Exception(_m('No start date for event.')); + } + + $dtend = $happeningObj->element->getElementsByTagName('dtend'); + if($dtend->length == 0) { + // TRANS: Exception thrown when has no end date + throw new Exception(_m('No end date for event.')); + } + + // convert RFC3339 dates delivered in Activity Stream to MySQL DATETIME date format + $start_time = new DateTime($dtstart->item(0)->nodeValue); + $start_time->setTimezone(new DateTimeZone('UTC')); + $start_time = $start_time->format('Y-m-d H:i:s'); + $end_time = new DateTime($dtend->item(0)->nodeValue); + $end_time->setTimezone(new DateTimeZone('UTC')); + $end_time = $end_time->format('Y-m-d H:i:s'); + + // location is optional + $location = null; + $location_object = $happeningObj->element->getElementsByTagName('location'); + if($location_object->length > 0) { + $location = $location_object->item(0)->nodeValue; + } + + // url is optional + $url = null; + $url_object = $happeningObj->element->getElementsByTagName('url'); + if($url_object->length > 0) { + $url = $url_object->item(0)->nodeValue; + } + switch ($activity->verb) { case ActivityVerb::POST: - // FIXME: get startTime, endTime, location and URL - return Happening::saveNew($actor, - $start_time, - $end_time, - $happeningObj->title, - null, - $happeningObj->summary, - null, - $options); + // FIXME: get startTime, endTime, location and URL + $notice = Happening::saveNew($actor, + $start_time, + $end_time, + $happeningObj->title, + $location, + $happeningObj->summary, + $url, + $options); break; case RSVP::POSITIVE: case RSVP::NEGATIVE: @@ -250,9 +294,9 @@ class EventPlugin extends MicroAppPlugin array('xmlns' => 'urn:ietf:params:xml:ns:xcal'), common_date_iso8601($happening->end_time)); - // FIXME: add location - // FIXME: add URL - + $obj->extra[] = array('location', false, $happening->location); + $obj->extra[] = array('url', false, $happening->url); + // XXX: probably need other stuff here return $obj; @@ -501,4 +545,14 @@ class EventPlugin extends MicroAppPlugin $out->raw($rsvp->asHTML()); $out->elementEnd('div'); } + + function onEndPersonalGroupNav(Menu $menu, Profile $target, Profile $scoped=null) + { + $menu->menuItem(common_local_url('events', array('nickname' => $target->getNickname())), + // TRANS: Menu item in sample plugin. + _m('Happenings'), + // TRANS: Menu item title in sample plugin. + _m('A list of your events'), false, 'nav_timeline_events'); + return true; + } }