/**
  * Dispatches the command to the related executor class.
  */
 public function executeCommand()
 {
     /**
      * @var $ilCtrl ilCtrl
      */
     global $ilCtrl;
     $next_class = $ilCtrl->getNextClass();
     require_once 'Modules/Chatroom/classes/class.ilChatroomTabFactory.php';
     $tabFactory = new ilChatroomTabFactory($this);
     $tabFactory->getAdminTabsForCommand($ilCtrl->getCmd());
     switch ($next_class) {
         case 'ilpermissiongui':
             include_once 'Services/AccessControl/classes/class.ilPermissionGUI.php';
             $this->prepareOutput();
             $perm_gui = new ilPermissionGUI($this);
             $ilCtrl->forwardCommand($perm_gui);
             break;
         default:
             $res = explode('-', $ilCtrl->getCmd(), 2);
             $this->dispatchCall($res[0], $res[1] ? $res[1] : '');
     }
 }
 /**
  * Dispatches the command to the related executor class.
  */
 public function executeCommand()
 {
     /**
      * @var $ilAccess            ilAccessHandler
      * @var $ilNavigationHistory ilNavigationHistory
      * @var $ilCtrl              ilCtrl
      * @var $ilHelp              ilHelpGUI
      */
     global $ilNavigationHistory, $ilCtrl, $ilHelp, $ilAccess;
     if ('cancel' == $ilCtrl->getCmd() && $this->getCreationMode()) {
         parent::cancelCreation();
         return;
     }
     // add entry to navigation history
     if (!$this->getCreationMode() && $ilAccess->checkAccess('read', '', (int) $_GET['ref_id'])) {
         $ilNavigationHistory->addItem($_GET['ref_id'], './goto.php?target=' . $this->type . '_' . $_GET['ref_id'], $this->type);
     }
     $next_class = $ilCtrl->getNextClass();
     require_once 'Modules/Chatroom/classes/class.ilChatroomTabFactory.php';
     if (!$this->getCreationMode()) {
         $tabFactory = new ilChatroomTabFactory($this);
         if (strtolower($_GET['baseClass']) == 'iladministrationgui') {
             $tabFactory->getAdminTabsForCommand($ilCtrl->getCmd());
         } else {
             $ilHelp->setScreenIdComponent("chtr");
             $tabFactory->getTabsForCommand($ilCtrl->getCmd());
         }
     }
     // #8701 - infoscreen actions
     if ($next_class == 'ilinfoscreengui' && $ilCtrl->getCmd() != 'info') {
         $ilCtrl->setCmd('info-' . $ilCtrl->getCmd());
     }
     // repository info call
     if ($ilCtrl->getCmd() == 'infoScreen') {
         $ilCtrl->setCmdClass('ilinfoscreengui');
         $ilCtrl->setCmd('info');
     }
     switch ($next_class) {
         case 'ilpermissiongui':
             include_once 'Services/AccessControl/classes/class.ilPermissionGUI.php';
             $this->prepareOutput();
             $perm_gui = new ilPermissionGUI($this);
             $ilCtrl->forwardCommand($perm_gui);
             break;
         case 'ilobjectcopygui':
             $this->prepareOutput();
             include_once 'Services/Object/classes/class.ilObjectCopyGUI.php';
             $cp = new ilObjectCopyGUI($this);
             $cp->setType('chtr');
             $ilCtrl->forwardCommand($cp);
             break;
         case "ilcommonactiondispatchergui":
             include_once "Services/Object/classes/class.ilCommonActionDispatcherGUI.php";
             $gui = ilCommonActionDispatcherGUI::getInstanceFromAjaxCall();
             $this->ctrl->forwardCommand($gui);
             break;
         default:
             try {
                 $res = explode('-', $ilCtrl->getCmd(), 2);
                 $this->dispatchCall($res[0], $res[1] ? $res[1] : '');
             } catch (Exception $e) {
                 $error = array('success' => false, 'reason' => $e->getMessage());
                 echo json_encode($error);
                 exit;
             }
     }
 }