Tims-Chat/files/lib/page/TConfiguredPage.class.php

70 lines
2.1 KiB
PHP

<?php
/*
* Copyright (c) 2010-2022 Tim Düsterhus.
*
* Use of this software is governed by the Business Source License
* included in the LICENSE file.
*
* Change Date: 2026-09-17
*
* On the date above, in accordance with the Business Source
* License, use of this software will be governed by version 2
* or later of the General Public License.
*/
namespace chat\page;
use chat\data\command\Command;
use chat\data\command\CommandCache;
use wcf\data\object\type\ObjectTypeCache;
use wcf\data\package\PackageCache;
use wcf\system\event\EventHandler;
use wcf\util\JSON;
/**
* Provides a getConfig() method, returning the JSON configuration
* for the chat's JavaSCript.
*/
trait TConfiguredPage
{
/**
* Returns the configuration for the chat's JavaScript.
*/
public function getConfig()
{
$triggers = CommandCache::getInstance()->getTriggers();
$commands = \array_map(function (Command $item) {
$package = PackageCache::getInstance()->getPackage($item->packageID)->package;
return [
'package' => $package,
'identifier' => $item->identifier,
'commandID' => $item->commandID,
'module' => $item->getProcessor()->getJavaScriptModuleName(),
'isAvailable' => $item->getProcessor()->isAvailable($this->room) && ($item->hasTriggers() || $item->getProcessor()->allowWithoutTrigger()),
];
}, CommandCache::getInstance()->getCommands());
$messageTypes = \array_map(static function ($item) {
return [
'module' => $item->getProcessor()->getJavaScriptModuleName(),
];
}, ObjectTypeCache::getInstance()->getObjectTypes('be.bastelstu.chat.messageType'));
$config = [
'clientVersion' => 1,
'reloadTime' => (int)CHAT_RELOADTIME,
'autoAwayTime' => (int)CHAT_AUTOAWAYTIME,
'commands' => $commands,
'triggers' => $triggers,
'messageTypes' => $messageTypes,
];
EventHandler::getInstance()->fireAction($this, 'config', $config);
return JSON::encode($config);
}
}