Beispiel #1
0
function updateResult($ID_RESULT, $STEP, $RES, $MSG){
	if (!CModule::IncludeModule("iblock")):
		return false;
	endif;
	global $USER;
	$actionStr = getActionStr($STEP);
	if ($RES == "success"):
		$STATUS = "success";
		$MESSAGE = "Успешно";
	elseif ($RES == "fail"):
		$STATUS = "fail";
		$MESSAGE = "Ошибка";
	else:
		$STATUS = "processed";
		$MESSAGE = "Исполняется";
	endif;
	if ($MSG):
		$MESSAGE = $MSG;
	endif;
	$PROP = array();
	$PROP = array(
		"ACTION" => $actionStr,
		"STATUS" => $STATUS,
		"MESSAGE" => $MESSAGE,
		"OFF_TIME" => mktime(),
		"TYPE" => $STEP
		);
	foreach ($PROP as $code => $value) :
		CIBlockElement::SetPropertyValues($ID_RESULT, 23, $value, $code);
	endforeach;
	return $ID_RESULT;
}
 public function Execute()
 {
     if (!CModule::IncludeModule("forum")) {
         return CBPActivityExecutionStatus::Closed;
     }
     if (!CModule::IncludeModule("iblock")) {
         return CBPActivityExecutionStatus::Closed;
     }
     $forumId = intval($this->ForumId);
     if ($forumId <= 0) {
         return CBPActivityExecutionStatus::Closed;
     }
     $rootActivity = $this->GetRootActivity();
     $documentId = $rootActivity->GetDocumentId();
     $iblockId = $this->IBlockId;
     $dbResult = CIBlockElement::GetProperty($iblockId, $documentId[2], false, false, array("CODE" => "FORUM_TOPIC_ID"));
     $arResult = $dbResult->Fetch();
     if (!$arResult) {
         $obProperty = new CIBlockProperty();
         $obProperty->Add(array("IBLOCK_ID" => $iblockId, "ACTIVE" => "Y", "PROPERTY_TYPE" => "N", "MULTIPLE" => "N", "NAME" => "Forum topic", "CODE" => "FORUM_TOPIC_ID"));
         $obProperty->Add(array("IBLOCK_ID" => $iblockId, "ACTIVE" => "Y", "PROPERTY_TYPE" => "N", "MULTIPLE" => "N", "NAME" => "Forum message count", "CODE" => "FORUM_MESSAGE_CNT"));
         $dbResult = CIBlockElement::GetProperty($iblockId, $documentId[2], false, false, array("CODE" => "FORUM_TOPIC_ID"));
         $arResult = $dbResult->Fetch();
     }
     $forumTopicId = intval($arResult["VALUE"]);
     $arForumUserTmp = $this->ForumUser;
     $arForumUser = CBPHelper::ExtractUsers($arForumUserTmp, $documentId, true);
     $forumUserId = 1;
     $forumUserName = "******";
     if ($arForumUser != null) {
         $forumUserId = $arForumUser;
         $dbResult = CUser::GetByID($forumUserId);
         if ($arResult = $dbResult->Fetch()) {
             $forumUserName = CUser::FormatName(COption::GetOptionString("bizproc", "name_template", CSite::GetNameFormat(false), SITE_ID), $arResult, true);
         }
     }
     $newTopic = "N";
     if ($forumTopicId <= 0) {
         $documentService = $this->workflow->GetService("DocumentService");
         $document = $documentService->GetDocument($documentId);
         $newTopic = "Y";
         $arFields = array("TITLE" => $document["NAME"], "FORUM_ID" => $forumId, "USER_START_ID" => $forumUserId, "USER_START_NAME" => $forumUserName, "LAST_POSTER_NAME" => $forumUserName, "APPROVED" => "Y");
         $forumTopicId = CForumTopic::Add($arFields);
         CIBlockElement::SetPropertyValues($documentId[2], $iblockId, $forumTopicId, "FORUM_TOPIC_ID");
     }
     $arFields = array("POST_MESSAGE" => $this->ForumPostMessage, "AUTHOR_ID" => $forumUserId, "AUTHOR_NAME" => $forumUserName, "FORUM_ID" => $forumId, "TOPIC_ID" => $forumTopicId, "APPROVED" => "Y", "NEW_TOPIC" => $newTopic, "PARAM2" => $documentId[2]);
     $forumMessageId = CForumMessage::Add($arFields, false, array("SKIP_INDEXING" => "Y", "SKIP_STATISTIC" => "N"));
     return CBPActivityExecutionStatus::Closed;
 }
Beispiel #3
0
 /**
  * <p>Удаляет изображение из Wiki-страницы. Динамичный метод.</p>
  *
  *
  * @param int $IMAGE_ID  Идентификатор изображения.
  *
  * @param int $ID  Идентификатор Wiki-страницы. До версии 10.0.0 назывался <b>ELEMENT_ID</b>
  *
  * @param int $IBLOCK_ID  Идентификатор Инфоблока.
  *
  * @return void 
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?<br>
  * // Удалим изображение с идентификатором 5 из страницы с идентификатором 13 из инфо.блока с идентификатором 2
  * $IMAGE_ID = 5;
  * $ID = 13;
  * $IBLOCK_ID = 2;
  * 
  * $CWiki = new CWiki();
  * $CWiki-&gt;DeleteImage($IMAGE_ID, $ID, $IBLOCK_ID);<br>?&gt;
  * </pre>
  *
  *
  * <h4>See Also</h4> 
  * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/wiki/classes/cwiki/AddImage.php">CWiki::AddImage</a> </li> </ul><a
  * name="examples"></a>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/wiki/classes/cwiki/DeleteImage.php
  * @author Bitrix
  */
 public function DeleteImage($IMAGE_ID, $ID, $IBLOCK_ID)
 {
     $rsProperties = CIBlockElement::GetProperty($IBLOCK_ID, $ID, 'value_id', 'asc', array('ACTIVE' => 'Y', 'CODE' => 'IMAGES'));
     $_iPropertyId = 0;
     while ($arProperty = $rsProperties->Fetch()) {
         if ($arProperty['CODE'] == 'IMAGES' && $arProperty['VALUE'] == $IMAGE_ID) {
             $_iPropertyId = $arProperty['PROPERTY_VALUE_ID'];
             break;
         }
     }
     if (!empty($_iPropertyId)) {
         $arPropertyValues = array();
         $arPropertyValues[$_iPropertyId] = array('VALUE' => array('del' => 'Y'), 'DESCRIPTION' => '');
         $this->cIB_E->SetPropertyValues($ID, $IBLOCK_ID, $arPropertyValues, 'IMAGES');
     }
 }
Beispiel #4
0
function OnBeforeUserUpdateHandler(&$arFields)
{
    if (isset($arFields['UF_GROUPS']) && in_array(1, $arFields['UF_GROUPS'])) {
        $user = CUser::GetByID($arFields['ID'])->Fetch();
        if (!in_array(1, $user['UF_GROUPS'])) {
            AddMessage2Log('update users');
            CModule::IncludeModule("iblock");
            CIBlockElement::SetPropertyValues(1, 4, getKentLabUsers(), "USERS");
            $groups = CUser::GetUserGroup($user['UF_USER_PARENT']);
            $fields = array_flip(getValuesList('UF_STATUS', 'USER', 'ID'));
            if (intval($user['UF_USER_PARENT']) > 0 && $fields[$user['UF_STATUS']] == 4) {
                if (in_array(8, $groups)) {
                    changeUserStatus($user['ID'], $user['UF_USER_PARENT'], $user['UF_STATUS'], 6, "Регистрация в KENT Lab");
                }
            }
        }
    }
}
Beispiel #5
0
 $arFile = CFile::MakeFileArray($full_path);
 $arFile['MODULE_ID'] = 'main';
 $fid = CFile::SaveFile($arFile, "selfie");
 $Fields = array("PERSONAL_PHOTO" => CFile::MakeFileArray($fid), "UF_STATUS" => 32, "UF_EVENT" => $_REQUEST['UF_EVENT']);
 $userType = $USER->GetByID($_REQUEST['UF_USER'])->Fetch();
 $user = new CUser();
 $res = $user->Update($_REQUEST['UF_USER'], $Fields);
 $contact_type_ret = array(28 => 1, 29 => 2, 30 => 3, 31 => 4, 32 => 5, 45 => 6);
 $arKpi = CIBlockElement::GetList(array(), array("IBLOCK_ID" => 17, "PROPERTY_USER_ID" => $USER->GetID(), "><DATE_ACTIVE_FROM" => array(date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT")), mktime(0, 0, 0, date("n"), 1, date("Y"))), date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT")), mktime(0, 0, 0, date("n") + 1, 1, date("Y"))))), false, false, array("*"));
 while ($obKpi = $arKpi->GetNextElement()) {
     $kpi = $obKpi->GetFields();
 }
 if ($kpi["ID"] > 0) {
     $kpiCount = CIBlockElement::GetProperty(17, $kpi["ID"], array("sort" => "asc"), array("CODE" => "KPI_5"))->Fetch();
     $kpiCount["VALUE"]++;
     CIBlockElement::SetPropertyValues($kpi["ID"], 17, $kpiCount["VALUE"], "KPI_5");
 } else {
     $kpi = array(1 => 103, 2 => 104, 3 => 105, 4 => 106, 5 => 107);
     $el = new CIBlockElement();
     $PROP = array();
     $PROP[101] = $USER->GetID();
     $PROP[$kpi[5]] = 1;
     $arLoadProductArray = array("IBLOCK_ID" => 17, "PROPERTY_VALUES" => $PROP, "NAME" => $USER->GetLogin(), "DATE_ACTIVE_FROM" => date("Y.m.d H:i"));
     $el->Add($arLoadProductArray);
 }
 $data = array("UF_USER" => $_REQUEST['UF_USER'], "UF_AMPLIFIER" => $USER->GetID(), "UF_EVENT" => $_REQUEST['UF_EVENT'] ? $_REQUEST['UF_EVENT'] : 0, "UF_DATE_TIME" => date("d.m.Y H:i:s"), "UF_ACTION_CODE" => 103, "UF_ACTION_TEXT" => "change_status", "UF_TYPE" => $contact_type_ret[$userType["UF_STATUS"]], "UF_TYPE_2" => 5);
 addToHLBlock(4, $data);
 $data = array('UF_AMPLIFIER' => $USER->GetID(), 'UF_USER' => $_REQUEST['UF_USER'], 'UF_EVENT' => $_REQUEST['UF_EVENT'] ? $_REQUEST['UF_EVENT'] : 0, 'UF_IMAGE' => $fid);
 addToHLBlock(3, $data);
 // Запись в лог об изменение статуса пользователя
 $logKPI::add(array('UF_USER' => IntVal($_REQUEST['UF_USER']), 'UF_AMPLIFIER' => $USER->GetID(), 'UF_EVENT' => $_REQUEST['UF_EVENT'] ? $_REQUEST['UF_EVENT'] : 0, 'UF_DATE_TIME' => date("Y-m-d H:i:s"), 'UF_ACTION_CODE' => 103, 'UF_ACTION_TEXT' => "change_status", 'UF_TYPE' => $arUserType[1][getUserType(IntVal($_REQUEST['UF_USER']))], 'UF_TYPE_2' => $arUserType[2][5]));
