Files
UNIT3D/app/Models/Wiki.php
Roardom 5182d768e7 fix: apostrophes in wikis and pages
The same flags that are used to encode before parsing the bbcode must also be used here when decoding to reverse the process. Otherwise, apostrophes processed by the markdown engine are encoded a second time because the `ENT_HTML5` flag encodes them while the default (`ENT_HTML401`) does not.
2025-05-04 08:31:40 +00:00

58 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
/**
* NOTICE OF LICENSE.
*
* UNIT3D Community Edition is open-sourced software licensed under the GNU Affero General Public License v3.0
* The details is bundled with this project in the file LICENSE.txt.
*
* @project UNIT3D Community Edition
*
* @author HDVinnie <hdinnovations@protonmail.com>
* @license https://www.gnu.org/licenses/agpl-3.0.en.html/ GNU Affero General Public License v3.0
*/
namespace App\Models;
use App\Helpers\Bbcode;
use App\Traits\Auditable;
use GrahamCampbell\Markdown\Facades\Markdown;
use Illuminate\Database\Eloquent\Model;
/**
* App\Models\Wiki.
*
* @property int $id
* @property string $name
* @property string $content
* @property int $category_id
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
*/
class Wiki extends Model
{
use Auditable;
protected $guarded = [];
/**
* Belongs To A Category.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo<WikiCategory, $this>
*/
public function category(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(WikiCategory::class);
}
/**
* Parse Content And Return Valid HTML.
*/
public function getContentHtml(): string
{
return Markdown::convert(htmlspecialchars_decode((new Bbcode())->parse($this->content, false), ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5))->getContent();
}
}