Mercurial > hg > isophonics-drupal-site
annotate vendor/symfony/console/Question/ConfirmationQuestion.php @ 13:5fb285c0d0e3
Update Drupal core to 8.4.7 via Composer. Security update; I *think* we've
been lucky to get away with this so far, as we don't support self-registration
which seems to be used by the so-called "drupalgeddon 2" attack that 8.4.5
was vulnerable to.
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:33:26 +0100 |
parents | 4c8ae668cc8c |
children | 1fec387a4317 |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 /* |
Chris@0 | 4 * This file is part of the Symfony package. |
Chris@0 | 5 * |
Chris@0 | 6 * (c) Fabien Potencier <fabien@symfony.com> |
Chris@0 | 7 * |
Chris@0 | 8 * For the full copyright and license information, please view the LICENSE |
Chris@0 | 9 * file that was distributed with this source code. |
Chris@0 | 10 */ |
Chris@0 | 11 |
Chris@0 | 12 namespace Symfony\Component\Console\Question; |
Chris@0 | 13 |
Chris@0 | 14 /** |
Chris@0 | 15 * Represents a yes/no question. |
Chris@0 | 16 * |
Chris@0 | 17 * @author Fabien Potencier <fabien@symfony.com> |
Chris@0 | 18 */ |
Chris@0 | 19 class ConfirmationQuestion extends Question |
Chris@0 | 20 { |
Chris@0 | 21 private $trueAnswerRegex; |
Chris@0 | 22 |
Chris@0 | 23 /** |
Chris@0 | 24 * Constructor. |
Chris@0 | 25 * |
Chris@0 | 26 * @param string $question The question to ask to the user |
Chris@0 | 27 * @param bool $default The default answer to return, true or false |
Chris@0 | 28 * @param string $trueAnswerRegex A regex to match the "yes" answer |
Chris@0 | 29 */ |
Chris@0 | 30 public function __construct($question, $default = true, $trueAnswerRegex = '/^y/i') |
Chris@0 | 31 { |
Chris@0 | 32 parent::__construct($question, (bool) $default); |
Chris@0 | 33 |
Chris@0 | 34 $this->trueAnswerRegex = $trueAnswerRegex; |
Chris@0 | 35 $this->setNormalizer($this->getDefaultNormalizer()); |
Chris@0 | 36 } |
Chris@0 | 37 |
Chris@0 | 38 /** |
Chris@0 | 39 * Returns the default answer normalizer. |
Chris@0 | 40 * |
Chris@0 | 41 * @return callable |
Chris@0 | 42 */ |
Chris@0 | 43 private function getDefaultNormalizer() |
Chris@0 | 44 { |
Chris@0 | 45 $default = $this->getDefault(); |
Chris@0 | 46 $regex = $this->trueAnswerRegex; |
Chris@0 | 47 |
Chris@0 | 48 return function ($answer) use ($default, $regex) { |
Chris@0 | 49 if (is_bool($answer)) { |
Chris@0 | 50 return $answer; |
Chris@0 | 51 } |
Chris@0 | 52 |
Chris@0 | 53 $answerIsTrue = (bool) preg_match($regex, $answer); |
Chris@0 | 54 if (false === $default) { |
Chris@0 | 55 return $answer && $answerIsTrue; |
Chris@0 | 56 } |
Chris@0 | 57 |
Chris@0 | 58 return !$answer || $answerIsTrue; |
Chris@0 | 59 }; |
Chris@0 | 60 } |
Chris@0 | 61 } |