Beispiel #6
0
 } else {
     CModule::IncludeModule("photogallery");
     CModule::IncludeModule("iblock");
     $arSections = array();
     @set_time_limit(0);
     foreach ($_REQUEST["items"] as $item) {
         $db_res = CIBlockElement::GetList(array(), array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ID" => $item), false, false, array("ID", "ACTIVE", "IBLOCK_SECTION_ID", "PROPERTY_REAL_PICTURE"));
         if (!($db_res && ($res = $db_res->Fetch()))) {
             continue;
         }
         if ($_REQUEST["ACTION"] == "approve" || $_REQUEST["ACTION"] == "not_approve") {
             if ($_REQUEST["ACTION"] == "approve") {
                 CIBlockElement::SetPropertyValues($item, $arParams["IBLOCK_ID"], "Y", "APPROVE_ELEMENT");
                 CIBlockElement::SetPropertyValues($item, $arParams["IBLOCK_ID"], "Y", "PUBLIC_ELEMENT");
             } else {
                 CIBlockElement::SetPropertyValues($item, $arParams["IBLOCK_ID"], "N", "APPROVE_ELEMENT");
             }
             if ($res["ACTIVE"] != "Y") {
                 $_REQUEST["ACTION"] = "active";
             }
             PClearComponentCacheEx($arParams["IBLOCK_ID"]);
         }
         if ($_REQUEST["ACTION"] == "active" || $_REQUEST["ACTION"] == "drop") {
             if ($_REQUEST["ACTION"] == "active") {
                 $arFields = array("ACTIVE" => "Y");
                 $be = new CIBlockElement();
                 $be->Update($item, $arFields);
             } else {
                 CIBlockElement::Delete($item);
             }
             // section
Beispiel #7
0
 $MID = ForumAddMessage($TOPIC_ID > 0 ? "REPLY" : "NEW", $arParams["FORUM_ID"], $TOPIC_ID, 0, $arFieldsG, $strErrorMessage, $strOKMessage, false, $_POST["captcha_word"], 0, $_POST["captcha_code"], $arParams["NAME_TEMPLATE"]);
 if ($MID <= 0 || !empty($strErrorMessage)) {
     $arError[] = array("code" => "message is not added 2", "title" => empty($strErrorMessage) ? GetMessage("F_ERR_ADD_MESSAGE") : $strErrorMessage);
     $arResult['RESULT'] = false;
     $arResult["OK_MESSAGE"] = '';
 } else {
     if ($TOPIC_ID <= 0) {
         $res = CForumMessage::GetByID($MID);
         $FORUM_TOPIC_ID = $TID = intVal($res["TOPIC_ID"]);
     }
     if ($arParams["AUTOSAVE"]) {
         $arParams["AUTOSAVE"]->Reset();
     }
     // 1.7 Update Iblock Property
     if ($TID > 0) {
         CIBlockElement::SetPropertyValues($arParams["ELEMENT_ID"], $PRODUCT_IBLOCK_ID, intVal($TID), "FORUM_TOPIC_ID");
     } else {
         if ($TOPIC_ID > 0) {
             $TID = $TOPIC_ID;
         }
         if ($FORUM_TOPIC_ID > 0) {
             $TID = $FORUM_TOPIC_ID;
         }
     }
     $strOKMessage = GetMessage("COMM_COMMENT_OK");
     $arResult["FORUM_TOPIC_ID"] = intVal($FORUM_TOPIC_ID);
     ForumClearComponentCache($componentName);
     // SUBSCRIBE
     if ($_REQUEST["TOPIC_SUBSCRIBE"] == "Y") {
         ForumSubscribeNewMessagesEx($arParams["FORUM_ID"], $FORUM_TOPIC_ID, "N", $strErrorMessage, $strOKMessage);
         BXClearCache(true, "/bitrix/forum/user/" . $GLOBALS["USER"]->GetID() . "/subscribe/");
Beispiel #8
0
 function UpdateOWSVersion($IBLOCK_ID, $ID, $value = null)
 {
     if (!defined('INTR_WS_OUTLOOK_UPDATE')) {
         if (null === $value) {
             $dbRes = CIBlockElement::GetProperty($IBLOCK_ID, $ID, 'sort', 'asc', array('CODE' => 'VERSION'));
             $arProperty = $dbRes->Fetch();
             if ($arProperty) {
                 $value = intval($arProperty['VALUE']);
                 if (!$value) {
                     $value = 1;
                 }
                 $value++;
             }
         }
         if (null !== $value) {
             CIBlockElement::SetPropertyValues($ID, $IBLOCK_ID, $value, 'VERSION');
         }
     }
 }
Beispiel #9
0
 /**
  * @param int $iblockID
  * @param int $elementID
  * @param int|string $propCode
  * @param int $action
  * @param string $description
  * @throws RequestError
  * @return bool
  */
 public function saveToIBProp($iblockID, $elementID, $propCode, $action = self::F_IB_IMG_PROP_APPEND, $description = '')
 {
     if (true !== $this->_bRequestSuccess && true !== $this->_bDownloadSuccess) {
         return false;
     }
     $arProp = array();
     $arErr = array();
     if (is_numeric($propCode)) {
         $propID = intval($propCode);
         $propCode = Tools::getPropCodeById($iblockID, $propID, $arProp, $arErr);
         if ($propCode === false) {
             throw new RequestError('', RequestError::E_BX_FILE_PROP_NOT_FOUND);
         }
     } else {
         $propID = Tools::getPropIdByCode($iblockID, $propCode, $arProp, $arErr);
         if ($propID === false) {
             throw new RequestError('', RequestError::E_BX_FILE_PROP_NOT_FOUND);
         }
     }
     if ($arProp['PROPERTY_TYPE'] != 'F') {
         throw new RequestError('', RequestError::E_BX_FILE_PROP_WRONG_TYPE);
     }
     if ($this->_ID === null) {
         $this->_ID = static::generateID();
     }
     if (!CheckDirPath(OBX_DOC_ROOT . static::DOWNLOAD_FOLDER . '/' . $this->_ID)) {
         throw new RequestError('', RequestError::E_PERM_DENIED);
     }
     $downloadFileRelPath = $this->getDownloadFilePath(false);
     if ($this->_bDownloadSuccess) {
         $arFile = \CFile::MakeFileArray($downloadFileRelPath);
     } elseif ($this->_bRequestSuccess) {
         $this->saveToFile($downloadFileRelPath);
         $arFile = \CFile::MakeFileArray($downloadFileRelPath);
     }
     $arFile['name'] = $this->_originalName . '.' . $this->_originalExt;
     if (is_string($description) && !empty($description)) {
         $arFile['description'] = $description;
     }
     switch ($action) {
         case self::F_IB_IMG_PROP_REPLACE:
             \CIBlockElement::SetPropertyValuesEx($elementID, $iblockID, array($arProp['ID'] => $arFile));
             break;
         case self::F_IB_IMG_PROP_APPEND:
             \CIBlockElement::SetPropertyValues($elementID, $iblockID, $arFile, $arProp['ID']);
             break;
     }
     return true;
 }
Beispiel #10
0
         } else {
             $vote_value = -1;
         }
     }
     if (CModule::IncludeModule("iblock")) {
         $iblock_id = CIBlockElement::GetIBlockByID($element_id);
         if ($iblock_id !== FALSE) {
             $arOrder = array("ID" => "ASC");
             $arFilter = array("ID" => $element_id);
             $arSelect = array("ID", "PROPERTY_VOTE_PLUS", "PROPERTY_VOTE_MINUS");
             $dbElement = CIBlockElement::GetList($arOrder, $arFilter, $arSelect);
             if ($arElement = $dbElement->GetNext()) {
                 $property_code = $vote_value > 0 ? "VOTE_PLUS" : "VOTE_MINUS";
                 $arElement["PROPERTY_" . $property_code . "_VALUE"] += $vote_value;
                 $property_value = $arElement["PROPERTY_" . $property_code . "_VALUE"];
                 CIBlockElement::SetPropertyValues($element_id, $iblock_id, $property_value, $property_code);
                 $result["result"] = true;
                 $result["VOTE_PLUS"] = $arElement["PROPERTY_VOTE_PLUS_VALUE"];
                 $result["VOTE_MINUS"] = $arElement["PROPERTY_VOTE_MINUS_VALUE"];
             } else {
                 $result["ERROR_CODE"] = -4;
             }
         } else {
             $result["ERROR_CODE"] = -3;
         }
     } else {
         $result["ERROR_CODE"] = -2;
     }
 } else {
     $result["ERROR_CODE"] = -5;
     //update 0.0.1
Beispiel #11
0
<?php

require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
CModule::IncludeModule("iblock");
$iblock_id = 1;
$user_id = $USER->GetID();
if (!empty($_POST["project_vote"])) {
    $res = CIBlockElement::GetList(array(), array("IBLOCK_ID" => 22, "PROPERTY_USER" => $user_id));
    while ($ob = $res->GetNextElement()) {
        $Fields = $ob->GetFields();
    }
    if (empty($Fields["ID"])) {
        $arFields = array("IBLOCK_ID" => 22, "NAME" => "Голос", "PROPERTY_VALUES" => array("VOTE" => $_POST["project_vote"], "USER" => $user_id));
        $oElement = new CIBlockElement();
        $idElement = $oElement->Add($arFields, false, false, true);
        $countVotes = CIBlockElement::GetProperty($iblock_id, $_POST["project_vote"], array("sort" => "asc"), array("CODE" => "VOTES"))->Fetch();
        $userFields = $USER->GetByID($user_id)->Fetch();
        if ($userFields["UF_AMBASSADOR"]) {
            $countVotes["VALUE"] = $countVotes["VALUE"] + 100;
        } else {
            $countVotes["VALUE"]++;
        }
        CIBlockElement::SetPropertyValues($_POST["project_vote"], $iblock_id, $countVotes["VALUE"], "VOTES");
        $data = array('success' => 1, 'id' => $_POST["project_vote"], 'vote' => $countVotes["VALUE"]);
    }
} else {
    $data = array('success' => 0);
}
echo json_encode($data);
Beispiel #12
0
 public static function Reset($nam)
 {
     $result = 0;
     $ib = new CIBlockElement();
     $arFilter = array("IBLOCK_ID" => 68, "NAME" => $nam);
     $ibres = $ib->GetList(array(), $arFilter);
     if ($ob = $ibres->GetNextElement()) {
         $arFlds = $ob->GetFields();
         $curID = $arFlds["ID"];
         $dbRes = $ib->GetProperty(68, $curID, array(), array("CODE" => "valu"));
         if ($arProps = $dbRes->Fetch()) {
             $result = 1;
             $ib->SetPropertyValues($curID, 68, 1, 'VALU');
         }
     }
     return $result;
 }
Beispiel #13
0
    if ($componentPage == "search" || $componentPage == "tags") {
        $componentPage = "index";
    }
}
/********************************************************************
				/Input params
********************************************************************/
$arResult = array("~URL_TEMPLATES" => $arUrlTemplates, "URL_TEMPLATES" => $arResult["URL_TEMPLATES"], "VARIABLES" => $arVariables, "ALIASES" => is_array($arVariableAliases) ? $arVariableAliases : array(), "PAGE_NAME" => strToUpper($componentPage));
/********************************************************************
				Actions
********************************************************************/
if ($_REQUEST["ACTION"] == "public" && $arParams["PERMISSION"] >= "W" && check_bitrix_sessid() && is_array($_REQUEST["items"])) {
    CModule::IncludeModule("iblock");
    foreach ($_REQUEST["items"] as $res) {
        CIBlockElement::SetPropertyValues($res, $arParams["IBLOCK_ID"], "Y", "APPROVE_ELEMENT");
        CIBlockElement::SetPropertyValues($res, $arParams["IBLOCK_ID"], "Y", "PUBLIC_ELEMENT");
    }
    PClearComponentCache(array("photogallery.detail.comment", "photogallery.detail/" . $arParams["IBLOCK_ID"], "photogallery.detail.list/" . $arParams["IBLOCK_ID"] . "/detaillist/0"));
    $url = $arParams["DETAIL_LIST_URL"];
    if (empty($url)) {
        $url = $APPLICATION->GetCurPageParam("PAGE_NAME=detail_list", array("PAGE_NAME", "SECTION_ID", "ELEMENT_ID", "ACTION", "sessid", "edit"));
    }
    $url = CComponentEngine::MakePathFromTemplate($url, array());
    if (strpos($url, "?") === false) {
        $url .= "?";
    }
    $url .= "&moderate=Y";
    LocalRedirect($url);
}
if ($arParams["PERMISSION"] >= "W" && $_REQUEST["galleries_recalc"] == "Y") {
    $componentPage = "galleries_recalc";
Beispiel #14
0
 function DeleteAttachment($listName, $listItemID, $url)
 {
     if (!$this->__Init()) {
         return $this->error;
     }
     if (!($listName_original = CIntranetUtils::checkGUID($listName))) {
         return new CSoapFault('Data error', 'Wrong GUID - ' . $listName);
     }
     $listItemID = intval($listItemID);
     $dbRes = CIBlockElement::GetByID($listItemID);
     if (($obElement = $dbRes->GetNextElement()) && CIntranetTasksDocument::CanUserOperateDocument(INTASK_DOCUMENT_OPERATION_WRITE_DOCUMENT, $USER->GetID(), $listItemID, array())) {
         $pos = strrpos($url, '/');
         if ($pos) {
             $fileName = ToLower(str_replace(array('/', '\\', '..'), '', substr($url, $pos + 1)));
         }
         // minor security
         if (!$fileName) {
             return new CSoapFault('Wrong file', 'Wrong file URL');
         }
         $arNewValue = null;
         $arElement = $obElement->GetFields();
         $arProperty = $obElement->GetProperty('TaskFiles');
         foreach ($arProperty['VALUE'] as $key => $FILE_ID) {
             $FILE_NAME = ToLower(basename(CFile::GetPath($FILE_ID)));
             if ($FILE_NAME == $fileName) {
                 $arNewValue = array($arProperty['PROPERTY_VALUE_ID'][$key] => array('VALUE' => array('del' => 'Y'), 'DESCRIPTION' => false));
                 break;
             }
         }
         if (is_array($arNewValue)) {
             CIBlockElement::SetPropertyValues($arElement['ID'], $arElement['IBLOCK_ID'], $arNewValue, 'TaskFiles');
         }
         return array('DeleteAttachmentResult' => '');
     } else {
         return new CSoapFault('0x81020016', 'List item not found');
     }
 }
Beispiel #15
0
                     if ($arItems[$itemID]["PREVIEW_PICTURE"] > 0) {
                         $arImg = CFile::MakeFileArray($arItems[$itemID]["PREVIEW_PICTURE"]);
                         CFile::ImageRotate($arImg['tmp_name'], $item['angle']);
                         $arFields["PREVIEW_PICTURE"] = CFile::MakeFileArray($arImg['tmp_name']);
                     }
                     // Detail
                     if ($arItems[$itemID]["DETAIL_PICTURE"] > 0) {
                         $arImg = CFile::MakeFileArray($arItems[$itemID]["DETAIL_PICTURE"]);
                         CFile::ImageRotate($arImg['tmp_name'], $item['angle']);
                         $arFields["DETAIL_PICTURE"] = CFile::MakeFileArray($arImg['tmp_name']);
                     }
                     // Real
                     if ($arItems[$itemID]["PROPERTY_REAL_PICTURE_VALUE"] > 0) {
                         $arImg = CFile::MakeFileArray($arItems[$itemID]["PROPERTY_REAL_PICTURE_VALUE"]);
                         CFile::ImageRotate($arImg['tmp_name'], $item['angle']);
                         CIBlockElement::SetPropertyValues($itemID, $iblockId, array("REAL_PICTURE" => CFile::MakeFileArray($arImg['tmp_name'])));
                     }
                 }
                 $bs = new CIBlockElement();
                 if (!$bs->Update($itemID, $arFields)) {
                     $arError[] = array("id" => "update", "text" => $bs->LAST_ERROR);
                 }
             }
         }
     }
 } elseif ($arParams["ACTION"] == "NEW") {
     if ($arParams["AJAX_CALL"] == "Y") {
         CUtil::JSPostUnEscape();
     }
     $arFields = array("ACTIVE" => "Y", "IBLOCK_ID" => $iblockId, "DATE" => $_REQUEST["UF_DATE"], "UF_DATE" => $_REQUEST["UF_DATE"], "NAME" => trim($_REQUEST["NAME"]), "DESCRIPTION" => trim($_REQUEST["DESCRIPTION"]));
     if (isset($_REQUEST["ACTIVE"])) {
Beispiel #16
0
 function AddComment_Review_UpdateElement_Blog($arElement, $postID, $blogID, $bNewPost)
 {
     if (!CModule::IncludeModule("blog")) {
         return false;
     }
     if ($bNewPost) {
         CIBlockElement::SetPropertyValues($arElement["ID"], $arElement["IBLOCK_ID"], intVal($postID), "BLOG_POST_ID");
         $BLOG_COMMENT_CNT = 1;
     } else {
         $BLOG_COMMENT_CNT = CBlogComment::GetList(array(), array("POST_ID" => $postID), array());
     }
     CIBlockElement::SetPropertyValues($arElement["ID"], $arElement["IBLOCK_ID"], intVal($BLOG_COMMENT_CNT), "BLOG_COMMENT_CNT");
     $arBlog = CBlog::GetByID($blogID);
     BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/comment/" . $postID . "/");
     BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/post/" . $postID . "/");
     BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/first_page/");
     BXClearCache(True, "/" . SITE_ID . "/blog/last_comments/");
     BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"] . "/rss_out/" . $postID . "/C/");
     BXClearCache(True, "/" . SITE_ID . "/blog/last_messages/");
     BXClearCache(True, "/" . SITE_ID . "/blog/commented_posts/");
     BXClearCache(True, "/" . SITE_ID . "/blog/popular_posts/");
 }
						{
							if ($arShowTabs['sku'])
							{
								$arFilter = array('IBLOCK_ID' => $arMainCatalog['IBLOCK_ID'],'=PROPERTY_'.$arMainCatalog['SKU_PROPERTY_ID'] => '-'.$str_TMP_ID);
								$rsOffersItems = CIBlockElement::GetList(
									array(),
									$arFilter,
									false,
									false,
									array('ID')
								);
								while ($arOfferItem = $rsOffersItems->Fetch())
								{
									CIBlockElement::SetPropertyValues(
										$arOfferItem['ID'],
										$arMainCatalog['IBLOCK_ID'],
										$ID,
										$arMainCatalog['SKU_PROPERTY_ID']
									);
								}
								$boolFlagClear = CIBlockOffersTmp::Delete($str_TMP_ID);
								$boolFlagClearAll = CIBlockOffersTmp::DeleteOldID($IBLOCK_ID);
							}
						}
					}

					if (!$res)
					{
						$strWarning .= $bs->LAST_ERROR."<br>";
					}
					else
					{
Beispiel #18
0
 $bs = new CIBlockElement();
 $ID = $bs->Update($arParams["ELEMENT_ID"], $arFields);
 if ($ID <= 0) {
     $arError[] = array("id" => "update", "text" => $bs->LAST_ERROR);
 } else {
     $_REQUEST["PUBLIC_ELEMENT"] = $_REQUEST["PUBLIC_ELEMENT"] == "Y" ? "Y" : "N";
     $_REQUEST["APPROVE_ELEMENT"] = $_REQUEST["APPROVE_ELEMENT"] == "Y" ? "Y" : "N";
     if ($arParams["BEHAVIOUR"] == "USER") {
         if (is_set($arResult["ELEMENT"]["PROPERTIES"], "PUBLIC_ELEMENT") && $arResult["ELEMENT"]["PROPERTIES"]["PUBLIC_ELEMENT"]["VALUE"] != $_REQUEST["PUBLIC_ELEMENT"]) {
             CIBlockElement::SetPropertyValues($arParams["ELEMENT_ID"], $arParams["IBLOCK_ID"], $_REQUEST["PUBLIC_ELEMENT"], "PUBLIC_ELEMENT");
             if ($arParams["ABS_PERMISSION"] < "U" && $_REQUEST["PUBLIC_ELEMENT"] == "Y") {
                 CIBlockElement::SetPropertyValues($arParams["ELEMENT_ID"], $arParams["IBLOCK_ID"], 'X', "APPROVE_ELEMENT");
             }
         }
         if ($arParams["ABS_PERMISSION"] >= "U" && is_set($arResult["ELEMENT"]["PROPERTIES"], "APPROVE_ELEMENT") && $arResult["ELEMENT"]["PROPERTIES"]["APPROVE_ELEMENT"]["VALUE"] != $_REQUEST["APPROVE_ELEMENT"]) {
             CIBlockElement::SetPropertyValues($arParams["ELEMENT_ID"], $arParams["IBLOCK_ID"], $_REQUEST["APPROVE_ELEMENT"], "APPROVE_ELEMENT");
         }
     }
     if ($arParams["SECTION_ID"] != $_REQUEST["TO_SECTION_ID"]) {
         CIBlockElement::RecalcSections($arParams["SECTION_ID"]);
         CIBlockElement::RecalcSections($_REQUEST["TO_SECTION_ID"]);
     }
     if ($arParams["AJAX_CALL"] != "Y") {
     } elseif ($arParams["SECTION_ID"] != $_REQUEST["TO_SECTION_ID"]) {
         $result = array("url" => CComponentEngine::MakePathFromTemplate($arParams["~DETAIL_URL"], array("USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $_REQUEST["TO_SECTION_ID"], "ELEMENT_ID" => $arResult["ELEMENT"]["ID"])));
     } else {
         $arSelect = array("ID", "NAME", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "TAGS", "DATE_CREATE", "CREATED_BY");
         $db_res = CIBlockElement::GetList(array(), array("ID" => $arParams["ELEMENT_ID"]), false, false, $arSelect);
         if ($db_res && ($res = $db_res->GetNext())) {
             $result = array("TAGS" => $res["TAGS"], "TITLE" => $res["NAME"], "DESCRIPTION" => $res["DETAIL_TEXT"], "DATE" => $res["DATE_CREATE"]);
         } else {
Beispiel #19
0
    if (isset($_REQUEST["ITEM_ID"]) && !empty($_REQUEST["ITEM_ID"])) {
        CModule::IncludeModule("iblock");
        $itemId = htmlspecialcharsbx($_REQUEST["ITEM_ID"]);
        $itemId = intval($itemId);
        $userLikeRes = CIBlockElement::GetProperty(NEWS_IBLOCK_ID, $itemId, array("value_id" => "asc"), array("ID" => USER_LIKE_PROPERTY_ID));
        while ($userLike = $userLikeRes->GetNext()) {
            $arUserLikeId[$userLike["PROPERTY_VALUE_ID"]] = $userLike["VALUE"];
            $arUserLikeValueId[$userLike["VALUE"]] = $userLike["PROPERTY_VALUE_ID"];
        }
        if (is_array($arUserLikeId) && !in_array($USER->GetID(), $arUserLikeId)) {
            $arUserLikeId[$newUserLikeId] = $USER->GetID();
            $out["answer"] = "N";
        } else {
            unset($arUserLikeId[$arUserLikeValueId[$USER->GetID()]]);
            $out["answer"] = "Y";
        }
        CIBlockElement::SetPropertyValues($itemId, NEWS_IBLOCK_ID, $arUserLikeId, USER_LIKE_PROPERTY_ID);
        $out["userNames"] = array();
        if (count($arUserLikeId)) {
            $rsUsers = CUser::GetList($by = "name", $order = "asc", array('ID' => implode('|', $arUserLikeId)), array('ID', 'LOGIN'));
            while ($arUser = $rsUsers->GetNext()) {
                $out["userNames"][] = $arUser["NAME"];
            }
        }
        echo json_encode($out);
    }
}
?>

<?php 
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php";
Beispiel #20
0
 public function GetFileSize($element)
 {
     static $PROP_SIZE = "PROPERTY_WEBDAV_SIZE";
     $elementID = 0;
     $arElement = array();
     if (is_array($element) && isset($element['ID'])) {
         $arElement =& $element;
         $elementID = $arElement['ID'];
     } elseif (($elementID = intval($element)) > 0) {
     } else {
         return 0;
     }
     $result = 0;
     if ((!is_array($arElement) || empty($arElement)) && $elementID > 0) {
         $arSelectedFields = array("ID", "NAME", "PROPERTY_" . $this->file_prop, $PROP_SIZE);
         $arElementFilter = array('ID' => $elementID, 'IBLOCK_ID' => $this->IBLOCK_ID, 'SHOW_HISTORY' => 'Y');
         $rsElement = CIBlockElement::GetList(array(), $arElementFilter, false, false, $arSelectedFields);
         $arElement = $rsElement->Fetch();
     }
     if (is_array($arElement)) {
         $result = $arElement[$PROP_SIZE . '_VALUE'];
         if (empty($result) && isset($arElement['PROPERTY_' . $this->file_prop . '_VALUE']) && intval($arElement['PROPERTY_' . $this->file_prop . '_VALUE']) > 0) {
             $arFile = CFile::GetFileArray(intval($arElement['PROPERTY_' . $this->file_prop . '_VALUE']));
             $result = $arFile['FILE_SIZE'];
             CIBlockElement::SetPropertyValues($elementID, $this->IBLOCK_ID, $result, 'WEBDAV_SIZE');
         }
     }
     return $result;
 }
Beispiel #21
0
 /**
  * @param int $ELEMENT_ID
  * @param string|int $PROPERTY_CODE
  * @param mixed $PROPERTY_VALUE
  * @return bool
  */
 function SetPropertyValueCode($ELEMENT_ID, $PROPERTY_CODE, $PROPERTY_VALUE)
 {
     $IBLOCK_ID = CIBlockElement::GetIBlockByID($ELEMENT_ID);
     if (!$IBLOCK_ID) {
         return false;
     }
     CIBlockElement::SetPropertyValues($ELEMENT_ID, $IBLOCK_ID, $PROPERTY_VALUE, $PROPERTY_CODE);
     return true;
 }
Beispiel #22
0
						'DETAIL_TEXT' =>
							"[URL=http://".$_SERVER['HTTP_HOST'].$arResult["ELEMENT"]["~DETAIL_PAGE_URL"]."]".$arResult["ELEMENT"]["~NAME"]."[/URL]\n".
							($arResult["ELEMENT"]["~PREVIEW_TEXT"] != '' ? $arResult["ELEMENT"]["~PREVIEW_TEXT"] : '')."\n",
						'PUBLISH_STATUS' => BLOG_PUBLISH_STATUS_PUBLISH,
						"PERMS_POST" => array(),
						"PERMS_COMMENT" => array(),
						"=DATE_CREATE" => $DB->GetNowFunction(),
						"=DATE_PUBLISH" => $DB->GetNowFunction(),
						"AUTHOR_ID" => $ownerID,
						"BLOG_ID" => $arResult['BLOG_DATA']['BLOG_ID'],
						"ENABLE_TRACKBACK" => "N"
					);
					$postID = CBlogPost::Add($arFields);
					if ($postID)
					{
						CIBlockElement::SetPropertyValues($arResult['ELEMENT']['ID'], $arResult['ELEMENT']['IBLOCK_ID'], $postID, $arResult['BLOG_DATA']['BLOG_POST_ID_PROP']);
					}
				}
				$arResult['BLOG_DATA']['BLOG_POST_ID'] = $postID;
				$arResult['COMMENT_ID'] = $postID;
			}

			$protocol = (CMain::IsHTTPS()) ? 'https://' : 'http://';

			if ($arParams['URL_TO_COMMENT'] !== '')
				$arResult['URL_TO_COMMENT'] = $arParams['URL_TO_COMMENT'];
			elseif (!empty($arResult['ELEMENT']['~DETAIL_PAGE_URL']))
				$arResult['URL_TO_COMMENT'] = $protocol.$_SERVER["HTTP_HOST"].$arResult['ELEMENT']['~DETAIL_PAGE_URL'];
			else
				$arResult['URL_TO_COMMENT'] = $protocol.$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
Beispiel #23
0
                 }
             }
         }
         $arResult["ELEMENT"]["DETAIL_PICTURE"] = CFile::GetFileArray($arResult["ELEMENT"]["DETAIL_PICTURE"]);
         $arResult["ELEMENT"]["REAL_PICTURE"] = CFile::GetFileArray($arResult["ELEMENT"]["PROPERTIES"]["REAL_PICTURE"]["VALUE"]);
         $arFields = array("TITLE" => $arResult["ELEMENT"]["NAME"], "DETAIL_TEXT" => "[IMG]http://" . $_SERVER['HTTP_HOST'] . $arResult["ELEMENT"]["DETAIL_PICTURE"]["SRC"] . "[/IMG]\n" . "[URL=http://" . $_SERVER['HTTP_HOST'] . $arResult["ELEMENT"]["~DETAIL_PAGE_URL"] . "]" . $arResult["ELEMENT"]["NAME"] . "[/URL]\n" . (!empty($arResult["ELEMENT"]["TAGS"]) ? $arResult["ELEMENT"]["TAGS"] . "\n" : "") . $arResult["ELEMENT"]["~DETAIL_TEXT"] . "\n" . "[URL=http://" . $_SERVER['HTTP_HOST'] . $arResult["ELEMENT"]["REAL_PICTURE"]["SRC"] . "]" . GetMessage("P_ORIGINAL") . "[/URL]", "CATEGORY_ID" => implode(",", $arCategory), "PUBLISH_STATUS" => "P", "PERMS_POST" => array(), "PERMS_COMMENT" => array(), "=DATE_CREATE" => $DB->GetNowFunction(), "=DATE_PUBLISH" => $DB->GetNowFunction(), "AUTHOR_ID" => !empty($arResult["ELEMENT"]["CREATED_BY"]) ? $arResult["ELEMENT"]["CREATED_BY"] : 1, "BLOG_ID" => $arBlog["ID"], "ENABLE_TRACKBACK" => "N");
         $newID = CBlogPost::Add($arFields);
         if ($newID > 0) {
             foreach ($arCategory as $key) {
                 CBlogPostCategory::Add(array("BLOG_ID" => $arBlog["ID"], "POST_ID" => $newID, "CATEGORY_ID" => $key));
             }
             BXClearCache(True, "/" . SITE_ID . "/blog/" . $arBlog["URL"]);
             BXClearCache(True, "/" . SITE_ID . "/blog/last_messages/");
             BXClearCache(True, "/" . SITE_ID . "/blog/groups/" . $arBlog["GROUP_ID"] . "/");
             $iCommentID = $newID;
             CIBlockElement::SetPropertyValues($arResult["ELEMENT"]["ID"], $arParams["IBLOCK_ID"], $iCommentID, "BLOG_POST_ID");
         }
     }
     $arResult["COMMENT_ID"] = $iCommentID;
     if ($arParams["CACHE_TIME"] > 0) {
         $cache->StartDataCache($arParams["CACHE_TIME"], $cache_id, $cache_path);
         $cache->EndDataCache(array("COMMENT_ID" => $arResult["COMMENT_ID"], "ELEMENT" => $arResult["ELEMENT"]));
     }
 }
 /*************************************************************************
 					/Caching
 	*************************************************************************/
 if (class_exists('CSocNetPhotoCommentEvent')) {
     $obPhotoCommentEventHandler = new CSocNetPhotoCommentEvent();
     $obPhotoCommentEventHandler->SetVars($arParams, $arResult);
     if (method_exists($obPhotoCommentEventHandler, "OnAfterPhotoCommentAddBlog")) {
 function SetPropertyValueCode($ELEMENT_ID, $PROPERTY_CODE, $PROPERTY_VALUE)
 {
     global $DB;
     $strSql = "SELECT BE.IBLOCK_ID " . "FROM b_iblock_element BE " . "WHERE BE.ID = " . IntVal($ELEMENT_ID);
     $dbr = $DB->Query($strSql);
     if ($dbr_arr = $dbr->Fetch()) {
         $IBLOCK_ID = $dbr_arr["IBLOCK_ID"];
         CIBlockElement::SetPropertyValues($ELEMENT_ID, $IBLOCK_ID, $PROPERTY_VALUE, $PROPERTY_CODE);
         return true;
     }
     return false;
 }
Beispiel #25
0
 public function saveToIBProp($iblockID, $elementID, $propCode, $action = self::F_IB_IMG_PROP_APPEND)
 {
     if (true !== $this->_bRequestsComplete && true !== $this->_bDownloadsComplete) {
         return false;
     }
     $arProp = array();
     $arErr = array();
     if (is_numeric($propCode)) {
         $propID = intval($propCode);
         $propCode = Tools::getPropCodeById($iblockID, $propID, $arProp, $arErr);
         if ($propCode === false) {
             return false;
         }
     } else {
         $propID = Tools::getPropIdByCode($iblockID, $propCode, $arProp, $arErr);
         if ($propID === false) {
             return false;
         }
     }
     if (!empty($arErr)) {
         return false;
     }
     if ($arProp['PROPERTY_TYPE'] != 'F') {
         return false;
     }
     if ($arProp['MULTIPLE'] != 'Y') {
         return false;
     }
     $arFileList = array();
     /** @var Request $Request */
     foreach ($this->_arRequestList as $Request) {
         if ($Request->isDownloadSuccess()) {
             $downloadFileRelPath = $Request->getDownloadFilePath(false);
             $arFile = \CFile::MakeFileArray($downloadFileRelPath);
             if (!empty($arFile)) {
                 $arFileList[] = $arFile;
             }
         }
     }
     if (!empty($arFileList)) {
         switch ($action) {
             case self::F_IB_IMG_PROP_REPLACE:
                 \CIBlockElement::SetPropertyValuesEx($elementID, $iblockID, array($arProp['ID'] => $arFileList));
                 break;
             case self::F_IB_IMG_PROP_APPEND:
                 \CIBlockElement::SetPropertyValues($elementID, $iblockID, $arFileList, $arProp['ID']);
                 break;
         }
     }
     return true;
 }
Beispiel #26
0
 /**
  * @param $name
  * @param $value
  */
 public function saveProperty($name, $value)
 {
     if (empty($this->id())) {
         return;
     }
     $o = new \CIBlockElement();
     $o->SetPropertyValues($this->id(), $this->infoblock()->id(), $value, $name);
 }
Beispiel #27
0
 function Update($ID, $arFields, $bWorkFlow = false, $bUpdateSearch = true, $bResizePictures = false, $bCheckDiskQuota = true)
 {
     global $DB, $USER;
     $ID = intval($ID);
     $db_element = CIBlockElement::GetList(array(), array("ID" => $ID, "SHOW_HISTORY" => "Y"), false, false, array("ID", "TIMESTAMP_X", "MODIFIED_BY", "DATE_CREATE", "CREATED_BY", "IBLOCK_ID", "ACTIVE", "ACTIVE_FROM", "ACTIVE_TO", "SORT", "NAME", "PREVIEW_PICTURE", "PREVIEW_TEXT", "PREVIEW_TEXT_TYPE", "DETAIL_PICTURE", "DETAIL_TEXT", "DETAIL_TEXT_TYPE", "WF_STATUS_ID", "WF_PARENT_ELEMENT_ID", "WF_NEW", "WF_COMMENTS", "IN_SECTIONS", "CODE", "TAGS", "XML_ID", "TMP_ID"));
     if (!($ar_element = $db_element->Fetch())) {
         return false;
     }
     $arIBlock = CIBlock::GetArrayByID($ar_element["IBLOCK_ID"]);
     $bWorkFlow = $bWorkFlow && is_array($arIBlock) && $arIBlock["WORKFLOW"] != "N" && CModule::IncludeModule("workflow");
     $ar_wf_element = $ar_element;
     $LAST_ID = 0;
     if ($bWorkFlow) {
         $LAST_ID = CIBlockElement::WF_GetLast($ID);
         if ($LAST_ID != $ID) {
             $db_element = CIBlockElement::GetByID($LAST_ID);
             if (!($ar_wf_element = $db_element->Fetch())) {
                 return false;
             }
         }
         $arFields["WF_PARENT_ELEMENT_ID"] = $ID;
         if (!array_key_exists("PROPERTY_VALUES", $arFields) || !is_array($arFields["PROPERTY_VALUES"])) {
             $arFields["PROPERTY_VALUES"] = array();
         }
         $bFieldProps = array();
         foreach ($arFields["PROPERTY_VALUES"] as $k => $v) {
             $bFieldProps[$k] = true;
         }
         $arFieldProps =& $arFields['PROPERTY_VALUES'];
         $props = CIBlockElement::GetProperty($ar_element["IBLOCK_ID"], $ar_wf_element["ID"]);
         while ($arProp = $props->Fetch()) {
             $pr_val_id = $arProp['PROPERTY_VALUE_ID'];
             if ($arProp['PROPERTY_TYPE'] == 'F' && strlen($pr_val_id) > 0) {
                 if (strlen($arProp["CODE"]) > 0 && is_set($arFieldProps, $arProp["CODE"])) {
                     $pr_id = $arProp["CODE"];
                 } else {
                     $pr_id = $arProp['ID'];
                 }
                 if (array_key_exists($pr_id, $arFieldProps) && array_key_exists($pr_val_id, $arFieldProps[$pr_id]) && is_array($arFieldProps[$pr_id][$pr_val_id])) {
                     $new_value = $arFieldProps[$pr_id][$pr_val_id];
                     if (strlen($new_value['name']) <= 0 && $new_value['del'] != "Y" && strlen($new_value['VALUE']['name']) <= 0 && $new_value['VALUE']['del'] != "Y") {
                         if (array_key_exists('DESCRIPTION', $new_value) && $new_value['DESCRIPTION'] != $arProp['DESCRIPTION']) {
                             $p = array("VALUE" => CFile::MakeFileArray($arProp['VALUE']));
                             $p["DESCRIPTION"] = $new_value["DESCRIPTION"];
                             $p["MODULE_ID"] = "iblock";
                             $arFieldProps[$pr_id][$pr_val_id] = $p;
                         } elseif ($arProp['VALUE'] > 0) {
                             $arFieldProps[$pr_id][$pr_val_id] = array("VALUE" => $arProp['VALUE'], "DESCRIPTION" => $arProp["DESCRIPTION"]);
                         }
                     }
                 } else {
                     $arFieldProps[$pr_id][$pr_val_id] = array("VALUE" => $arProp['VALUE'], "DESCRIPTION" => $arProp["DESCRIPTION"]);
                 }
                 continue;
             }
             if (strlen($pr_val_id) <= 0 || array_key_exists($arProp["ID"], $bFieldProps) || strlen($arProp["CODE"]) > 0 && array_key_exists($arProp["CODE"], $bFieldProps)) {
                 continue;
             }
             $arFieldProps[$arProp["ID"]][$pr_val_id] = array("VALUE" => $arProp['VALUE'], "DESCRIPTION" => $arProp["DESCRIPTION"]);
         }
         if ($ar_wf_element["IN_SECTIONS"] == "Y") {
             $ar_wf_element["IBLOCK_SECTION"] = array();
             $rsSections = CIBlockElement::GetElementGroups($ar_element["ID"], true, array('ID', 'IBLOCK_ELEMENT_ID'));
             while ($arSection = $rsSections->Fetch()) {
                 $ar_wf_element["IBLOCK_SECTION"][] = $arSection["ID"];
             }
         }
         unset($ar_wf_element["DATE_ACTIVE_FROM"]);
         unset($ar_wf_element["DATE_ACTIVE_TO"]);
         unset($ar_wf_element["EXTERNAL_ID"]);
         unset($ar_wf_element["TIMESTAMP_X"]);
         unset($ar_wf_element["ID"]);
         $arFields = $arFields + $ar_wf_element;
     }
     $arFields["WF"] = $bWorkFlow ? "Y" : "N";
     $bBizProc = is_array($arIBlock) && $arIBlock["BIZPROC"] == "Y" && IsModuleInstalled("bizproc");
     if (array_key_exists("BP_PUBLISHED", $arFields)) {
         if ($bBizProc) {
             if ($arFields["BP_PUBLISHED"] == "Y") {
                 $arFields["WF_STATUS_ID"] = 1;
                 $arFields["WF_NEW"] = false;
             } else {
                 $arFields["WF_STATUS_ID"] = 2;
                 $arFields["WF_NEW"] = "Y";
                 $arFields["BP_PUBLISHED"] = "N";
             }
         } else {
             $arFields["WF_NEW"] = false;
             unset($arFields["BP_PUBLISHED"]);
         }
     } else {
         $arFields["WF_NEW"] = false;
     }
     if (is_set($arFields, "ACTIVE") && $arFields["ACTIVE"] != "Y") {
         $arFields["ACTIVE"] = "N";
     }
     if (is_set($arFields, "PREVIEW_TEXT_TYPE") && $arFields["PREVIEW_TEXT_TYPE"] != "html") {
         $arFields["PREVIEW_TEXT_TYPE"] = "text";
     }
     if (is_set($arFields, "DETAIL_TEXT_TYPE") && $arFields["DETAIL_TEXT_TYPE"] != "html") {
         $arFields["DETAIL_TEXT_TYPE"] = "text";
     }
     $strWarning = "";
     if ($bResizePictures) {
         $arDef = $arIBlock["FIELDS"]["PREVIEW_PICTURE"]["DEFAULT_VALUE"];
         if ($arDef["DELETE_WITH_DETAIL"] === "Y" && $arFields["DETAIL_PICTURE"]["del"] === "Y") {
             $arFields["PREVIEW_PICTURE"]["del"] = "Y";
         }
         if ($arDef["FROM_DETAIL"] === "Y" && ($arFields["PREVIEW_PICTURE"]["size"] <= 0 || $arDef["UPDATE_WITH_DETAIL"] === "Y") && is_array($arFields["DETAIL_PICTURE"]) && $arFields["DETAIL_PICTURE"]["size"] > 0) {
             if ($arFields["PREVIEW_PICTURE"]["del"] !== "Y" && $arDef["UPDATE_WITH_DETAIL"] !== "Y") {
                 $rsElement = CIBlockElement::GetList(array("ID" => "DESC"), array("ID" => $ar_wf_element["ID"], "IBLOCK_ID" => $ar_wf_element["IBLOCK_ID"], "SHOW_HISTORY" => "Y"), false, false, array("ID", "PREVIEW_PICTURE"));
                 $arOldElement = $rsElement->Fetch();
             } else {
                 $arOldElement = false;
             }
             if (!$arOldElement || !$arOldElement["PREVIEW_PICTURE"]) {
                 $arNewPreview = $arFields["DETAIL_PICTURE"];
                 $arNewPreview["COPY_FILE"] = "Y";
                 $arNewPreview["description"] = $arFields["PREVIEW_PICTURE"]["description"];
                 $arFields["PREVIEW_PICTURE"] = $arNewPreview;
             }
         }
         if (array_key_exists("PREVIEW_PICTURE", $arFields) && is_array($arFields["PREVIEW_PICTURE"]) && $arFields["PREVIEW_PICTURE"]["size"] > 0 && $arDef["SCALE"] === "Y") {
             $arNewPicture = CIBlock::ResizePicture($arFields["PREVIEW_PICTURE"], $arDef);
             if (is_array($arNewPicture)) {
                 $arNewPicture["description"] = $arFields["PREVIEW_PICTURE"]["description"];
                 $arFields["PREVIEW_PICTURE"] = $arNewPicture;
             } elseif ($arDef["IGNORE_ERRORS"] !== "Y") {
                 unset($arFields["PREVIEW_PICTURE"]);
                 $strWarning .= GetMessage("IBLOCK_FIELD_PREVIEW_PICTURE") . ": " . $arNewPicture . "<br>";
             }
         }
         if (array_key_exists("PREVIEW_PICTURE", $arFields) && is_array($arFields["PREVIEW_PICTURE"]) && $arDef["USE_WATERMARK_FILE"] === "Y") {
             if (strlen($arFields["PREVIEW_PICTURE"]["tmp_name"]) > 0 && ($arFields["PREVIEW_PICTURE"]["tmp_name"] === $arFields["DETAIL_PICTURE"]["tmp_name"] || $arFields["PREVIEW_PICTURE"]["COPY_FILE"] == "Y" && !$arFields["PREVIEW_PICTURE"]["copy"])) {
                 $tmp_name = CTempFile::GetFileName(basename($arFields["PREVIEW_PICTURE"]["tmp_name"]));
                 CheckDirPath($tmp_name);
                 copy($arFields["PREVIEW_PICTURE"]["tmp_name"], $tmp_name);
                 $arFields["PREVIEW_PICTURE"]["copy"] = true;
                 $arFields["PREVIEW_PICTURE"]["tmp_name"] = $tmp_name;
             }
             CIBLock::FilterPicture($arFields["PREVIEW_PICTURE"]["tmp_name"], array("name" => "watermark", "position" => $arDef["WATERMARK_FILE_POSITION"], "type" => "file", "size" => "real", "alpha_level" => 100 - min(max($arDef["WATERMARK_FILE_ALPHA"], 0), 100), "file" => $_SERVER["DOCUMENT_ROOT"] . Rel2Abs("/", $arDef["WATERMARK_FILE"])));
         }
         if (array_key_exists("PREVIEW_PICTURE", $arFields) && is_array($arFields["PREVIEW_PICTURE"]) && $arDef["USE_WATERMARK_TEXT"] === "Y") {
             if (strlen($arFields["PREVIEW_PICTURE"]["tmp_name"]) > 0 && ($arFields["PREVIEW_PICTURE"]["tmp_name"] === $arFields["DETAIL_PICTURE"]["tmp_name"] || $arFields["PREVIEW_PICTURE"]["COPY_FILE"] == "Y" && !$arFields["PREVIEW_PICTURE"]["copy"])) {
                 $tmp_name = CTempFile::GetFileName(basename($arFields["PREVIEW_PICTURE"]["tmp_name"]));
                 CheckDirPath($tmp_name);
                 copy($arFields["PREVIEW_PICTURE"]["tmp_name"], $tmp_name);
                 $arFields["PREVIEW_PICTURE"]["copy"] = true;
                 $arFields["PREVIEW_PICTURE"]["tmp_name"] = $tmp_name;
             }
             CIBLock::FilterPicture($arFields["PREVIEW_PICTURE"]["tmp_name"], array("name" => "watermark", "position" => $arDef["WATERMARK_TEXT_POSITION"], "type" => "text", "coefficient" => $arDef["WATERMARK_TEXT_SIZE"], "text" => $arDef["WATERMARK_TEXT"], "font" => $_SERVER["DOCUMENT_ROOT"] . Rel2Abs("/", $arDef["WATERMARK_TEXT_FONT"]), "color" => $arDef["WATERMARK_TEXT_COLOR"]));
         }
         $arDef = $arIBlock["FIELDS"]["DETAIL_PICTURE"]["DEFAULT_VALUE"];
         if (array_key_exists("DETAIL_PICTURE", $arFields) && is_array($arFields["DETAIL_PICTURE"]) && $arDef["SCALE"] === "Y") {
             $arNewPicture = CIBlock::ResizePicture($arFields["DETAIL_PICTURE"], $arDef);
             if (is_array($arNewPicture)) {
                 $arNewPicture["description"] = $arFields["DETAIL_PICTURE"]["description"];
                 $arFields["DETAIL_PICTURE"] = $arNewPicture;
             } elseif ($arDef["IGNORE_ERRORS"] !== "Y") {
                 unset($arFields["DETAIL_PICTURE"]);
                 $strWarning .= GetMessage("IBLOCK_FIELD_DETAIL_PICTURE") . ": " . $arNewPicture . "<br>";
             }
         }
         if (array_key_exists("DETAIL_PICTURE", $arFields) && is_array($arFields["DETAIL_PICTURE"]) && $arDef["USE_WATERMARK_FILE"] === "Y") {
             if (strlen($arFields["DETAIL_PICTURE"]["tmp_name"]) > 0 && ($arFields["DETAIL_PICTURE"]["tmp_name"] === $arFields["PREVIEW_PICTURE"]["tmp_name"] || $arFields["DETAIL_PICTURE"]["COPY_FILE"] == "Y" && !$arFields["DETAIL_PICTURE"]["copy"])) {
                 $tmp_name = CTempFile::GetFileName(basename($arFields["DETAIL_PICTURE"]["tmp_name"]));
                 CheckDirPath($tmp_name);
                 copy($arFields["DETAIL_PICTURE"]["tmp_name"], $tmp_name);
                 $arFields["DETAIL_PICTURE"]["copy"] = true;
                 $arFields["DETAIL_PICTURE"]["tmp_name"] = $tmp_name;
             }
             CIBLock::FilterPicture($arFields["DETAIL_PICTURE"]["tmp_name"], array("name" => "watermark", "position" => $arDef["WATERMARK_FILE_POSITION"], "type" => "file", "size" => "real", "alpha_level" => 100 - min(max($arDef["WATERMARK_FILE_ALPHA"], 0), 100), "file" => $_SERVER["DOCUMENT_ROOT"] . Rel2Abs("/", $arDef["WATERMARK_FILE"])));
         }
         if (array_key_exists("DETAIL_PICTURE", $arFields) && is_array($arFields["DETAIL_PICTURE"]) && $arDef["USE_WATERMARK_TEXT"] === "Y") {
             if (strlen($arFields["DETAIL_PICTURE"]["tmp_name"]) > 0 && ($arFields["DETAIL_PICTURE"]["tmp_name"] === $arFields["PREVIEW_PICTURE"]["tmp_name"] || $arFields["DETAIL_PICTURE"]["COPY_FILE"] == "Y" && !$arFields["DETAIL_PICTURE"]["copy"])) {
                 $tmp_name = CTempFile::GetFileName(basename($arFields["DETAIL_PICTURE"]["tmp_name"]));
                 CheckDirPath($tmp_name);
                 copy($arFields["DETAIL_PICTURE"]["tmp_name"], $tmp_name);
                 $arFields["DETAIL_PICTURE"]["copy"] = true;
                 $arFields["DETAIL_PICTURE"]["tmp_name"] = $tmp_name;
             }
             CIBLock::FilterPicture($arFields["DETAIL_PICTURE"]["tmp_name"], array("name" => "watermark", "position" => $arDef["WATERMARK_TEXT_POSITION"], "type" => "text", "coefficient" => $arDef["WATERMARK_TEXT_SIZE"], "text" => $arDef["WATERMARK_TEXT"], "font" => $_SERVER["DOCUMENT_ROOT"] . Rel2Abs("/", $arDef["WATERMARK_TEXT_FONT"]), "color" => $arDef["WATERMARK_TEXT_COLOR"]));
         }
     }
     $ipropTemplates = new \Bitrix\Iblock\InheritedProperty\ElementTemplates($ar_element["IBLOCK_ID"], $ar_element["ID"]);
     if (array_key_exists("PREVIEW_PICTURE", $arFields) && is_array($arFields["PREVIEW_PICTURE"])) {
         if (strlen($arFields["PREVIEW_PICTURE"]["name"]) <= 0 && strlen($arFields["PREVIEW_PICTURE"]["del"]) <= 0 && !is_set($arFields["PREVIEW_PICTURE"], "description")) {
             unset($arFields["PREVIEW_PICTURE"]);
         } else {
             $arFields["PREVIEW_PICTURE"]["MODULE_ID"] = "iblock";
             $arFields["PREVIEW_PICTURE"]["old_file"] = $ar_wf_element["PREVIEW_PICTURE"];
             $arFields["PREVIEW_PICTURE"]["name"] = \Bitrix\Iblock\Template\Helper::makeFileName($ipropTemplates, "ELEMENT_PREVIEW_PICTURE_FILE_NAME", array_merge($ar_element, $arFields), $arFields["PREVIEW_PICTURE"]);
         }
     }
     if (array_key_exists("DETAIL_PICTURE", $arFields) && is_array($arFields["DETAIL_PICTURE"])) {
         if (strlen($arFields["DETAIL_PICTURE"]["name"]) <= 0 && strlen($arFields["DETAIL_PICTURE"]["del"]) <= 0 && !is_set($arFields["DETAIL_PICTURE"], "description")) {
             unset($arFields["DETAIL_PICTURE"]);
         } else {
             $arFields["DETAIL_PICTURE"]["MODULE_ID"] = "iblock";
             $arFields["DETAIL_PICTURE"]["old_file"] = $ar_wf_element["DETAIL_PICTURE"];
             $arFields["DETAIL_PICTURE"]["name"] = \Bitrix\Iblock\Template\Helper::makeFileName($ipropTemplates, "ELEMENT_DETAIL_PICTURE_FILE_NAME", array_merge($ar_element, $arFields), $arFields["DETAIL_PICTURE"]);
         }
     }
     if (is_set($arFields, "DATE_ACTIVE_FROM")) {
         $arFields["ACTIVE_FROM"] = $arFields["DATE_ACTIVE_FROM"];
     }
     if (is_set($arFields, "DATE_ACTIVE_TO")) {
         $arFields["ACTIVE_TO"] = $arFields["DATE_ACTIVE_TO"];
     }
     if (is_set($arFields, "EXTERNAL_ID")) {
         $arFields["XML_ID"] = $arFields["EXTERNAL_ID"];
     }
     $PREVIEW_tmp = is_set($arFields, "PREVIEW_TEXT") ? $arFields["PREVIEW_TEXT"] : $ar_wf_element["PREVIEW_TEXT"];
     $PREVIEW_TYPE_tmp = is_set($arFields, "PREVIEW_TEXT_TYPE") ? $arFields["PREVIEW_TEXT_TYPE"] : $ar_wf_element["PREVIEW_TEXT_TYPE"];
     $DETAIL_tmp = is_set($arFields, "DETAIL_TEXT") ? $arFields["DETAIL_TEXT"] : $ar_wf_element["DETAIL_TEXT"];
     $DETAIL_TYPE_tmp = is_set($arFields, "DETAIL_TEXT_TYPE") ? $arFields["DETAIL_TEXT_TYPE"] : $ar_wf_element["DETAIL_TEXT_TYPE"];
     $arFields["SEARCHABLE_CONTENT"] = ToUpper((is_set($arFields, "NAME") ? $arFields["NAME"] : $ar_wf_element["NAME"]) . "\r\n" . ($PREVIEW_TYPE_tmp == "html" ? HTMLToTxt($PREVIEW_tmp) : $PREVIEW_tmp) . "\r\n" . ($DETAIL_TYPE_tmp == "html" ? HTMLToTxt($DETAIL_tmp) : $DETAIL_tmp));
     if (is_set($arFields["IBLOCK_SECTION_ID"]) && !is_set($arFields, "IBLOCK_SECTION")) {
         $arFields["IBLOCK_SECTION"] = array($arFields["IBLOCK_SECTION_ID"]);
     }
     $arFields["IBLOCK_ID"] = $ar_element["IBLOCK_ID"];
     if (!$this->CheckFields($arFields, $ID, $bCheckDiskQuota) || strlen($strWarning)) {
         $this->LAST_ERROR .= $strWarning;
         $Result = false;
         $arFields["RESULT_MESSAGE"] =& $this->LAST_ERROR;
     } else {
         unset($arFields["ID"]);
         if (array_key_exists("PREVIEW_PICTURE", $arFields)) {
             $SAVED_PREVIEW_PICTURE = $arFields["PREVIEW_PICTURE"];
         } else {
             $SAVED_PREVIEW_PICTURE = false;
         }
         if (array_key_exists("DETAIL_PICTURE", $arFields)) {
             $SAVED_DETAIL_PICTURE = $arFields["DETAIL_PICTURE"];
         } else {
             $SAVED_DETAIL_PICTURE = false;
         }
         // edit was done in workflow mode
         if ($bWorkFlow) {
             $arFields["WF_PARENT_ELEMENT_ID"] = $ID;
             if (array_key_exists("PREVIEW_PICTURE", $arFields)) {
                 if (is_array($arFields["PREVIEW_PICTURE"])) {
                     if (strlen($arFields["PREVIEW_PICTURE"]["name"]) <= 0 && strlen($arFields["PREVIEW_PICTURE"]["del"]) <= 0) {
                         if (array_key_exists("description", $arFields["PREVIEW_PICTURE"])) {
                             $arFile = CFile::GetFileArray($ar_wf_element["PREVIEW_PICTURE"]);
                             if ($arFields["PREVIEW_PICTURE"]["description"] != $arFile["DESCRIPTION"]) {
                                 //Description updated, so it's new file
                                 $arNewFile = CFile::MakeFileArray($ar_wf_element["PREVIEW_PICTURE"]);
                                 $arNewFile["description"] = $arFields["PREVIEW_PICTURE"]["description"];
                                 $arNewFile["MODULE_ID"] = "iblock";
                                 $arFields["PREVIEW_PICTURE"] = $arNewFile;
                             } else {
                                 $arFields["PREVIEW_PICTURE"] = $ar_wf_element["PREVIEW_PICTURE"];
                             }
                         } else {
                             //File was not changed at all
                             $arFields["PREVIEW_PICTURE"] = $ar_wf_element["PREVIEW_PICTURE"];
                         }
                     } else {
                         unset($arFields["PREVIEW_PICTURE"]["old_file"]);
                     }
                 }
             } else {
                 $arFields["PREVIEW_PICTURE"] = $ar_wf_element["PREVIEW_PICTURE"];
             }
             if (array_key_exists("DETAIL_PICTURE", $arFields)) {
                 if (is_array($arFields["DETAIL_PICTURE"])) {
                     if (strlen($arFields["DETAIL_PICTURE"]["name"]) <= 0 && strlen($arFields["DETAIL_PICTURE"]["del"]) <= 0) {
                         if (array_key_exists("description", $arFields["DETAIL_PICTURE"])) {
                             $arFile = CFile::GetFileArray($ar_wf_element["DETAIL_PICTURE"]);
                             if ($arFields["DETAIL_PICTURE"]["description"] != $arFile["DESCRIPTION"]) {
                                 //Description updated, so it's new file
                                 $arNewFile = CFile::MakeFileArray($ar_wf_element["DETAIL_PICTURE"]);
                                 $arNewFile["description"] = $arFields["DETAIL_PICTURE"]["description"];
                                 $arNewFile["MODULE_ID"] = "iblock";
                                 $arFields["DETAIL_PICTURE"] = $arNewFile;
                             } else {
                                 $arFields["DETAIL_PICTURE"] = $ar_wf_element["DETAIL_PICTURE"];
                             }
                         } else {
                             //File was not changed at all
                             $arFields["DETAIL_PICTURE"] = $ar_wf_element["DETAIL_PICTURE"];
                         }
                     } else {
                         unset($arFields["DETAIL_PICTURE"]["old_file"]);
                     }
                 }
             } else {
                 $arFields["DETAIL_PICTURE"] = $ar_wf_element["DETAIL_PICTURE"];
             }
             $NID = $this->Add($arFields);
             if ($NID > 0) {
                 if ($arFields["WF_STATUS_ID"] == 1) {
                     $DB->Query("UPDATE b_iblock_element SET TIMESTAMP_X=TIMESTAMP_X, WF_NEW=null WHERE ID=" . $ID);
                     $DB->Query("UPDATE b_iblock_element SET TIMESTAMP_X=TIMESTAMP_X, WF_NEW=null WHERE WF_PARENT_ELEMENT_ID=" . $ID);
                     $ar_wf_element["WF_NEW"] = false;
                 }
                 if ($this->bWF_SetMove) {
                     CIBlockElement::WF_SetMove($NID, $LAST_ID);
                 }
                 if ($ar_element["WF_STATUS_ID"] != 1 && $ar_wf_element["WF_STATUS_ID"] != $arFields["WF_STATUS_ID"] && $arFields["WF_STATUS_ID"] != 1) {
                     $DB->Query("UPDATE b_iblock_element SET TIMESTAMP_X=TIMESTAMP_X, WF_STATUS_ID=" . $arFields["WF_STATUS_ID"] . " WHERE ID=" . $ID);
                 }
             }
             //element was not published, so keep original
             if (is_set($arFields, "WF_STATUS_ID") && $arFields["WF_STATUS_ID"] != 1 && $ar_element["WF_STATUS_ID"] == 1 || !is_set($arFields, "WF_STATUS_ID") && $ar_wf_element["WF_STATUS_ID"] != 1) {
                 CIBlockElement::WF_CleanUpHistoryCopies($ID);
                 return true;
             }
             $arFields['WF_PARENT_ELEMENT_ID'] = false;
             $rs = $DB->Query("SELECT PREVIEW_PICTURE, DETAIL_PICTURE from b_iblock_element WHERE ID = " . $NID);
             $ar_new_element = $rs->Fetch();
         } else {
             $ar_new_element = false;
         }
         if ($ar_new_element) {
             if (!intval($ar_new_element["PREVIEW_PICTURE"])) {
                 $arFields["PREVIEW_PICTURE"] = false;
             } else {
                 $arFields["PREVIEW_PICTURE"] = $ar_new_element["PREVIEW_PICTURE"];
             }
             if (!intval($ar_new_element["DETAIL_PICTURE"])) {
                 $arFields["DETAIL_PICTURE"] = false;
             } else {
                 $arFields["DETAIL_PICTURE"] = $ar_new_element["DETAIL_PICTURE"];
             }
             if (is_array($arFields["PROPERTY_VALUES"]) && count($arFields["PROPERTY_VALUES"]) > 0) {
                 $i = 0;
                 $db_prop = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $arFields["IBLOCK_ID"], "CHECK_PERMISSIONS" => "N", "PROPERTY_TYPE" => "F"));
                 while ($arProp = $db_prop->Fetch()) {
                     $i++;
                     unset($arFields["PROPERTY_VALUES"][$arProp["CODE"]]);
                     unset($arFields["PROPERTY_VALUES"][$arProp["ID"]]);
                     $arFields["PROPERTY_VALUES"][$arProp["ID"]] = array();
                 }
                 if ($i > 0) {
                     //Delete previous files
                     $props = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $ID, "sort", "asc", array("PROPERTY_TYPE" => "F", "EMPTY" => "N"));
                     while ($arProp = $props->Fetch()) {
                         $arFields["PROPERTY_VALUES"][$arProp["ID"]][$arProp['PROPERTY_VALUE_ID']] = array("VALUE" => array("del" => "Y"), "DESCRIPTION" => false);
                     }
                     //Add copy from history
                     $arDup = array();
                     //This is cure for files duplication bug (just save element one more time)
                     $props = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $NID, "sort", "asc", array("PROPERTY_TYPE" => "F", "EMPTY" => "N"));
                     while ($arProp = $props->Fetch()) {
                         if (!array_key_exists($arProp["VALUE"], $arDup)) {
                             $arFields["PROPERTY_VALUES"][$arProp["ID"]][$arProp['PROPERTY_VALUE_ID']] = array("VALUE" => $arProp["VALUE"], "DESCRIPTION" => $arProp["DESCRIPTION"]);
                             $arDup[$arProp["VALUE"]] = true;
                             //This is cure for files duplication bug
                         }
                     }
                 }
             }
         } else {
             if (array_key_exists("PREVIEW_PICTURE", $arFields)) {
                 CFile::SaveForDB($arFields, "PREVIEW_PICTURE", "iblock");
             }
             if (array_key_exists("DETAIL_PICTURE", $arFields)) {
                 CFile::SaveForDB($arFields, "DETAIL_PICTURE", "iblock");
             }
         }
         unset($arFields["IBLOCK_ID"]);
         unset($arFields["WF_NEW"]);
         unset($arFields["IBLOCK_SECTION_ID"]);
         $bTimeStampNA = false;
         if (is_set($arFields, "TIMESTAMP_X") && ($arFields["TIMESTAMP_X"] === NULL || $arFields["TIMESTAMP_X"] === false)) {
             $bTimeStampNA = true;
             unset($arFields["TIMESTAMP_X"]);
         }
         $strUpdate = $DB->PrepareUpdate("b_iblock_element", $arFields, "iblock");
         if (strlen($strUpdate) > 0) {
             $strUpdate .= ", ";
         }
         $strSql = "UPDATE b_iblock_element SET " . $strUpdate . ($bTimeStampNA ? "TIMESTAMP_X=TIMESTAMP_X" : "TIMESTAMP_X=now()") . " WHERE ID=" . $ID;
         $DB->Query($strSql, false, "FILE: " . __FILE__ . "<br> LINE: " . __LINE__);
         if (array_key_exists("PROPERTY_VALUES", $arFields) && is_array($arFields["PROPERTY_VALUES"]) && count($arFields["PROPERTY_VALUES"]) > 0) {
             CIBlockElement::SetPropertyValues($ID, $ar_element["IBLOCK_ID"], $arFields["PROPERTY_VALUES"]);
         }
         if (is_set($arFields, "IBLOCK_SECTION")) {
             CIBlockElement::SetElementSection($ID, $arFields["IBLOCK_SECTION"], false, $arIBlock["RIGHTS_MODE"] === "E" ? $arIBlock["ID"] : 0);
         }
         if ($arIBlock["RIGHTS_MODE"] === "E") {
             $obElementRights = new CIBlockElementRights($arIBlock["ID"], $ID);
             if (array_key_exists("RIGHTS", $arFields) && is_array($arFields["RIGHTS"])) {
                 $obElementRights->SetRights($arFields["RIGHTS"]);
             }
         }
         if (array_key_exists("IPROPERTY_TEMPLATES", $arFields)) {
             $ipropTemplates = new \Bitrix\Iblock\InheritedProperty\ElementTemplates($arIBlock["ID"], $ID);
             $ipropTemplates->set($arFields["IPROPERTY_TEMPLATES"]);
         }
         if ($bUpdateSearch) {
             CIBlockElement::UpdateSearch($ID, true);
         }
         if ($bWorkFlow) {
             CIBlockElement::WF_CleanUpHistoryCopies($ID);
         }
         //Restore saved values
         if ($SAVED_PREVIEW_PICTURE !== false) {
             $arFields["PREVIEW_PICTURE_ID"] = $arFields["PREVIEW_PICTURE"];
             $arFields["PREVIEW_PICTURE"] = $SAVED_PREVIEW_PICTURE;
         } else {
             unset($arFields["PREVIEW_PICTURE"]);
         }
         if ($SAVED_DETAIL_PICTURE !== false) {
             $arFields["DETAIL_PICTURE_ID"] = $arFields["DETAIL_PICTURE"];
             $arFields["DETAIL_PICTURE"] = $SAVED_DETAIL_PICTURE;
         } else {
             unset($arFields["DETAIL_PICTURE"]);
         }
         if ($arIBlock["FIELDS"]["LOG_ELEMENT_EDIT"]["IS_REQUIRED"] == "Y") {
             $USER_ID = is_object($USER) ? intval($USER->GetID()) : 0;
             $arEvents = GetModuleEvents("main", "OnBeforeEventLog", true);
             if (empty($arEvents) || ExecuteModuleEventEx($arEvents[0], array($USER_ID)) === false) {
                 $rsElement = CIBlockElement::GetList(array(), array("=ID" => $ID, "CHECK_PERMISSIONS" => "N", "SHOW_NEW" => "Y"), false, false, array("ID", "NAME", "LIST_PAGE_URL", "CODE"));
                 $arElement = $rsElement->GetNext();
                 $res = array("ID" => $ID, "CODE" => $arElement["CODE"], "NAME" => $arElement["NAME"], "ELEMENT_NAME" => $arIBlock["ELEMENT_NAME"], "USER_ID" => $USER_ID, "IBLOCK_PAGE_URL" => $arElement["LIST_PAGE_URL"]);
                 CEventLog::Log("IBLOCK", "IBLOCK_ELEMENT_EDIT", "iblock", $arIBlock["ID"], serialize($res));
             }
         }
         $Result = true;
         /************* QUOTA *************/
         $_SESSION["SESS_RECOUNT_DB"] = "Y";
         /************* QUOTA *************/
     }
     $arFields["ID"] = $ID;
     $arFields["IBLOCK_ID"] = $ar_element["IBLOCK_ID"];
     $arFields["RESULT"] =& $Result;
     if (isset($arFields["PREVIEW_PICTURE"]) && $arFields["PREVIEW_PICTURE"]["COPY_FILE"] == "Y" && $arFields["PREVIEW_PICTURE"]["copy"]) {
         @unlink($arFields["PREVIEW_PICTURE"]["tmp_name"]);
         @rmdir(dirname($arFields["PREVIEW_PICTURE"]["tmp_name"]));
     }
     if (isset($arFields["DETAIL_PICTURE"]) && $arFields["DETAIL_PICTURE"]["COPY_FILE"] == "Y" && $arFields["DETAIL_PICTURE"]["copy"]) {
         @unlink($arFields["DETAIL_PICTURE"]["tmp_name"]);
         @rmdir(dirname($arFields["DETAIL_PICTURE"]["tmp_name"]));
     }
     foreach (GetModuleEvents("iblock", "OnAfterIBlockElementUpdate", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array(&$arFields));
     }
     if (defined("BX_COMP_MANAGED_CACHE")) {
         $GLOBALS["CACHE_MANAGER"]->ClearByTag("iblock_id_" . $arIBlock["ID"]);
     }
     return $Result;
 }
