PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.17.2 4.17.1 4.17.0 4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / third-party / vendor / symfony / translation / DataCollector / TranslationDataCollector.php
wp-user-avatar / third-party / vendor / symfony / translation / DataCollector Last commit date
TranslationDataCollector.php 2 months ago
TranslationDataCollector.php
134 lines
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 namespace ProfilePressVendor\Symfony\Component\Translation\DataCollector;
12
13 use ProfilePressVendor\Symfony\Component\HttpFoundation\Request;
14 use ProfilePressVendor\Symfony\Component\HttpFoundation\Response;
15 use ProfilePressVendor\Symfony\Component\HttpKernel\DataCollector\DataCollector;
16 use ProfilePressVendor\Symfony\Component\HttpKernel\DataCollector\LateDataCollectorInterface;
17 use ProfilePressVendor\Symfony\Component\Translation\DataCollectorTranslator;
18 use ProfilePressVendor\Symfony\Component\VarDumper\Cloner\Data;
19 /**
20 * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
21 *
22 * @final
23 */
24 class TranslationDataCollector extends DataCollector implements LateDataCollectorInterface
25 {
26 private $translator;
27 public function __construct(DataCollectorTranslator $translator)
28 {
29 $this->translator = $translator;
30 }
31 /**
32 * {@inheritdoc}
33 */
34 public function lateCollect()
35 {
36 $messages = $this->sanitizeCollectedMessages($this->translator->getCollectedMessages());
37 $this->data += $this->computeCount($messages);
38 $this->data['messages'] = $messages;
39 $this->data = $this->cloneVar($this->data);
40 }
41 /**
42 * {@inheritdoc}
43 */
44 public function collect(Request $request, Response $response, ?\Throwable $exception = null)
45 {
46 $this->data['locale'] = $this->translator->getLocale();
47 $this->data['fallback_locales'] = $this->translator->getFallbackLocales();
48 }
49 /**
50 * {@inheritdoc}
51 */
52 public function reset()
53 {
54 $this->data = [];
55 }
56 /**
57 * @return array|Data
58 */
59 public function getMessages()
60 {
61 return $this->data['messages'] ?? [];
62 }
63 public function getCountMissings(): int
64 {
65 return $this->data[DataCollectorTranslator::MESSAGE_MISSING] ?? 0;
66 }
67 public function getCountFallbacks(): int
68 {
69 return $this->data[DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK] ?? 0;
70 }
71 public function getCountDefines(): int
72 {
73 return $this->data[DataCollectorTranslator::MESSAGE_DEFINED] ?? 0;
74 }
75 public function getLocale()
76 {
77 return !empty($this->data['locale']) ? $this->data['locale'] : null;
78 }
79 /**
80 * @internal
81 */
82 public function getFallbackLocales()
83 {
84 return isset($this->data['fallback_locales']) && \count($this->data['fallback_locales']) > 0 ? $this->data['fallback_locales'] : [];
85 }
86 /**
87 * {@inheritdoc}
88 */
89 public function getName(): string
90 {
91 return 'translation';
92 }
93 private function sanitizeCollectedMessages(array $messages)
94 {
95 $result = [];
96 foreach ($messages as $key => $message) {
97 $messageId = $message['locale'] . $message['domain'] . $message['id'];
98 if (!isset($result[$messageId])) {
99 $message['count'] = 1;
100 $message['parameters'] = !empty($message['parameters']) ? [$message['parameters']] : [];
101 $messages[$key]['translation'] = $this->sanitizeString($message['translation']);
102 $result[$messageId] = $message;
103 } else {
104 if (!empty($message['parameters'])) {
105 $result[$messageId]['parameters'][] = $message['parameters'];
106 }
107 ++$result[$messageId]['count'];
108 }
109 unset($messages[$key]);
110 }
111 return $result;
112 }
113 private function computeCount(array $messages)
114 {
115 $count = [DataCollectorTranslator::MESSAGE_DEFINED => 0, DataCollectorTranslator::MESSAGE_MISSING => 0, DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK => 0];
116 foreach ($messages as $message) {
117 ++$count[$message['state']];
118 }
119 return $count;
120 }
121 private function sanitizeString(string $string, int $length = 80)
122 {
123 $string = trim(preg_replace('/\s+/', ' ', $string));
124 if (\false !== $encoding = mb_detect_encoding($string, null, \true)) {
125 if (mb_strlen($string, $encoding) > $length) {
126 return mb_substr($string, 0, $length - 3, $encoding) . '...';
127 }
128 } elseif (\strlen($string) > $length) {
129 return substr($string, 0, $length - 3) . '...';
130 }
131 return $string;
132 }
133 }
134