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 / Loader / MoFileLoader.php
wp-user-avatar / third-party / vendor / symfony / translation / Loader Last commit date
ArrayLoader.php 2 months ago CsvFileLoader.php 2 months ago FileLoader.php 2 months ago IcuDatFileLoader.php 2 months ago IcuResFileLoader.php 2 months ago IniFileLoader.php 2 months ago JsonFileLoader.php 2 months ago LoaderInterface.php 2 months ago MoFileLoader.php 2 months ago PhpFileLoader.php 2 months ago PoFileLoader.php 2 months ago QtFileLoader.php 2 months ago XliffFileLoader.php 2 months ago YamlFileLoader.php 2 months ago
MoFileLoader.php
115 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\Loader;
12
13 use ProfilePressVendor\Symfony\Component\Translation\Exception\InvalidResourceException;
14 /**
15 * @copyright Copyright (c) 2010, Union of RAD http://union-of-rad.org (http://lithify.me/)
16 */
17 class MoFileLoader extends FileLoader
18 {
19 /**
20 * Magic used for validating the format of an MO file as well as
21 * detecting if the machine used to create that file was little endian.
22 */
23 public const MO_LITTLE_ENDIAN_MAGIC = 0x950412de;
24 /**
25 * Magic used for validating the format of an MO file as well as
26 * detecting if the machine used to create that file was big endian.
27 */
28 public const MO_BIG_ENDIAN_MAGIC = 0xde120495;
29 /**
30 * The size of the header of an MO file in bytes.
31 */
32 public const MO_HEADER_SIZE = 28;
33 /**
34 * Parses machine object (MO) format, independent of the machine's endian it
35 * was created on. Both 32bit and 64bit systems are supported.
36 *
37 * {@inheritdoc}
38 */
39 protected function loadResource(string $resource)
40 {
41 $stream = fopen($resource, 'r');
42 $stat = fstat($stream);
43 if ($stat['size'] < self::MO_HEADER_SIZE) {
44 throw new InvalidResourceException('MO stream content has an invalid format.');
45 }
46 $magic = unpack('V1', fread($stream, 4));
47 $magic = hexdec(substr(dechex(current($magic)), -8));
48 if (self::MO_LITTLE_ENDIAN_MAGIC == $magic) {
49 $isBigEndian = \false;
50 } elseif (self::MO_BIG_ENDIAN_MAGIC == $magic) {
51 $isBigEndian = \true;
52 } else {
53 throw new InvalidResourceException('MO stream content has an invalid format.');
54 }
55 // formatRevision
56 $this->readLong($stream, $isBigEndian);
57 $count = $this->readLong($stream, $isBigEndian);
58 $offsetId = $this->readLong($stream, $isBigEndian);
59 $offsetTranslated = $this->readLong($stream, $isBigEndian);
60 // sizeHashes
61 $this->readLong($stream, $isBigEndian);
62 // offsetHashes
63 $this->readLong($stream, $isBigEndian);
64 $messages = [];
65 for ($i = 0; $i < $count; ++$i) {
66 $pluralId = null;
67 $translated = null;
68 fseek($stream, $offsetId + $i * 8);
69 $length = $this->readLong($stream, $isBigEndian);
70 $offset = $this->readLong($stream, $isBigEndian);
71 if ($length < 1) {
72 continue;
73 }
74 fseek($stream, $offset);
75 $singularId = fread($stream, $length);
76 if (str_contains($singularId, "\x00")) {
77 [$singularId, $pluralId] = explode("\x00", $singularId);
78 }
79 fseek($stream, $offsetTranslated + $i * 8);
80 $length = $this->readLong($stream, $isBigEndian);
81 $offset = $this->readLong($stream, $isBigEndian);
82 if ($length < 1) {
83 continue;
84 }
85 fseek($stream, $offset);
86 $translated = fread($stream, $length);
87 if (str_contains($translated, "\x00")) {
88 $translated = explode("\x00", $translated);
89 }
90 $ids = ['singular' => $singularId, 'plural' => $pluralId];
91 $item = compact('ids', 'translated');
92 if (!empty($item['ids']['singular'])) {
93 $id = $item['ids']['singular'];
94 if (isset($item['ids']['plural'])) {
95 $id .= '|' . $item['ids']['plural'];
96 }
97 $messages[$id] = stripcslashes(implode('|', (array) $item['translated']));
98 }
99 }
100 fclose($stream);
101 return array_filter($messages);
102 }
103 /**
104 * Reads an unsigned long from stream respecting endianness.
105 *
106 * @param resource $stream
107 */
108 private function readLong($stream, bool $isBigEndian): int
109 {
110 $result = unpack($isBigEndian ? 'N1' : 'V1', fread($stream, 4));
111 $result = current($result);
112 return (int) substr($result, -8);
113 }
114 }
115