CCrmInvoiceRestService::tryInternalizeDiskFileField

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmInvoiceRestService
  4. tryInternalizeDiskFileField
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice_invoice.php
  • Класс: \CCrmInvoiceRestService
  • Вызов: CCrmInvoiceRestService::tryInternalizeDiskFileField
static function tryInternalizeDiskFileField(&$fields, $fieldName, $multiple = false)
{
	if(!isset($fields[$fieldName]))
	{
		return false;
	}

	$result = array();

	$values = $multiple && self::isIndexedArray($fields[$fieldName]) ? $fields[$fieldName] : array($fields[$fieldName]);
	foreach($values as &$v)
	{
		if(!self::isAssociativeArray($v))
		{
			continue;
		}

		$fileID = isset($v['id']) ? intval($v['id']) : 0;
		$removeElement = isset($v['remove']) && is_string($v['remove']) && mb_strtoupper($v['remove']) === 'Y';
		$fileData = isset($v['fileData']) ? $v['fileData'] : '';

		if(!self::isIndexedArray($fileData))
		{
			continue;
		}

		$fileDataLength = count($fileData);
		if($fileDataLength === 0)
		{
			continue;
		}

		if($fileDataLength === 1)
		{
			$fileName = '';
			$fileContent = $fileData[0];
		}
		else
		{
			$fileName = $fileData[0];
			$fileContent = $fileData[1];
		}

		if(is_string($fileContent) && $fileContent !== '')
		{
			$folder = DiskManager::ensureFolderCreated(StorageFileType::Rest);
			if(!$folder)
			{
				throw new RestException('Could not create disk folder for rest files.');
			}

			$fileInfo = CRestUtil::saveFile($fileContent, $fileName);
			if(is_array($fileInfo))
			{
				$file = $folder->uploadFile(
					$fileInfo,
					array('NAME' => $fileName, 'CREATED_BY' => self::getCurrentUserID()),
					array(),
					true
				);
				unlink($fileInfo['tmp_name']);

				if(!$file)
				{
					throw new RestException('Could not create disk file.');
				}

				$result[] = array('FILE_ID' => $file->getId());
			}
		}
		elseif($fileID > 0 && $removeElement)
		{
			$result[] = array('OLD_FILE_ID' => $fileID, 'DELETE' => true);
		}
	}
	unset($v);

	if($multiple)
	{
		$fields[$fieldName] = $result;
		return true;
	}
	elseif(!empty($result))
	{
		$fields[$fieldName] = $result[0];
		return true;
	}

	unset($fields[$fieldName]);
	return false;
}

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