- Модуль: 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;
}