libarea/app/Controllers/HomeController.php

94 lines
2.9 KiB
PHP
Raw Normal View History

<?php
namespace App\Controllers;
use Hleb\Constructor\Handlers\Request;
use App\Models\{HomeModel, IgnoredModel};
use Meta;
class HomeController extends Controller
{
protected $limit = 15;
public function index($sheet)
{
$ignored = IgnoredModel::getIgnoredUsers(50);
$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)
2022-09-08 12:46:37 +02:00
// Topics signed by the participant. If a guest, then default.
// Темы на которые подписан участник. Если гость, то дефолтные.
$topics = \App\Models\FacetModel::advice();
$m = [
'main' => 'main',
'og' => true,
'imgurl' => config('meta.img_path'),
2022-08-04 16:00:11 +02:00
'url' => self::canonical($sheet),
];
return $this->render(
'/home',
[
'meta' => Meta::get(config('meta.' . $sheet . '_title'), config('meta.' . $sheet . '_desc'), $m),
'data' => [
'pagesCount' => ceil($pagesCount / $this->limit),
'pNum' => $this->pageNumber,
'sheet' => $sheet,
'type' => 'main',
'latest_answers' => $latest_answers,
'topics_user' => $topics_user,
'posts' => $posts,
'topics' => $topics,
2022-07-04 15:58:19 +02:00
'items' => $items,
],
],
);
}
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-04 16:00:11 +02:00
return $url;
}
// Infinite scroll
// Бесконечный скролл
public function scroll()
{
$type = Request::get('type') == 'all' ? 'all' : 'main.feed';
$ignored = IgnoredModel::getIgnoredUsers(50);
$topics_user = HomeModel::subscription();
$posts = HomeModel::feed($this->pageNumber, $this->limit, $topics_user, $ignored, $type);
$this->insert(
'/content/post/type-post',
[
'data' => [
'pages' => $this->pageNumber,
'sheet' => 'main.feed',
'posts' => $posts,
]
]
);
}
}