Beispiel #28
0
 function Delete($arParams)
 {
     global $DB, $USER;
     $iblockId = $arParams['iblockId'];
     $ownerType = $arParams['ownerType'];
     $ownerId = $arParams['ownerId'];
     $ID = $arParams['id'];
     $userId = $arParams['userId'];
     if ($USER) {
         $ownerName = $USER->GetFullName();
     } else {
         $rs = CUser::GetByID($userId);
         if ($arUser = $rs->Fetch()) {
             $name = trim($arUser['NAME'] . ' ' . $arUser['LAST_NAME']);
         }
     }
     $pathToUserCalendar = $arParams['pathToUserCalendar'];
     $arFilter = array("ID" => $ID, "IBLOCK_ID" => $iblockId);
     if ($arParams['bCheckPermissions'] !== false) {
         $arFilter[$ownerType == 'USER' ? "CREATED_BY" : "SOCNET_GROUP_ID"] = $ownerId;
     }
     $rsElement = CIBlockElement::GetList(array(), $arFilter, false, false, array("ID", "XML_ID", "IBLOCK_ID", "PROPERTY_PRIVATE", "PROPERTY_ACCESSIBILITY", "PROPERTY_IMPORTANCE", "PROPERTY_PARENT", "PROPERTY_LOCATION", "NAME", "DETAIL_TEXT", "IBLOCK_SECTION_ID", "ACTIVE_FROM", "ACTIVE_TO", "CREATED_BY", "PROPERTY_BXDAVEX_LABEL", "PROPERTY_BXDAVCD_LABEL"));
     if ($arElement = $rsElement->Fetch()) {
         $DB->StartTransaction();
         // PROPERTY_PARENT_VALUE - id of parent iblock element in meeting
         if (strlen($arElement["PROPERTY_PARENT_VALUE"]) > 0 && $arParams['bJustDel'] !== true) {
             if ($ownerType == 'USER') {
                 $rsHost = CIBlockElement::GetList(array(), array("=ID" => $arElement["PROPERTY_PARENT_VALUE"], "CREATED_BY" => $arElement['CREATED_BY']), false, false, array("ID", "IBLOCK_ID"));
                 // Owner delete mirror of the original event in the personal calendar
                 if ($arHost = $rsHost->Fetch()) {
                     CECEvent::Delete(array('bCheckPermissions' => false, 'id' => intVal($arHost['ID']), 'iblockId' => intVal($arHost['IBLOCK_ID']), 'ownerType' => '', 'ownerId' => 0, 'userId' => $userId, 'pathToUserCalendar' => $arParams['pathToUserCalendar'], 'pathToGroupCalendar' => $arParams['pathToGroupCalendar'], 'userIblockId' => $arParams['userIblockId'], 'RMiblockId' => $arParams['RMiblockId'], 'allowResMeeting' => $arParams['allowResMeeting'], 'VMiblockId' => $arParams['VMiblockId'], 'allowVideoMeeting' => $arParams['allowVideoMeeting']));
                     $this->ClearCache($this->cachePath . 'events/' . $arHost['IBLOCK_ID'] . '/');
                     return true;
                 }
             }
             // If no exchange
             CIBlockElement::SetPropertyValues($arElement["ID"], $arElement["IBLOCK_ID"], CEventCalendar::GetConfirmedID($iblockId, "N"), "CONFIRMED");
         } else {
             if ($arParams['bSyncDAV'] !== false) {
                 // Exchange
                 if (CEventCalendar::IsExchangeEnabled() && $ownerType == 'USER' && strlen($arElement['PROPERTY_BXDAVEX_LABEL_VALUE']) > 0) {
                     $eventXmlId = $arElement['XML_ID'];
                     $exchRes = CDavExchangeCalendar::DoDeleteItem($ownerId, $eventXmlId);
                     if ($exchRes !== true) {
                         return CEventCalendar::CollectExchangeErros($exchRes);
                     }
                 }
                 if (CEventCalendar::IsCalDAVEnabled() && $ownerType == 'USER' && strlen($arElement['PROPERTY_BXDAVCD_LABEL_VALUE']) > 0) {
                     $connectionId = CECCalendar::GetCalDAVConnectionId($iblockId, $arElement['IBLOCK_SECTION_ID']);
                     $calendarCalDAVXmlId = CECCalendar::GetCalDAVXmlId($iblockId, $arElement['IBLOCK_SECTION_ID']);
                     $DAVRes = CDavGroupdavClientCalendar::DoDeleteItem($connectionId, $calendarCalDAVXmlId, $arElement['XML_ID']);
                     if ($DAVRes !== true) {
                         return CEventCalendar::CollectCalDAVErros($DAVRes);
                     }
                 }
             }
             if (strlen($arElement["PROPERTY_LOCATION_VALUE"]) > 0) {
                 $loc = CEventCalendar::ParseLocation($arElement["PROPERTY_LOCATION_VALUE"]);
                 if ($loc['mrid'] == $arParams['VMiblockId'] && $loc['mrevid'] > 0) {
                     CEventCalendar::ReleaseVR(array('mrevid' => $loc['mrevid'], 'mrid' => $loc['mrid'], 'VMiblockId' => $arParams['VMiblockId'], 'allowVideoMeeting' => $arParams['allowVideoMeeting']));
                 } elseif ($loc['mrid'] > 0 && $loc['mrevid'] > 0) {
                     CEventCalendar::ReleaseMR(array('mrevid' => $loc['mrevid'], 'mrid' => $loc['mrid'], 'RMiblockId' => $arParams['RMiblockId'], 'allowResMeeting' => $arParams['allowResMeeting']));
                 }
             }
             $arGuests = CECEvent::GetGuests($arParams['userIblockId'], $ID);
             $obElement = new CIBlockElement();
             foreach ($arGuests as $guest_id => $arCalendarEvent) {
                 $res = CECEvent::Delete(array('id' => $arCalendarEvent["ID"], 'iblockId' => $arParams['userIblockId'], 'ownerType' => "USER", 'ownerId' => $guest_id, 'userId' => $userId, 'bJustDel' => true));
                 if ($userId == $guest_id) {
                     continue;
                 }
                 if ($arCalendarEvent["PROPERTY_VALUES"]["CONFIRMED"] != "N") {
                     // Send message
                     CEventCalendar::SendInvitationMessage(array('type' => "cancel", 'email' => $arCalendarEvent["CREATED_BY"]["EMAIL"], 'name' => $arCalendarEvent['NAME'], "from" => $arCalendarEvent["ACTIVE_FROM"], "to" => $arCalendarEvent["ACTIVE_TO"], "desc" => $arCalendarEvent['DETAIL_TEXT'], "pathToUserCalendar" => $pathToUserCalendar, "guestId" => $guest_id, "guestName" => $arCalendarEvent["CREATED_BY"]["FULL_NAME"], "userId" => $userId, "ownerName" => $ownerName));
                 }
             }
             if ($ownerType != 'USER') {
                 CEventCalendar::ClearCache('event_calendar/events/' . $arParams['userIblockId'] . '/');
             }
             // Deleting
             if (!CIBlockElement::Delete($ID)) {
                 $DB->Rollback();
                 return '[ECD1]' . GetMessage('EC_EVENT_ERROR_DEL');
             }
         }
         // log changes for socnet
         /*			if($this->bSocNetLog && $ownerType && !$arElement["PROPERTY_PRIVATE_VALUE"] && !$arParams['dontLogEvent'])
         			{
         				CEventCalendar::SocNetLog(
         					array(
         						'target' => 'delete_event',
         						'id' => $ID,
         						'name' => $arElement['NAME'],
         						'desc' => $arElement['DETAIL_TEXT'],
         						'from' => $arElement['ACTIVE_FROM'],
         						'to' => $arElement['ACTIVE_TO'],
         						'calendarId' => $arElement['IBLOCK_SECTION_ID'],
         						'accessibility' => $arElement["PROPERTY_ACCESSIBILITY_VALUE"],
         						'importance' => $arElement["PROPERTY_IMPORTANCE_VALUE"],
         						'pathToGroupCalendar' =>  $arParams["pathToGroupCalendar"],
         						'pathToUserCalendar' =>  $arParams["pathToUserCalendar"],
         						'iblockId' => $iblockId,
         						'ownerType' => $ownerType,
         						'ownerId' => $ownerId
         					)
         				);
         			}*/
         $DB->Commit();
     } else {
         return '[ECD2]' . GetMessage('EC_EVENT_NOT_FOUND');
     }
     return true;
 }
