• Модуль: webdav
  • Путь к файлу: ~/bitrix/modules/webdav/classes/general.php
  • Класс: __CParseProppatch
  • Вызов: __CParseProppatch::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 ;
			}
		}

		if ($depth == 1)
		{
			$this->mode = $name;
		}

		if ($depth == 3)
		{
			$val = '';
			if (isset($node[0]['#']) && is_scalar($node[0]['#']))
			{
				$val = $node[0]['#'];
			}
			$this->props[] = array(
				'name' => $name,
				'ns' => $ns,
				'status'=> 200,
				'val' => $val);
		}

		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);
		}
	}
}