Fill::getFilledFields

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. Fill
  4. getFilledFields
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/fill.php
  • Класс: Bitrix\Crm\WebForm\Fill
  • Вызов: Fill::getFilledFields
private function getFilledFields()
{
	$fields = $this->form->getFieldsMap();
	$fileFieldsSizeMap = $this->getFilledFileFieldsSize();
	foreach ($fields as $fieldKey => $field)
	{
		$fieldName = $field['name'];
		$fieldValues = isset($this->values[$fieldName]) ? $this->values[$fieldName] : [];
		if (!is_array($fieldValues))
		{
			$fieldValues = [$fieldValues];
		}

		if ($field['type'] == 'file')
		{
			$files = [];

			$fileController = new SiteFormFileUploaderController([
				'formId' => strval($this->form->getId()),
				'secCode' => $this->form->get()['SECURITY_CODE'] ?? "",
				'fieldId' => $fieldName,
				'fieldsSize' => $fileFieldsSizeMap
			]);
			$uploader = new UI\FileUploader\Uploader($fileController);

			foreach ($fieldValues as $fileData)
			{
				if (!empty($fileData['token']))
				{
					$pendingFiles = $uploader->getPendingFiles([$fileData['token']]);
					$pendingFile = $pendingFiles->getAll()[$fileData['token']] ?? null;

					if (!$pendingFile)
					{
						continue;
					}

					$pendingFiles->makePersistent();
					$file = \CFile::MakeFileArray($pendingFile->getFileId());
				}
				else
				{
					$file = \CRestUtil::saveFile($fileData['content'], $fileData['name']);
				}

				$dailyLimiter = Limitations\DailyFileUploadLimit::instance();
				if ($dailyLimiter->isUsed())
				{
					$dailyLimiter->incrementByValue((int) $file['size'] ?? 0);
				}

				$files[] = $file;
			}

			$fieldValues = $files;
		}
		elseif ($field['type'] == 'phone')
		{
			$fieldValues = array_map(
				function ($value)
				{
					return preg_replace("/[^0-9+]/", '', $value);
				},
				$fieldValues
			);
		}
		elseif ($field['type'] === 'email')
		{
			$fieldValues = array_filter(
				$fieldValues,
				function ($value)
				{
					return check_email($value);
				}
			);
		}
		else if ($field['entity_field_name'] == 'COMMENTS')
		{
			$fieldValues = array_map(
				function ($value)
				{
					return nl2br(htmlspecialcharsbx($value));
				},
				$fieldValues
			);
		}

		$field['values'] = $fieldValues;
		$fields[$fieldKey] = $field;
	}

	return $fields;
}

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