- Модуль: webdav
- Путь к файлу: ~/bitrix/modules/webdav/classes/general.php
- Класс: __CParsePropfind
- Вызов: __CParsePropfind::parse_array
function parse_array(&$array, $depth = 0)
{
if (!is_array($array))
return;
foreach ($array as $name => $node)
{
$ns = '';
if (isset($node[0]))
{
$this->parse_ns($node[0]);
}
else
{
$this->parse_ns($node);
}
if (mb_strpos($name, ':') !== false)
{
foreach ($this->namespaces as $nscode => $ns)
{
if (mb_strpos($name, $nscode.':') !== false)
{
$name = str_replace($nscode.':', '', $name);
break;
}
}
if ($ns == '')
{
$this->success = false;
return ;
}
}
else
{
$ns = 'DAV:';
}
if ($depth == 1)
{
if ($name == 'allprop')
$this->props = 'all';
if ($name == 'propname')
$this->props = 'names';
}
if ($depth == 2)
{
$prop = array('name' => $name);
if ($ns)
{
$prop['xmlns'] = $ns;
}
$this->props[] = $prop;
}
if (array_key_exists('#', $node) && is_array($node['#']) && sizeof($node['#']) > 0)
{
$this->parse_array($node['#'], $depth + 1);
}
elseif (isset($node[0]['#']) && is_array($node[0]['#']) && sizeof($node[0]['#']) > 0)
{
$this->parse_array($node[0]['#'], $depth + 1);
}
}
}