Update User\Save for username update
This commit is contained in:
parent
cb8b7f4440
commit
1e2790f47d
4 changed files with 42 additions and 5 deletions
|
@ -12,7 +12,7 @@ use RuntimeException;
|
|||
class UpdateUsername extends Action
|
||||
{
|
||||
/**
|
||||
* Обновляет имя пользователя в списке разделов и модераторах
|
||||
* Обновляет имя пользователя в таблице разделов
|
||||
*/
|
||||
public function updateUsername(User $user): void
|
||||
{
|
||||
|
|
|
@ -11,7 +11,7 @@ use RuntimeException;
|
|||
class UpdateUsername extends Action
|
||||
{
|
||||
/**
|
||||
* Обновляет имя пользователя в сообщениях
|
||||
* Обновляет имя пользователя в таблице сообщений
|
||||
*/
|
||||
public function updateUsername(User $user): void
|
||||
{
|
||||
|
|
|
@ -11,7 +11,7 @@ use RuntimeException;
|
|||
class UpdateUsername extends Action
|
||||
{
|
||||
/**
|
||||
* Обновляет имя пользователя в сообщениях
|
||||
* Обновляет имя пользователя в таблице тем
|
||||
*/
|
||||
public function updateUsername(User $user): void
|
||||
{
|
||||
|
|
|
@ -18,10 +18,12 @@ class Save extends Action
|
|||
if ($user->id < 1) {
|
||||
throw new RuntimeException('The model does not have ID');
|
||||
}
|
||||
|
||||
$modified = $user->getModified();
|
||||
if (empty($modified)) {
|
||||
return $user;
|
||||
}
|
||||
|
||||
$values = $user->getAttrs();
|
||||
|
||||
if (
|
||||
|
@ -36,21 +38,30 @@ class Save extends Action
|
|||
$table = 'users';
|
||||
$where = 'id=?i';
|
||||
}
|
||||
|
||||
$set = $vars = [];
|
||||
$grChange = false;
|
||||
$grChange = false;
|
||||
$nameChange = false;
|
||||
|
||||
foreach ($modified as $name) {
|
||||
if (! isset($fileds[$name])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$vars[] = $values[$name];
|
||||
$set[] = $name . '=?' . $fileds[$name];
|
||||
if ('group_id' === $name) {
|
||||
|
||||
if ('username' === $name) {
|
||||
$nameChange = true;
|
||||
} elseif ('group_id' === $name) {
|
||||
$grChange = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($set)) {
|
||||
return $user;
|
||||
}
|
||||
|
||||
if (
|
||||
$user->isGuest
|
||||
&& ! $user->isUnverified
|
||||
|
@ -59,6 +70,7 @@ class Save extends Action
|
|||
} else {
|
||||
$vars[] = $user->id;
|
||||
}
|
||||
|
||||
$set = \implode(', ', $set);
|
||||
$query = "UPDATE ::{$table}
|
||||
SET {$set}
|
||||
|
@ -67,6 +79,13 @@ class Save extends Action
|
|||
$this->c->DB->exec($query, $vars);
|
||||
$user->resModified();
|
||||
|
||||
if (
|
||||
$nameChange
|
||||
&& ! $user->isGuest
|
||||
) {
|
||||
$this->updateUsernameInOtherTables($user);
|
||||
}
|
||||
|
||||
if ($grChange) {
|
||||
$this->c->admins->reset();
|
||||
$this->c->stats->reset();
|
||||
|
@ -83,20 +102,25 @@ class Save extends Action
|
|||
if (null !== $user->id) {
|
||||
throw new RuntimeException('The model has ID');
|
||||
}
|
||||
|
||||
$attrs = $user->getAttrs();
|
||||
$fileds = $this->c->dbMap->users;
|
||||
$set = $set2 = $vars = [];
|
||||
|
||||
foreach ($attrs as $key => $value) {
|
||||
if (! isset($fileds[$key])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$vars[] = $value;
|
||||
$set[] = $key;
|
||||
$set2[] = '?' . $fileds[$key];
|
||||
}
|
||||
|
||||
if (empty($set)) {
|
||||
throw new RuntimeException('The model is empty');
|
||||
}
|
||||
|
||||
$set = \implode(', ', $set);
|
||||
$set2 = \implode(', ', $set2);
|
||||
$query = "INSERT INTO ::users ({$set})
|
||||
|
@ -115,4 +139,17 @@ class Save extends Action
|
|||
|
||||
return $user->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Обновляет username по всей(?) DB
|
||||
*/
|
||||
protected function updateUsernameInOtherTables(User $user): void
|
||||
{
|
||||
$this->c->posts->updateUsername($user);
|
||||
$this->c->topics->updateUsername($user);
|
||||
$this->c->forums->updateUsername($user);
|
||||
$this->c->Online->updateUsername($user);
|
||||
|
||||
// ???? и т.д.
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue