• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/imap/bodystructure.php
  • Класс: BitrixMailImapBodyStructure
  • Вызов: BodyStructure::__construct
public function __construct(array $bodystructure, $number = null)
{
	$this->number = $number;
	$this->data = &$bodystructure;

	if (is_array($bodystructure[0]))
	{
		$this->isMultipart = true;

		$this->partsCount = count($bodystructure[0]);
		for ($i = 0; $i < $this->partsCount; $i++)
		{
			$bodystructure[0][$i] = new static(
				$bodystructure[0][$i],
				(string) (!is_null($number) ? sprintf('%s.%u', $number, $i + 1) : $i + 1)
			);
		}
	}
	else
	{
		if (is_null($number))
		{
			$this->number = 1;
		}

		$bodystructure[self::TYPE_INDEX] = $this->formatProperty($bodystructure[self::TYPE_INDEX], self::TYPE_INDEX);
		$bodystructure[self::ENCODING_INDEX] = $this->formatProperty($bodystructure[self::ENCODING_INDEX], self::ENCODING_INDEX);
	}

	$bodystructure[self::SUBTYPE_INDEX] = $this->formatProperty($bodystructure[self::SUBTYPE_INDEX], self::SUBTYPE_INDEX);

	if (!empty($bodystructure[2]) && is_array($bodystructure[2]))
	{
		$params = array();

		$count = count($bodystructure[2]);
		for ($i = 0; $i < $count; $i += 2)
		{
			$params[mb_strtolower($bodystructure[2][$i])] = $bodystructure[2][$i + 1];
		}

		$bodystructure[2] = $params;
	}

	$disposition = &$bodystructure[$this->getDispositionIndex()];

	$disposition[0] = mb_strtolower($disposition[0]);
	if (!empty($disposition[1]) && is_array($disposition[1]))
	{
		$params = array();

		$count = count($disposition[1]);
		for ($i = 0; $i < $count; $i += 2)
		{
			$params[mb_strtolower($disposition[1][$i])] = $disposition[1][$i + 1];
		}

		$disposition[1] = $params;
	}
}