* @package be.bastelstu.chat * @subpackage page */ class RoomListPage extends \wcf\page\AbstractPage { /** * @see wcf\page\AbstractPage::$loginRequired */ public $loginRequired = true; /** * @see \wcf\page\AbstractPage::$neededModules */ public $neededModules = array('CHAT_ACTIVE'); /** * @see \wcf\page\AbstractPage::$neededPermissions */ public $neededPermissions = array(); /** * the room the user current is in * @var \chat\data\room\Room */ public $room = null; /** * all rooms in the current installation * @var array<\chat\data\room\Room> */ public $rooms = array(); /** * @see \wcf\page\AbstractPage::$useTemplate */ public $useTemplate = false; /** * shortcut for the active request * @see wcf\system\request\Request::getRequestObject() */ public $request = null; /** * Disallows direct access. * * @see wcf\page\IPage::__run() */ public function __run() { if (($this->request = \wcf\system\request\RequestHandler::getInstance()->getActiveRequest()->getRequestObject()) === $this) throw new IllegalLinkException(); parent::__run(); } /** * @see \wcf\page\IPage::readData() */ public function readData() { parent::readData(); $this->rooms = data\room\Room::getCache(); $roomID = \chat\util\ChatUtil::readUserData('roomID'); if (!isset($this->rooms[$roomID])) throw new IllegalLinkException(); $this->room = $this->rooms[$roomID]; } /** * @see \wcf\page\IPage::show() */ public function show() { parent::show(); @header('Content-type: application/json'); $json = array(); foreach ($this->rooms as $room) { if (!$room->canEnter()) continue; $json[] = array( 'title' => WCF::getLanguage()->get($room->title), 'link' => \wcf\system\request\LinkHandler::getInstance()->getLink('Chat', array( 'application' => 'chat', 'object' => $room )), 'active' => $room->roomID == $this->room->roomID ); } echo \wcf\util\JSON::encode($json); exit; } }