Beispiel #29
0
 if ($arRes["PREVIEW_PICTURE"] > 0) {
     $arImg = CFile::MakeFileArray($arRes["PREVIEW_PICTURE"]);
     CFile::ImageRotate($arImg['tmp_name'], $angle);
     $arFields["PREVIEW_PICTURE"] = CFile::MakeFileArray($arImg['tmp_name']);
 }
 // Detail
 if ($arRes["DETAIL_PICTURE"] > 0) {
     $arImg = CFile::MakeFileArray($arRes["DETAIL_PICTURE"]);
     CFile::ImageRotate($arImg['tmp_name'], $angle);
     $arFields["DETAIL_PICTURE"] = CFile::MakeFileArray($arImg['tmp_name']);
 }
 // Real
 if ($arRes["PROPERTY_REAL_PICTURE_VALUE"] > 0) {
     $arImg = CFile::MakeFileArray($arRes["PROPERTY_REAL_PICTURE_VALUE"]);
     CFile::ImageRotate($arImg['tmp_name'], $angle);
     CIBlockElement::SetPropertyValues($arParams["ELEMENT_ID"], $arParams["IBLOCK_ID"], array("REAL_PICTURE" => CFile::MakeFileArray($arImg['tmp_name'])), "REAL_PICTURE");
 }
 $bs = new CIBlockElement();
 if ($res = $bs->Update($arParams["ELEMENT_ID"], $arFields)) {
     $db_res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
     if ($arRes1 = $db_res->Fetch()) {
         $w = 0;
         $h = 0;
         $src = '';
         $thumb_src = '';
         if ($arRes1["PREVIEW_PICTURE"] > 0) {
             $file = CFile::GetFileArray($arRes1["PREVIEW_PICTURE"]);
             $thumb_src = $file['SRC'];
         }
         if ($arRes1["PROPERTY_REAL_PICTURE_VALUE"] > 0) {
             $file = CFile::GetFileArray($arRes1["PROPERTY_REAL_PICTURE_VALUE"]);
Beispiel #30
0
 function UpdateActivityIBlock(&$arFields)
 {
     if ($arFields['RESULT']) {
         // absence
         $iblock = COption::GetOptionInt('intranet', 'iblock_absence');
         if (!$iblock) {
             $iblock = array();
             $dbRes = CSite::GetList($b = 'SORT', $o = 'ASC');
             while ($arRes = $dbRes->Fetch()) {
                 if ($ib = COption::GetOptionInt('intranet', 'iblock_absence', false, $arRes['ID'])) {
                     $iblock[] = $ib;
                 }
             }
         } else {
             $iblock = array($iblock);
         }
         if (count($iblock) > 0) {
             foreach ($iblock as $ib) {
                 if ($arFields['IBLOCK_ID'] == $ib) {
                     static $PROPERTY_USER = 0;
                     if ($PROPERTY_USER <= 0) {
                         $dbRes = CIBlockProperty::GetByID('USER', $arFields['IBLOCK_ID']);
                         if ($arRes = $dbRes->Fetch()) {
                             $PROPERTY_USER = $arRes['ID'];
                         }
                     }
                     if ($PROPERTY_USER > 0) {
                         //							$arPropertyValue = array_values($arFields['PROPERTY_VALUES']);
                         //							$USER_ID = $arPropertyValue[0];
                         $USER_ID = $arFields['PROPERTY_VALUES']['USER'];
                         $dbRes = CUser::GetByID($USER_ID);
                         if ($arUser = $dbRes->Fetch()) {
                             CIBlockElement::SetPropertyValues($arFields['ID'], $arFields['IBLOCK_ID'], $arUser['ACTIVE'], 'USER_ACTIVE');
                         }
                     }
                 }
             }
         }
         // -- absence
         // news
         if (intval($arFields["IBLOCK_ID"]) > 0) {
             $rsIBlock = CIBlock::GetByID($arFields["IBLOCK_ID"]);
             if ($arIBlock = $rsIBlock->Fetch()) {
                 if ($arIBlock["IBLOCK_TYPE_ID"] == "news" && CModule::IncludeModule("socialnetwork")) {
                     CSocNetAllowed::GetAllowedEntityTypes();
                     $dbLog = CSocNetLog::GetList(array("ID" => "DESC"), array("EVENT_ID" => "news", "SOURCE_ID" => $arFields["ID"]));
                     if ($arLog = $dbLog->Fetch()) {
                         if ($arFields["ACTIVE"] == "Y" && (strlen($arFields["PREVIEW_TEXT"]) > 0 || strlen($arFields["DETAIL_TEXT"]) > 0) && (!array_key_exists("WF", $arFields) || $arFields["WF"] == "N" || $arFields["WF_STATUS_ID"] == 1 && $arFields["WF_PARENT_ELEMENT_ID"] == $arFields["ID"])) {
                             $arSoFields = array("=LOG_DATE" => strlen($arFields["ACTIVE_FROM"]) > 0 ? MakeTimeStamp($arFields["ACTIVE_FROM"], CSite::GetDateFormat("FULL", $site_id)) > time() ? $GLOBALS["DB"]->CharToDateFunction($arFields["ACTIVE_FROM"], "FULL", $site_id) : $GLOBALS["DB"]->CurrentTimeFunction() : $GLOBALS["DB"]->CurrentTimeFunction(), "=LOG_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "TITLE" => $arFields["NAME"], "MESSAGE" => strlen($arFields["DETAIL_TEXT"]) > 0 ? $arFields["DETAIL_TEXT_TYPE"] == "text" ? htmlspecialcharsbx($arFields["DETAIL_TEXT"]) : $arFields["DETAIL_TEXT"] : ($arFields["PREVIEW_TEXT_TYPE"] == "text" ? htmlspecialcharsbx($arFields["PREVIEW_TEXT"]) : $arFields["PREVIEW_TEXT"]));
                             $logID = CSocNetLog::Update($arLog["ID"], $arSoFields);
                             if (intval($logID) > 0) {
                                 $rsRights = CSocNetLogRights::GetList(array(), array("LOG_ID" => $logID));
                                 $arRights = $rsRights->Fetch();
                                 if (!$arRights) {
                                     CSocNetLogRights::Add($logID, "G2");
                                 }
                                 CSocNetLog::SendEvent($logID, "SONET_NEW_EVENT");
                             }
                         } else {
                             CSocNetLog::Delete($arLog["ID"]);
                         }
                     } else {
                         if ($arFields["ACTIVE"] == "Y" && (strlen($arFields["PREVIEW_TEXT"]) > 0 || strlen($arFields["DETAIL_TEXT"]) > 0) && (!array_key_exists("WF", $arFields) || $arFields["WF"] == "N" || $arFields["WF_STATUS_ID"] == 1 && $arFields["WF_PARENT_ELEMENT_ID"] == $arFields["ID"])) {
                             $dbIBlock = CIBlock::GetByID($arFields["IBLOCK_ID"]);
                             if ($arIBlock = $dbIBlock->Fetch()) {
                                 $rsSite = CIBlock::GetSite($arFields["IBLOCK_ID"]);
                                 if ($arSite = $rsSite->Fetch()) {
                                     $site_id = $arSite["SITE_ID"];
                                 }
                                 $val = COption::GetOptionString("intranet", "sonet_log_news_iblock", "", $site_id);
                                 if (strlen($val) > 0) {
                                     $arIBCode = unserialize($val);
                                     if (!is_array($arIBCode) || count($arIBCode) <= 0) {
                                         $arIBCode = array();
                                     }
                                 } else {
                                     $arIBCode = array();
                                 }
                                 if (in_array($arIBlock["CODE"], $arIBCode)) {
                                     $entity_url = str_replace("#SITE_DIR#", $arSite["DIR"], $arIBlock["LIST_PAGE_URL"]);
                                     if (strpos($entity_url, "/") === 0) {
                                         $entity_url = "/" . ltrim($entity_url, "/");
                                     }
                                     $url = str_replace(array("#SITE_DIR#", "#ID#", "#CODE#"), array($arSite["DIR"], $arFields["ID"], $arFields["CODE"]), $arIBlock["DETAIL_PAGE_URL"]);
                                     if (strpos($url, "/") === 0) {
                                         $url = "/" . ltrim($url, "/");
                                     }
                                     $val = COption::GetOptionString("intranet", "sonet_log_news_iblock_forum");
                                     if (strlen($val) > 0) {
                                         $arIBlockForum = unserialize($val);
                                     } else {
                                         $arIBlockForum = array();
                                     }
                                     $strMessage = strlen($arFields["DETAIL_TEXT"]) > 0 ? $arFields["DETAIL_TEXT_TYPE"] == "text" ? htmlspecialcharsbx($arFields["DETAIL_TEXT"]) : $arFields["DETAIL_TEXT"] : ($arFields["PREVIEW_TEXT_TYPE"] == "text" ? htmlspecialcharsbx($arFields["PREVIEW_TEXT"]) : $arFields["PREVIEW_TEXT"]);
                                     $dtFormatSite = defined("ADMIN_SECTION") && ADMIN_SECTION === true ? SITE_ID : $site_id;
                                     $dtValue = strlen($arFields["ACTIVE_FROM"]) > 0 ? MakeTimeStamp($arFields["ACTIVE_FROM"], CSite::GetDateFormat("FULL", $dtFormatSite)) > time() ? $GLOBALS["DB"]->CharToDateFunction($arFields["ACTIVE_FROM"], "FULL", $dtFormatSite) : $GLOBALS["DB"]->CurrentTimeFunction() : $GLOBALS["DB"]->CurrentTimeFunction();
                                     $arSoFields = array("SITE_ID" => $site_id, "ENTITY_TYPE" => SONET_SUBSCRIBE_ENTITY_NEWS, "ENTITY_ID" => $arIBlock["ID"], "EVENT_ID" => "news", "USER_ID" => $GLOBALS["USER"]->GetID(), "=LOG_DATE" => $dtValue, "=LOG_UPDATE" => $dtValue, "TITLE_TEMPLATE" => GetMessage("INTR_SOCNET_LOG_NEWS_TITLE"), "TITLE" => $arFields["NAME"], "MESSAGE" => $strMessage, "TEXT_MESSAGE" => "", "URL" => $url, "MODULE_ID" => "intranet", "CALLBACK_FUNC" => false, "TMP_ID" => false, "PARAMS" => serialize(array("ENTITY_NAME" => $arIBlock["NAME"], "ENTITY_URL" => $entity_url)), "SOURCE_ID" => $arFields["ID"], "ENABLE_COMMENTS" => array_key_exists($arIBlock["ID"], $arIBlockForum) ? "Y" : "N");
                                     $logID = CSocNetLog::Add($arSoFields, false);
                                     if (intval($logID) > 0) {
                                         CSocNetLog::Update($logID, array("TMP_ID" => $logID));
                                         CSocNetLogRights::Add($logID, "G2");
                                         CSocNetLog::SendEvent($logID, "SONET_NEW_EVENT");
                                     }
                                 }
                             }
                         }
                     }
                     if ($logID > 0 && strlen($arFields["ACTIVE_TO"]) > 0) {
                         $agent = "CIntranetEventHandlers::DeleteLogEntry(" . $arFields["ID"] . ");";
                         CAgent::RemoveAgent($agent, "intranet");
                         CAgent::AddAgent($agent, "intranet", "N", 0, $arFields["ACTIVE_TO"], "Y", $arFields["ACTIVE_TO"]);
                     }
                 }
             }
         }
         // --news
     }
 }