Skip to content

Commit

Permalink
GH-230 Move planet name validator & error mappers to utils
Browse files Browse the repository at this point in the history
  • Loading branch information
mdziekon committed Jul 4, 2022
1 parent 35cfd8a commit a5b523b
Show file tree
Hide file tree
Showing 8 changed files with 140 additions and 46 deletions.
3 changes: 3 additions & 0 deletions modules/overview/_includes.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
include($includePath . './screens/FirstLogin/utils/effects/updateUserOnFirstLogin.effect.php');
include($includePath . './screens/FirstLogin/utils/helpers/getReferrerTasksData.helper.php');

include($includePath . './screens/PlanetNameChange/utils/errorMappers/validateNewName.errorMapper.php');
include($includePath . './screens/PlanetNameChange/utils/validators/validateNewName.validator.php');

});

?>
5 changes: 5 additions & 0 deletions modules/overview/screens/PlanetNameChange/index.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

header("Location: ../index.php");

?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

header("Location: ../index.php");

?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace UniEngine\Engine\Modules\Overview\Screens\PlanetNameChange\Utils\ErrorMappers;

/**
* @param object $error As returned by Overview\Screens\PlanetNameChange\Utils\Validators\validateNewName
*/
function mapValidateNewNameErrorToReadableMessage($error) {
global $_Lang;

$errorCode = $error['code'];

$knownErrorsByCode = [
'NEW_NAME_EMPTY' => $_Lang['RenamePlanet_0Lenght'],
'NEW_NAME_SAME_AS_OLD' => $_Lang['RenamePlanet_SameName'],
'NEW_NAME_TOO_SHORT' => $_Lang['RenamePlanet_TooShort'],
'NEW_NAME_TOO_LONG' => $_Lang['RenamePlanet_TooLong'],
'NEW_NAME_INVALID' => $_Lang['RenamePlanet_BadSigns'],
];

if (!isset($knownErrorsByCode[$errorCode])) {
return $_Lang['sys_unknownError'];
}

return $knownErrorsByCode[$errorCode];
}

?>
5 changes: 5 additions & 0 deletions modules/overview/screens/PlanetNameChange/utils/index.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

header("Location: ../index.php");

?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

header("Location: ../index.php");

?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<?php

namespace UniEngine\Engine\Modules\Overview\Screens\PlanetNameChange\Utils\Validators;

/**
* @param array $params
* @param array $params['input']
* @param string $params['input']['newName']
* @param arrayRef $params['planet']
*/
function validateNewName($params) {
$planet = &$params['planet'];

$executor = function ($input, $resultHelpers) use (&$planet) {
$newName = $input['newName'];

$currentName = $planet['name'];

$MIN_LENGTH = 3;
$MAX_LENGTH = 20;

if (empty($newName)) {
return $resultHelpers['createFailure']([
'code' => 'NEW_NAME_EMPTY',
]);
}
if ($newName == $currentName) {
return $resultHelpers['createFailure']([
'code' => 'NEW_NAME_SAME_AS_OLD',
]);
}

$newNameLength = strlen($newName);

if ($newNameLength < $MIN_LENGTH) {
return $resultHelpers['createFailure']([
'code' => 'NEW_NAME_TOO_SHORT',
'params' => [
'minLength' => $MIN_LENGTH
],
]);
}
if ($newNameLength > $MAX_LENGTH) {
return $resultHelpers['createFailure']([
'code' => 'NEW_NAME_TOO_LONG',
'params' => [
'maxLength' => $MAX_LENGTH
],
]);
}
if (!preg_match(REGEXP_PLANETNAME_ABSOLUTE, $newName)) {
return $resultHelpers['createFailure']([
'code' => 'NEW_NAME_INVALID',
]);
}

return $resultHelpers['createSuccess']([]);
};

return createFuncWithResultHelpers($executor)($params['input']);
}

?>
72 changes: 26 additions & 46 deletions overview.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
$parse = $_Lang;

$parse['Rename_Ins_MsgHide'] = 'style="display: none;"';
$parse['Rename_Ins_MsgTxt'] = false;
$parse['Rename_Ins_MsgTxt'] = '';

if($_Planet['planet_type'] == 1)
{
Expand All @@ -53,57 +53,37 @@
$parse['Rename_CurrentName'] = sprintf($parse['Rename_CurrentName'], $parse['Rename_Moon']);
}

if(isset($_POST['action']) && $_POST['action'] == 'do')
{
if (
isset($_POST['action']) &&
$_POST['action'] == 'do'
) {
// User wants to change planets name
$NewName = trim($_POST['set_newname']);
if(!empty($NewName))
{
// Update only, when name is not the same as old
if($_Planet['name'] != $NewName)
{
// Check if planet new name is correct
$NewNameLength = strlen($NewName);
if($NewNameLength < 3)
{
$parse['Rename_Ins_MsgColor'] = 'red';
$parse['Rename_Ins_MsgTxt'] = $_Lang['RenamePlanet_TooShort'];
}
elseif($NewNameLength > 20)
{
$parse['Rename_Ins_MsgColor'] = 'red';
$parse['Rename_Ins_MsgTxt'] = $_Lang['RenamePlanet_TooLong'];
}
elseif(!preg_match(REGEXP_PLANETNAME_ABSOLUTE, $NewName))
{
$parse['Rename_Ins_MsgColor'] = 'red';
$parse['Rename_Ins_MsgTxt'] = $_Lang['RenamePlanet_BadSigns'];
}
if($parse['Rename_Ins_MsgTxt'] === false)
{
//Save the new name in Script Memory
$_Planet['name'] = $NewName;
//Now save it in DataBase
doquery("UPDATE {{table}} SET `name` = '{$NewName}' WHERE `id` = {$_User['current_planet']} LIMIT 1;", 'planets');
$parse['Rename_Ins_MsgColor'] = 'lime';
$parse['Rename_Ins_MsgTxt'] = $_Lang['RenamePlanet_NameSaved'];
}
}
else
{
$parse['Rename_Ins_MsgColor'] = 'orange';
$parse['Rename_Ins_MsgTxt'] = $_Lang['RenamePlanet_SameName'];
}
}
else
{

$nameChangeValidationResult = Overview\Screens\PlanetNameChange\Utils\Validators\validateNewName([
'input' => [
'newName' => $NewName,
],
'planet' => &$_Planet,
]);

if (!$nameChangeValidationResult['isSuccess']) {
$errorMessage = Overview\Screens\PlanetNameChange\Utils\ErrorMappers\mapValidateNewNameErrorToReadableMessage(
$nameChangeValidationResult['error']
);

$parse['Rename_Ins_MsgColor'] = 'red';
$parse['Rename_Ins_MsgTxt'] = $_Lang['RenamePlanet_0Lenght'];
$parse['Rename_Ins_MsgTxt'] = $errorMessage;
} else {
$_Planet['name'] = $NewName;
doquery("UPDATE {{table}} SET `name` = '{$NewName}' WHERE `id` = {$_User['current_planet']} LIMIT 1;", 'planets');

$parse['Rename_Ins_MsgColor'] = 'lime';
$parse['Rename_Ins_MsgTxt'] = $_Lang['RenamePlanet_NameSaved'];
}
}

if($parse['Rename_Ins_MsgTxt'] !== false)
{
if ($parse['Rename_Ins_MsgTxt'] !== '') {
$parse['Rename_Ins_MsgHide'] = '';
}

Expand Down

0 comments on commit a5b523b

Please sign in to comment.