patch some changes from master (character name validate)

This commit is contained in:
slawkens 2022-05-31 12:22:55 +02:00
parent 6c157f3f6c
commit 6acbbe3fa1
3 changed files with 57 additions and 32 deletions

View File

@ -12,27 +12,44 @@
class CreateCharacter class CreateCharacter
{ {
/** /**
* @param string $name * @param $name
* @param int $sex * @param $errors
* @param int $vocation
* @param int $town
* @param array $errors
* @return bool * @return bool
*/ */
public function check($name, $sex, &$vocation, &$town, &$errors) { public function checkName($name, &$errors)
{
$minLength = config('character_name_min_length'); $minLength = config('character_name_min_length');
$maxLength = config('character_name_max_length'); $maxLength = config('character_name_max_length');
if(empty($name)) if(empty($name)) {
$errors['name'] = 'Please enter a name for your character!'; $errors['name'] = 'Please enter a name for your character!';
else if(strlen($name) > $maxLength) return false;
$errors['name'] = 'Name is too long. Max. length <b>'.$maxLength.'</b> letters.'; }
else if(strlen($name) < $minLength)
$errors['name'] = 'Name is too short. Min. length <b>'.$minLength.'</b> letters.'; if(strlen($name) > $maxLength) {
else { $errors['name'] = 'Name is too long. Max. length <b>' . $maxLength . '</b> letters.';
return false;
}
if(strlen($name) < $minLength) {
$errors['name'] = 'Name is too short. Min. length <b>' . $minLength . '</b> letters.';
return false;
}
$name_length = strlen($name);
if(strspn($name, "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM- '") != $name_length) {
$errors['name'] = 'This name contains invalid letters, words or format. Please use only a-Z, - , \' and space.';
return false;
}
if(!preg_match("/[A-z ']/", $name)) {
$errors['name'] = 'Your name contains illegal characters.';
return false;
}
if(!admin() && !Validator::newCharacterName($name)) { if(!admin() && !Validator::newCharacterName($name)) {
$errors['name'] = Validator::getLastError(); $errors['name'] = Validator::getLastError();
} return false;
} }
$player = new OTS_Player(); $player = new OTS_Player();
@ -42,21 +59,39 @@ class CreateCharacter
return false; return false;
} }
if(empty($sex) && $sex != "0") return empty($errors);
}
/**
* @param string $name
* @param int $sex
* @param int $vocation
* @param int $town
* @param array $errors
* @return bool
*/
public function check($name, $sex, &$vocation, &$town, &$errors)
{
$this->checkName($name, $errors);
if(empty($sex) && $sex != "0") {
$errors['sex'] = 'Please select the sex for your character!'; $errors['sex'] = 'Please select the sex for your character!';
}
if(count(config('character_samples')) > 1) if(count(config('character_samples')) > 1)
{ {
if(!isset($vocation)) if(!isset($vocation))
$errors['vocation'] = 'Please select a vocation for your character.'; $errors['vocation'] = 'Please select a vocation for your character.';
} }
else else {
$vocation = config('character_samples')[0]; $vocation = config('character_samples')[0];
}
if(count(config('character_towns')) > 1) { if(count(config('character_towns')) > 1) {
if(!isset($town)) if(!isset($town)) {
$errors['town'] = 'Please select a town for your character.'; $errors['town'] = 'Please select a town for your character.';
} }
}
else { else {
$town = config('character_towns')[0]; $town = config('character_towns')[0];
} }

View File

@ -354,16 +354,6 @@ class Validator
} }
} }
if(strspn($name, "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM- '") != $name_length) {
self::$lastError = 'This name contains invalid letters, words or format. Please use only a-Z, - , \' and space.';
return false;
}
if(!preg_match("/[A-z ']/", $name)) {
self::$lastError = 'Your name containst illegal characters.';
return false;
}
return true; return true;
} }

View File

@ -66,10 +66,10 @@ else if(isset($_GET['name']))
if(!admin() && !Validator::newCharacterName($name)) if(!admin() && !Validator::newCharacterName($name))
error_(Validator::getLastError()); error_(Validator::getLastError());
$player = new OTS_Player(); require_once LIBS . 'CreateCharacter.php';
$player->find($name); $createCharacter = new CreateCharacter();
if($player->isLoaded()) { if (!$createCharacter->checkName($name, $errors)) {
error_('Character with this name already exist.'); error_($errors['name']);
} }
success_('Good. Your name will be:<br /><b>' . (admin() ? $name : ucwords($name)) . '</b>'); success_('Good. Your name will be:<br /><b>' . (admin() ? $name : ucwords($name)) . '</b>');