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())
{
$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;
$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;
}
* @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;
}
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:
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');
$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('<div class="h-event">'.
- '<p class="p-name p-summary">%1$s</p> '.
- '<time class="dt-start" datetime="%2$s">%3$s</time> - '.
- '<time class="dt-end" datetime="%4$s">%5$s</time> '.
- '(<span class="p-location">%6$s</span>): '.
- '<div class="p-description">%7$s</div> '.
- '</div>'),
- 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'),
'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')),
);
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()