2021-07-08 21:18:08 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Controllers;
|
2021-08-01 20:43:50 +02:00
|
|
|
|
2022-10-16 22:22:22 +02:00
|
|
|
use Hleb\Constructor\Handlers\Request;
|
2022-10-21 10:14:57 +02:00
|
|
|
use App\Models\{HomeModel, IgnoredModel};
|
2022-05-14 17:22:42 +02:00
|
|
|
use Meta;
|
2021-07-08 21:18:08 +02:00
|
|
|
|
2022-05-14 17:22:42 +02:00
|
|
|
class HomeController extends Controller
|
2021-07-08 21:18:08 +02:00
|
|
|
{
|
2022-05-30 11:08:24 +02:00
|
|
|
protected $limit = 15;
|
2021-12-19 15:10:26 +01:00
|
|
|
|
2022-05-11 11:29:37 +02:00
|
|
|
public function index($sheet)
|
|
|
|
{
|
2022-10-21 10:14:57 +02:00
|
|
|
$ignored = IgnoredModel::getIgnoredUsers(50);
|
2023-01-05 15:42:35 +01:00
|
|
|
$latest_answers = HomeModel::latestAnswers();
|
|
|
|
$topics_user = HomeModel::subscription();
|
|
|
|
$pagesCount = HomeModel::feedCount($topics_user, $ignored, $sheet);
|
|
|
|
$posts = HomeModel::feed($this->pageNumber, $this->limit, $topics_user, $ignored, $sheet);
|
2022-07-04 15:58:19 +02:00
|
|
|
$items = HomeModel::latestItems(3); // (LIMIT)
|
2021-07-08 21:18:08 +02:00
|
|
|
|
2022-09-08 12:46:37 +02:00
|
|
|
// Topics signed by the participant. If a guest, then default.
|
|
|
|
// Темы на которые подписан участник. Если гость, то дефолтные.
|
2023-01-05 15:42:35 +01:00
|
|
|
$topics = \App\Models\FacetModel::advice();
|
2021-07-08 21:18:08 +02:00
|
|
|
|
2021-10-11 14:02:38 +02:00
|
|
|
$m = [
|
2022-04-05 17:32:48 +02:00
|
|
|
'main' => 'main',
|
|
|
|
'og' => true,
|
2022-05-03 23:05:50 +02:00
|
|
|
'imgurl' => config('meta.img_path'),
|
2022-08-04 16:00:11 +02:00
|
|
|
'url' => self::canonical($sheet),
|
2021-08-28 23:05:54 +02:00
|
|
|
];
|
2021-07-08 21:18:08 +02:00
|
|
|
|
2022-05-14 17:22:42 +02:00
|
|
|
return $this->render(
|
2021-10-27 22:11:03 +02:00
|
|
|
'/home',
|
|
|
|
[
|
2022-08-06 15:55:07 +02:00
|
|
|
'meta' => Meta::get(config('meta.' . $sheet . '_title'), config('meta.' . $sheet . '_desc'), $m),
|
2021-10-27 22:11:03 +02:00
|
|
|
'data' => [
|
2021-12-19 15:10:26 +01:00
|
|
|
'pagesCount' => ceil($pagesCount / $this->limit),
|
2022-05-14 17:22:42 +02:00
|
|
|
'pNum' => $this->pageNumber,
|
2021-10-27 22:11:03 +02:00
|
|
|
'sheet' => $sheet,
|
2022-05-11 11:29:37 +02:00
|
|
|
'type' => 'main',
|
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,
|
2022-05-15 07:33:57 +02:00
|
|
|
'topics' => $topics,
|
2022-07-04 15:58:19 +02:00
|
|
|
'items' => $items,
|
2021-10-27 22:11:03 +02:00
|
|
|
],
|
|
|
|
],
|
|
|
|
);
|
2021-07-08 21:18:08 +02:00
|
|
|
}
|
2022-04-01 15:12:11 +02:00
|
|
|
|
2022-08-04 16:00:11 +02:00
|
|
|
public static function canonical($url)
|
|
|
|
{
|
|
|
|
switch ($url) {
|
|
|
|
case 'questions':
|
|
|
|
$url = '/questions';
|
|
|
|
break;
|
|
|
|
case 'posts':
|
|
|
|
$url = '/posts';
|
|
|
|
break;
|
|
|
|
case 'top':
|
|
|
|
$url = '/top';
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
$url = '/';
|
|
|
|
}
|
2022-08-23 19:20:30 +02:00
|
|
|
|
2022-08-04 16:00:11 +02:00
|
|
|
return $url;
|
|
|
|
}
|
2022-08-23 19:20:30 +02:00
|
|
|
|
2022-04-01 15:12:11 +02:00
|
|
|
// Infinite scroll
|
|
|
|
// Бесконечный скролл
|
|
|
|
public function scroll()
|
|
|
|
{
|
2022-10-16 22:22:22 +02:00
|
|
|
$type = Request::get('type') == 'all' ? 'all' : 'main.feed';
|
2022-12-09 15:11:21 +01:00
|
|
|
|
2022-10-28 19:32:33 +02:00
|
|
|
$ignored = IgnoredModel::getIgnoredUsers(50);
|
2023-01-05 15:42:35 +01:00
|
|
|
$topics_user = HomeModel::subscription();
|
|
|
|
$posts = HomeModel::feed($this->pageNumber, $this->limit, $topics_user, $ignored, $type);
|
2022-04-01 15:12:11 +02:00
|
|
|
|
2022-05-14 17:22:42 +02:00
|
|
|
$this->insert(
|
2022-10-04 19:39:19 +02:00
|
|
|
'/content/post/type-post',
|
2022-04-01 15:12:11 +02:00
|
|
|
[
|
|
|
|
'data' => [
|
2022-05-14 17:22:42 +02:00
|
|
|
'pages' => $this->pageNumber,
|
2022-04-01 15:12:11 +02:00
|
|
|
'sheet' => 'main.feed',
|
|
|
|
'posts' => $posts,
|
|
|
|
|
|
|
|
]
|
|
|
|
]
|
|
|
|
);
|
|
|
|
}
|
2021-08-01 20:43:50 +02:00
|
|
|
}
|