provide a global way of enforcing name policy restrictions, but only enforce empty names or length > storage size. Allow plugins to set other policies. In particular, you can't have an empty channel name now, but one char is legal ;-)

This commit is contained in:
friendica 2013-02-07 18:53:51 -08:00
parent bf4b964aeb
commit 82ed07baa1
2 changed files with 31 additions and 4 deletions

View file

@ -24,6 +24,25 @@ function identity_check_service_class($account_id) {
return $ret;
}
// Return an error message if the name is not valid. We're currently only checking
// for an empty name or one that exceeds our storage limit (255 chars).
// 255 chars is probably going to create a mess on some pages.
// Plugins can set additional policies such as full name requirements, character sets, multi-byte
// length, etc.
function validate_channelname($name) {
if(! $name)
return t('Empty name');
if(strlen($name) > 255)
return t('Name too long');
$arr = array('name' => $name);
call_hooks('validate_channelname',$arr);
if(x($arr,'message'))
return $arr['message'];
return;
}
// Required: name, nickname, account_id
@ -43,6 +62,12 @@ function create_identity($arr) {
$name = escape_tags($arr['name']);
$pageflags = ((x($arr,'pageflags')) ? intval($arr['pageflags']) : PAGE_NORMAL);
$name_error = validate_channelname($arr['name']);
if($name_error) {
$ret['message'] = $name_error;
return $ret;
}
if(check_webbie(array($nick)) !== $nick) {
$ret['message'] = t('Nickname has unsupported characters or is already being used on this site.');
return $ret;

View file

@ -429,10 +429,12 @@ function settings_post(&$a) {
if($username != $channel['channel_name']) {
$name_change = true;
if(mb_strlen($username) > 40)
$err .= t(' Please use a shorter name.');
if(mb_strlen($username) < 3)
$err .= t(' Name too short.');
require_once('include/identity.php');
$err = validate_channelname($username);
if($err) {
notice($err);
return;
}
}