protected function buildConfig() {
        if ($this->hasOption(self::OPTION_CONFIG)) {
            // load the configuration from service
            $config = $this->getOption(self::OPTION_CONFIG);
        } else {
            // fallback to get the raw server config, using the old notation
            $rawConfig = \common_ext_ExtensionsManager::singleton()->getExtensionById('taoQtiTest')->getConfig('testRunner');
            // build the test config using the new notation
            $target = isset($rawConfig['timer']) && isset($rawConfig['timer']['target']) ? $rawConfig['timer']['target'] : null;
            $config = [
                'timerWarning' => isset($rawConfig['timerWarning']) ? $rawConfig['timerWarning'] : null,
                'catEngineWarning' => isset($rawConfig['catEngineWarning']) ? $rawConfig['catEngineWarning'] : null,
                'progressIndicator' => [
                    'type' => isset($rawConfig['progress-indicator']) ? $rawConfig['progress-indicator'] : null,
                    'renderer' => isset($rawConfig['progress-indicator-renderer']) ? $rawConfig['progress-indicator-renderer'] : null,
                    'scope' => isset($rawConfig['progress-indicator-scope']) ? $rawConfig['progress-indicator-scope'] : null,
                    'forced' => isset($rawConfig['progress-indicator-forced']) ? $rawConfig['progress-indicator-forced'] : false,
                    'showLabel' => !empty($rawConfig['progress-indicator-show-label']),
                    'showTotal' => !empty($rawConfig['progress-indicator-show-total']),
                    'categories' => isset($rawConfig['progress-categories']) ? $rawConfig['progress-categories'] : [],
                ],
                'review' => [
                    'enabled' => !empty($rawConfig['test-taker-review']),
                    'scope' => isset($rawConfig['test-taker-review-scope']) ? $rawConfig['test-taker-review-scope'] : null,
                    'useTitle' => !empty($rawConfig['test-taker-review-use-title']),
                    'forceTitle' => !empty($rawConfig['test-taker-review-force-title']),
                    'forceInformationalTitle' => !empty($rawConfig['test-taker-review-force-informational-title']),
                    'showLegend' => !empty($rawConfig['test-taker-review-show-legend']),
                    'defaultOpen' => !empty($rawConfig['test-taker-review-default-open']),
                    'itemTitle' => isset($rawConfig['test-taker-review-item-title']) ? $rawConfig['test-taker-review-item-title'] : null,
                    'informationalItemTitle' => isset($rawConfig['test-taker-review-informational-item-title']) ? $rawConfig['test-taker-review-informational-item-title'] : null,
                    'preventsUnseen' => !empty($rawConfig['test-taker-review-prevents-unseen']),
                    'canCollapse' => !empty($rawConfig['test-taker-review-can-collapse']),
                    'displaySubsectionTitle' => !empty($rawConfig['test-taker-review-display-subsection-title']),
                    'allowSkipahead' => isset($rawConfig['test-taker-review-skipahead']) ? $rawConfig['test-taker-review-skipahead'] : false,
                ],
                'exitButton' => !empty($rawConfig['exitButton']),
                'nextSection' => !empty($rawConfig['next-section']),
                'plugins' => isset($rawConfig['plugins']) ? $rawConfig['plugins'] : null,
                'security' => [
                    'csrfToken' => isset($rawConfig['csrf-token']) ? $rawConfig['csrf-token'] : false,
                ],
                'timer' => [
                    'target' => $target,
                    'resetAfterResume' => !empty($rawConfig['reset-timer-after-resume']),
                    'keepUpToTimeout' => !empty($rawConfig['keep-timer-up-to-timeout']),
                    'restoreTimerFromClient' => $target === self::TARGET_CLIENT,
                ],
                'enableAllowSkipping' => isset($rawConfig['enable-allow-skipping']) ? $rawConfig['enable-allow-skipping'] : false,
                'enableValidateResponses' => isset($rawConfig['enable-validate-responses']) ? $rawConfig['enable-validate-responses'] : false,
                'checkInformational' => isset($rawConfig['check-informational']) ? $rawConfig['check-informational'] : false,
                'enableUnansweredItemsWarning' => isset($rawConfig['test-taker-unanswered-items-message']) ? $rawConfig['test-taker-unanswered-items-message'] : true,
                'allowShortcuts' => !empty($rawConfig['allow-shortcuts']),
                'shortcuts' => isset($rawConfig['shortcuts']) ? $rawConfig['shortcuts'] : [],
                'itemCaching' => [
                    'enabled' => isset($rawConfig['allow-browse-next-item']) ? $rawConfig['allow-browse-next-item'] : false,
                    'amount' => isset($rawConfig['item-cache-size']) ? intval($rawConfig['item-cache-size']) : 3,
                ],
                'guidedNavigation' => isset($rawConfig['guidedNavigation']) ? $rawConfig['guidedNavigation'] : false,
                'toolStateServerStorage' => isset($rawConfig['tool-state-server-storage']) ? $rawConfig['tool-state-server-storage'] : [],
                'forceEnableLinearNextItemWarning' => isset($rawConfig['force-enable-linear-next-item-warning']) ? $rawConfig['force-enable-linear-next-item-warning'] : false,
                'enableLinearNextItemWarningCheckbox' => isset($rawConfig['enable-linear-next-item-warning-checkbox']) ? $rawConfig['enable-linear-next-item-warning-checkbox'] : true,
            ];
        }
        return $config;
    }
