2021-07-08 21:18:08 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Controllers;
|
2021-08-01 20:43:50 +02:00
|
|
|
|
2021-08-18 20:47:18 +02:00
|
|
|
use Hleb\Scheme\App\Controllers\MainController;
|
2021-07-08 21:18:08 +02:00
|
|
|
use Hleb\Constructor\Handlers\Request;
|
2021-12-19 15:10:26 +01:00
|
|
|
use App\Models\HomeModel;
|
2022-03-29 19:59:04 +02:00
|
|
|
use Config, Tpl, UserData, Meta, Translate;
|
2021-07-08 21:18:08 +02:00
|
|
|
|
2021-08-18 20:47:18 +02:00
|
|
|
class HomeController extends MainController
|
2021-07-08 21:18:08 +02:00
|
|
|
{
|
2022-03-30 19:20:46 +02:00
|
|
|
protected $limit = 20;
|
2021-12-19 15:10:26 +01:00
|
|
|
|
2022-01-17 19:17:58 +01:00
|
|
|
private $user;
|
ADD: Middleware (first part)
Refactoring the code, dropping the `users_trust_level` table, classes, merging methods (for example, getPostId and getPostSlug), and changing the names and types of variables.
* The following classes have been removed: Authorization, DefaultMiddlewareBefore, DefaultMiddlewareBefore, Base, BanController.
* Added: MiddlewareModel, UserData, Designator.
* Fixed N+1 query on the post page
* The detailed page of the sent invites in the admin section has been changed.
etc.
2022-01-04 20:54:03 +01:00
|
|
|
|
2021-12-19 15:10:26 +01:00
|
|
|
public function __construct()
|
|
|
|
{
|
2022-01-17 19:17:58 +01:00
|
|
|
$this->user = UserData::get();
|
2021-12-19 15:10:26 +01:00
|
|
|
}
|
|
|
|
|
2021-12-24 06:12:37 +01:00
|
|
|
public function index($sheet, $type)
|
2021-07-08 21:18:08 +02:00
|
|
|
{
|
2021-08-18 11:29:16 +02:00
|
|
|
$page = Request::getInt('page');
|
2021-07-12 18:06:39 +02:00
|
|
|
$page = $page == 0 ? 1 : $page;
|
2021-10-27 22:11:03 +02:00
|
|
|
|
2022-02-11 16:47:21 +01:00
|
|
|
if ($sheet == 'main.deleted' && $this->user['trust_level'] != 10) {
|
|
|
|
redirect('/');
|
|
|
|
}
|
|
|
|
|
2022-01-17 19:17:58 +01:00
|
|
|
$latest_answers = HomeModel::latestAnswers($this->user);
|
|
|
|
$topics_user = HomeModel::subscription($this->user['id']);
|
|
|
|
$pagesCount = HomeModel::feedCount($topics_user, $this->user, $sheet);
|
|
|
|
$posts = HomeModel::feed($page, $this->limit, $topics_user, $this->user, $sheet);
|
2021-07-08 21:18:08 +02:00
|
|
|
|
2021-10-27 22:11:03 +02:00
|
|
|
$topics = [];
|
|
|
|
if (count($topics_user) == 0) {
|
2022-01-17 19:17:58 +01:00
|
|
|
$topics = \App\Models\FacetModel::advice($this->user['id']);
|
2021-08-01 20:43:50 +02:00
|
|
|
}
|
2021-07-08 21:18:08 +02:00
|
|
|
|
2022-03-29 19:59:04 +02:00
|
|
|
$meta_title = sprintf(Translate::get($sheet . '.title'), Config::get('meta.name'));
|
|
|
|
$meta_desc = sprintf(Translate::get($sheet . '.desc'), Config::get('meta.name'));
|
2022-03-17 14:38:33 +01:00
|
|
|
|
2021-10-11 14:02:38 +02:00
|
|
|
$m = [
|
|
|
|
'og' => true,
|
2022-03-24 09:30:41 +01:00
|
|
|
'imgurl' => Config::get('meta.img_path'),
|
2021-10-19 10:27:27 +02:00
|
|
|
'url' => $sheet == 'top' ? '/top' : '/',
|
2021-08-28 23:05:54 +02:00
|
|
|
];
|
2021-07-08 21:18:08 +02:00
|
|
|
|
2022-01-17 19:17:58 +01:00
|
|
|
return Tpl::agRender(
|
2021-10-27 22:11:03 +02:00
|
|
|
'/home',
|
|
|
|
[
|
2022-03-29 19:59:04 +02:00
|
|
|
'meta' => Meta::get($m, $meta_title, $meta_desc, 'main'),
|
2021-10-27 22:11:03 +02:00
|
|
|
'data' => [
|
2021-12-19 15:10:26 +01:00
|
|
|
'pagesCount' => ceil($pagesCount / $this->limit),
|
2021-10-27 22:11:03 +02:00
|
|
|
'pNum' => $page,
|
|
|
|
'sheet' => $sheet,
|
2021-12-24 06:12:37 +01:00
|
|
|
'type' => $type,
|
2022-03-17 14:38:33 +01:00
|
|
|
'latest_answers' => $latest_answers,
|
2021-10-27 22:11:03 +02:00
|
|
|
'topics_user' => $topics_user,
|
2022-03-21 10:39:07 +01:00
|
|
|
'posts' => $posts,
|
2021-10-27 22:11:03 +02:00
|
|
|
'topics' => $topics,
|
|
|
|
],
|
|
|
|
],
|
|
|
|
);
|
2021-07-08 21:18:08 +02:00
|
|
|
}
|
2021-08-01 20:43:50 +02:00
|
|
|
}
|