public function awaitingAuthorization()
    {
        $deliveryExecution = $this->getCurrentDeliveryExecution();
        $deliveryExecutionStateService = $this->getServiceManager()->get(DeliveryExecutionStateService::SERVICE_ID);
        $executionState = $deliveryExecution->getState()->getUri();

        $runDeliveryUrl = _url('runDeliveryExecution', null, null, array('deliveryExecution' => $deliveryExecution->getIdentifier()));

        // if the test is in progress, first pause it to avoid inconsistent storage state
        if (DeliveryExecutionState::STATE_ACTIVE == $executionState) {
            $deliveryExecutionStateService->pauseExecution($deliveryExecution, [
                'reasons' => ['category' => 'System'],
                'comment' => __('System generated pause.'),
            ]);
        }

        // we need to change the state of the delivery execution
        if (!in_array($executionState , array(DeliveryExecutionState::STATE_FINISHED, DeliveryExecutionState::STATE_TERMINATED))) {
            if (DeliveryExecutionState::STATE_AUTHORIZED !== $executionState) {
                $deliveryExecutionStateService->waitExecution($deliveryExecution);
            }

            $this->setData('deliveryExecution', $deliveryExecution->getIdentifier());
            $this->setData('deliveryLabel', addslashes($deliveryExecution->getLabel()));
            $this->setData('returnUrl', $this->getReturnUrl());
            $this->setData('cancelUrl', _url('cancelExecution', 'DeliveryServer', 'taoProctoring', ['deliveryExecution' => $deliveryExecution->getIdentifier()]));
            $this->setData('cancelable', $deliveryExecutionStateService->isCancelable($deliveryExecution));
            $this->setData('userLabel', common_session_SessionManager::getSession()->getUserLabel());
            $this->setData('client_config_url', $this->getClientConfigUrl());
            $this->setData('showControls', true);
            $this->setData('runDeliveryUrl', $runDeliveryUrl);

            //set template
            $this->setData('homeUrl', $this->getServiceManager()->get(DefaultUrlService::SERVICE_ID)->getUrl('ProctoringHome'));
            $this->setData('logout', $this->getServiceManager()->get(DefaultUrlService::SERVICE_ID)->getUrl('ProctoringLogout'));
            $this->setData('content-template', 'DeliveryServer/awaiting.tpl');
            $this->setData('content-extension', 'taoProctoring');
            $this->setView('DeliveryServer/layout.tpl', 'taoDelivery');
        } else {
            // inconsistent state
            common_Logger::i(get_called_class() . '::awaitingAuthorization(): cannot wait authorization for delivery execution ' . $deliveryExecution->getIdentifier() . ' with state ' . $executionState);
            return $this->redirect($this->getReturnUrl());
        }
    }
public function awaitingAuthorization()
    {
        $deliveryExecution = $this->getCurrentDeliveryExecution();
        $deliveryExecutionStateService = $this->getServiceManager()->get(DeliveryExecutionStateService::SERVICE_ID);
        $executionState = $deliveryExecution->getState()->getUri();

        $runDeliveryUrl = _url('runDeliveryExecution', null, null, array('deliveryExecution' => $deliveryExecution->getIdentifier()));

        // if the test is in progress, first pause it to avoid inconsistent storage state
        if (DeliveryExecutionState::STATE_ACTIVE == $executionState) {
            $deliveryExecutionStateService->pauseExecution($deliveryExecution, [
                'reasons' => ['category' => 'System'],
                'comment' => __('System generated pause.'),
            ]);
        }

        // we need to change the state of the delivery execution
        if (!in_array($executionState , array(DeliveryExecutionState::STATE_FINISHED, DeliveryExecutionState::STATE_TERMINATED))) {
            if (DeliveryExecutionState::STATE_AUTHORIZED !== $executionState) {
                $deliveryExecutionStateService->waitExecution($deliveryExecution);
            }

            $this->setData('deliveryExecution', $deliveryExecution->getIdentifier());
            $this->setData('deliveryLabel', addslashes($deliveryExecution->getLabel()));
            $this->setData('returnUrl', $this->getReturnUrl());
            $this->setData('cancelUrl', _url('cancelExecution', 'DeliveryServer', 'taoProctoring', ['deliveryExecution' => $deliveryExecution->getIdentifier()]));
            $this->setData('cancelable', $deliveryExecutionStateService->isCancelable($deliveryExecution));
            $this->setData('userLabel', common_session_SessionManager::getSession()->getUserLabel());
            $this->setData('client_config_url', $this->getClientConfigUrl());
            $this->setData('showControls', true);
            $this->setData('runDeliveryUrl', $runDeliveryUrl);

            //set template
            $this->setData('homeUrl', $this->getServiceManager()->get(DefaultUrlService::SERVICE_ID)->getUrl('ProctoringHome'));
            $this->setData('logout', $this->getServiceManager()->get(DefaultUrlService::SERVICE_ID)->getUrl('ProctoringLogout'));
            $this->setData('content-template', 'DeliveryServer/awaiting.tpl');
            $this->setData('content-extension', 'taoProctoring');
            $this->setView('DeliveryServer/layout.tpl', 'taoDelivery');
        } else {
            // inconsistent state
            common_Logger::i(get_called_class() . '::awaitingAuthorization(): cannot wait authorization for delivery execution ' . $deliveryExecution->getIdentifier() . ' with state ' . $executionState);
            return $this->redirect($this->getReturnUrl());
        }
    }
