• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_message_param.php
  • Класс: CIMMessageParamAttach
  • Вызов: CIMMessageParamAttach::GetAttachByJson
static function GetAttachByJson($array)
{
	if (is_string($array))
	{
		$array = CUtil::JsObjectToPhp($array);
	}
	if (!is_array($array))
	{
		return null;
	}

	$color = CIMMessageParamAttach::CHAT;
	$attach = null;
	$description = '';

	if (isset($array['BLOCKS']))
	{
		$blocks = $array['BLOCKS'];

		if (isset($array['COLOR']))
		{
			$color = $array['COLOR'];
		}
		if (isset($array['DESCRIPTION']))
		{
			$description = $array['DESCRIPTION'];
		}
	}
	else
	{
		$blocks = $array;
	}

	$attach = new CIMMessageParamAttach();
	$attach->SetColor($color);
	$attach->SetDescription($description);
	foreach ($blocks as $data)
	{
		if (isset($data['USER']))
		{
			if (is_array($data['USER']) && !BitrixMainTypeCollection::isAssociative($data['USER']))
			{
				foreach ($data['USER'] as $dataItem)
				{
					$attach->AddUser($dataItem);
				}
			}
			else
			{
				$attach->AddUser($data['USER']);
			}
		}
		else if (isset($data['LINK']))
		{
			if (is_array($data['LINK']) && !BitrixMainTypeCollection::isAssociative($data['LINK']))
			{
				foreach ($data['LINK'] as $dataItem)
				{
					$attach->AddLink($dataItem);
				}
			}
			else
			{
				$attach->AddLink($data['LINK']);
			}
		}
		else if (isset($data['RICH_LINK']))
		{
			if (is_array($data['RICH_LINK']) && !BitrixMainTypeCollection::isAssociative($data['RICH_LINK']))
			{
				foreach ($data['RICH_LINK'] as $dataItem)
				{
					$attach->AddRichLink($dataItem);
				}
			}
			else
			{
				$attach->AddRichLink($data['RICH_LINK']);
			}
		}
		else if (isset($data['MESSAGE']))
		{
			if (is_array($data['MESSAGE']) && isset($data['MESSAGE']['TEXT']))
			{
				$attach->AddMessage($data['MESSAGE']['TEXT'], $data['MESSAGE']['AS_DESCRIPTION'] === 'Y');
			}
			else
			{
				$attach->AddMessage($data['MESSAGE']);
			}
		}
		else if (isset($data['GRID']))
		{
			$attach->AddGrid($data['GRID']);
		}
		else if (isset($data['IMAGE']))
		{
			if (is_array($data['IMAGE']) && BitrixMainTypeCollection::isAssociative($data['IMAGE']))
			{
				$data['IMAGE'] = Array($data['IMAGE']);
			}
			$attach->AddImages($data['IMAGE']);
		}
		else if (isset($data['FILE']))
		{
			if (is_array($data['FILE']) && BitrixMainTypeCollection::isAssociative($data['FILE']))
			{
				$data['FILE'] = Array($data['FILE']);
			}
			$attach->AddFiles($data['FILE']);
		}
		else if (isset($data['DELIMITER']))
		{
			$attach->AddDelimiter($data['DELIMITER']);
		}
	}

	return $attach->IsEmpty()? null: $attach;
}