protected function buildConfig() {
        if ($this->hasOption(self::OPTION_CONFIG)) {
            
            $config = $this->getOption(self::OPTION_CONFIG);
        } else {
            
            $rawConfig = \common_ext_ExtensionsManager::singleton()->getExtensionById('taoQtiTest')->getConfig('testRunner');
            
            $target = isset($rawConfig['timer']) && isset($rawConfig['timer']['target']) ? $rawConfig['timer']['target'] : null;
            $config = [
                'timerWarning' => isset($rawConfig['timerWarning']) ? $rawConfig['timerWarning'] : null,
                'catEngineWarning' => isset($rawConfig['catEngineWarning']) ? $rawConfig['catEngineWarning'] : null,
                'progressIndicator' => [
                    'type' => isset($rawConfig['progress-indicator']) ? $rawConfig['progress-indicator'] : null,
                    'renderer' => isset($rawConfig['progress-indicator-renderer']) ? $rawConfig['progress-indicator-renderer'] : null,
                    'scope' => isset($rawConfig['progress-indicator-scope']) ? $rawConfig['progress-indicator-scope'] : null,
                    'forced' => isset($rawConfig['progress-indicator-forced']) ? $rawConfig['progress-indicator-forced'] : false,
                    'showLabel' => !empty($rawConfig['progress-indicator-show-label']),
                    'showTotal' => !empty($rawConfig['progress-indicator-show-total']),
                    'categories' => isset($rawConfig['progress-categories']) ? $rawConfig['progress-categories'] : [],
                ],
                'review' => [
                    'enabled' => !empty($rawConfig['test-taker-review']),
                    'scope' => isset($rawConfig['test-taker-review-scope']) ? $rawConfig['test-taker-review-scope'] : null,
                    'useTitle' => !empty($rawConfig['test-taker-review-use-title']),
                    'forceTitle' => !empty($rawConfig['test-taker-review-force-title']),
                    'forceInformationalTitle' => !empty($rawConfig['test-taker-review-force-informational-title']),
                    'showLegend' => !empty($rawConfig['test-taker-review-show-legend']),
                    'defaultOpen' => !empty($rawConfig['test-taker-review-default-open']),
                    'itemTitle' => isset($rawConfig['test-taker-review-item-title']) ? $rawConfig['test-taker-review-item-title'] : null,
                    'informationalItemTitle' => isset($rawConfig['test-taker-review-informational-item-title']) ? $rawConfig['test-taker-review-informational-item-title'] : null,
                    'preventsUnseen' => !empty($rawConfig['test-taker-review-prevents-unseen']),
                    'canCollapse' => !empty($rawConfig['test-taker-review-can-collapse']),
                    'displaySubsectionTitle' => !empty($rawConfig['test-taker-review-display-subsection-title']),
                    'allowSkipahead' => isset($rawConfig['test-taker-review-skipahead']) ? $rawConfig['test-taker-review-skipahead'] : false,
                ],
                'exitButton' => !empty($rawConfig['exitButton']),
                'nextSection' => !empty($rawConfig['next-section']),
                'plugins' => isset($rawConfig['plugins']) ? $rawConfig['plugins'] : null,
                'security' => [
                    'csrfToken' => isset($rawConfig['csrf-token']) ? $rawConfig['csrf-token'] : false,
                ],
                'timer' => [
                    'target' => $target,
                    'resetAfterResume' => !empty($rawConfig['reset-timer-after-resume']),
                    'keepUpToTimeout' => !empty($rawConfig['keep-timer-up-to-timeout']),
                    'restoreTimerFromClient' => $target === self::TARGET_CLIENT,
                ],
                'enableAllowSkipping' => isset($rawConfig['enable-allow-skipping']) ? $rawConfig['enable-allow-skipping'] : false,
                'enableValidateResponses' => isset($rawConfig['enable-validate-responses']) ? $rawConfig['enable-validate-responses'] : false,
                'checkInformational' => isset($rawConfig['check-informational']) ? $rawConfig['check-informational'] : false,
                'enableUnansweredItemsWarning' => isset($rawConfig['test-taker-unanswered-items-message']) ? $rawConfig['test-taker-unanswered-items-message'] : true,
                'allowShortcuts' => !empty($rawConfig['allow-shortcuts']),
                'shortcuts' => isset($rawConfig['shortcuts']) ? $rawConfig['shortcuts'] : [],
                'itemCaching' => [
                    'enabled' => isset($rawConfig['allow-browse-next-item']) ? $rawConfig['allow-browse-next-item'] : false,
                    'amount' => isset($rawConfig['item-cache-size']) ? intval($rawConfig['item-cache-size']) : 3,
                ],
                'guidedNavigation' => isset($rawConfig['guidedNavigation']) ? $rawConfig['guidedNavigation'] : false,
                'toolStateServerStorage' => isset($rawConfig['tool-state-server-storage']) ? $rawConfig['tool-state-server-storage'] : [],
                'forceEnableLinearNextItemWarning' => isset($rawConfig['force-enable-linear-next-item-warning']) ? $rawConfig['force-enable-linear-next-item-warning'] : false,
                'enableLinearNextItemWarningCheckbox' => isset($rawConfig['enable-linear-next-item-warning-checkbox']) ? $rawConfig['enable-linear-next-item-warning-checkbox'] : true,
            ];
        }
        return $config;
    }
