Update Models\PM\Load

Delete pm_rnd table.
This commit is contained in:
Visman 2021-03-27 16:16:32 +07:00
parent ff77eb11ad
commit f8b0b81964

View file

@ -11,7 +11,7 @@ declare(strict_types=1);
namespace ForkBB\Models\PM;
use ForkBB\Models\Method;
use ForkBB\Models\Model as ParentModel;
use ForkBB\Models\DataModel;
use ForkBB\Models\PM\Cnst;
use ForkBB\Models\PM\PPost;
use ForkBB\Models\PM\PTopic;
@ -20,11 +20,6 @@ use RuntimeException;
class Load extends Method
{
/**
* @var array
*/
protected $userIds;
/**
* Создает текст запрос
*/
@ -32,10 +27,6 @@ class Load extends Method
{
switch ($type) {
case Cnst::PRND:
$where = $solo ? 'pr.topic_id=?i:tid' : 'pr.topic_id IN (?ai:ids)';
return "SELECT * FROM pm_rnd AS pr WHERE {$where}";
case Cnst::PTOPIC:
$where = $solo ? 'pt.id=?i:tid' : 'pt.id IN (?ai:ids)';
@ -45,38 +36,11 @@ class Load extends Method
return "SELECT * FROM pm_posts AS pp WHERE {$where}";
default:
throw new RuntimeException('Unknown request type');
throw new InvalidArgumentException("Unknown request type: {$type}");
}
}
/**
* Группирует данные пользователей по приватным тема (можно было и в PDO получить, но...)
* и выбирает все id пользователей
*/
protected function calc(array $data): array
{
$this->userIds = [];
$result = [];
foreach ($data as $row) {
$uid = $row['user_id'];
$tid = $row['topic_id'];
unset($row['topic_id']);
$this->userIds[$uid] = $uid;
if (empty($result[$tid])) {
$result[$tid] = [];
}
$result[$tid][$row['user_number']] = $row;
}
return $result;
}
public function load(int $type, int $id): ?ParentModel
public function load(int $type, int $id): ?DataModel
{
switch ($type) {
case Cnst::PTOPIC:
@ -120,14 +84,9 @@ class Load extends Method
return null;
}
$topic = $this->model->create(Cnst::PTOPIC, $data);
$query = $this->getSql(Cnst::PRND);
$dataU = $this->calc($this->c->DB->query($query, $vars)->fetchAll());
$rnd = $this->model->create(Cnst::PRND);
$rnd->list = $dataU[$id];
$topic->rnd = $rnd;
$topic = $this->model->create(Cnst::PTOPIC, $data);
$this->c->users->loadByIds($this->userIds);
$this->c->users->loadByIds([$topic->poster_id, $topic->target_id]);
return $topic;
}
@ -171,23 +130,20 @@ class Load extends Method
$vars = [
':ids' => $ids,
];
$query = $this->getSql(Cnst::PRND, false);
$dataU = $this->calc($this->c->DB->query($query, $vars)->fetchAll());
$this->c->users->loadByIds($this->userIds);
$query = $this->getSql(Cnst::PTOPIC, false);
$stmt = $this->c->DB->query($query, $vars);
$result = [];
$query = $this->getSql(Cnst::PTOPIC, false);
$stmt = $this->c->DB->query($query, $vars);
$result = [];
$userIds = [];
while ($row = $stmt->fetch()) {
$topic = $this->model->create(Cnst::PTOPIC, $row);
$rnd = $this->model->create(Cnst::PRND);
$rnd->list = $dataU[$row['id']];
$topic->rnd = $rnd;
$result[] = $topic;
$result[] = $this->model->create(Cnst::PTOPIC, $row);
$userIds[$row['poster_id']] = $row['poster_id'];
$userIds[$row['target_id']] = $row['target_id'];
}
$this->c->users->loadByIds($userIds);
return $result;
}