models/classes/runner/synchronisation/action/Skip.php
public function process()
    {
        $this->validate();

        $ref = $this->getRequestParameter('ref') ?: null;
        $itemDuration = null;

        $scope = $this->getRequestParameter('scope');
        $start = $this->getRequestParameter('start') !== false;

        try {
            $serviceContext = $this->getServiceContext();

            $this->saveToolStates();

            $this->getRunnerService()->endTimer($serviceContext, $itemDuration, $this->getTime());

            if ($this->getRequestParameter('offline') === true) {
                $this->setOffline();
            }

            $result = $this->getRunnerService()->skip($serviceContext, $scope, $ref);

            $response = [
                'success' => $result,
            ];

            if ($result) {
                $response['testContext'] = $this->getRunnerService()->getTestContext($serviceContext);
                if ($serviceContext->containsAdaptive()) {
                    // Force map update.
                    $response['testMap'] = $this->getRunnerService()->getTestMap($serviceContext, true);
                }
            }

            if ($start == true) {
                // start the timer only when move starts the item session
                // and after context build to avoid timing error
                $this->getRunnerService()->startTimer($serviceContext, $this->getTime());
            }
        } catch (Exception $e) {
            $response = $this->getErrorResponse($e);
        }

        return $response;
    }
public function process()
    {
        $this->validate();

        $ref = $this->getRequestParameter('ref') ?: null;
        $itemDuration = null;

        $scope = $this->getRequestParameter('scope');
        $start = $this->getRequestParameter('start') !== false;

        try {
            $serviceContext = $this->getServiceContext();

            $this->saveToolStates();

            $this->getRunnerService()->endTimer($serviceContext, $itemDuration, $this->getTime());

            if ($this->getRequestParameter('offline') === true) {
                $this->setOffline();
            }

            $result = $this->getRunnerService()->skip($serviceContext, $scope, $ref);

            $response = [
                'success' => $result,
            ];

            if ($result) {
                $response['testContext'] = $this->getRunnerService()->getTestContext($serviceContext);
                if ($serviceContext->containsAdaptive()) {
                    // Force map update.
                    $response['testMap'] = $this->getRunnerService()->getTestMap($serviceContext, true);
                }
            }

            if ($start == true) {
                // start the timer only when move starts the item session
                // and after context build to avoid timing error
                $this->getRunnerService()->startTimer($serviceContext, $this->getTime());
            }
        } catch (Exception $e) {
            $response = $this->getErrorResponse($e);
        }

        return $response;
    }
Process the skip action.

Validate required fields.
Stop timer.
Wrap the skip to runner service.
Start next timer.

@return array
@throws common_Exception
@throws common_exception_Error
@throws common_exception_InconsistentData