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

		switch ($name)
		{
			case 'write':
				$this->locktype = $name;
				break;
			case 'exclusive':
			case 'shared':
				$this->lockscope = $name;
				break;
			case 'owner':
				if (is_array($node[0]["#"]) && array_key_exists("D:href", $node[0]["#"]))
					$node = $node[0]["#"]["D:href"];
				$slashPos = mb_strpos($node[0]['#'], '\');
				if ($slashPos === false)
				{
					$this->owner = $node[0]['#'];
				}
				else
				{
					$this->owner = mb_substr($node[0]['#'], $slashPos + 1);
				}

				break;
		}


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