/** * Constructs a new forum board form * @param string $action URL where this form will point to * @param joppa\forum\model\data\ForumBoardData $board Board data to preset the form */ public function __construct($action, ForumBoardData $board = null) { parent::__construct($action, self::NAME, self::TRANSLATION_SAVE); $modelManager = ModelManager::getInstance(); $categoryModel = $modelManager->getModel(ForumCategoryModel::NAME); $profileModel = $modelManager->getModel(ForumProfileModel::NAME); $category = null; if (!$board) { $boardModel = $modelManager->getModel(ForumBoardModel::NAME); $board = $boardModel->createData(); } elseif (isset($board->category->id)) { $category = $board->category->id; } $allowOptions = ForumBoardModel::getAllowOptions(); $fieldFactory = FieldFactory::getInstance(); $idField = $fieldFactory->createField(FieldFactory::TYPE_HIDDEN, self::FIELD_ID, $board->id); $categoryField = $fieldFactory->createField(FieldFactory::TYPE_LIST, self::FIELD_CATEGORY, $category); $categoryField->setOptions($categoryModel->getDataList()); $nameField = $fieldFactory->createField(FieldFactory::TYPE_STRING, self::FIELD_NAME, $board->name); $descriptionField = $fieldFactory->createField(FieldFactory::TYPE_TEXT, self::FIELD_DESCRIPTION, $board->description); $allowNewTopicsField = $fieldFactory->createField(FieldFactory::TYPE_LIST, self::FIELD_ALLOW_NEW_TOPICS, $board->allowNewTopics); $allowNewTopicsField->setOptions($allowOptions); $allowNewPostsField = $fieldFactory->createField(FieldFactory::TYPE_LIST, self::FIELD_ALLOW_NEW_POSTS, $board->allowNewPosts); $allowNewPostsField->setOptions($allowOptions); $allowViewField = $fieldFactory->createField(FieldFactory::TYPE_LIST, self::FIELD_ALLOW_VIEW, $board->allowView); $allowViewField->setOptions($allowOptions); $moderatorsField = $fieldFactory->createField(FieldFactory::TYPE_LIST, self::FIELD_MODERATORS, $board->moderators); $moderatorsField->setOptions($profileModel->getModeratorList()); $moderatorsField->setIsMultiple(true); $this->addField($idField); $this->addField($categoryField); $this->addField($nameField); $this->addField($descriptionField); $this->addField($allowViewField); $this->addField($allowNewTopicsField); $this->addField($allowNewPostsField); $this->addField($moderatorsField); }
/** * Checks whether the provided user is allowed to create a new topic * @param ForumProfileData $profile * @return boolean True if a new topic is allowed, false otherwise */ public function isNewPostAllowed($profile) { return ForumBoardModel::isAllowed($this->allowNewPosts, $profile); }