summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2010-10-24 21:24:23 -0400
committerEvan Prodromou <evan@status.net>2010-10-24 21:24:23 -0400
commit292e789584df47834f30d4de1ef143670c079b24 (patch)
treee2558e455c2cd477d95e21b869a9639eaa7b91c4
parent43a67b150a4e4285224ccf695171df731c736a1e (diff)
delete a notice using AtomPub
-rw-r--r--actions/apistatusesshow.php38
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");
+ }
}