View file modules/news/Controllers/ArticleController.php

File size: 1.52Kb
<?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);

namespace News\Controllers;

use Johncms\Controller\BaseController;
use News\Article;
use News\MetaTagsManager;
use News\Section;

class ArticleController extends BaseController
{
    protected $module_name = 'news';

    /** @var array */
    protected $config;

    /** @var MetaTagsManager */
    protected $meta_tags;

    public function __construct()
    {
        parent::__construct();
        $this->config = di('config')['news'] ?? [];
        $this->nav_chain->add(__('News'), '/news/');
        $this->meta_tags = new MetaTagsManager();
    }

    /**
     * Article page
     *
     * @param Section $section
     * @param Article $article
     * @param string $article_code
     * @param string $category
     * @return string
     */
    public function index(Section $section, Article $article, string $article_code, string $category = ''): string
    {
        $section->checkPath($category);
        $current_article = $article->getArticle($article_code);
        $this->render->addData($this->meta_tags->setForArticle($current_article)->toArray());
        return $this->render->render(
            'news::public/article',
            [
                'article'         => $current_article,
                'current_section' => $section->getLastSection(),
            ]
        );
    }
}