. */ if (!defined('LACONICA')) { exit(1); } require_once(INSTALLDIR.'/lib/settingsaction.php'); class OthersettingsAction extends SettingsAction { function get_instructions() { return _('Manage various other options.'); } function show_form($msg=NULL, $success=false) { $user = common_current_user(); $this->form_header(_('Other Settings'), $msg, $success); common_element_start('form', array('method' => 'post', 'id' => 'othersettings', 'action' => common_local_url('othersettings'))); common_hidden('token', common_session_token()); common_element('h2', NULL, _('URL Auto-shortening')); $services = array( '' => 'None', 'ur1.ca' => 'ur1.ca (free service)', '2tu.us' => '2tu.us (free service)', 'ptiturl.com' => 'ptiturl.com', 'bit.ly' => 'bit.ly', 'tinyurl.com' => 'tinyurl.com', 'is.gd' => 'is.gd', 'snipr.com' => 'snipr.com', 'metamark.net' => 'metamark.net' ); common_dropdown('urlshorteningservice', _('Service'), $services, _('Shortening service to use when notices exceed the 140 character limit.'), FALSE, $user->urlshorteningservice); common_submit('save', _('Save')); common_element_end('form'); common_show_footer(); } function handle_post() { # CSRF protection $token = $this->trimmed('token'); if (!$token || $token != common_session_token()) { $this->show_form(_('There was a problem with your session token. Try again, please.')); return; } if ($this->arg('save')) { $this->save_preferences(); }else { $this->show_form(_('Unexpected form submission.')); } } function save_preferences() { $urlshorteningservice = $this->trimmed('urlshorteningservice'); if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) { $this->show_form(_('URL shortening service is too long (max 50 chars).')); return; } $user = common_current_user(); assert(!is_null($user)); # should already be checked $user->query('BEGIN'); $original = clone($user); $user->urlshorteningservice = $urlshorteningservice; $result = $user->update($original); if ($result === FALSE) { common_log_db_error($user, 'UPDATE', __FILE__); common_server_error(_('Couldn\'t update user.')); return; } $user->query('COMMIT'); $this->show_form(_('Preferences saved.'), true); } }