Move.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. /**
  3. * This file is part of the ForkBB <https://github.com/forkbb>.
  4. *
  5. * @copyright (c) Visman <mio.visman@yandex.ru, https://github.com/MioVisman>
  6. * @license The MIT License (MIT)
  7. */
  8. declare(strict_types=1);
  9. namespace ForkBB\Models\Post;
  10. use ForkBB\Models\Action;
  11. use ForkBB\Models\Topic\Topic;
  12. use ForkBB\Models\Post\Post;
  13. class Move extends Action
  14. {
  15. /**
  16. * Перенос сообщений
  17. */
  18. public function move(bool $useFrom, Topic $toTopic, Post ...$posts): void
  19. {
  20. $topics = [
  21. $toTopic->id => $toTopic,
  22. ];
  23. foreach ($posts as $post) {
  24. $topics[$post->topic_id] = $post->parent;
  25. if ($useFrom) {
  26. $post->message = "[from]{$post->parent->subject}[/from]\n" . $post->message;
  27. }
  28. $post->topic_id = $toTopic->id;
  29. $this->c->posts->update($post);
  30. }
  31. //???? переиндексация поискового индекса? для первого сообщения?
  32. //???? перерасчет количества тем у пользователей? или нет?
  33. $forums = [];
  34. foreach ($topics as $topic) {
  35. $forums[$topic->forum_id] = $topic->parent;
  36. $this->c->topics->update($topic->calcStat());
  37. }
  38. foreach ($forums as $forum) {
  39. $this->c->forums->update($forum->calcStat());
  40. }
  41. }
  42. }