Urlsettings now adapted to FormAction

This commit is contained in:
Mikael Nordfeldth 2015-07-17 15:16:45 +02:00
parent 8d516d7f08
commit 992fe6896f
1 changed files with 12 additions and 32 deletions

View File

@ -28,9 +28,7 @@
* @link http://status.net/ * @link http://status.net/
*/ */
if (!defined('STATUSNET') && !defined('LACONICA')) { if (!defined('GNUSOCIAL')) { exit(1); }
exit(1);
}
/** /**
* Miscellaneous settings actions * Miscellaneous settings actions
@ -83,7 +81,7 @@ class UrlsettingsAction extends SettingsAction
*/ */
function showContent() function showContent()
{ {
$user = common_current_user(); $user = $this->scoped->getUser();
$this->elementStart('form', array('method' => 'post', $this->elementStart('form', array('method' => 'post',
'id' => 'form_settings_other', 'id' => 'form_settings_other',
@ -154,31 +152,13 @@ class UrlsettingsAction extends SettingsAction
$this->elementEnd('form'); $this->elementEnd('form');
} }
/** protected function doPost()
* Handle a post
*
* Saves the changes to url-shortening prefs and shows a success or failure
* message.
*
* @return void
*/
function handlePost()
{ {
// CSRF protection
$token = $this->trimmed('token');
if (!$token || $token != common_session_token()) {
// TRANS: Client error displayed when the session token does not match or is not given.
$this->showForm(_('There was a problem with your session token. '.
'Try again, please.'));
return;
}
$urlshorteningservice = $this->trimmed('urlshorteningservice'); $urlshorteningservice = $this->trimmed('urlshorteningservice');
if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) { if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) {
// TRANS: Form validation error for form "Other settings" in user profile. // TRANS: Form validation error for form "Other settings" in user profile.
$this->showForm(_('URL shortening service is too long (maximum 50 characters).')); throw new ClientException(_('URL shortening service is too long (maximum 50 characters).'));
return;
} }
$maxurllength = $this->trimmed('maxurllength'); $maxurllength = $this->trimmed('maxurllength');
@ -195,9 +175,7 @@ class UrlsettingsAction extends SettingsAction
throw new ClientException(_('Invalid number for maximum notice length.')); throw new ClientException(_('Invalid number for maximum notice length.'));
} }
$user = common_current_user(); $user = $this->scoped->getUser();
assert(!is_null($user)); // should already be checked
$user->query('BEGIN'); $user->query('BEGIN');
@ -209,14 +187,15 @@ class UrlsettingsAction extends SettingsAction
if ($result === false) { if ($result === false) {
common_log_db_error($user, 'UPDATE', __FILE__); common_log_db_error($user, 'UPDATE', __FILE__);
$user->query('ROLLBACK');
// TRANS: Server error displayed when "Other" settings in user profile could not be updated on the server. // TRANS: Server error displayed when "Other" settings in user profile could not be updated on the server.
$this->serverError(_('Could not update user.')); throw new ServerException(_('Could not update user.'));
} }
$prefs = User_urlshortener_prefs::getPrefs($user); $prefs = User_urlshortener_prefs::getPrefs($user);
$orig = null; $orig = null;
if (empty($prefs)) { if (!$prefs instanceof User_urlshortener_prefs) {
$prefs = new User_urlshortener_prefs(); $prefs = new User_urlshortener_prefs();
$prefs->user_id = $user->id; $prefs->user_id = $user->id;
@ -229,13 +208,14 @@ class UrlsettingsAction extends SettingsAction
$prefs->maxurllength = $maxurllength; $prefs->maxurllength = $maxurllength;
$prefs->maxnoticelength = $maxnoticelength; $prefs->maxnoticelength = $maxnoticelength;
if (!empty($orig)) { if ($orig instanceof User_urlshortener_prefs) {
$result = $prefs->update($orig); $result = $prefs->update($orig);
} else { } else {
$result = $prefs->insert(); $result = $prefs->insert();
} }
if (!$result) { if ($result === null) {
$user->query('ROLLBACK');
// TRANS: Server exception thrown in profile URL settings when preferences could not be saved. // TRANS: Server exception thrown in profile URL settings when preferences could not be saved.
throw new ServerException(_('Error saving user URL shortening preferences.')); throw new ServerException(_('Error saving user URL shortening preferences.'));
} }
@ -243,6 +223,6 @@ class UrlsettingsAction extends SettingsAction
$user->query('COMMIT'); $user->query('COMMIT');
// TRANS: Confirmation message after saving preferences. // TRANS: Confirmation message after saving preferences.
$this->showForm(_('Preferences saved.'), true); return _('Preferences saved.');
} }
} }