/** * Handles all commmands of this class, centralizes permission checks */ public function performCommand($cmd) { $next_class = $this->ctrl->getNextClass($this); switch ($next_class) { case 'ilrepositorysearchgui': include_once './Services/Search/classes/class.ilRepositorySearchGUI.php'; $rep_search = new ilRepositorySearchGUI(); $rep_search->setCallback($this, 'addParticipants', array(ilObjVitero::MEMBER => ilViteroPlugin::getInstance()->txt('add_as_group_member'), ilObjVitero::ADMIN => ilViteroPlugin::getInstance()->txt('add_as_group_admin'))); // Set tabs $this->tabs_gui->setTabActive('participants'); $this->ctrl->setReturn($this, 'participants'); $ret = $this->ctrl->forwardCommand($rep_search); break; } switch ($cmd) { case "editProperties": // list all commands that need write permission here // list all commands that need write permission here case "updateProperties": case 'initViteroGroup': case 'participants': case 'confirmDeleteParticipants': case 'deleteParticipants': case 'sendMailToSelectedUsers': case 'confirmDeleteAppointment': case 'confirmDeleteAppointmentInSeries': case 'deleteBookingInSeries': case 'deleteBooking': case 'confirmDeleteBooking': case 'showAppointmentCreation': case 'createAppointment': case 'editBooking': case 'updateBooking': case 'unlockUsers': case 'lockUsers': case 'materials': //case "...": $this->checkPermission("write"); $this->{$cmd}(); break; case "showContent": // list all commands that need read permission here // list all commands that need read permission here case 'startSession': //case "...": //case "...": $this->checkPermission("read"); $this->{$cmd}(); break; } }
/** * Execute command * @return */ public function executeCommand() { global $ilUser, $ilCtrl, $tpl, $ilHelp, $ilTabs; $ilHelp->setScreenIdComponent("cal"); switch ($this->ctrl->getNextClass()) { case "ilpublicuserprofilegui": include_once './Services/User/classes/class.ilPublicUserProfileGUI.php'; $profile = new ilPublicUserProfileGUI($this->user_id); $profile->setBackUrl($this->getProfileBackUrl()); $ret = $ilCtrl->forwardCommand($profile); $tpl->setContent($ret); break; case 'ilrepositorysearchgui': include_once './Services/Search/classes/class.ilRepositorySearchGUI.php'; $rep_search = new ilRepositorySearchGUI(); if (isset($_REQUEST['assignM'])) { $rep_search->setCallback($this, 'assignUsersToAppointments', array()); $ilCtrl->setParameter($this, 'assignM', 1); $ilCtrl->setReturn($this, 'appointmentList'); $ilTabs->activateSubTab('cal_ch_app_list'); } elseif (isset($_REQUEST['grp_id'])) { $rep_search->setCallback($this, 'assignUsersToGroup', array()); $ilCtrl->saveParameter($this, 'grp_id'); $ilCtrl->setReturn($this, 'groupList'); $ilTabs->activateSubTab('cal_ch_app_grp'); } elseif (isset($_REQUEST['apps'])) { $rep_search->setCallback($this, 'assignUsersToAppointment', array()); $ilCtrl->saveParameter($this, 'apps'); $ilCtrl->setReturn($this, 'appointmentList'); $ilTabs->activateSubTab('cal_ch_app_list'); } $ilCtrl->forwardCommand($rep_search); break; default: $tpl->setTitle($this->lng->txt("cal_ch_form_header")); // #12220 $this->setTabs(); if ($ilUser->getId() != $this->user_id) { $ilCtrl->setParameter($this, 'user_id', $this->user_id); } $cmd = $this->ctrl->getCmd('appointmentList'); $this->{$cmd}(); } }
/** * */ public function executeCommand() { $next_class = $this->ctrl->getNextClass($this); $cmd = $this->ctrl->getCmd(); switch ($next_class) { case 'ilrepositorysearchgui': include_once 'Services/Search/classes/class.ilRepositorySearchGUI.php'; $rep_search = new ilRepositorySearchGUI(); $rep_search->setCallback($this, 'addModerator'); $this->ctrl->setReturn($this, 'showModerators'); $this->ctrl->forwardCommand($rep_search); break; default: if (!$cmd) { $cmd = 'showModerators'; } $this->{$cmd}(); break; } }
/** * Execute command */ function executeCommand() { global $ilCtrl, $lng; $cmd = $ilCtrl->getCmd("listProfiles"); $next_class = $ilCtrl->getNextClass(); switch ($next_class) { case 'ilrepositorysearchgui': include_once './Services/Search/classes/class.ilRepositorySearchGUI.php'; $user_search = new ilRepositorySearchGUI(); $user_search->setTitle($lng->txt('skmg_add_user_to_profile')); $user_search->setCallback($this, 'assignUser'); // Set tabs //$this->tabs_gui->setTabActive('user_assignment'); $ilCtrl->setReturn($this, 'listUsers'); $ret = $ilCtrl->forwardCommand($user_search); break; default: if (in_array($cmd, array("listProfiles", "create", "edit", "save", "update", "confirmDeleteProfiles", "deleteProfiles", "showLevels", "assignLevel", "assignLevelSelectSkill", "assignLevelToProfile", "confirmLevelAssignmentRemoval", "removeLevelAssignments", "showUsers", "assignUser", "confirmUserRemoval", "removeUsers"))) { $this->{$cmd}(); } break; } }
function executeCommand() { global $ilUser, $ilCtrl, $ilTabs, $lng; $next_class = $this->ctrl->getNextClass($this); $cmd = $this->ctrl->getCmd(); $this->prepareOutput(); //echo "-".$next_class."-".$cmd."-"; exit; switch ($next_class) { case "ilfilesystemgui": $this->checkPermission("write"); if ($_GET["fsmode"] == "peer") { $ilCtrl->saveParameter($this, array("fu")); // see self::downloadPeerReview() $parts = explode("__", $_GET["fu"]); $giver_id = $parts[0]; $peer_id = $parts[1]; if ($giver_id == $ilUser->getId() || $peer_id == $ilUser->getId()) { $this->checkPermission("read"); } else { $this->checkPermission("write"); } $valid = false; $peer_items = $this->ass->getPeerReviewsByPeerId($peer_id, true); if (sizeof($peer_items)) { foreach ($peer_items as $item) { if ($item["giver_id"] == $giver_id) { $valid = true; } } } if (!$valid) { $ilCtrl->redirect($this, "editPeerReview"); } $ilTabs->clearTargets(); $ilTabs->setBackTarget($lng->txt("back"), $ilCtrl->getLinkTarget($this, "editPeerReview")); include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $fstorage = new ilFSStorageExercise($this->object->getId(), $this->ass->getId()); $fstorage->create(); include_once "./Services/FileSystem/classes/class.ilFileSystemGUI.php"; $fs_gui = new ilFileSystemGUI($fstorage->getPeerReviewUploadPath($peer_id, $giver_id)); $fs_gui->setTableId("excfbpeer"); $fs_gui->setAllowDirectories(false); $fs_gui->setTitle($this->ass->getTitle() . ": " . $lng->txt("exc_peer_review") . " - " . $lng->txt("exc_peer_review_give")); $ret = $this->ctrl->forwardCommand($fs_gui); } else { if ($_GET["fsmode"] == "feedback" || $_GET["fsmode"] == "feedbackpart") { $ilCtrl->saveParameter($this, array("member_id")); //$this->setAssignmentHeader(); //$ilTabs->activateTab("ass_files"); $ilTabs->clearTargets(); if ($_GET["fsmode"] != "feedbackpart") { $ilTabs->setBackTarget($lng->txt("back"), $ilCtrl->getLinkTarget($this, "members")); } else { $ilTabs->setBackTarget($lng->txt("back"), $ilCtrl->getLinkTarget($this, "showParticipant")); } ilUtil::sendInfo($lng->txt("exc_fb_tutor_info")); include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $fstorage = new ilFSStorageExercise($this->object->getId(), (int) $_GET["ass_id"]); $fstorage->create(); include_once "./Services/User/classes/class.ilUserUtil.php"; $noti_rec_ids = array(); if ($this->ass->getType() == ilExAssignment::TYPE_UPLOAD_TEAM) { $team_id = $this->ass->getTeamId((int) $_GET["member_id"]); $feedback_id = "t" . $team_id; $fs_title = array(); foreach ($this->ass->getTeamMembers($team_id) as $team_user_id) { $fs_title[] = ilUserUtil::getNamePresentation($team_user_id, false, false, "", true); $noti_rec_ids[] = $team_user_id; } $fs_title = implode(" / ", $fs_title); } else { $feedback_id = $noti_rec_ids = (int) $_GET["member_id"]; $fs_title = ilUserUtil::getNamePresentation((int) $_GET["member_id"], false, false, "", true); } include_once "./Services/FileSystem/classes/class.ilFileSystemGUI.php"; $fs_gui = new ilFileSystemGUI($fstorage->getFeedbackPath($feedback_id)); $fs_gui->setTableId("excfbfil" . (int) $_GET["ass_id"] . "_" . $feedback_id); $fs_gui->setAllowDirectories(false); $fs_gui->setTitle($lng->txt("exc_fb_files") . " - " . ilExAssignment::lookupTitle((int) $_GET["ass_id"]) . " - " . $fs_title); $pcommand = $fs_gui->getLastPerformedCommand(); if (is_array($pcommand) && $pcommand["cmd"] == "create_file") { $this->object->sendFeedbackFileNotification($pcommand["name"], $noti_rec_ids, (int) $_GET["ass_id"]); } $ret = $this->ctrl->forwardCommand($fs_gui); } else { $this->setAssignmentHeader(); $ilTabs->activateTab("ass_files"); include_once "./Modules/Exercise/classes/class.ilFSStorageExercise.php"; $fstorage = new ilFSStorageExercise($this->object->getId(), (int) $_GET["ass_id"]); $fstorage->create(); include_once "./Services/FileSystem/classes/class.ilFileSystemGUI.php"; $fs_gui = new ilFileSystemGUI($fstorage->getPath()); $fs_gui->setTitle($lng->txt("exc_instruction_files")); $fs_gui->setTableId("excassfil" . $_GET["ass_id"]); $fs_gui->setAllowDirectories(false); $ret = $this->ctrl->forwardCommand($fs_gui); } } break; case "ilinfoscreengui": $ilTabs->activateTab("info"); $this->infoScreen(); // forwards command break; case 'ilpermissiongui': $ilTabs->activateTab("permissions"); include_once "Services/AccessControl/classes/class.ilPermissionGUI.php"; $perm_gui =& new ilPermissionGUI($this); $ret =& $this->ctrl->forwardCommand($perm_gui); break; case "illearningprogressgui": $ilTabs->activateTab("learning_progress"); include_once './Services/Tracking/classes/class.ilLearningProgressGUI.php'; $new_gui =& new ilLearningProgressGUI(ilLearningProgressGUI::LP_CONTEXT_REPOSITORY, $this->object->getRefId(), $_GET['user_id'] ? $_GET['user_id'] : $ilUser->getId()); $this->ctrl->forwardCommand($new_gui); $this->tabs_gui->setTabActive('learning_progress'); break; case 'ilrepositorysearchgui': $ilTabs->activateTab("grades"); include_once './Services/Search/classes/class.ilRepositorySearchGUI.php'; $rep_search = new ilRepositorySearchGUI(); if (!$_REQUEST["ctx"]) { $rep_search->setTitle($this->lng->txt("exc_add_participant")); $rep_search->setCallback($this, 'addMembersObject'); // Set tabs $this->tabs_gui->setTabActive('members'); $this->ctrl->setReturn($this, 'members'); #$this->__setSubTabs('members'); #$this->tabs_gui->setSubTabActive('members'); } else { $this->ctrl->saveParameterByClass('ilRepositorySearchGUI', 'ctx', 1); $rep_search->setTitle($this->lng->txt("exc_team_member_add")); $rep_search->setCallback($this, 'addTeamMemberActionObject'); // Set tabs $this->initTeamSubmission("submissionScreenTeam"); $this->ctrl->setReturn($this, 'submissionScreenTeam'); } $ret =& $this->ctrl->forwardCommand($rep_search); break; case 'ilobjectcopygui': $ilCtrl->saveParameter($this, 'new_type'); $ilCtrl->setReturnByClass(get_class($this), 'create'); include_once './Services/Object/classes/class.ilObjectCopyGUI.php'; $cp = new ilObjectCopyGUI($this); $cp->setType('exc'); $this->ctrl->forwardCommand($cp); break; case "ilexportgui": $ilTabs->activateTab("export"); include_once "./Services/Export/classes/class.ilExportGUI.php"; $exp_gui = new ilExportGUI($this); $exp_gui->addFormat("xml"); $ret = $this->ctrl->forwardCommand($exp_gui); // $this->tpl->show(); break; case 'ilshoppurchasegui': include_once './Services/Payment/classes/class.ilShopPurchaseGUI.php'; $sp = new ilShopPurchaseGUI($_GET['ref_id']); $this->ctrl->forwardCommand($sp); break; case "ilcommonactiondispatchergui": include_once "Services/Object/classes/class.ilCommonActionDispatcherGUI.php"; $gui = ilCommonActionDispatcherGUI::getInstanceFromAjaxCall(); $this->ctrl->forwardCommand($gui); break; case "ilcertificategui": $this->setSettingsSubTabs(); $this->tabs_gui->activateTab("settings"); $this->tabs_gui->activateSubTab("certificate"); include_once "./Services/Certificate/classes/class.ilCertificateGUI.php"; include_once "./Modules/Exercise/classes/class.ilExerciseCertificateAdapter.php"; $output_gui = new ilCertificateGUI(new ilExerciseCertificateAdapter($this->object)); $this->ctrl->forwardCommand($output_gui); break; case "ilratinggui": $this->ass->updatePeerReviewTimestamp((int) $_REQUEST["peer_id"]); include_once "./Services/Rating/classes/class.ilRatingGUI.php"; $rating_gui = new ilRatingGUI(); $rating_gui->setObject($this->ass->getId(), "ass", (int) $_REQUEST["peer_id"], "peer"); $this->ctrl->forwardCommand($rating_gui); $ilCtrl->redirect($this, "editPeerReview"); break; default: $this->ctrl->setParameter($this, "fsmode", ""); // #15115 if (!$cmd) { $cmd = "infoScreen"; } $cmd .= "Object"; $this->{$cmd}(); break; } $this->addHeaderAction(); return true; }
function executeCommand() { global $ilCtrl, $tpl, $ilTabs, $lng, $ilNavigationHistory; // goto link to blog posting if ($_GET["gtp"]) { $ilCtrl->setCmdClass("ilblogpostinggui"); $_GET["blpg"] = $_GET["gtp"]; $ilCtrl->setCmd("previewFullscreen"); } $next_class = $ilCtrl->getNextClass($this); $cmd = $ilCtrl->getCmd(); if ($this->id_type == self::REPOSITORY_NODE_ID) { $tpl->getStandardTemplate(); // add entry to navigation history if (!$this->getCreationMode() && $this->getAccessHandler()->checkAccess("read", "", $this->node_id)) { $link = $ilCtrl->getLinkTargetByClass("ilrepositorygui", "frameset"); $ilNavigationHistory->addItem($this->node_id, $link, "blog"); } } switch ($next_class) { case 'ilblogpostinggui': // #9680 if ($this->id_type == self::REPOSITORY_NODE_ID) { $this->setLocator(); } else { include_once "Services/Form/classes/class.ilFileInputGUI.php"; ilFileInputGUI::setPersonalWorkspaceQuotaCheck(true); } $ilTabs->setBackTarget($lng->txt("back"), $ilCtrl->getLinkTarget($this, "")); include_once "./Modules/Blog/classes/class.ilBlogPostingGUI.php"; $bpost_gui = new ilBlogPostingGUI($this->node_id, $this->getAccessHandler(), $_GET["blpg"], $_GET["old_nr"], $this->object->getNotesStatus() && !$this->disable_notes, $this->mayContribute($_GET["blpg"])); // needed for editor $bpost_gui->setStyleId(ilObjStyleSheet::getEffectiveContentStyleId($this->object->getStyleSheetId(), "blog")); // keep preview mode through notes gui (has its own commands) switch ($cmd) { // blog preview case "previewFullscreen": $ilCtrl->setParameter($this, "prvm", "fsc"); break; // blog in portfolio // blog in portfolio case "previewEmbedded": $ilCtrl->setParameter($this, "prvm", "emb"); break; // edit // edit default: $this->setContentStyleSheet(); $this->ctrl->setParameterByClass("ilblogpostinggui", "blpg", $_GET["blpg"]); $this->tabs_gui->addNonTabbedLink("preview", $lng->txt("blog_preview"), $this->ctrl->getLinkTargetByClass("ilblogpostinggui", "previewFullscreen")); $this->ctrl->setParameterByClass("ilblogpostinggui", "blpg", ""); break; } $ret = $ilCtrl->forwardCommand($bpost_gui); if ($ret != "") { // keep preview mode through notes gui if ($_REQUEST["prvm"]) { $cmd = "preview" . ($_REQUEST["prvm"] == "fsc" ? "Fullscreen" : "Embedded"); } // $is_owner = $this->object->getOwner() == $ilUser->getId(); $is_owner = $this->mayContribute(); $is_active = $bpost_gui->getBlogPosting()->getActive(); // do not show inactive postings if (($cmd == "previewFullscreen" || $cmd == "previewEmbedded") && !$is_owner && !$is_active) { $this->ctrl->redirect($this, "preview"); } switch ($cmd) { // blog preview case "previewFullscreen": $this->addHeaderAction($cmd); $this->filterInactivePostings(); $nav = $this->renderNavigation($this->items, "preview", $cmd); $this->renderFullScreen($ret, $nav); break; // blog in portfolio // blog in portfolio case "previewEmbedded": $this->filterInactivePostings(); $nav = $this->renderNavigation($this->items, "gethtml", $cmd); return $this->buildEmbedded($ret, $nav); // ilias/editor // ilias/editor default: // infos about draft status / snippet $info = array(); if (!$is_active) { // single author blog (owner) in personal workspace if ($this->id_type == self::WORKSPACE_NODE_ID) { $info[] = $lng->txt("blog_draft_info"); } else { $info[] = $lng->txt("blog_draft_info_contributors"); } } if ($cmd != "history" && !$bpost_gui->getBlogPosting()->getFirstParagraphText()) { $info[] = $lng->txt("blog_new_posting_info"); } if ($this->object->hasApproval() && !$bpost_gui->getBlogPosting()->isApproved()) { // #9737 $info[] = $lng->txt("blog_posting_edit_approval_info"); } if (sizeof($info)) { ilUtil::sendInfo(implode("<br />", $info)); } // revert to edit cmd to avoid confusion $this->addHeaderAction("render"); $tpl->setContent($ret); $nav = $this->renderNavigation($this->items, "render", $cmd, null, $is_owner); $tpl->setRightContent($nav); break; } } break; case "ilinfoscreengui": $this->prepareOutput(); $this->infoScreenForward(); break; case "ilnotegui": $this->preview(); break; case "ilcommonactiondispatchergui": include_once "Services/Object/classes/class.ilCommonActionDispatcherGUI.php"; $gui = ilCommonActionDispatcherGUI::getInstanceFromAjaxCall(); $this->ctrl->forwardCommand($gui); break; case "ilpermissiongui": $this->prepareOutput(); $ilTabs->activateTab("id_permissions"); include_once "Services/AccessControl/classes/class.ilPermissionGUI.php"; $perm_gui = new ilPermissionGUI($this); $this->ctrl->forwardCommand($perm_gui); break; case "ilobjectcopygui": include_once "./Services/Object/classes/class.ilObjectCopyGUI.php"; $cp = new ilObjectCopyGUI($this); $cp->setType("blog"); $this->ctrl->forwardCommand($cp); break; case 'ilrepositorysearchgui': $this->prepareOutput(); $ilTabs->activateTab("contributors"); include_once './Services/Search/classes/class.ilRepositorySearchGUI.php'; $rep_search = new ilRepositorySearchGUI(); $rep_search->setTitle($this->lng->txt("blog_add_contributor")); $rep_search->setCallback($this, 'addContributor'); $this->ctrl->setReturn($this, 'contributors'); $ret =& $this->ctrl->forwardCommand($rep_search); break; case 'ilexportgui': $this->prepareOutput(); $ilTabs->activateTab("export"); include_once "./Services/Export/classes/class.ilExportGUI.php"; $exp_gui = new ilExportGUI($this); $exp_gui->addFormat("xml"); $ret = $ilCtrl->forwardCommand($exp_gui); break; case "ilobjstylesheetgui": include_once "./Services/Style/classes/class.ilObjStyleSheetGUI.php"; $this->ctrl->setReturn($this, "editStyleProperties"); $style_gui = new ilObjStyleSheetGUI("", $this->object->getStyleSheetId(), false, false); $style_gui->omitLocator(); if ($cmd == "create" || $_GET["new_type"] == "sty") { $style_gui->setCreationMode(true); } if ($cmd == "confirmedDelete") { $this->object->setStyleSheetId(0); $this->object->update(); } $ret = $this->ctrl->forwardCommand($style_gui); if ($cmd == "save" || $cmd == "copyStyle" || $cmd == "importStyle") { $style_id = $ret; $this->object->setStyleSheetId($style_id); $this->object->update(); $this->ctrl->redirectByClass("ilobjstylesheetgui", "edit"); } break; default: if ($cmd != "gethtml") { // desktop item handling, must be toggled before header action if ($cmd == "addToDesk" || $cmd == "removeFromDesk") { $this->{$cmd . "Object"}(); if ($_GET["prvm"]) { $cmd = "preview"; } else { $cmd = "render"; } $ilCtrl->setCmd($cmd); } $this->addHeaderAction($cmd); } return parent::executeCommand(); } return true; }
function repoSearchHandler($command) { global $ilTabs; $ilTabs->activateTab("grades"); include_once './Services/Search/classes/class.ilRepositorySearchGUI.php'; $rep_search = new ilRepositorySearchGUI(); $rep_search->setTitle($this->lng->txt("rep_robj_xeph_add_participant")); $rep_search->setCallback($this, 'addParticipant'); $rep_search->executeCommand($command); // Set tabs $this->tabs_gui->setTabActive('members'); $this->ctrl->setReturn($this, 'showSubmissions'); }
/** * Handles all commmands of this class, centralizes permission checks * * @param String $cmd */ public function performCommand($cmd) { $next_class = $this->ctrl->getNextClass($this); switch ($next_class) { case 'ilpublicuserprofilegui': require_once './Services/User/classes/class.ilPublicUserProfileGUI.php'; $profile_gui = new ilPublicUserProfileGUI($_GET["user"]); $profile_gui->setBackUrl($this->ctrl->getLinkTarget($this, "showMembersGallery")); $this->tabs->activateTab('participants'); $this->__setSubTabs('participants'); $this->tabs->activateSubTab("editParticipants"); $html = $this->ctrl->forwardCommand($profile_gui); $this->tpl->setVariable("ADM_CONTENT", $html); break; case 'ilcommonactiondispatchergui': require_once 'Services/Object/classes/class.ilCommonActionDispatcherGUI.php'; $gui = ilCommonActionDispatcherGUI::getInstanceFromAjaxCall(); $this->ctrl->forwardCommand($gui); break; case 'ilrepositorysearchgui': $this->tabs->setTabActive('participants'); $rep_search = new ilRepositorySearchGUI(); $rep_search->setCallback($this, 'addAsMember', array('add_member' => $this->lng->txt('member'), 'add_admin' => $this->lng->txt('administrator'))); $this->ctrl->setReturn($this, 'editParticipants'); $this->ctrl->forwardCommand($rep_search); break; default: switch ($cmd) { // case "editContents": case "editProperties": // list all commands that need write permission here // list all commands that need write permission here case "updateProperties": case "assignRolesAfterCreate": $this->checkPermission("write"); $this->{$cmd}(); break; // list all commands that need read permission here // list all commands that need read permission here case "addParticipant": case "detachParticipant": case "searchContentFile": case 'cancelSearchContentFile': case "showFileSearchResult": case "addContentFromILIAS": case "askDeleteContents": case "deleteContents": case "uploadFile": case "showUploadFile": case "editItem": case "editRecord": case "updateContent": case "updateRecord": case "showAddContent": case "addContent": case "assignAdmin": case "performDetachAdmin": case "performDetachMember": case "performAddCrsGrpMembers": case "addAsMember": case "detachMember": case "detachAdmin": case "addCrsGrpMembers": case 'showContent': case "editParticipants": case "updateParticipants": case 'performSso': case 'requestAdobeConnectContent': case "viewContents": case "viewRecords": case "showMembersGallery": case "performCrsGrpTrigger": $this->checkPermission("read"); $this->{$cmd}(); break; case "join": case "leave": $this->checkPermission("visible"); $this->{$cmd}(); break; default: $this->showContent(); break; } break; } }