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; }
/** * <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> * <?<br> * // Удалим изображение с идентификатором 5 из страницы с идентификатором 13 из инфо.блока с идентификатором 2 * $IMAGE_ID = 5; * $ID = 13; * $IBLOCK_ID = 2; * * $CWiki = new CWiki(); * $CWiki->DeleteImage($IMAGE_ID, $ID, $IBLOCK_ID);<br>?> * </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'); } }
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"); } } } } }
$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]));
} 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
$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/");
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'); } } }
/** * @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; }
} 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
<?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);
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; }
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";
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'); } }
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"])) {
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 {
$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 {
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";
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; }
/** * @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; }
'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"];
} } } $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; }
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; }
/** * @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); }
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; }
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; }
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"]);
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 } }