PHP Classes

File: src/Plugin/Code/ConfigScriptGenerator.php

Recommend this page to a friend!
  Packages of Thierry Feuzeu   Jaxon   src/Plugin/Code/ConfigScriptGenerator.php   Download  
File: src/Plugin/Code/ConfigScriptGenerator.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Jaxon
Call PHP classes from JavaScript using AJAX
Author: By
Last change:
Date: 1 year ago
Size: 2,606 bytes
 

Contents

Class file image Download
<?php

/**
 * ConfigScriptGenerator.php
 *
 * Generate the config script for Jaxon.
 *
 * @package jaxon-core
 * @author Thierry Feuzeu <thierry.feuzeu@gmail.com>
 * @copyright 2025 Thierry Feuzeu <thierry.feuzeu@gmail.com>
 * @license https://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License
 * @link https://github.com/jaxon-php/jaxon-core
 */

namespace Jaxon\Plugin\Code;

use Jaxon\App\Config\ConfigManager;
use Jaxon\Plugin\AbstractCodegenerator;
use Jaxon\Request\Handler\ParameterReader;
use Jaxon\Utils\Http\UriException;
use Jaxon\Utils\Template\TemplateEngine;

class ConfigScriptGenerator extends AbstractCodeGenerator
{
    /**
     * The constructor
     *
     * @param ParameterReader $xParameterReader
     * @param TemplateEngine $xTemplateEngine
     * @param ConfigManager $xConfigManager
     */
    public function __construct(private ParameterReader $xParameterReader,
        private TemplateEngine $xTemplateEngine, private ConfigManager $xConfigManager)
    {}

    /**
     * Get the value of a config option
     *
     * @param string $sName The option name
     *
     * @return mixed
     */
    private function option(string $sName): mixed
    {
        return $this->xConfigManager->getOption($sName);
    }

    /**
     * @inheritDoc
     * @throws UriException
     */
    public function getScript(): string
    {
        // It is important to call $this->xParameterReader->uri() only if necessary.
        $sUri = $this->xConfigManager->getOption('core.request.uri') ?:
            $this->xParameterReader->uri();
        $aOptions = [
            'sResponseType'      => 'JSON',
            'sVersion'           => $this->option('core.version'),
            'sLanguage'          => $this->option('core.language'),
            'sRequestURI'        => $sUri,
            'sDefaultMode'       => $this->option('core.request.mode'),
            'sDefaultMethod'     => $this->option('core.request.method'),
            'sCsrfMetaName'      => $this->option('core.request.csrf_meta'),
            'bDebug'             => $this->option('core.debug.on'),
            'bVerboseDebug'      => $this->option('core.debug.verbose'),
            'sDebugOutputID'     => $this->option('core.debug.output_id'),
            'nResponseQueueSize' => $this->option('js.lib.queue_size'),
            'sStatusMessages'    => $this->option('js.lib.show_status') ? 'true' : 'false',
            'sWaitCursor'        => $this->option('js.lib.show_cursor') ? 'true' : 'false',
        ];
        return $this->xTemplateEngine->render('jaxon::plugins/config.js', $aOptions);
    }
}