X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=plugins%2FEvent%2FEventPlugin.php;h=a1d0761a4a03ce9042c23eab590b811b765e17da;hb=e2d85a39e7f82ceef2cb2fe66a3a9a62ac9a363e;hp=3afab5f13b1afaf0c2e34bc32dd71eedd88dfe3b;hpb=1269e3f22315ab7bb2d4c355fb8b655f2db41b0b;p=quix0rs-gnu-social.git diff --git a/plugins/Event/EventPlugin.php b/plugins/Event/EventPlugin.php index 3afab5f13b..a1d0761a4a 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; } @@ -142,6 +155,40 @@ 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; + } + $notice = null; switch ($activity->verb) { @@ -151,9 +198,9 @@ class EventPlugin extends MicroAppPlugin $start_time, $end_time, $happeningObj->title, - null, + $location, $happeningObj->summary, - null, + $url, $options); break; case RSVP::POSITIVE: @@ -228,9 +275,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; @@ -479,4 +526,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; + } }