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