<?php
namespace MailPoetVendor\Symfony\Component\Translation\Util;
if (!defined('ABSPATH')) exit;
class ArrayConverter
{
public static function expandToTree(array $messages)
{
$tree = [];
foreach ($messages as $id => $value) {
$referenceToElement =& self::getElementByPath($tree, \explode('.', $id));
$referenceToElement = $value;
unset($referenceToElement);
}
return $tree;
}
private static function &getElementByPath(array &$tree, array $parts)
{
$elem =& $tree;
$parentOfElem = null;
foreach ($parts as $i => $part) {
if (isset($elem[$part]) && \is_string($elem[$part])) {
$elem =& $elem[\implode('.', \array_slice($parts, $i))];
break;
}
$parentOfElem =& $elem;
$elem =& $elem[$part];
}
if ($elem && \is_array($elem) && $parentOfElem) {
self::cancelExpand($parentOfElem, $part, $elem);
}
return $elem;
}
private static function cancelExpand(array &$tree, $prefix, array $node)
{
$prefix .= '.';
foreach ($node as $id => $value) {
if (\is_string($value)) {
$tree[$prefix . $id] = $value;
} else {
self::cancelExpand($tree, $prefix . $id, $value);
}
}
}
}