HEX
Server: LiteSpeed
System: Linux d8 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: wbwebdes (3015)
PHP: 8.1.31
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/wbwebdes/domains/helpdesk.wb-webdesign.com/private_html/src/Console/EnvironmentVariables.php
<?php

namespace App\Console;

use Symfony\Component\Dotenv\Dotenv;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\NullOutput;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

class EnvironmentVariables extends Command
{
    private $path;
    private $conf;
    private $envvars;
    private $container;

    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;

        parent::__construct();
    }

    protected function configure()
    {
        $this
            ->setName('uvdesk_wizard:env:update')
            ->setDescription('Makes changes to .env located in project root to update environment variables.')
        ;

        $this
            ->addArgument('name', InputArgument::REQUIRED, "Name of the environment variable")
            ->addArgument('value', InputArgument::REQUIRED, "Value to set for the evironment variable")
        ;
    }

    protected function initialize(InputInterface $input, OutputInterface $output)
    {
        $this->path = $this->container->get('kernel')->getProjectDir() . '/.env';
        
        $this->conf = file_get_contents($this->path);
        $this->envvars = (new Dotenv())->parse($this->conf);
        $this->envvars[strtoupper($input->getArgument('name'))] = $input->getArgument('value');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        if ('dev' != $this->container->get('kernel')->getEnvironment()) {
            throw new \Exception("\nThis command is only allowed to be used in development environment.", 500);
        }

        $read_line = function ($line) {
            if (trim($line) && trim($line)[0] != '#' && strpos(trim($line), '=') > 0) {
                try {
                    list($var, $value) = explode("=", trim($line));
    
                    if (isset($this->envvars[strtoupper($var)])) {
                        return strtoupper($var) . "=" . $this->envvars[strtoupper($var)];
                    }
                } catch (\Exception $e) {
                    // Do nothing
                }
            }

            return $line;
        };

        $stream = array_map($read_line, file($this->path, FILE_IGNORE_NEW_LINES));
        $stream = implode("\n", $stream) . "\n";

        if (trim($stream) != trim($this->conf)) {
            file_put_contents($this->path, $stream);
        }

        return Command::SUCCESS;
    }
}