[UTIL][Form][ActorForms] Fix Full Name validate: Tried to mb_strln on null
If the trim(string) is empty, then store null without further ado
This commit is contained in:
parent
f1caabd296
commit
8b0e9c7890
@ -38,7 +38,6 @@ use App\Core\Cache;
|
|||||||
use App\Core\Form;
|
use App\Core\Form;
|
||||||
use function App\Core\I18n\_m;
|
use function App\Core\I18n\_m;
|
||||||
use App\Entity\Actor;
|
use App\Entity\Actor;
|
||||||
use App\Entity\LocalUser;
|
|
||||||
use App\Util\Exception\ClientException;
|
use App\Util\Exception\ClientException;
|
||||||
use App\Util\Exception\NicknameEmptyException;
|
use App\Util\Exception\NicknameEmptyException;
|
||||||
use App\Util\Exception\NicknameInvalidException;
|
use App\Util\Exception\NicknameInvalidException;
|
||||||
@ -47,7 +46,6 @@ use App\Util\Exception\NicknameTakenException;
|
|||||||
use App\Util\Exception\NicknameTooLongException;
|
use App\Util\Exception\NicknameTooLongException;
|
||||||
use App\Util\Exception\ServerException;
|
use App\Util\Exception\ServerException;
|
||||||
use App\Util\Nickname;
|
use App\Util\Nickname;
|
||||||
use Component\Group\Entity\LocalGroup;
|
|
||||||
use Misd\PhoneNumberBundle\Form\Type\PhoneNumberType;
|
use Misd\PhoneNumberBundle\Form\Type\PhoneNumberType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||||
@ -59,10 +57,10 @@ class ActorForms
|
|||||||
/**
|
/**
|
||||||
* Actor personal information panel
|
* Actor personal information panel
|
||||||
*
|
*
|
||||||
* @param Request $request
|
|
||||||
* @param Actor $scope The perpetrator of the change
|
* @param Actor $scope The perpetrator of the change
|
||||||
* @param Actor $target The victim of changes
|
* @param Actor $target The victim of changes
|
||||||
* @return mixed
|
*
|
||||||
|
* @throws \App\Util\Exception\NicknameException
|
||||||
* @throws ClientException
|
* @throws ClientException
|
||||||
* @throws NicknameEmptyException
|
* @throws NicknameEmptyException
|
||||||
* @throws NicknameInvalidException
|
* @throws NicknameInvalidException
|
||||||
@ -70,7 +68,6 @@ class ActorForms
|
|||||||
* @throws NicknameTakenException
|
* @throws NicknameTakenException
|
||||||
* @throws NicknameTooLongException
|
* @throws NicknameTooLongException
|
||||||
* @throws ServerException
|
* @throws ServerException
|
||||||
* @throws \App\Util\Exception\NicknameException
|
|
||||||
*/
|
*/
|
||||||
public static function personalInfo(Request $request, Actor $scope, Actor $target): mixed
|
public static function personalInfo(Request $request, Actor $scope, Actor $target): mixed
|
||||||
{
|
{
|
||||||
@ -91,7 +88,8 @@ class ActorForms
|
|||||||
];
|
];
|
||||||
|
|
||||||
// Setting nickname normalised and setting actor cache
|
// Setting nickname normalised and setting actor cache
|
||||||
$before_step = static function ($data, $extra_args) use ($target) {
|
$before_step = static function (&$data, $extra_args) use ($target) {
|
||||||
|
// Validate nickname
|
||||||
if ($target->getNickname() !== $data['nickname']) {
|
if ($target->getNickname() !== $data['nickname']) {
|
||||||
// We must only check if is both already used and allowed if the actor is local
|
// We must only check if is both already used and allowed if the actor is local
|
||||||
$check_is_allowed = $target->getIsLocal();
|
$check_is_allowed = $target->getIsLocal();
|
||||||
@ -103,17 +101,21 @@ class ActorForms
|
|||||||
|
|
||||||
// We will set $target actor's nickname in the form::handle,
|
// We will set $target actor's nickname in the form::handle,
|
||||||
// but if it is local, we must update the local reference as well
|
// but if it is local, we must update the local reference as well
|
||||||
if (!is_null($local = $target->getLocal())) {
|
if (!\is_null($local = $target->getLocal())) {
|
||||||
$local->setNickname($data['nickname']);
|
$local->setNickname($data['nickname']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Validate full name
|
||||||
if ($target->getFullname() !== $data['full_name']) {
|
if ($target->getFullname() !== $data['full_name']) {
|
||||||
$data['full_name'] = trim($data['full_name']);
|
if (!is_null($data['full_name'])) {
|
||||||
if (mb_strlen($data['full_name']) > 64) {
|
if (mb_strlen($data['full_name']) > 64) {
|
||||||
throw new ClientException(_m('Full name cannot be more than 64 character long.'));
|
throw new ClientException(_m('Full name cannot be more than 64 character long.'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete related cache
|
||||||
$cache_keys = Actor::cacheKeys($target->getId());
|
$cache_keys = Actor::cacheKeys($target->getId());
|
||||||
foreach (['id', 'nickname', 'fullname'] as $key) {
|
foreach (['id', 'nickname', 'fullname'] as $key) {
|
||||||
Cache::delete($cache_keys[$key]);
|
Cache::delete($cache_keys[$key]);
|
||||||
|
Loading…
Reference in New Issue
Block a user