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));
 }
示例#2
0
 /**
  * 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);
     }
 }
示例#3
0
 /**
  * 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);
         }
     }
 }