diff options
author | Evan Prodromou <evan@status.net> | 2010-10-24 21:24:23 -0400 |
---|---|---|
committer | Evan Prodromou <evan@status.net> | 2010-10-24 21:24:23 -0400 |
commit | 292e789584df47834f30d4de1ef143670c079b24 (patch) | |
tree | e2558e455c2cd477d95e21b869a9639eaa7b91c4 /actions/apistatusesshow.php | |
parent | 43a67b150a4e4285224ccf695171df731c736a1e (diff) |
delete a notice using AtomPub
Diffstat (limited to 'actions/apistatusesshow.php')
-rw-r--r-- | actions/apistatusesshow.php | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/actions/apistatusesshow.php b/actions/apistatusesshow.php index c0eab15a4..86ffd6862 100644 --- a/actions/apistatusesshow.php +++ b/actions/apistatusesshow.php @@ -110,7 +110,17 @@ class ApiStatusesShowAction extends ApiPrivateAuthAction 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 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"); + } } |