Вход Регистрация
Файл: modules/homepage/index.php
Строк: 131
<?php

/**
 * This file is part of JohnCMS Content Management System.
 *
 * @copyright JohnCMS Community
 * @license   https://opensource.org/licenses/GPL-3.0 GPL-3.0
 * @link      https://johncms.com JohnCMS Project
 */

declare(strict_types=1);

use 
JohncmsCounters;
use 
JohncmsSystemLegacyTools;
use 
JohncmsSystemViewRender;
use 
JohncmsNavChain;
use 
JohncmsSystemi18nTranslator;

defined('_IN_JOHNCMS') || die('Error: restricted access');
define('_IS_HOMEPAGE'1); // Пометка главной страницы

/**
 * @var Render $view
 * @var NavChain $nav_chain
 * @var Tools $tools
 */

$view di(Render::class);
$news_config di('config')['johncms']['news'];
$tools di(Tools::class);
$nav_chain di(NavChain::class);
$nav_chain->showHomePage(false);

// Устанавливаем мета теги keywords и description
$config di('config')['johncms'];
$view->addData(
    [
        
'keywords'    => $config['meta_key'],
        
'description' => $config['meta_desc'],
    ]
);

// Register Namespace for module templates
$view->addFolder('homepage'__DIR__ '/templates/');

// Register the module languages domain and folder
di(Translator::class)->addTranslationDomain('homepage'__DIR__ '/locale');

$data = [];
if (
$news_config['view'] > 0) {
    
$reqtime $news_config['days'] ? time() - ($news_config['days'] * 86400) : 0;
    
$req $db->query(
        
"SELECT * FROM `news` WHERE `time` > '${reqtime}' ORDER BY `time` DESC LIMIT " .
        
$news_config['quantity']
    );

    if (
$req->rowCount()) {
        
$i 0;
        
$news '';

        
$items = [];
        while (
$res $req->fetch()) {
            
$text $res['text'];
            
$moreLink '';

            
// Если текст больше заданного предела, обрезаем
            
if (mb_strlen($text) > $news_config['size']) {
                
$text mb_substr($text0$news_config['size']);
                
$text htmlentities($textENT_QUOTES'UTF-8') . '...';
            }

            
$text $tools->checkout($text$news_config['breaks'] ? 2$news_config['tags'] ? 2);

            if (
$news_config['smileys']) {
                
$text $tools->smilies($text);
            }

            
// Ссылка на каменты
            
$comments_url '';
            
$comments_count 0;

            if (! empty(
$res['kom']) && $news_config['view'] !== && $news_config['kom'] > 0) {
                
$res_mes $db->query("SELECT * FROM `forum_topic` WHERE `id` = '" $res['kom'] . "'");
                if (
$mes $res_mes->fetch()) {
                    
$comments_count $mes['post_count'] - 1;
                }
                if (
$comments_count >= 0) {
                    
$comments_url '/forum/?type=topic&id=' $res['kom'];
                }
            }

            
$items[] = [
                
'text'         => $news_config['view'] !== $text '',
                
'title'        => $res['name'],
                
'comments'     => $comments_count ?? 0,
                
'comments_url' => $comments_url,
            ];
        }
    }
}

$data['news'] = $items ?? [];

// TODO: Если приживется, объединить со счетчиками в меню для избежания лишних запросов
/** @var Counters $counters */
$counters di('counters');
$count['forum'] = $counters->forumCounters();
$count['guestbook'] = $counters->guestbookCounters();
$count['downloads'] = $counters->downloadsCounters();
$count['library'] = $counters->libraryCounters();
$count['users'] = $counters->usersCounters();
$count['news'] = $counters->news();

$data['counters'] = $count;

echo 
$view->render('homepage::index', ['data' => $data]);
Онлайн: 2
Реклама