Files
Chamilo/vendor/sonata-project/admin-bundle/Command/QuestionableCommand.php
2025-08-14 22:41:49 +02:00

109 lines
3.7 KiB
PHP

<?php
/*
* This file is part of the Sonata Project package.
*
* (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Sonata\AdminBundle\Command;
use Sensio\Bundle\GeneratorBundle\Command\Helper\DialogHelper;
use Sensio\Bundle\GeneratorBundle\Command\Helper\QuestionHelper;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\ConfirmationQuestion;
use Symfony\Component\Console\Question\Question;
abstract class QuestionableCommand extends ContainerAwareCommand
{
/**
* @param InputInterface $input
* @param OutputInterface $output
* @param string $questionText
* @param mixed $default
* @param callable $validator
*
* @return mixed
*/
final protected function askAndValidate(InputInterface $input, OutputInterface $output, $questionText, $default, $validator)
{
$questionHelper = $this->getQuestionHelper();
// NEXT_MAJOR: Remove this BC code for SensioGeneratorBundle 2.3/2.4 after dropping support for Symfony 2.3
if ($questionHelper instanceof DialogHelper) {
return $questionHelper->askAndValidate(
$output,
$questionHelper->getQuestion($questionText, $default),
$validator,
false,
$default
);
}
$question = new Question($questionHelper->getQuestion($questionText, $default), $default);
$question->setValidator($validator);
return $questionHelper->ask($input, $output, $question);
}
/**
* @param InputInterface $input
* @param OutputInterface $output
* @param string $questionText
* @param string $default
* @param string $separator
*
* @return string
*/
final protected function askConfirmation(InputInterface $input, OutputInterface $output, $questionText, $default, $separator)
{
$questionHelper = $this->getQuestionHelper();
// NEXT_MAJOR: Remove this BC code for SensioGeneratorBundle 2.3/2.4 after dropping support for Symfony 2.3
if ($questionHelper instanceof DialogHelper) {
$question = $questionHelper->getQuestion($questionText, $default, $separator);
return $questionHelper->askConfirmation($output, $question, ($default === 'no' ? false : true));
}
$question = new ConfirmationQuestion($questionHelper->getQuestion(
$questionText,
$default,
$separator
), ($default === 'no' ? false : true));
return $questionHelper->ask($input, $output, $question);
}
/**
* @return QuestionHelper|DialogHelper
*/
final protected function getQuestionHelper()
{
// NEXT_MAJOR: Remove this BC code for SensioGeneratorBundle 2.3/2.4 after dropping support for Symfony 2.3
if (class_exists('Sensio\Bundle\GeneratorBundle\Command\Helper\DialogHelper')) {
$questionHelper = $this->getHelper('dialog');
if (!$questionHelper instanceof DialogHelper) {
$questionHelper = new DialogHelper();
$this->getHelperSet()->set($questionHelper);
}
} else {
$questionHelper = $this->getHelper('question');
if (!$questionHelper instanceof QuestionHelper) {
$questionHelper = new QuestionHelper();
$this->getHelperSet()->set($questionHelper);
}
}
return $questionHelper;
}
}