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

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();
$status_shortened = $this->auth_user->shortenlinks($status_shortened);
if (Notice::contentTooLong($status_shortened)) { /* Do not call shortenlinks until the whole notice has been build */
$upload->delete();
// TRANS: Client error displayed exceeding the maximum notice length.
// TRANS: %d is the maximum lenth for a notice.
$msg = _m('Maximum notice size is %d character, including attachment URL.',
'Maximum notice size is %d characters, including attachment URL.',
Notice::maxContent());
$this->clientError(
sprintf($msg, Notice::maxContent()),
400,
$this->format
);
}
} }
/* Do call shortenlinks here & check notice length since notice is about to be saved & sent */
$status_shortened = $this->auth_user->shortenlinks($status_shortened);
if (Notice::contentTooLong($status_shortened)) {
if (isset($upload)) {
$upload->delete();
}
// TRANS: Client error displayed exceeding the maximum notice length.
// TRANS: %d is the maximum lenth for a notice.
$msg = _m('Maximum notice size is %d character, including attachment URL.',
'Maximum notice size is %d characters, including attachment URL.',
Notice::maxContent());
/* Use HTTP 413 error code (Request Entity Too Large)
* instead of basic 400 for better understanding
*/
$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);