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;
|
|
|
|
use App\Models\HomeModel;
|
2021-09-18 17:57:03 +02:00
|
|
|
use Agouti\{Content, Config, Base};
|
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
|
|
|
{
|
|
|
|
// Главная страница
|
2021-08-01 20:43:50 +02:00
|
|
|
public function index($sheet)
|
2021-07-08 21:18:08 +02:00
|
|
|
{
|
|
|
|
$uid = Base::getUid();
|
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-08-01 20:43:50 +02:00
|
|
|
|
2021-07-12 18:06:39 +02:00
|
|
|
$limit = 25;
|
2021-08-15 20:51:14 +02:00
|
|
|
$space_user = HomeModel::getSubscriptionSpaces($uid['user_id']);
|
2021-07-08 21:18:08 +02:00
|
|
|
$latest_answers = HomeModel::latestAnswers($uid);
|
2021-07-25 23:20:47 +02:00
|
|
|
|
2021-08-01 20:43:50 +02:00
|
|
|
$pagesCount = HomeModel::feedCount($space_user, $uid);
|
2021-07-12 18:06:39 +02:00
|
|
|
$posts = HomeModel::feed($page, $limit, $space_user, $uid, $sheet);
|
2021-07-08 21:18:08 +02:00
|
|
|
Base::PageError404($posts);
|
|
|
|
|
2021-08-28 23:05:54 +02:00
|
|
|
$result_post = array();
|
2021-07-08 21:18:08 +02:00
|
|
|
foreach ($posts as $ind => $row) {
|
|
|
|
$text = explode("\n", $row['post_content']);
|
|
|
|
$row['post_content_preview'] = Content::text($text[0], 'line');
|
2021-09-30 14:53:21 +02:00
|
|
|
$row['lang_num_answers'] = word_form($row['post_answers_count'], lang('answer'), lang('answers-m'), lang('answers'));
|
2021-07-08 21:18:08 +02:00
|
|
|
$row['post_date'] = lang_date($row['post_date']);
|
2021-08-28 23:05:54 +02:00
|
|
|
$result_post[$ind] = $row;
|
2021-08-01 20:43:50 +02:00
|
|
|
}
|
|
|
|
|
2021-08-07 15:34:53 +02:00
|
|
|
$result_answers = array();
|
2021-07-08 21:18:08 +02:00
|
|
|
foreach ($latest_answers as $ind => $row) {
|
2021-08-20 05:29:28 +02:00
|
|
|
$row['answer_content'] = Base::cutWords($row['answer_content'], 8);
|
2021-07-08 21:18:08 +02:00
|
|
|
$row['answer_date'] = lang_date($row['answer_date']);
|
2021-09-23 18:28:51 +02:00
|
|
|
$result_answers[$ind] = $row;
|
2021-07-08 21:18:08 +02:00
|
|
|
}
|
|
|
|
|
2021-09-04 08:40:39 +02:00
|
|
|
$num = $page > 1 ? sprintf(lang('page-number'), $page) : '';
|
2021-07-08 21:18:08 +02:00
|
|
|
$meta_title = Config::get(Config::PARAM_HOME_TITLE) . $num;
|
|
|
|
$meta_desc = Config::get(Config::PARAM_META_DESC) . $num;
|
2021-09-23 18:28:51 +02:00
|
|
|
|
2021-09-04 08:40:39 +02:00
|
|
|
$url = Config::get(Config::PARAM_URL);
|
|
|
|
$canonical = $sheet == 'top' ? $url . '/top' : $url;
|
2021-09-23 18:28:51 +02:00
|
|
|
|
2021-09-04 08:40:39 +02:00
|
|
|
if ($sheet == 'top' || $sheet == 'all') {
|
|
|
|
$meta_title = lang($sheet . '-title') . $num . Config::get(Config::PARAM_HOME_TITLE);
|
|
|
|
$meta_desc = lang($sheet . '-desc') . $num . Config::get(Config::PARAM_NAME);
|
2021-08-01 20:43:50 +02:00
|
|
|
}
|
2021-07-08 21:18:08 +02:00
|
|
|
|
2021-08-28 23:05:54 +02:00
|
|
|
$meta = [
|
2021-07-08 21:18:08 +02:00
|
|
|
'canonical' => $canonical,
|
2021-09-11 08:09:24 +02:00
|
|
|
'img' => $url . '/assets/images/agouti.webp',
|
2021-07-08 21:18:08 +02:00
|
|
|
'meta_title' => $meta_title,
|
|
|
|
'meta_desc' => $meta_desc,
|
2021-08-28 23:05:54 +02:00
|
|
|
'sheet' => $sheet,
|
|
|
|
];
|
|
|
|
|
|
|
|
$data = [
|
|
|
|
'pagesCount' => ceil($pagesCount / $limit),
|
|
|
|
'pNum' => $page,
|
|
|
|
'sheet' => $sheet,
|
2021-08-07 15:34:53 +02:00
|
|
|
'latest_answers' => $result_answers,
|
|
|
|
'space_user' => $space_user,
|
2021-08-28 23:05:54 +02:00
|
|
|
'posts' => $result_post
|
2021-07-08 21:18:08 +02:00
|
|
|
];
|
|
|
|
|
2021-08-28 23:05:54 +02:00
|
|
|
return view('/home', ['meta' => $meta, 'uid' => $uid, 'data' => $data]);
|
2021-07-08 21:18:08 +02:00
|
|
|
}
|
2021-08-01 20:43:50 +02:00
|
|
|
}
|