public function isValidName($name, $old_name = null)
{
// 默认不准使用的昵称
$protected_name = array('name', 'uname', 'admin', 'profile', 'space');
$site_config = model('Xdata')->get('admin_Config:site');
!empty($site_config['sys_nickname']) && ($protected_name = array_merge($protected_name, explode(',', $site_config['sys_nickname'])));
if (in_array($name, $protected_name)) {
$this->_error = L('PUBLIC_NICKNAME_RESERVED');
// 抱歉,该昵称不允许被使用
return false;
}
//不能为手机号格式
$phone_reg = preg_match($this->_phone_reg, $name) !== 0;
if ($phone_reg) {
$this->_error = '用户名不能为手机号格式';
return false;
}
//其他格式
$res = preg_match($this->_name_reg, $name) !== 0;
if ($res) {
$length = get_str_length($name);
$res = $length >= 2 && $length <= 10;
if (!$res) {
$this->_error = L('PUBLIC_NICKNAME_LIMIT', array('nums' => '2-10'));
// 昵称长度必须在2-10个汉字之间
return false;
}
} else {
$this->_error = '昵称仅支持中英文,数字,下划线';
return false;
}
$user = \Ts\Models\User::existent()->byUserName($name)->first();
if (!$old_name && $user) {
$this->_error = '该用户名已经存在';
return false;
} elseif ($old_name) {
$old_user = \Ts\Models\User::existent()->byUserName($old_name)->first();
if ($name != $old_name && $old_user && $user && $old_user->uid != $user->uid) {
$this->_error = '该用户名已经存在';
return false;
}
}
//敏感词
if (filter_keyword($name) !== $name) {
$this->_error = '抱歉,该昵称包含敏感词不允许被使用';
return false;
}
return true;
}