Code cleaning. Do call shortenLinks only once, right before saving new notice.

This commit is contained in:
Jean Baptiste Favre 2012-09-08 17:56:19 -04:00
parent 344a10be8b
commit 58a2630933
1 changed files with 25 additions and 37 deletions

View File

@ -231,32 +231,12 @@ class ApiStatusesUpdateAction extends ApiAuthAction
return; return;
} }
$status_shortened = $this->auth_user->shortenlinks($this->status); /* Do not call shortenlinks until the whole notice has been build */
if (Notice::contentTooLong($status_shortened)) {
// Note: Twitter truncates anything over 140, flags the status
// as "truncated."
$this->clientError(
sprintf(
// TRANS: Client error displayed exceeding the maximum notice length.
// TRANS: %d is the maximum length for a notice.
_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()
),
406,
$this->format
);
return;
}
// Check for commands // Check for commands
$inter = new CommandInterpreter(); $inter = new CommandInterpreter();
$cmd = $inter->handle_command($this->auth_user, $status_shortened); $cmd = $inter->handle_command($this->auth_user, $this->status);
if ($cmd) { if ($cmd) {
if ($this->supported($cmd)) { if ($this->supported($cmd)) {
@ -299,24 +279,32 @@ class ApiStatusesUpdateAction extends ApiAuthAction
} }
if (isset($upload)) { if (isset($upload)) {
$status_shortened .= ' ' . $upload->shortUrl(); $this->status .= ' ' . $upload->shortUrl();
/* Do not call shortenlinks until the whole notice has been build */
}
/* Do call shortenlinks here & check notice length since notice is about to be saved & sent */
$status_shortened = $this->auth_user->shortenlinks($status_shortened); $status_shortened = $this->auth_user->shortenlinks($status_shortened);
if (Notice::contentTooLong($status_shortened)) { if (Notice::contentTooLong($status_shortened)) {
if (isset($upload)) {
$upload->delete(); $upload->delete();
}
// TRANS: Client error displayed exceeding the maximum notice length. // TRANS: Client error displayed exceeding the maximum notice length.
// TRANS: %d is the maximum lenth for a notice. // TRANS: %d is the maximum lenth for a notice.
$msg = _m('Maximum notice size is %d character, including attachment URL.', $msg = _m('Maximum notice size is %d character, including attachment URL.',
'Maximum notice size is %d characters, including attachment URL.', 'Maximum notice size is %d characters, including attachment URL.',
Notice::maxContent()); Notice::maxContent());
$this->clientError( /* Use HTTP 413 error code (Request Entity Too Large)
sprintf($msg, Notice::maxContent()), * instead of basic 400 for better understanding
400, */
$this->format $this->clientError(sprintf($msg, Notice::maxContent()),
); 413,
} $this->format);
} }
$content = html_entity_decode($status_shortened, ENT_NOQUOTES, 'UTF-8'); $content = html_entity_decode($status_shortened, ENT_NOQUOTES, 'UTF-8');
$options = array('reply_to' => $reply_to); $options = array('reply_to' => $reply_to);