• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/item/field/collection/item.php
  • Класс: BitrixTasksItemFieldCollectionItem
  • Вызов: Item::createValue
public function createValue($value, $key, $item)
{
	$collectionClass = static::getItemCollectionClass();

	if(!$collectionClass::isA($value))
	{
		// need to make one...
		$legalValue = new $collectionClass();
		$itemClass = static::getItemClass();

		// i can convert (array or simple collection) of (arrays or collections or items) into $collectionClass
		if(is_array($value) || BitrixTasksUtilCollection::isA($value))
		{
			/**
			 * @var BitrixTasksItem|BitrixTasksUtilCollection|array $v
			 */
			foreach($value as $k => $v)
			{
				if($itemClass::isA($v))
				{
					$legalValue[$k] = $v;
				}
				elseif(is_array($v))
				{
					$legalValue[$k] = new $itemClass($v);
				}
				elseif(BitrixTasksUtilCollection::isA($v))
				{
					$legalValue[$k] = new $itemClass($v->toArray());
				}
			}
		}

		$value = $legalValue;
	}

	if(count($value))
	{
		/**
		 * @var BitrixTasksItemSubItem $v
		 */
		foreach($value as $v)
		{
			$v->setParent($item);
		}
	}

	return $value;
}