- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_webdav_helper.php
- Класс: CVoxImplantWebDavHelper
- Вызов: CVoxImplantWebDavHelper::SaveFile
static function SaveFile($arHistory, $arFile, $siteID = SITE_ID)
{
if (!(IsModuleInstalled('iblock')
&& CModule::IncludeModule('iblock')))
{
return false;
}
$siteID = strval($siteID);
if($siteID === '')
{
if(!(defined('ADMIN_SECTION') && ADMIN_SECTION))
{
$siteID = SITE_ID;
}
else
{
$dbSites = CSite::GetList('sort', 'desc', array('DEF' => 'Y'));
while($arSite = $dbSites->Fetch())
{
$siteID = $arSite['LID'];
}
}
}
if($siteID === '')
{
return false;
}
$blockID = self::ResolveSharedFileIBlockID($siteID);
if($blockID <= 0)
{
return false;
}
$blockSectionID = self::EnsureSharedFileSectionCreated($blockID, $siteID);
if($blockSectionID <= 0)
{
return false;
}
$fileInfo = pathinfo($arFile['ORIGINAL_NAME']);
$fileInfo['filename'] = $arHistory['CALL_START_DATE']->format("Y-m-d_h-i-s__").$arHistory['PHONE_NUMBER'];
$elementName = isset($fileInfo['extension']) ? "{$fileInfo['filename']}.{$fileInfo['extension']}" : "{$fileInfo['filename']}";
$element = new CIBlockElement();
$alreadyExists = false;
$i = 0;
do
{
if($alreadyExists)
{
$i++;
$elementName = isset($fileInfo['extension']) ? "{$fileInfo['filename']}_{$i}.{$fileInfo['extension']}" : "{$fileInfo['filename']}_{$i}";
}
$dbRes = $element->GetList(array(), array('=NAME' => $elementName, 'IBLOCK_ID'=> $blockID, 'IBLOCK_SECTION_ID'=> $blockSectionID), false, array('nTopCount'=>1), array('ID'));
$arRes = $dbRes ? $dbRes->Fetch() : false;
$alreadyExists = $arRes !== false;
} while($alreadyExists);
$arFields = array(
'ACTIVE' => 'Y',
'IBLOCK_ID' => $blockID,
'IBLOCK_SECTION_ID' => $blockSectionID,
'NAME' => $elementName,
'WF_COMMENTS' => '',
'PROPERTY_VALUES' => array(
'FILE' => $arFile,
'WEBDAV_SIZE' => $arFile['FILE_SIZE']
),
);
$elementId = $element->Add($arFields, false, true, false);
$arRights = Array('G1');
if ($arHistory['PORTAL_USER_ID'] > 0)
$arRights[] = 'U'.$arHistory['PORTAL_USER_ID'];
CWebDavIblock::appendRightsOnElements(Array(Array(
'ID' => $elementId,
'IBLOCK_ID' => $blockID,
)), Array(
'W' => $arRights
));
return $elementId;
}