* @package timwolla.wcf.chat * @subpackage acp.form */ class ChatRoomAddForm extends ACPForm { /** * @see \wcf\acp\form\ACPForm::$activeMenuItem */ public $activeMenuItem = 'wcf.acp.menu.link.chat.room.add'; /** * @see \wcf\page\AbstractPage::$neededPermissions */ public $neededPermissions = array('admin.content.chat.canAddRoom'); /** * Title of the room * * @var string */ public $title = ''; /** * Topic of the room * * @var string */ public $topic = ''; /** * @see \wcf\page\AbstractPage::__construct() */ public function __construct() { $this->objectTypeID = \wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('timwolla.wcf.chat.room'); parent::__construct(); } /** * @see \wcf\page\IPage::readParameters() */ public function readParameters() { parent::readParameters(); I18nHandler::getInstance()->register('title'); I18nHandler::getInstance()->register('topic'); } /** * @see \wcf\form\IForm::readFormParameters() */ public function readFormParameters() { parent::readFormParameters(); I18nHandler::getInstance()->readValues(); if (I18nHandler::getInstance()->isPlainValue('title')) $this->title = I18nHandler::getInstance()->getValue('title'); if (I18nHandler::getInstance()->isPlainValue('topic')) $this->topic = I18nHandler::getInstance()->getValue('topic'); } /** * @see \wcf\form\IForm::validate() */ public function validate() { parent::validate(); // validate title if (!I18nHandler::getInstance()->validateValue('title')) { throw new UserInputException('title'); } } /** * @see \wcf\form\IForm::save() */ public function save() { parent::save(); // save room $this->objectAction = new \wcf\data\chat\room\ChatRoomAction(array(), 'create', array('data' => array( 'title' => $this->title, 'topic' => $this->topic ))); $this->objectAction->executeAction(); $returnValues = $this->objectAction->getReturnValues(); $chatRoomEditor = new \wcf\data\chat\room\ChatRoomEditor($returnValues['returnValues']); $roomID = $returnValues['returnValues']->roomID; if (!I18nHandler::getInstance()->isPlainValue('title')) { I18nHandler::getInstance()->save('title', 'wcf.chat.room.title'.$roomID, 'wcf.chat.room', PackageDependencyHandler::getPackageID('timwolla.wcf.chat')); // update title $chatRoomEditor->update(array( 'title' => 'wcf.chat.room.title'.$roomID )); } if (!I18nHandler::getInstance()->isPlainValue('topic')) { I18nHandler::getInstance()->save('topic', 'wcf.chat.room.topic'.$roomID, 'wcf.chat.room', PackageDependencyHandler::getPackageID('timwolla.wcf.chat')); // update topic $chatRoomEditor->update(array( 'topic' => 'wcf.chat.room.topic'.$roomID )); } \wcf\system\acl\ACLHandler::getInstance()->save($roomID, $this->objectTypeID); \wcf\system\chat\permission\ChatPermissionHandler::clearCache(); $this->saved(); // reset values $this->topic = $this->title = ''; I18nHandler::getInstance()->disableAssignValueVariables(); // show success WCF::getTPL()->assign(array( 'success' => true )); } /** * @see \wcf\page\IPage::assignVariables() */ public function assignVariables() { parent::assignVariables(); I18nHandler::getInstance()->assignVariables(); WCF::getTPL()->assign(array( 'action' => 'add', 'title' => $this->title, 'topic' => $this->topic, 'objectTypeID' => $this->objectTypeID )); } }