PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.5
Independent Analytics – WordPress Analytics Plugin v2.15.5
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / symfony / translation / DataCollector / TranslationDataCollector.php
independent-analytics / vendor / symfony / translation / DataCollector Last commit date
TranslationDataCollector.php 1 month ago
TranslationDataCollector.php
132 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 IAWPSCOPED\Symfony\Component\Translation\DataCollector;
12
13 use IAWPSCOPED\Symfony\Component\HttpFoundation\Request;
14 use IAWPSCOPED\Symfony\Component\HttpFoundation\Response;
15 use IAWPSCOPED\Symfony\Component\HttpKernel\DataCollector\DataCollector;
16 use IAWPSCOPED\Symfony\Component\HttpKernel\DataCollector\LateDataCollectorInterface;
17 use IAWPSCOPED\Symfony\Component\Translation\DataCollectorTranslator;
18 use IAWPSCOPED\Symfony\Component\VarDumper\Cloner\Data;
19 /**
20 * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
21 *
22 * @final
23 * @internal
24 */
25 class TranslationDataCollector extends DataCollector implements LateDataCollectorInterface
26 {
27 private $translator;
28 public function __construct(DataCollectorTranslator $translator)
29 {
30 $this->translator = $translator;
31 }
32 /**
33 * {@inheritdoc}
34 */
35 public function lateCollect()
36 {
37 $messages = $this->sanitizeCollectedMessages($this->translator->getCollectedMessages());
38 $this->data += $this->computeCount($messages);
39 $this->data['messages'] = $messages;
40 $this->data = $this->cloneVar($this->data);
41 }
42 /**
43 * {@inheritdoc}
44 */
45 public function collect(Request $request, Response $response, \Throwable $exception = null)
46 {
47 $this->data['locale'] = $this->translator->getLocale();
48 $this->data['fallback_locales'] = $this->translator->getFallbackLocales();
49 }
50 /**
51 * {@inheritdoc}
52 */
53 public function reset()
54 {
55 $this->data = [];
56 }
57 public function getMessages() : array|Data
58 {
59 return $this->data['messages'] ?? [];
60 }
61 public function getCountMissings() : int
62 {
63 return $this->data[DataCollectorTranslator::MESSAGE_MISSING] ?? 0;
64 }
65 public function getCountFallbacks() : int
66 {
67 return $this->data[DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK] ?? 0;
68 }
69 public function getCountDefines() : int
70 {
71 return $this->data[DataCollectorTranslator::MESSAGE_DEFINED] ?? 0;
72 }
73 public function getLocale()
74 {
75 return !empty($this->data['locale']) ? $this->data['locale'] : null;
76 }
77 /**
78 * @internal
79 */
80 public function getFallbackLocales()
81 {
82 return isset($this->data['fallback_locales']) && \count($this->data['fallback_locales']) > 0 ? $this->data['fallback_locales'] : [];
83 }
84 /**
85 * {@inheritdoc}
86 */
87 public function getName() : string
88 {
89 return 'translation';
90 }
91 private function sanitizeCollectedMessages(array $messages)
92 {
93 $result = [];
94 foreach ($messages as $key => $message) {
95 $messageId = $message['locale'] . $message['domain'] . $message['id'];
96 if (!isset($result[$messageId])) {
97 $message['count'] = 1;
98 $message['parameters'] = !empty($message['parameters']) ? [$message['parameters']] : [];
99 $messages[$key]['translation'] = $this->sanitizeString($message['translation']);
100 $result[$messageId] = $message;
101 } else {
102 if (!empty($message['parameters'])) {
103 $result[$messageId]['parameters'][] = $message['parameters'];
104 }
105 ++$result[$messageId]['count'];
106 }
107 unset($messages[$key]);
108 }
109 return $result;
110 }
111 private function computeCount(array $messages)
112 {
113 $count = [DataCollectorTranslator::MESSAGE_DEFINED => 0, DataCollectorTranslator::MESSAGE_MISSING => 0, DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK => 0];
114 foreach ($messages as $message) {
115 ++$count[$message['state']];
116 }
117 return $count;
118 }
119 private function sanitizeString(string $string, int $length = 80)
120 {
121 $string = \trim(\preg_replace('/\\s+/', ' ', $string));
122 if (\false !== ($encoding = \mb_detect_encoding($string, null, \true))) {
123 if (\mb_strlen($string, $encoding) > $length) {
124 return \mb_substr($string, 0, $length - 3, $encoding) . '...';
125 }
126 } elseif (\strlen($string) > $length) {
127 return \substr($string, 0, $length - 3) . '...';
128 }
129 return $string;
130 }
131 }
132