Skip to content
Snippets Groups Projects
Page.php 1.99 KiB
Newer Older
/**
 * @copyright  2020 Podlibre
 * @license    https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
 * @link       https://castopod.org/
 */

namespace App\Entities;

use CodeIgniter\I18n\Time;
use League\CommonMark\Environment\Environment;
use League\CommonMark\Extension\Autolink\AutolinkExtension;
use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
use League\CommonMark\Extension\DisallowedRawHtml\DisallowedRawHtmlExtension;
use League\CommonMark\Extension\SmartPunct\SmartPunctExtension;
use League\CommonMark\MarkdownConverter;
/**
 * @property int $id
 * @property string $title
 * @property string $link
 * @property string $slug
 * @property string $content_markdown
 * @property string $content_html
 * @property Time $created_at
 * @property Time $updated_at
 * @property Time|null $delete_at
 */
    protected string $content_html;
    protected $casts = [
        'id' => 'integer',
        'title' => 'string',
        'slug' => 'string',
        'content_markdown' => 'string',
        'content_html' => 'string',
    public function getLink(): string
        return url_to('page', $this->attributes['slug']);
    public function setContentMarkdown(string $contentMarkdown): static
        ];

        $environment = new Environment($config);
        $environment->addExtension(new CommonMarkCoreExtension());
        $environment->addExtension(new AutolinkExtension());
        $environment->addExtension(new SmartPunctExtension());
        $environment->addExtension(new DisallowedRawHtmlExtension());

        $converter = new MarkdownConverter($environment);
        $this->attributes['content_markdown'] = $contentMarkdown;
        $this->attributes['content_html'] = $converter->convert($contentMarkdown);