protected function afterSave(ilObjForum $forumObj) { /** * @var $rbacadmin ilRbacAdmin */ global $rbacadmin; // save settings $this->objProperties->setObjId($forumObj->getId()); $this->objProperties->setDefaultView(1); $this->objProperties->setAnonymisation(0); $this->objProperties->setStatisticsStatus(0); $this->objProperties->setPostActivation(0); $this->objProperties->setThreadSorting(0); $this->objProperties->insert(); $forumObj->createSettings(); // ...finally assign moderator role to creator of forum object $roles = array(); $roles[0] = ilObjForum::_lookupModeratorRole($forumObj->getRefId()); $rbacadmin->assignUser($roles[0], $forumObj->getOwner(), 'n'); // insert new forum as new topic into frm_data $forumObj->saveData($roles); // always send a message ilUtil::sendSuccess($this->lng->txt('frm_added'), true); $this->ctrl->setParameter($this, 'ref_id', $forumObj->getRefId()); ilUtil::redirect($this->ctrl->getLinkTarget($this, 'createThread', '', false, false)); }
/** * Clone forum moderator role * @access public * @param object $new_obj forum object */ public function cloneAutoGeneratedRoles($new_obj) { /** * @var $rbacadmin ilRbacAdmin * @var $rbacreview ilRbacReview */ global $ilLog, $rbacadmin, $rbacreview; $moderator = ilObjForum::_lookupModeratorRole($this->getRefId()); $new_moderator = ilObjForum::_lookupModeratorRole($new_obj->getRefId()); $source_rolf = $rbacreview->getRoleFolderIdOfObject($this->getRefId()); $target_rolf = $rbacreview->getRoleFolderIdOfObject($new_obj->getRefId()); if (!$moderator || !$new_moderator || !$source_rolf || !$target_rolf) { $ilLog->write(__METHOD__ . ' : Error cloning auto generated role: il_frm_moderator'); } $rbacadmin->copyRolePermissions($moderator, $source_rolf, $target_rolf, $new_moderator, true); $ilLog->write(__METHOD__ . ' : Finished copying of role il_frm_moderator.'); include_once './Modules/Forum/classes/class.ilForumModerators.php'; $obj_mods = new ilForumModerators($this->getRefId()); $old_mods = array(); $old_mods = $obj_mods->getCurrentModerators(); foreach ($old_mods as $user_id) { $rbacadmin->assignUser($new_moderator, $user_id); } }
/** * Clone forum moderator role * @access public * @param object $new_obj forum object */ public function cloneAutoGeneratedRoles($new_obj) { /** * @var $rbacadmin ilRbacAdmin * @var $ilLog ilLog */ global $ilLog, $rbacadmin; $moderator = ilObjForum::_lookupModeratorRole($this->getRefId()); $new_moderator = ilObjForum::_lookupModeratorRole($new_obj->getRefId()); if (!$moderator || !$new_moderator || !$this->getRefId() || !$new_obj->getRefId()) { $ilLog->write(__METHOD__ . ' : Error cloning auto generated role: il_frm_moderator'); } $rbacadmin->copyRolePermissions($moderator, $this->getRefId(), $new_obj->getRefId(), $new_moderator, true); $ilLog->write(__METHOD__ . ' : Finished copying of role il_frm_moderator.'); include_once './Modules/Forum/classes/class.ilForumModerators.php'; $obj_mods = new ilForumModerators($this->getRefId()); $old_mods = $obj_mods->getCurrentModerators(); foreach ($old_mods as $user_id) { // The object owner is already member of the moderator role when this method is called // Since the new static caches are introduced with ILIAS 5.0, a database error occurs if we try to assign the user here. if ($this->getOwner() != $user_id) { $rbacadmin->assignUser($new_moderator, $user_id); } } }