public function awaitingAuthorization ( ) { $ deliveryExecution = $ this -> getCurrentDeliveryExecution ( ) ; $ deliveryExecutionStateService = $ this -> getServiceManager ( ) -> get ( DeliveryExecutionStateService :: SERVICE_ID ) ; $ executionState = $ deliveryExecution -> getState ( ) -> getUri ( ) ; $ runDeliveryUrl = _url ( 'runDeliveryExecution' , null , null , array ( 'deliveryExecution' => $ deliveryExecution -> getIdentifier ( ) ) ) ; // if the test is in progress, first pause it to avoid inconsistent storage state if ( DeliveryExecutionState :: STATE_ACTIVE == $ executionState ) { $ deliveryExecutionStateService -> pauseExecution ( $ deliveryExecution , [ 'reasons' => [ 'category' => 'System' ] , 'comment' => __ ( 'System generated pause.' ) , ] ) ; } // we need to change the state of the delivery execution if ( ! in_array ( $ executionState , array ( DeliveryExecutionState :: STATE_FINISHED , DeliveryExecutionState :: STATE_TERMINATED ) ) ) { if ( DeliveryExecutionState :: STATE_AUTHORIZED !== $ executionState ) { $ deliveryExecutionStateService -> waitExecution ( $ deliveryExecution ) ; } $ this -> setData ( 'deliveryExecution' , $ deliveryExecution -> getIdentifier ( ) ) ; $ this -> setData ( 'deliveryLabel' , addslashes ( $ deliveryExecution -> getLabel ( ) ) ) ; $ this -> setData ( 'returnUrl' , $ this -> getReturnUrl ( ) ) ; $ this -> setData ( 'cancelUrl' , _url ( 'cancelExecution' , 'DeliveryServer' , 'taoProctoring' , [ 'deliveryExecution' => $ deliveryExecution -> getIdentifier ( ) ] ) ) ; $ this -> setData ( 'cancelable' , $ deliveryExecutionStateService -> isCancelable ( $ deliveryExecution ) ) ; $ this -> setData ( 'userLabel' , common_session_SessionManager :: getSession ( ) -> getUserLabel ( ) ) ; $ this -> setData ( 'client_config_url' , $ this -> getClientConfigUrl ( ) ) ; $ this -> setData ( 'showControls' , true ) ; $ this -> setData ( 'runDeliveryUrl' , $ runDeliveryUrl ) ; //set template $ this -> setData ( 'homeUrl' , $ this -> getServiceManager ( ) -> get ( DefaultUrlService :: SERVICE_ID ) -> getUrl ( 'ProctoringHome' ) ) ; $ this -> setData ( 'logout' , $ this -> getServiceManager ( ) -> get ( DefaultUrlService :: SERVICE_ID ) -> getUrl ( 'ProctoringLogout' ) ) ; $ this -> setData ( 'content-template' , 'DeliveryServer/awaiting.tpl' ) ; $ this -> setData ( 'content-extension' , 'taoProctoring' ) ; $ this -> setView ( 'DeliveryServer/layout.tpl' , 'taoDelivery' ) ; } else { // inconsistent state common_Logger :: i ( get_called_class ( ) . '::awaitingAuthorization(): cannot wait authorization for delivery execution ' . $ deliveryExecution -> getIdentifier ( ) . ' with state ' . $ executionState ) ; return $ this -> redirect ( $ this -> getReturnUrl ( ) ) ; } }
The awaiting authorization screen
The awaiting authorization screen