Visman пре 4 година
родитељ
комит
3b53122aa1
1 измењених фајлова са 0 додато и 190 уклоњено
  1. 0 190
      app/Models/PM/PRnd.php

+ 0 - 190
app/Models/PM/PRnd.php

@@ -1,190 +0,0 @@
-<?php
-/**
- * This file is part of the ForkBB <https://github.com/forkbb>.
- *
- * @copyright (c) Visman <mio.visman@yandex.ru, https://github.com/MioVisman>
- * @license   The MIT License (MIT)
- */
-
-declare(strict_types=1);
-
-namespace ForkBB\Models\PM;
-
-use ForkBB\Core\Container;
-use ForkBB\Models\Model;
-use ForkBB\Models\PM\Cnst;
-use ForkBB\Models\User\Model as User;
-use InvalidArgumentException;
-use RuntimeException;
-
-class PRnd extends Model
-{
-
-    /**
-     * Соотвествие между номерами в топике и пользователями
-     * @var array
-     */
-    protected $numToUser;
-
-    /**
-     * Соотвествие между id пользователей и их номерами в топике
-     * @var array
-     */
-    protected $idToNum;
-
-    /**
-     * @var array
-     */
-    protected $tmpList;
-
-    /**
-     * $this->list = ....
-     */
-    protected function setlist(array $list): void
-    {
-        foreach ($list as $cur) {
-            $this->list($cur['user_number'], $cur);
-        }
-    }
-
-    protected function list(int $number, /* User|array*/ $data): void
-    {
-        if ($data instanceof User) {
-            $user = $data;
-            $data = [
-                'user_number' => $number,
-                'user_id'     => $data->id,
-                'username'    => $data->username,
-                'pt_status'   => Cnst::PT_START,
-                'pt_visit'    => 0,
-            ];
-        } else {
-            $user = null;
-        }
-
-        if (isset($data['user_number'], $data['user_id'], $data['username'], $data['pt_status'], $data['pt_visit'])) {
-            if ($number !== $data['user_number']) {
-                throw new RuntimeException('Invalid serial number');
-            }
-        } else {
-            throw new RuntimeException('No all required data');
-        }
-
-        $list          = $this->getAttr('list', []);
-        $list[$number] = $data;
-
-        $this->setAttr('list', $list);
-
-        $this->idToNum[$data['user_id']] = $number;
-        $this->numToUser[$number]        = $user;
-    }
-
-    /**
-     * Устанавливает отправителя
-     */
-    public function setSender(User $user): self
-    {
-        if (isset($this->list[0])) {
-            throw new RuntimeException('Sender already set');
-        } elseif (isset($this->$idToNum[$user->id])) {
-            throw new RuntimeException('Sender already specified in the recipient');
-        }
-
-        $this->list(0, $user);
-
-        return $this;
-    }
-
-    /**
-     * Добавляет получателя
-     */
-    public function addRecipient(User $user): self
-    {
-        if (isset($this->$idToNum[$user->id])) {
-            throw new RuntimeException('This recipient is already set');
-        }
-
-        $next = 1 + \max(\array_keys($this->list));
-
-        $this->list($next, $user);
-
-        return $this;
-    }
-
-    /**
-     * Возвращает пользователя по номеру в топике
-     */
-    public function userByNum(int $number): User
-    {
-        if (isset($numToUser[$number])) {
-            return $numToUser[$number];
-        } elseif (isset($this->list[$number])) {
-            $data = $this->list[$number];
-            $user = $this->c->users->load($data['user_id']);
-
-            if (
-                ! $user instanceof User
-                && 1 !== $data['user_id'] // ???? может сменить id гостя?
-            ) {
-                $user = $this->c->users->load(1);
-            }
-
-            if (! $user instanceof User) {
-                throw new RuntimeException("No user data in post number {$data['user_id']}");
-            } elseif ($user->isGuest) {
-                $user = clone $user;
-
-                $user->__username = $data['username'];
-            }
-
-            return $numToUser[$number] = $user;
-        } else {
-            throw new RuntimeException("No user of the number {$number}");
-        }
-    }
-
-    protected function setstatus(int $status): void
-    {
-        if (! isset($this->$idToNum[$this->c->user->id])) {
-            throw new RuntimeException('Someone else\'s private topic');
-        }
-
-        $number        = $this->$idToNum[$this->c->user->id];
-        $this->tmpList = $this->getAttr('list', []);
-
-        if (0 === $number) {
-            switch ($status) {
-                case Cnst::PT_NORMAL:
-                case Cnst::PT_DELETED:
-                    $this->stFromStNs($status);
-
-                    break;
-                case Cnst::PT_ARCHIVE:
-                    $this->stFromStNs(Cnst::PT_NOTSENT);
-
-                    break;
-                case Cnst::PT_NOTSENT:
-                default:
-                    throw new InvalidArgumentException("Bad status: {$status}");
-            }
-        }
-
-        $this->tmpList[$number]['pt_status'] = $status;
-
-        $this->setAttr('list', $this->tmpList);
-    }
-
-    /**
-     * Из PT_START и PT_NOTSENT в $new
-     */
-    protected function stFromStNs(int $new): void
-    {
-        \array_walk($this->tmpList, function (&$cur, $key, $new) {
-            switch ($cur['pt_status']) {
-                case Cnst::PT_START:
-                case Cnst::PT_NOTSENT:
-                    $cur['pt_status'] = $new;
-            }
-        }, $new);
-    }
-}