* @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\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 try { if (!I18nHandler::getInstance()->validateValue('title')) { throw new UserInputException('title'); } } catch (UserInputException $e) { $this->errorType[$e->getField()] = $e->getType(); } // validate topic try { if (!I18nHandler::getInstance()->validateValue('topic')) { throw new UserInputException('topic'); } } catch (UserInputException $e) { $this->errorType[$e->getField()] = $e->getType(); } } /** * @see wcf\form\IForm::save() */ public function save() { parent::save(); // save room $chatRoomAction = new \wcf\data\chat\room\ChatRoomAction(array(), 'create', array('data' => array( 'title' => $this->title, 'topic' => $this->topic ))); $chatRoomAction->executeAction(); $returnValues = $chatRoomAction->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.room'.$roomID, 'wcf.chat.room', PackageDependencyHandler::getPackageID('timwolla.wcf.chat')); // update title $chatRoomEditor->update(array( 'title' => 'wcf.chat.room.title.room'.$roomID )); } if (!I18nHandler::getInstance()->isPlainValue('topic')) { I18nHandler::getInstance()->save('title', 'wcf.chat.room.topic.room'.$roomID, 'wcf.chat.room', PackageDependencyHandler::getPackageID('timwolla.wcf.chat')); // update topic $chatRoomEditor->update(array( 'title' => 'wcf.chat.room.topic.room'.$roomID )); } $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 )); } }