/**
  * Mark an item for review in the Assessment Test Session flow.
  *
  */
 public function markForReview()
 {
     $this->beforeAction();
     $testSession = $this->getTestSession();
     try {
         if ($this->hasRequestParameter('position')) {
             $itemPosition = intval($this->getRequestParameter('position'));
         } else {
             $itemPosition = $testSession->getRoute()->getPosition();
         }
         if ($this->hasRequestParameter('flag')) {
             $flag = $this->getRequestParameter('flag');
             if (is_numeric($flag)) {
                 $flag = !!intval($flag);
             } else {
                 $flag = 'false' != strtolower($flag);
             }
         } else {
             $flag = true;
         }
         taoQtiTest_helpers_TestRunnerUtils::setItemFlag($testSession, $itemPosition, $flag);
     } catch (AssessmentTestSessionException $e) {
         $this->handleAssessmentTestSessionException($e);
     }
     $this->afterAction();
 }
 /**
  * Mark an item for review in the Assessment Test Session flow.
  *
  */
 public function markForReview()
 {
     if ($this->beforeAction()) {
         $testSession = $this->getTestSession();
         $sessionId = $testSession->getSessionId();
         try {
             if ($this->hasRequestParameter('position')) {
                 $itemPosition = intval($this->getRequestParameter('position'));
             } else {
                 $itemPosition = $testSession->getRoute()->getPosition();
             }
             if ($this->hasRequestParameter('flag')) {
                 $flag = $this->getRequestParameter('flag');
                 if (is_numeric($flag)) {
                     $flag = !!intval($flag);
                 } else {
                     $flag = 'false' != strtolower($flag);
                 }
             } else {
                 $flag = true;
             }
             taoQtiTest_helpers_TestRunnerUtils::setItemFlag($testSession, $itemPosition, $flag);
             $this->returnJson(array('success' => true, 'position' => $itemPosition, 'flag' => $flag));
         } catch (AssessmentTestSessionException $e) {
             $this->handleAssessmentTestSessionException($e);
         }
         common_Logger::i("Persisting QTI Assessment Test Session '{$sessionId}'...");
         $this->getStorage()->persist($testSession);
     }
 }
 /**
  * Flag an item
  */
 public function flagItem()
 {
     $code = 200;
     try {
         $serviceContext = $this->getServiceContext();
         $testSession = $serviceContext->getTestSession();
         if ($this->hasRequestParameter('position')) {
             $itemPosition = intval($this->getRequestParameter('position'));
         } else {
             $itemPosition = $testSession->getRoute()->getPosition();
         }
         if ($this->hasRequestParameter('flag')) {
             $flag = $this->getRequestParameter('flag');
             if (is_numeric($flag)) {
                 $flag = !!intval($flag);
             } else {
                 $flag = 'false' != strtolower($flag);
             }
         } else {
             $flag = true;
         }
         TestRunnerUtils::setItemFlag($testSession, $itemPosition, $flag);
         $response = ['success' => true];
     } catch (common_Exception $e) {
         $response = $this->getErrorResponse($e);
         $code = $this->getErrorCode($e);
     }
     $this->returnJson($response, $code);
 }