• Модуль: 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);
		}
	}
}