add hooks for atom pub posts
This commit is contained in:
parent
b60b9b4fa2
commit
cb371d65c1
|
@ -1158,3 +1158,11 @@ StartRevokeRole: when a role is being revoked
|
|||
EndRevokeRole: when a role has been revoked
|
||||
- $profile: profile that lost the role
|
||||
- $role: string name of the role
|
||||
|
||||
StartAtomPubNewActivity: When a new activity comes in through Atom Pub API
|
||||
- &$activity: received activity
|
||||
|
||||
EndAtomPubNewActivity: When a new activity comes in through Atom Pub API
|
||||
- $activity: received activity
|
||||
- $notice: notice that was created
|
||||
|
||||
|
|
|
@ -325,21 +325,39 @@ class ApiTimelineUserAction extends ApiBareAuthAction
|
|||
|
||||
$activity = new Activity($dom->documentElement);
|
||||
|
||||
if ($activity->verb != ActivityVerb::POST) {
|
||||
$this->clientError(_('Can only handle post activities.'));
|
||||
return;
|
||||
if (Event::handle('StartAtomPubNewActivity', array(&$activity))) {
|
||||
|
||||
if ($activity->verb != ActivityVerb::POST) {
|
||||
$this->clientError(_('Can only handle post activities.'));
|
||||
return;
|
||||
}
|
||||
|
||||
$note = $activity->objects[0];
|
||||
|
||||
if (!in_array($note->type, array(ActivityObject::NOTE,
|
||||
ActivityObject::BLOGENTRY,
|
||||
ActivityObject::STATUS))) {
|
||||
$this->clientError(sprintf(_('Cannot handle activity object type "%s"',
|
||||
$note->type)));
|
||||
return;
|
||||
}
|
||||
|
||||
$saved = $this->postNote($activity);
|
||||
|
||||
Event::handle('EndAtomPubNewActivity', array($activity, $saved));
|
||||
}
|
||||
|
||||
if (!empty($saved)) {
|
||||
header("Location: " . common_local_url('ApiStatusesShow', array('notice_id' => $saved->id,
|
||||
'format' => 'atom')));
|
||||
$this->showSingleAtomStatus($saved);
|
||||
}
|
||||
}
|
||||
|
||||
function postNote($activity)
|
||||
{
|
||||
$note = $activity->objects[0];
|
||||
|
||||
if (!in_array($note->type, array(ActivityObject::NOTE,
|
||||
ActivityObject::BLOGENTRY,
|
||||
ActivityObject::STATUS))) {
|
||||
$this->clientError(sprintf(_('Cannot handle activity object type "%s"',
|
||||
$note->type)));
|
||||
return;
|
||||
}
|
||||
|
||||
// Use summary as fallback for content
|
||||
|
||||
if (!empty($note->content)) {
|
||||
|
@ -458,11 +476,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction
|
|||
'atompub', // TODO: deal with this
|
||||
$options);
|
||||
|
||||
if (!empty($saved)) {
|
||||
header("Location: " . common_local_url('ApiStatusesShow', array('notice_id' => $saved->id,
|
||||
'format' => 'atom')));
|
||||
$this->showSingleAtomStatus($saved);
|
||||
}
|
||||
return $saved;
|
||||
}
|
||||
|
||||
function purify($content)
|
||||
|
|
Loading…
Reference in New Issue
Block a user