Procházet zdrojové kódy

Add Topics\UpdateUsername()

Visman před 4 roky
rodič
revize
c2f4964842

+ 6 - 0
app/Models/Pages/Admin/Update.php

@@ -1050,6 +1050,12 @@ class Update extends Admin
             'PostManagerFeed'
         );
 
+        $coreConfig->add(
+            'multiple=>TopicManagerUpdateUsername',
+            '\\ForkBB\\Models\\Topic\\UpdateUsername::class',
+            'TopicManagerMove'
+        );
+
         $coreConfig->save();
 
         return null;

+ 38 - 0
app/Models/Topic/UpdateUsername.php

@@ -0,0 +1,38 @@
+<?php
+
+declare(strict_types=1);
+
+namespace ForkBB\Models\Topic;
+
+use ForkBB\Models\Action;
+use ForkBB\Models\User\Model as User;
+use RuntimeException;
+
+class UpdateUsername extends Action
+{
+    /**
+     * Обновляет имя пользователя в сообщениях
+     */
+    public function updateUsername(User $user): void
+    {
+        if ($user->isGuest) {
+            throw new RuntimeException('User expected, not guest');
+        }
+
+        $vars = [
+            ':id'   => $user->id,
+            ':name' => $user->username,
+        ];
+        $query = 'UPDATE ::topics
+            SET poster=?s:name
+            WHERE poster_id=?i:id';
+
+        $this->c->DB->exec($query, $vars);
+
+        $query = 'UPDATE ::topics
+            SET last_poster=?s:name
+            WHERE last_poster_id=?i:id';
+
+        $this->c->DB->exec($query, $vars);
+    }
+}

+ 1 - 0
app/config/main.dist.php

@@ -278,6 +278,7 @@ return [
         'TopicManagerAccess' => \ForkBB\Models\Topic\Access::class,
         'TopicManagerMerge'  => \ForkBB\Models\Topic\Merge::class,
         'TopicManagerMove'   => \ForkBB\Models\Topic\Move::class,
+        'TopicManagerUpdateUsername' => \ForkBB\Models\Topic\UpdateUsername::class,
 
         'PostModel'               => \ForkBB\Models\Post\Model::class,
         'PostManagerLoad'         => \ForkBB\Models\Post\Load::class,