mirror of
https://github.com/NamelessMC/Nameless
synced 2026-08-18 06:29:04 -04:00
* Remove old event system & Convert renderPost event * Remove old event system * Misc * Convert Custom Pages to use new event system * Change RenderPost to RenderContent * Convert profile posts and messaging * All events converted * Fixes * Fixes * Add tag support in Profile Posts & Messaging * Execute rendercreate for profile post reply * Update webhooks * Remove return function * Remove array response * Remove more array response * Remove fallback webhooks * Test phpstan * Fix phpdoc * Remove name() & description()
109 lines
2.6 KiB
PHP
109 lines
2.6 KiB
PHP
<?php
|
|
/**
|
|
* Custom page
|
|
*
|
|
* @author Samerton
|
|
* @license MIT
|
|
* @version 2.3.0
|
|
*
|
|
* @var Cache $cache
|
|
* @var FakeSmarty $smarty
|
|
* @var Language $language
|
|
* @var Navigation $cc_nav
|
|
* @var Navigation $navigation
|
|
* @var Navigation $staffcp_nav
|
|
* @var Pages $pages
|
|
* @var string $route
|
|
* @var TemplateBase $template
|
|
* @var User $user
|
|
* @var Widgets $widgets
|
|
*/
|
|
|
|
// Check whenever route is homepage or not
|
|
$page_route = empty($route) ? Settings::get('home_type') : rtrim($route, '/');
|
|
|
|
// Get page info from URL
|
|
$custom_page = DB::getInstance()->get('custom_pages', ['url', $page_route]);
|
|
if (!$custom_page->count()) {
|
|
require ROOT_PATH . '/404.php';
|
|
die();
|
|
}
|
|
|
|
$custom_page = $custom_page->first();
|
|
|
|
// Check permissions
|
|
$perms = DB::getInstance()->get('custom_pages_permissions', ['page_id', $custom_page->id])->results();
|
|
if ($user->isLoggedIn()) {
|
|
$groups = $user->getAllGroupIds();
|
|
foreach ($groups as $group) {
|
|
foreach ($perms as $perm) {
|
|
if ($perm->group_id == $group) {
|
|
if ($perm->view == 1) {
|
|
$can_view = 1;
|
|
break 2;
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
foreach ($perms as $perm) {
|
|
if ($perm->group_id == 0) {
|
|
if ($perm->view == 1) {
|
|
$can_view = 1;
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!isset($can_view)) {
|
|
require ROOT_PATH . '/403.php';
|
|
die();
|
|
}
|
|
|
|
if ($custom_page->redirect) {
|
|
header('X-Robots-Tag: noindex, nofollow');
|
|
Redirect::to($custom_page->link);
|
|
}
|
|
|
|
// Always define page name
|
|
define('PAGE', $custom_page->id);
|
|
define('CUSTOM_PAGE', $custom_page->title);
|
|
$page_title = Output::getClean($custom_page->title);
|
|
require_once ROOT_PATH . '/core/templates/frontend_init.php';
|
|
|
|
$template->assets()->include([
|
|
DARK_MODE
|
|
? AssetTree::PRISM_DARK
|
|
: AssetTree::PRISM_LIGHT,
|
|
AssetTree::TINYMCE_SPOILER,
|
|
]);
|
|
|
|
// Load modules + template
|
|
Module::loadPage($user, $pages, $cache, $smarty, [$navigation, $cc_nav, $staffcp_nav], $widgets, $template);
|
|
|
|
$event = new RenderContentEvent(
|
|
$custom_page->content,
|
|
$custom_page->all_html ?? false
|
|
);
|
|
EventHandler::executeEvent($event);
|
|
|
|
$template->getEngine()->addVariables([
|
|
'WIDGETS_LEFT' => $widgets->getWidgets('left'),
|
|
'WIDGETS_RIGHT' => $widgets->getWidgets('right'),
|
|
'CONTENT' => $event->content,
|
|
]);
|
|
|
|
$template->onPageLoad();
|
|
|
|
require ROOT_PATH . '/core/templates/navbar.php';
|
|
require ROOT_PATH . '/core/templates/footer.php';
|
|
|
|
if ($custom_page->basic) {
|
|
$template->displayTemplate('custom_basic');
|
|
} else {
|
|
$template->displayTemplate('custom');
|
|
}
|