/var/www/vhosts/ihelp.ro/_OLD/vendor/cakephp/cakephp/src/I18n/Parser
Edit: /var/www/vhosts/ihelp.ro/_OLD/vendor/cakephp/cakephp/src/I18n/Parser/MoFileParser.php (5251B)
_readLong($stream, $isBigEndian);
$offsetId = $this->_readLong($stream, $isBigEndian);
$offsetTranslated = $this->_readLong($stream, $isBigEndian);
// Offset to start of translations
fread($stream, 8);
$messages = [];
for ($i = 0; $i < $count; $i++) {
$pluralId = null;
$context = null;
$plurals = null;
fseek($stream, $offsetId + $i * 8);
$length = $this->_readLong($stream, $isBigEndian);
$offset = $this->_readLong($stream, $isBigEndian);
if ($length < 1) {
continue;
}
fseek($stream, $offset);
$singularId = fread($stream, $length);
if (strpos($singularId, "\x04") !== false) {
[$context, $singularId] = explode("\x04", $singularId);
}
if (strpos($singularId, "\000") !== false) {
[$singularId, $pluralId] = explode("\000", $singularId);
}
fseek($stream, $offsetTranslated + $i * 8);
$length = $this->_readLong($stream, $isBigEndian);
$offset = $this->_readLong($stream, $isBigEndian);
fseek($stream, $offset);
$translated = fread($stream, $length);
if ($pluralId !== null || strpos($translated, "\000") !== false) {
$translated = explode("\000", $translated);
$plurals = $pluralId !== null ? $translated : null;
$translated = $translated[0];
}
$singular = $translated;
if ($context !== null) {
$messages[$singularId]['_context'][$context] = $singular;
if ($pluralId !== null) {
$messages[$pluralId]['_context'][$context] = $plurals;
}
continue;
}
$messages[$singularId]['_context'][''] = $singular;
if ($pluralId !== null) {
$messages[$pluralId]['_context'][''] = $plurals;
}
}
fclose($stream);
return $messages;
}
/**
* Reads an unsigned long from stream respecting endianess.
*
* @param resource $stream The File being read.
* @param bool $isBigEndian Whether or not the current platform is Big Endian
* @return int
*/
protected function _readLong($stream, $isBigEndian): int
{
$result = unpack($isBigEndian ? 'N1' : 'V1', fread($stream, 4));
$result = current($result);
return (int)substr((string)$result, -8);
}
}