• Модуль: wiki
  • Путь к файлу: ~/bitrix/modules/wiki/classes/general/wiki.php
  • Класс: CWiki
  • Вызов: CWiki::AddImage
function AddImage($ID, $IBLOCK_ID, $arImage)
{
	$arProperties = array();
	$arCurImages = array();
	$arCurImagesNew = array();
	$arAddImage = array();

	$rsProperties = CIBlockElement::GetProperty($IBLOCK_ID, $ID, 'value_id', 'asc', array('ACTIVE' => 'Y', 'CODE' => 'IMAGES'));
	while($arProperty = $rsProperties->Fetch())
	{
		if($arProperty['CODE'] == 'IMAGES')
		{
			$arProperties['IMAGES'] = $arProperty;
			$arCurImages[$arProperty['VALUE']] = '';
		}
	}

	$rsFile = CFile::GetList(array(), array('@ID' => implode(',', array_keys($arCurImages))));
	while($arFile = $rsFile->Fetch())
		$arCurImages[$arFile['ID']] = $arFile['ORIGINAL_NAME'];

	if(array_search($arImage['name'], $arCurImages) !== false)
	{
		$this->errorCollection->add(array(new Error(Loc::getMessage('WIKI_ERROR_IMAGE_ATTACHED'))));
		return false;
	}

	$obProperty = new CIBlockProperty();
	$res = true;
	if(!array_key_exists('IMAGES', $arProperties))
	{
		$res = $obProperty->Add(array(
			'IBLOCK_ID' => $IBLOCK_ID,
			'ACTIVE' => 'Y',
			'PROPERTY_TYPE' => 'F',
			'MULTIPLE' => 'Y',
			'NAME' => 'Images',
			'CODE' => 'IMAGES'
		));
	}

	$arFields = array();

	CFile::ResizeImage($arImage, array(
		'width' => COption::GetOptionString('wiki', 'image_max_width', 600),
		'height' => COption::GetOptionString('wiki', 'image_max_height', 600)
	));

	$arFields['PROPERTY_VALUES'] = array('IMAGES' => $arImage);
	$arFields['BLOCK_ID'] = $IBLOCK_ID;
	$arFields['ELEMENT_ID'] = $ID;

	$this->cIB_E->Update($ID, $arFields);

	$rsProperties = CIBlockElement::GetProperty($IBLOCK_ID, $ID, 'value_id', 'asc', array('ACTIVE' => 'Y', 'CODE' => 'IMAGES', 'EMPTY' => 'N'));
	while($arProperty = $rsProperties->Fetch())
	{
		if($arProperty['CODE'] == 'IMAGES')
			$arCurImagesNew[$arProperty['VALUE']] = '';
	}

	$arAddImage = array_diff(array_keys($arCurImagesNew), array_keys($arCurImages));
	$imgId = current($arAddImage);
	return $imgId;
}