protected function buildConfig ( ) { if ( $ this -> hasOption ( self :: OPTION_CONFIG ) ) { // load the configuration from service $ config = $ this -> getOption ( self :: OPTION_CONFIG ) ; } else { // fallback to get the raw server config, using the old notation $ rawConfig = \ common_ext_ExtensionsManager :: singleton ( ) -> getExtensionById ( 'taoQtiTest' ) -> getConfig ( 'testRunner' ) ; // build the test config using the new notation $ target = isset ( $ rawConfig [ 'timer' ] ) && isset ( $ rawConfig [ 'timer' ] [ 'target' ] ) ? $ rawConfig [ 'timer' ] [ 'target' ] : null ; $ config = [ 'timerWarning' => isset ( $ rawConfig [ 'timerWarning' ] ) ? $ rawConfig [ 'timerWarning' ] : null , 'catEngineWarning' => isset ( $ rawConfig [ 'catEngineWarning' ] ) ? $ rawConfig [ 'catEngineWarning' ] : null , 'progressIndicator' => [ 'type' => isset ( $ rawConfig [ 'progress-indicator' ] ) ? $ rawConfig [ 'progress-indicator' ] : null , 'renderer' => isset ( $ rawConfig [ 'progress-indicator-renderer' ] ) ? $ rawConfig [ 'progress-indicator-renderer' ] : null , 'scope' => isset ( $ rawConfig [ 'progress-indicator-scope' ] ) ? $ rawConfig [ 'progress-indicator-scope' ] : null , 'forced' => isset ( $ rawConfig [ 'progress-indicator-forced' ] ) ? $ rawConfig [ 'progress-indicator-forced' ] : false , 'showLabel' => ! empty ( $ rawConfig [ 'progress-indicator-show-label' ] ) , 'showTotal' => ! empty ( $ rawConfig [ 'progress-indicator-show-total' ] ) , 'categories' => isset ( $ rawConfig [ 'progress-categories' ] ) ? $ rawConfig [ 'progress-categories' ] : [ ] , ] , 'review' => [ 'enabled' => ! empty ( $ rawConfig [ 'test-taker-review' ] ) , 'scope' => isset ( $ rawConfig [ 'test-taker-review-scope' ] ) ? $ rawConfig [ 'test-taker-review-scope' ] : null , 'useTitle' => ! empty ( $ rawConfig [ 'test-taker-review-use-title' ] ) , 'forceTitle' => ! empty ( $ rawConfig [ 'test-taker-review-force-title' ] ) , 'forceInformationalTitle' => ! empty ( $ rawConfig [ 'test-taker-review-force-informational-title' ] ) , 'showLegend' => ! empty ( $ rawConfig [ 'test-taker-review-show-legend' ] ) , 'defaultOpen' => ! empty ( $ rawConfig [ 'test-taker-review-default-open' ] ) , 'itemTitle' => isset ( $ rawConfig [ 'test-taker-review-item-title' ] ) ? $ rawConfig [ 'test-taker-review-item-title' ] : null , 'informationalItemTitle' => isset ( $ rawConfig [ 'test-taker-review-informational-item-title' ] ) ? $ rawConfig [ 'test-taker-review-informational-item-title' ] : null , 'preventsUnseen' => ! empty ( $ rawConfig [ 'test-taker-review-prevents-unseen' ] ) , 'canCollapse' => ! empty ( $ rawConfig [ 'test-taker-review-can-collapse' ] ) , 'displaySubsectionTitle' => ! empty ( $ rawConfig [ 'test-taker-review-display-subsection-title' ] ) , 'allowSkipahead' => isset ( $ rawConfig [ 'test-taker-review-skipahead' ] ) ? $ rawConfig [ 'test-taker-review-skipahead' ] : false , ] , 'exitButton' => ! empty ( $ rawConfig [ 'exitButton' ] ) , 'nextSection' => ! empty ( $ rawConfig [ 'next-section' ] ) , 'plugins' => isset ( $ rawConfig [ 'plugins' ] ) ? $ rawConfig [ 'plugins' ] : null , 'security' => [ 'csrfToken' => isset ( $ rawConfig [ 'csrf-token' ] ) ? $ rawConfig [ 'csrf-token' ] : false , ] , 'timer' => [ 'target' => $ target , 'resetAfterResume' => ! empty ( $ rawConfig [ 'reset-timer-after-resume' ] ) , 'keepUpToTimeout' => ! empty ( $ rawConfig [ 'keep-timer-up-to-timeout' ] ) , 'restoreTimerFromClient' => $ target === self :: TARGET_CLIENT , ] , 'enableAllowSkipping' => isset ( $ rawConfig [ 'enable-allow-skipping' ] ) ? $ rawConfig [ 'enable-allow-skipping' ] : false , 'enableValidateResponses' => isset ( $ rawConfig [ 'enable-validate-responses' ] ) ? $ rawConfig [ 'enable-validate-responses' ] : false , 'checkInformational' => isset ( $ rawConfig [ 'check-informational' ] ) ? $ rawConfig [ 'check-informational' ] : false , 'enableUnansweredItemsWarning' => isset ( $ rawConfig [ 'test-taker-unanswered-items-message' ] ) ? $ rawConfig [ 'test-taker-unanswered-items-message' ] : true , 'allowShortcuts' => ! empty ( $ rawConfig [ 'allow-shortcuts' ] ) , 'shortcuts' => isset ( $ rawConfig [ 'shortcuts' ] ) ? $ rawConfig [ 'shortcuts' ] : [ ] , 'itemCaching' => [ 'enabled' => isset ( $ rawConfig [ 'allow-browse-next-item' ] ) ? $ rawConfig [ 'allow-browse-next-item' ] : false , 'amount' => isset ( $ rawConfig [ 'item-cache-size' ] ) ? intval ( $ rawConfig [ 'item-cache-size' ] ) : 3 , ] , 'guidedNavigation' => isset ( $ rawConfig [ 'guidedNavigation' ] ) ? $ rawConfig [ 'guidedNavigation' ] : false , 'toolStateServerStorage' => isset ( $ rawConfig [ 'tool-state-server-storage' ] ) ? $ rawConfig [ 'tool-state-server-storage' ] : [ ] , 'forceEnableLinearNextItemWarning' => isset ( $ rawConfig [ 'force-enable-linear-next-item-warning' ] ) ? $ rawConfig [ 'force-enable-linear-next-item-warning' ] : false , 'enableLinearNextItemWarningCheckbox' => isset ( $ rawConfig [ 'enable-linear-next-item-warning-checkbox' ] ) ? $ rawConfig [ 'enable-linear-next-item-warning-checkbox' ] : true , ] ; } return $ config ; }
Returns the config of the test runner
@return array|mixed
@throws \common_ext_ExtensionException
Returns the config of the test runner