We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit 292e7895 authored by Evan Prodromou's avatar Evan Prodromou

delete a notice using AtomPub

parent 43a67b15
...@@ -110,7 +110,17 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction ...@@ -110,7 +110,17 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction
return; return;
} }
$this->showNotice(); switch ($_SERVER['REQUEST_METHOD']) {
case 'GET':
$this->showNotice();
break;
case 'DELETE':
$this->deleteNotice();
break;
default:
$this->clientError(_('HTTP method not supported.'), 405);
return;
}
} }
/** /**
...@@ -213,4 +223,30 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction ...@@ -213,4 +223,30 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction
return null; return null;
} }
function deleteNotice()
{
if ($this->format != 'atom') {
$this->clientError(_("Can only delete using the Atom format."));
return;
}
if (empty($this->auth_user) ||
($this->notice->profile_id != $this->auth_user->id &&
!$this->auth_user->hasRight(Right::DELETEOTHERSNOTICE))) {
$this->clientError(_('Can\'t delete this notice.'), 403);
return;
}
if (Event::handle('StartDeleteOwnNotice', array($this->auth_user, $this->notice))) {
$this->notice->delete();
Event::handle('EndDeleteOwnNotice', array($this->auth_user, $this->notice));
}
// @fixme is there better output we could do here?
header('HTTP/1.1 200 OK');
header('Content-Type: text/plain');
print(sprintf(_('Deleted notice %d'), $this->notice->id));
print("\n");
}
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment