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-12-19 15:10:26 +01:00
|
|
|
use App\Models\HomeModel;
|
2022-04-20 21:56:00 +02:00
|
|
|
use Config, Tpl, UserData, Meta;
|
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-04-01 15:20:06 +02:00
|
|
|
protected $limit = 25;
|
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)
|
2022-04-12 15:05:52 +02:00
|
|
|
{
|
|
|
|
$pageNumber = Tpl::pageNumber();
|
2021-10-27 22:11:03 +02:00
|
|
|
|
2022-04-06 19:25:06 +02:00
|
|
|
if ($sheet == 'main.deleted' && !UserData::checkAdmin()) {
|
2022-02-11 16:47:21 +01:00
|
|
|
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);
|
2022-04-12 15:05:52 +02:00
|
|
|
$posts = HomeModel::feed($pageNumber, $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-04-20 21:56:00 +02:00
|
|
|
$title = __($sheet . '.title', ['name' => Config::get('meta.name')]);
|
|
|
|
$description = __($sheet . '.desc', ['name' => Config::get('meta.name')]);
|
2022-03-17 14:38:33 +01:00
|
|
|
|
2021-10-11 14:02:38 +02:00
|
|
|
$m = [
|
2022-04-05 17:32:48 +02:00
|
|
|
'main' => 'main',
|
|
|
|
'og' => true,
|
|
|
|
'imgurl' => Config::get('meta.img_path'),
|
|
|
|
'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-04-06 21:23:59 +02:00
|
|
|
'meta' => Meta::get($title, $description, $m),
|
2021-10-27 22:11:03 +02:00
|
|
|
'data' => [
|
2021-12-19 15:10:26 +01:00
|
|
|
'pagesCount' => ceil($pagesCount / $this->limit),
|
2022-04-12 15:05:52 +02:00
|
|
|
'pNum' => $pageNumber,
|
2021-10-27 22:11:03 +02:00
|
|
|
'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
|
|
|
}
|
2022-04-01 15:12:11 +02:00
|
|
|
|
|
|
|
// Infinite scroll
|
|
|
|
// Бесконечный скролл
|
|
|
|
public function scroll()
|
|
|
|
{
|
2022-04-12 15:05:52 +02:00
|
|
|
$pageNumber = Tpl::pageNumber();
|
2022-04-01 15:12:11 +02:00
|
|
|
$topics_user = HomeModel::subscription($this->user['id']);
|
2022-04-12 15:05:52 +02:00
|
|
|
$posts = HomeModel::feed($pageNumber, $this->limit, $topics_user, $this->user, 'main.feed');
|
2022-04-01 15:12:11 +02:00
|
|
|
|
|
|
|
Tpl::agIncludeTemplate(
|
|
|
|
'/content/post/postscroll',
|
|
|
|
[
|
|
|
|
'user' => $this->user,
|
|
|
|
'data' => [
|
2022-04-12 15:05:52 +02:00
|
|
|
'pages' => $pageNumber,
|
2022-04-01 15:12:11 +02:00
|
|
|
'sheet' => 'main.feed',
|
|
|
|
'posts' => $posts,
|
|
|
|
|
|
|
|
]
|
|
|
|
]
|
|
|
|
);
|
|
|
|
}
|
2021-08-01 20:43:50 +02:00
|
|
|
}
|