diff --git a/actions/newnotice.php b/actions/newnotice.php index 17499312fb..c4b6bfa554 100644 --- a/actions/newnotice.php +++ b/actions/newnotice.php @@ -131,6 +131,17 @@ class NewnoticeAction extends FormAction $content = $this->scoped->shortenLinks($content); + // Reject notice if it is too long (without the HTML) + // Should we do this before or after the upload attachment link? I think before... + if (Notice::contentTooLong($content)) { + // TRANS: Client error displayed when the parameter "status" is missing. + // TRANS: %d is the maximum number of character for a notice. + throw new ClientException(sprintf(_m('That\'s too long. Maximum notice size is %d character.', + 'That\'s too long. Maximum notice size is %d characters.', + Notice::maxContent()), + Notice::maxContent())); + } + $upload = null; try { // throws exception on failure @@ -140,15 +151,7 @@ class NewnoticeAction extends FormAction } Event::handle('EndSaveNewNoticeAppendAttachment', array($this, $upload, &$content, &$options)); - if (Notice::contentTooLong($content)) { - $upload->delete(); - // TRANS: Client error displayed exceeding the maximum notice length. - // TRANS: %d is the maximum length for a notice. - $this->clientError(sprintf(_m('Maximum notice size is %d character, including attachment URL.', - 'Maximum notice size is %d characters, including attachment URL.', - Notice::maxContent()), - Notice::maxContent())); - } + // We could check content length here if the URL was added, but I'll just let it slide for now... $act->enclosures[] = $upload->getEnclosure(); } catch (NoUploadedMediaException $e) { diff --git a/classes/Notice.php b/classes/Notice.php index 1afc6d0977..513888d245 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -825,17 +825,6 @@ class Notice extends Managed_DataObject $stored->rendered = $actor->isLocal() ? $content : common_purify($content); $stored->content = common_strip_html($stored->rendered); - // Reject notice if it is too long (without the HTML) - // FIXME: Reject if too short (empty) too? But we have to pass the - if ($actor->isLocal() && Notice::contentTooLong($stored->content)) { - // TRANS: Client error displayed when the parameter "status" is missing. - // TRANS: %d is the maximum number of character for a notice. - throw new ClientException(sprintf(_m('That\'s too long. Maximum notice size is %d character.', - 'That\'s too long. Maximum notice size is %d characters.', - Notice::maxContent()), - Notice::maxContent())); - } - // Maybe a missing act-time should be fatal if the actor is not local? if (!empty($act->time)) { $stored->created = common_sql_date($act->time);