Manager::getEndpointFromFields

  1. Bitrix24 API (v. 23.675.0)
  2. sender
  3. Manager
  4. getEndpointFromFields
  • Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/connector/manager.php
  • Класс: Bitrix\Sender\Connector\Manager
  • Вызов: Manager::getEndpointFromFields
static function getEndpointFromFields(array $postData)
{
	$result = null;
	$fieldsTmp = array();

	foreach($postData as $moduleId => $settings)
	{
		if (is_numeric($moduleId))
		{
			$moduleId = '';
		}

		foreach($settings as $code => $items)
		{
			foreach($items as $num => $field)
			{
				if (isset($fieldsTmp[$moduleId][$code][$num]) && is_array($field))
				{
					foreach($field as $fieldName => $fieldValue)
					{
						if(!isset($fieldsTmp[$moduleId][$code][$num][$fieldName]))
						{
							$fieldsTmp[$moduleId][$code][$num][$fieldName] = $fieldValue;
						}
						else
						{
							if(!is_array($fieldsTmp[$moduleId][$code][$num][$fieldName]))
							{
								$fieldsTmp[$moduleId][$code][$num][$fieldName] = array(
									$fieldsTmp[$moduleId][$code][$num][$fieldName]
								);
							}

							if(is_array($fieldValue))
							{
								$fieldsTmp[$moduleId][$code][$num][$fieldName] = array_merge(
									$fieldsTmp[$moduleId][$code][$num][$fieldName],
									$fieldValue
								);
							}
							else
							{
								$fieldsTmp[$moduleId][$code][$num][$fieldName][] = $fieldValue;
							}

						}
					}
				}
				else
				{
					if ($field && is_string($field))
					{
						try
						{
							$field = Json::decode($field);
						}
						catch (\Exception $exception)
						{
						}
					}
					else if ($field && is_array($field))
					{
						$fieldsTmp[$moduleId][$code][$num] = $field;
						continue;
					}
					else
					{
						$field = null;
					}
					$fieldsTmp[$moduleId][$code][$num] = $field;
				}
			}
		}
	}


	foreach($fieldsTmp as $moduleId => $settings)
	{
		if(is_numeric($moduleId))
		{
			$moduleId = '';
		}

		foreach($settings as $code => $items)
		{
			foreach($items as $filter => $fields)
			{
				if (!is_array($result))
				{
					$result = array();
				}

				$result[] = array(
					'MODULE_ID' => $moduleId,
					'CODE' => $code,
					'FIELDS' => $fields,
					'FILTER_ID' => $moduleId . "_" . $code . "_" . $filter,
				);
			}
		}
	}

	return $result;
}

Добавить комментарий