diff options
Diffstat (limited to 'vendor/symfony/form/Symfony/Component/Form/Extension/Core/Type/MoneyType.php')
-rw-r--r-- | vendor/symfony/form/Symfony/Component/Form/Extension/Core/Type/MoneyType.php | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/vendor/symfony/form/Symfony/Component/Form/Extension/Core/Type/MoneyType.php b/vendor/symfony/form/Symfony/Component/Form/Extension/Core/Type/MoneyType.php deleted file mode 100644 index 9e36f9ce..00000000 --- a/vendor/symfony/form/Symfony/Component/Form/Extension/Core/Type/MoneyType.php +++ /dev/null | |||
@@ -1,111 +0,0 @@ | |||
1 | <?php | ||
2 | |||
3 | /* | ||
4 | * This file is part of the Symfony package. | ||
5 | * | ||
6 | * (c) Fabien Potencier <fabien@symfony.com> | ||
7 | * | ||
8 | * For the full copyright and license information, please view the LICENSE | ||
9 | * file that was distributed with this source code. | ||
10 | */ | ||
11 | |||
12 | namespace Symfony\Component\Form\Extension\Core\Type; | ||
13 | |||
14 | use Symfony\Component\Form\AbstractType; | ||
15 | use Symfony\Component\Form\FormInterface; | ||
16 | use Symfony\Component\Form\FormBuilderInterface; | ||
17 | use Symfony\Component\Form\Extension\Core\DataTransformer\MoneyToLocalizedStringTransformer; | ||
18 | use Symfony\Component\Form\FormView; | ||
19 | use Symfony\Component\OptionsResolver\OptionsResolverInterface; | ||
20 | |||
21 | class MoneyType extends AbstractType | ||
22 | { | ||
23 | protected static $patterns = array(); | ||
24 | |||
25 | /** | ||
26 | * {@inheritdoc} | ||
27 | */ | ||
28 | public function buildForm(FormBuilderInterface $builder, array $options) | ||
29 | { | ||
30 | $builder | ||
31 | ->addViewTransformer(new MoneyToLocalizedStringTransformer( | ||
32 | $options['precision'], | ||
33 | $options['grouping'], | ||
34 | null, | ||
35 | $options['divisor'] | ||
36 | )) | ||
37 | ; | ||
38 | } | ||
39 | |||
40 | /** | ||
41 | * {@inheritdoc} | ||
42 | */ | ||
43 | public function buildView(FormView $view, FormInterface $form, array $options) | ||
44 | { | ||
45 | $view->vars['money_pattern'] = self::getPattern($options['currency']); | ||
46 | } | ||
47 | |||
48 | /** | ||
49 | * {@inheritdoc} | ||
50 | */ | ||
51 | public function setDefaultOptions(OptionsResolverInterface $resolver) | ||
52 | { | ||
53 | $resolver->setDefaults(array( | ||
54 | 'precision' => 2, | ||
55 | 'grouping' => false, | ||
56 | 'divisor' => 1, | ||
57 | 'currency' => 'EUR', | ||
58 | 'compound' => false, | ||
59 | )); | ||
60 | } | ||
61 | |||
62 | /** | ||
63 | * {@inheritdoc} | ||
64 | */ | ||
65 | public function getName() | ||
66 | { | ||
67 | return 'money'; | ||
68 | } | ||
69 | |||
70 | /** | ||
71 | * Returns the pattern for this locale | ||
72 | * | ||
73 | * The pattern contains the placeholder "{{ widget }}" where the HTML tag should | ||
74 | * be inserted | ||
75 | */ | ||
76 | protected static function getPattern($currency) | ||
77 | { | ||
78 | if (!$currency) { | ||
79 | return '{{ widget }}'; | ||
80 | } | ||
81 | |||
82 | $locale = \Locale::getDefault(); | ||
83 | |||
84 | if (!isset(self::$patterns[$locale])) { | ||
85 | self::$patterns[$locale] = array(); | ||
86 | } | ||
87 | |||
88 | if (!isset(self::$patterns[$locale][$currency])) { | ||
89 | $format = new \NumberFormatter($locale, \NumberFormatter::CURRENCY); | ||
90 | $pattern = $format->formatCurrency('123', $currency); | ||
91 | |||
92 | // the spacings between currency symbol and number are ignored, because | ||
93 | // a single space leads to better readability in combination with input | ||
94 | // fields | ||
95 | |||
96 | // the regex also considers non-break spaces (0xC2 or 0xA0 in UTF-8) | ||
97 | |||
98 | preg_match('/^([^\s\xc2\xa0]*)[\s\xc2\xa0]*123(?:[,.]0+)?[\s\xc2\xa0]*([^\s\xc2\xa0]*)$/u', $pattern, $matches); | ||
99 | |||
100 | if (!empty($matches[1])) { | ||
101 | self::$patterns[$locale][$currency] = $matches[1].' {{ widget }}'; | ||
102 | } elseif (!empty($matches[2])) { | ||
103 | self::$patterns[$locale][$currency] = '{{ widget }} '.$matches[2]; | ||
104 | } else { | ||
105 | self::$patterns[$locale][$currency] = '{{ widget }}'; | ||
106 | } | ||
107 | } | ||
108 | |||
109 | return self::$patterns[$locale][$currency]; | ||
110 | } | ||
111 | } | ||