. * * @category Module * @package GNUsocial * @author Mikael Nordfeldth * @copyright 2015 Free Software Foundaction, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link https://gnu.io/social */ if (!defined('GNUSOCIAL')) { exit(1); } class ActivityverbAction extends ManagedAction { protected $needLogin = true; protected $canPost = true; protected $verb = null; public function title() { $title = null; Event::handle('ActivityVerbTitle', array($this, $this->verb, $this->notice, $this->scoped, &$title)); return $title; } protected function doPreparation() { $this->verb = $this->trimmed('verb'); if (empty($this->verb)) { throw new ServerException('A verb has not been specified.'); } $this->notice = Notice::getByID($this->trimmed('id')); if (!$this->notice->inScope($this->scoped)) { // TRANS: %1$s is a user nickname, %2$d is a notice ID (number). throw new ClientException(sprintf(_('%1$s has no access to notice %2$d.'), $this->scoped->getNickname(), $this->notice->getID()), 403); } Event::handle('ActivityVerbDoPreparation', array($this, $this->verb, $this->notice, $this->scoped)); } protected function doPost() { if (Event::handle('ActivityVerbDoPost', array($this, $this->verb, $this->notice, $this->scoped))) { // TRANS: Error when a POST method for an activity verb has not been handled by a plugin. throw new ClientException(sprintf(_('Could not handle POST for verb "%1$s".'), $this->verb)); } } protected function showContent() { if (Event::handle('ActivityVerbShowContent', array($this, $this->verb, $this->notice, $this->scoped))) { // TRANS: Error when a page for an activity verb has not been handled by a plugin. $this->element('div', 'error', sprintf(_('Could not show content for verb "%1$s".'), $this->verb)); } } }