protected function afterTestPassFinishedCmd()
 {
     $activeId = $this->testSession->getActiveId();
     $lastFinishedPass = $this->testSession->getLastFinishedPass();
     // handle test signature
     if ($this->isTestSignRedirectRequired($activeId, $lastFinishedPass)) {
         $this->ctrl->redirectByClass('ilTestSignatureGUI', 'invokeSignaturePlugin');
     }
     if (!$_GET['skipfinalstatement']) {
         if ($this->object->getShowFinalStatement()) {
             $this->ctrl->redirect($this, 'showFinalStatement');
         }
     }
     // redirect after test
     $redirection_mode = $this->object->getRedirectionMode();
     $redirection_url = $this->object->getRedirectionUrl();
     if ($redirection_url && $redirection_mode && !$this->object->canViewResults()) {
         if ($redirection_mode == REDIRECT_KIOSK) {
             if ($this->object->getKioskMode()) {
                 ilUtil::redirect($redirection_url);
             }
         } else {
             ilUtil::redirect($redirection_url);
         }
     }
     // custom after test redirect (ilTestOutput - objective oriented sessions)
     if ($this->customRedirectRequired()) {
         $this->performCustomRedirect();
     }
     // default redirect (pass results)
     $this->redirectBackCmd();
 }
 private function isTestResultButtonRequired()
 {
     $testOBJ = ilObjectFactory::getInstanceByObjId($this->objectId);
     if (!$testOBJ->canShowTestResults($this->testSession)) {
         return false;
     }
     require_once 'Modules/Test/classes/class.ilTestPassesSelector.php';
     $testPassesSelector = new ilTestPassesSelector($this->db, $testOBJ);
     $testPassesSelector->setActiveId($this->testSession->getActiveId());
     $testPassesSelector->setLastFinishedPass($this->testSession->getLastFinishedPass());
     if (!count($testPassesSelector->getReportablePasses())) {
         return false;
     }
     return true;
 }