• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/internals/dataexport.php
  • Класс: Bitrix\Sender\Internals\DataExport
  • Вызов: DataExport::toCsv
static function toCsv(array $columns, $list, $rowCallback = null)
{
	self::flushHeaders();

	$eol = "\n";
	$columnNames = [];
	$isFirstLinePrinted = false;

	if (defined('BX_UTF') && BX_UTF)
	{
		echo chr(239) . chr(187) . chr(191);
	}

	foreach ($list as $item)
	{
		if ($rowCallback)
		{
			$item = call_user_func_array($rowCallback, [$item]);
		}

		$row = [];
		foreach ($columns as $column)
		{
			if (!array_key_exists($column['id'], $item))
			{
				continue;
			}

			if (!$isFirstLinePrinted)
			{
				$columnNames[] = str_replace('"', '""', $column['name']);
			}

			$row[] = str_replace('"', '""', trim($item[$column['id']]));
		}

		if (!$isFirstLinePrinted)
		{
			echo '"' . implode('";"', $columnNames) . '"';
			$isFirstLinePrinted = true;
		}
		echo $eol;
		echo '"' . implode('";"', $row) . '"';
	}

	exit;
}