add more URL-shortening options to othersettings
This commit is contained in:
parent
869a6be0f5
commit
1e21af42a6
|
@ -98,8 +98,10 @@ class OthersettingsAction extends AccountSettingsAction
|
|||
$this->hidden('token', common_session_token());
|
||||
$this->elementStart('ul', 'form_data');
|
||||
|
||||
$shorteners = array();
|
||||
$shorteners = array(_('[none]') => array('freeService' => false));
|
||||
|
||||
Event::handle('GetUrlShorteners', array(&$shorteners));
|
||||
|
||||
$services = array();
|
||||
foreach($shorteners as $name=>$value)
|
||||
{
|
||||
|
@ -119,8 +121,22 @@ class OthersettingsAction extends AccountSettingsAction
|
|||
$this->elementEnd('li');
|
||||
}
|
||||
$this->elementStart('li');
|
||||
$this->input('maxurllength',
|
||||
_('URL longer than'),
|
||||
($this->arg('maxurllength')) ?
|
||||
$this->arg('maxurllength') : User_urlshortener_prefs::maxUrlLength($user),
|
||||
_('URLs longer than this will be shortened.'));
|
||||
$this->elementEnd('li');
|
||||
$this->elementStart('li');
|
||||
$this->input('maxnoticelength',
|
||||
_('Text longer than'),
|
||||
($this->arg('maxnoticelength')) ?
|
||||
$this->arg('maxnoticelength') : User_urlshortener_prefs::maxNoticeLength($user),
|
||||
_('URLs in notices longer than this will be shortened.'));
|
||||
$this->elementEnd('li');
|
||||
$this->elementStart('li');
|
||||
$this->checkbox('viewdesigns', _('View profile designs'),
|
||||
$user->viewdesigns, _('Show or hide profile designs.'));
|
||||
- $user->viewdesigns, _('Show or hide profile designs.'));
|
||||
$this->elementEnd('li');
|
||||
$this->elementEnd('ul');
|
||||
$this->submit('save', _('Save'));
|
||||
|
@ -156,6 +172,18 @@ class OthersettingsAction extends AccountSettingsAction
|
|||
|
||||
$viewdesigns = $this->boolean('viewdesigns');
|
||||
|
||||
$maxurllength = $this->trimmed('maxurllength');
|
||||
|
||||
if (!Validate::number($maxurllength, array('min' => 0))) {
|
||||
throw new ClientException(_('Invalid number for max url length.'));
|
||||
}
|
||||
|
||||
$maxnoticelength = $this->trimmed('maxnoticelength');
|
||||
|
||||
if (!Validate::number($maxnoticelength, array('min' => 0))) {
|
||||
throw new ClientException(_('Invalid number for max notice length.'));
|
||||
}
|
||||
|
||||
$user = common_current_user();
|
||||
|
||||
assert(!is_null($user)); // should already be checked
|
||||
|
@ -175,6 +203,32 @@ class OthersettingsAction extends AccountSettingsAction
|
|||
return;
|
||||
}
|
||||
|
||||
$prefs = User_urlshortener_prefs::getPrefs($user);
|
||||
$orig = null;
|
||||
|
||||
if (empty($prefs)) {
|
||||
$prefs = new User_urlshortener_prefs();
|
||||
|
||||
$prefs->user_id = $user->id;
|
||||
$prefs->created = common_sql_now();
|
||||
} else {
|
||||
$orig = clone($prefs);
|
||||
}
|
||||
|
||||
$prefs->urlshorteningservice = $urlshorteningservice;
|
||||
$prefs->maxurllength = $maxurllength;
|
||||
$prefs->maxnoticelength = $maxnoticelength;
|
||||
|
||||
if (!empty($orig)) {
|
||||
$result = $prefs->update($orig);
|
||||
} else {
|
||||
$result = $prefs->insert();
|
||||
}
|
||||
|
||||
if (!$result) {
|
||||
throw new ServerException(_('Error saving user URL shortening preferences.'));
|
||||
}
|
||||
|
||||
$user->query('COMMIT');
|
||||
|
||||
$this->showForm(_('Preferences saved.'), true);
|
||||
|
|
|
@ -44,4 +44,45 @@ class User_urlshortener_prefs extends Memcached_DataObject
|
|||
{
|
||||
return array(false, false, false);
|
||||
}
|
||||
|
||||
static function maxUrlLength($user)
|
||||
{
|
||||
$def = common_config('url', 'maxlength');
|
||||
|
||||
$prefs = self::getPrefs($user);
|
||||
|
||||
if (empty($prefs)) {
|
||||
return $def;
|
||||
} else {
|
||||
return $prefs->maxurllength;
|
||||
}
|
||||
}
|
||||
|
||||
static function maxNoticeLength($user)
|
||||
{
|
||||
$def = common_config('url', 'maxnoticelength');
|
||||
|
||||
if ($def == -1) {
|
||||
$def = Notice::maxContent();
|
||||
}
|
||||
|
||||
$prefs = self::getPrefs($user);
|
||||
|
||||
if (empty($prefs)) {
|
||||
return $def;
|
||||
} else {
|
||||
return $prefs->maxnoticelength;
|
||||
}
|
||||
}
|
||||
|
||||
static function getPrefs($user)
|
||||
{
|
||||
if (empty($user)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$prefs = User_urlshortener_prefs::staticGet('user_id', $user->id);
|
||||
|
||||
return $prefs;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user