|
Server : LiteSpeed System : Linux srv104790275 5.15.0-161-generic #171-Ubuntu SMP Sat Oct 11 08:17:01 UTC 2025 x86_64 User : dewac4139 ( 1077) PHP Version : 8.0.30 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/local/CyberCP/public/phpmyadmin/libraries/classes/Command/ |
Upload File : |
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use function file_get_contents;
use function file_put_contents;
use function intval;
use function is_array;
use function json_decode;
use function preg_replace_callback;
use const ROOT_PATH;
final class FixPoTwigCommand extends Command
{
/** @var string|null */
protected static $defaultName = 'fix-po-twig';
private const POT_FILE = ROOT_PATH . 'po/phpmyadmin.pot';
private const REPLACE_FILE = ROOT_PATH . 'twig-templates/replace.json';
protected function configure(): void
{
$this->setDescription('Fixes POT file for Twig templates');
$this->setHelp(
'The <info>%command.name%</info> command fixes the Twig file name and line number in the'
. ' POT file to match the Twig template and not the compiled Twig file.'
);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$replaceFile = file_get_contents(self::REPLACE_FILE);
if ($replaceFile === false) {
return Command::FAILURE;
}
$replacements = json_decode($replaceFile, true);
if (! is_array($replacements)) {
return Command::FAILURE;
}
/* Read pot file */
$pot = file_get_contents(self::POT_FILE);
if ($pot === false) {
return Command::FAILURE;
}
/* Do the replacements */
$pot = preg_replace_callback(
'@(twig-templates[0-9a-f/]*.php):([0-9]*)@',
static function (array $matches) use ($replacements): string {
$filename = $matches[1];
$line = intval($matches[2]);
$replace = $replacements[$filename];
foreach ($replace[1] as $cacheLine => $result) {
if ($line >= $cacheLine) {
return $replace[0] . ':' . $result;
}
}
return $replace[0] . ':0';
},
$pot
);
if ($pot === null) {
return Command::FAILURE;
}
if (file_put_contents(self::POT_FILE, $pot) === false) {
return Command::FAILURE;
}
return Command::SUCCESS;
}
}