3namespace Bitrix\Iblock\BizprocType;
5use Bitrix\Bizproc\BaseType\Base;
6use Bitrix\Bizproc\FieldType;
12 class UserTypePropertyDiskFile
extends UserTypeProperty
14 private const MOBILE_COMPONENT_NAME =
'bitrix:mobile.iblock.bizproctype.diskfile';
19 public static function getType()
21 return FieldType::INT;
24 public static function formatValueMultiple(FieldType $fieldType, $value, $format =
'printable')
26 if (!is_array($value) || is_array($value) && \CBPHelper::isAssociativeArray($value))
29 foreach ($value as
$k => $v)
31 $value[
$k] = static::formatValuePrintable($fieldType, $v);
34 return implode(static::getFormatSeparator($format), $value);
37 public static function formatValueSingle(FieldType $fieldType, $value, $format =
'printable')
39 return static::formatValueMultiple($fieldType, $value, $format);
47 protected static function formatValuePrintable(FieldType $fieldType, $value)
49 $iblockId = self::getIblockId($fieldType);
51 $property = static::getUserType($fieldType);
52 if (array_key_exists(
'GetUrlAttachedFileWorkflow', $property))
54 return call_user_func_array($property[
'GetUrlAttachedFileWorkflow'],
array(
$iblockId, $value));
68 public static function convertTo(FieldType $fieldType, $value, $toTypeClass)
70 if (is_array($value) && isset($value[
'VALUE']))
76 $type = $toTypeClass::getType();
80 $diskFile = File::getById($value);
81 $value = $diskFile? $diskFile->getFileId() :
null;
90 public static function convertValueMultiple(FieldType $fieldType, $value, $toTypeClass)
92 return array_values(parent::convertValueMultiple($fieldType, $value, $toTypeClass));
99 public static function getConversionMap()
108 public static function canRenderControl($renderMode)
110 if ($renderMode & FieldType::RENDER_MODE_MOBILE)
112 return (static::getMobileControlRenderer() !==
null);
115 return parent::canRenderControl($renderMode);
126 public static function renderControlSingle(FieldType $fieldType,
array $field, $value, $allowSelection, $renderMode)
128 return static::renderControlMultiple($fieldType, $field, $value, $allowSelection, $renderMode);
139 public static function renderControlMultiple(FieldType $fieldType,
array $field, $value, $allowSelection, $renderMode)
143 $selectorValue =
null;
153 return static::renderControlSelector($field, $selectorValue,
true,
'', $fieldType);
156 if ($renderMode & FieldType::RENDER_MODE_DESIGNER)
159 if ($renderMode & FieldType::RENDER_MODE_MOBILE)
161 return self::renderMobileControl($fieldType, $field, $value);
164 $userType = static::getUserType($fieldType);
165 $iblockId = self::getIblockId($fieldType);
167 if (!empty($userType[
'GetPublicEditHTML']))
169 if (is_array($value) && isset($value[
'VALUE']))
172 $fieldName = static::generateControlName($field);
173 $renderResult = call_user_func_array(
174 $userType[
'GetPublicEditHTML'],
178 'IS_REQUIRED' => $fieldType->isRequired()?
'Y' :
'N',
179 'PROPERTY_USER_TYPE' => $userType
181 array(
'VALUE' => $value),
183 'FORM_NAME' => $field[
'Form'],
184 'VALUE' => $fieldName,
192 $renderResult = static::renderControl($fieldType, $field, $value, $allowSelection, $renderMode);
194 return $renderResult;
197 public static function extractValueSingle(FieldType $fieldType,
array $field,
array $request)
199 return static::extractValueMultiple($fieldType, $field,
$request);
202 public static function extractValueMultiple(FieldType $fieldType,
array $field,
array $request)
204 if (defined(
'BX_MOBILE'))
206 return self::extractValueMobile($fieldType, $field,
$request);
209 return parent::extractValueMultiple($fieldType, $field,
$request);
212 private static function getIblockId(FieldType $fieldType)
214 $documentType = $fieldType->getDocumentType();
215 $type = explode(
'_', $documentType[2]);
216 return intval(
$type[1]);
222 if (is_array($value) && isset($value[
'VALUE']))
232 $property = static::getUserType($fieldType);
233 $iblockId = self::getIblockId($fieldType);
235 if (array_key_exists(
'AttachFilesWorkflow', $property))
237 return call_user_func_array($property[
'AttachFilesWorkflow'],
array(
$iblockId, $value));
243 private static function extractValueMobile(FieldType $fieldType,
array $field,
array $request)
245 $renderer = self::getMobileControlRenderer();
251 $diskFileIds = call_user_func(
252 [$renderer,
'extractValues'],
253 static::generateControlName($field),
257 $property = static::getUserType($fieldType);
258 $iblockId = self::getIblockId($fieldType);
260 if (array_key_exists(
'AttachFilesWorkflow', $property))
262 foreach ($diskFileIds as
$i => $diskFileId)
264 $diskFileIds[
$i] = call_user_func_array(
265 $property[
'AttachFilesWorkflow'], [
$iblockId, $diskFileId]
270 if (!$fieldType->isMultiple())
272 return $diskFileIds ? end($diskFileIds) : null;
278 public static function clearValueSingle(FieldType $fieldType, $value)
280 static::clearValueMultiple($fieldType, $value);
283 public static function clearValueMultiple(FieldType $fieldType, $values)
285 if(!is_array($values))
287 $values =
array($values);
290 $property = static::getUserType($fieldType);
291 $iblockId = self::getIblockId($fieldType);
293 if (array_key_exists(
'DeleteAttachedFiles', $property))
295 call_user_func_array($property[
'DeleteAttachedFiles'],
array(
$iblockId, $values));
299 public static function toSingleValue(FieldType $fieldType, $value)
301 if (is_array($value) && isset($value[
'VALUE']))
305 if (is_array($value) && isset($value[0]))
313 protected static function getMobileControlRenderer(): ?string
316 $className = \CBitrixComponent::includeComponentClass(self::MOBILE_COMPONENT_NAME);
319 return $className ?:
null;
322 protected static function renderMobileControl(FieldType $fieldType,
array $field, $value): string
328 self::MOBILE_COMPONENT_NAME,
331 'INPUT_NAME' => static::generateControlName($field),
332 'INPUT_VALUE' => $value,
333 'MULTIPLE' => $fieldType->isMultiple() ?
'Y' :
'N'
337 return ob_get_clean();
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
static requireModule($moduleName)
static isExpression($text)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
extractValue(array $fieldProperties, $value)