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->hidden('token', common_session_token());
|
||||||
$this->elementStart('ul', 'form_data');
|
$this->elementStart('ul', 'form_data');
|
||||||
|
|
||||||
$shorteners = array();
|
$shorteners = array(_('[none]') => array('freeService' => false));
|
||||||
|
|
||||||
Event::handle('GetUrlShorteners', array(&$shorteners));
|
Event::handle('GetUrlShorteners', array(&$shorteners));
|
||||||
|
|
||||||
$services = array();
|
$services = array();
|
||||||
foreach($shorteners as $name=>$value)
|
foreach($shorteners as $name=>$value)
|
||||||
{
|
{
|
||||||
@ -119,8 +121,22 @@ class OthersettingsAction extends AccountSettingsAction
|
|||||||
$this->elementEnd('li');
|
$this->elementEnd('li');
|
||||||
}
|
}
|
||||||
$this->elementStart('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'),
|
$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('li');
|
||||||
$this->elementEnd('ul');
|
$this->elementEnd('ul');
|
||||||
$this->submit('save', _('Save'));
|
$this->submit('save', _('Save'));
|
||||||
@ -156,6 +172,18 @@ class OthersettingsAction extends AccountSettingsAction
|
|||||||
|
|
||||||
$viewdesigns = $this->boolean('viewdesigns');
|
$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();
|
$user = common_current_user();
|
||||||
|
|
||||||
assert(!is_null($user)); // should already be checked
|
assert(!is_null($user)); // should already be checked
|
||||||
@ -175,6 +203,32 @@ class OthersettingsAction extends AccountSettingsAction
|
|||||||
return;
|
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');
|
$user->query('COMMIT');
|
||||||
|
|
||||||
$this->showForm(_('Preferences saved.'), true);
|
$this->showForm(_('Preferences saved.'), true);
|
||||||
|
@ -44,4 +44,45 @@ class User_urlshortener_prefs extends Memcached_DataObject
|
|||||||
{
|
{
|
||||||
return array(false, false, false);
|
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