• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_tools_photo.php
  • Класс: CSocNetPhotoCommentEvent
  • Вызов: CSocNetPhotoCommentEvent::AddComment_Photo_Forum
static function AddComment_Photo_Forum($arFields, $FORUM_ID, $arLog)
{
	global $USER_FIELD_MANAGER;

	if (!CModule::IncludeModule("forum"))
		return false;

	if (!CModule::IncludeModule("iblock"))
		return false;

	$ufFileID = array();
	$ufDocID = array();

	$arElement = false;
	$arFilteredText = array();

	$arFilter = array("ID" => $arLog["SOURCE_ID"]);
	$arSelectedFields = array("IBLOCK_ID", "ID", "NAME", "TAGS", "CODE", "IBLOCK_SECTION_ID", "DETAIL_PAGE_URL",
			"CREATED_BY", "PREVIEW_PICTURE", "PREVIEW_TEXT", "PROPERTY_FORUM_TOPIC_ID", "PROPERTY_FORUM_MESSAGE_CNT");
	$db_res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelectedFields);
	if ($db_res && $res = $db_res->GetNext())
		$arElement = $res;

	if ($arElement)
	{
		// check iblock properties
		CSocNetLogTools::AddComment_Review_CheckIBlock_Forum($arElement);

		$dbMessage = CForumMessage::GetList(
			array(),
			array(
				"PARAM2" => $arElement["ID"]
			)
		);

		if (!$arMessage = $dbMessage->Fetch())
		{
			// Add Topic
			$TOPIC_ID = CSocNetLogTools::AddComment_Review_CreateRoot_Forum($arElement, $FORUM_ID);
			$bNewTopic = true;
		}
		else
			$TOPIC_ID = $arMessage["TOPIC_ID"];

		if(intval($TOPIC_ID) > 0)
		{
			if (COption::GetOptionString("forum", "FILTER", "Y") == "Y")
			{
				$arFields["TEXT_MESSAGE"] = $arFilteredText["TEXT_MESSAGE"] = CFilterUnquotableWords::Filter($arFields["TEXT_MESSAGE"]);
				$arFilteredText["MESSAGE"] = CFilterUnquotableWords::Filter($arFields["MESSAGE"]);
			}

			// Add comment
			$messageID = false;
			$arFieldsMessage = array(
				"POST_MESSAGE" => $arFields["TEXT_MESSAGE"],
				"USE_SMILES" => "Y",
				"PARAM2" => $arElement["ID"],
				"APPROVED" => "Y"
			);

			$USER_FIELD_MANAGER->EditFormAddFields("SONET_COMMENT", $arTmp);
			if (is_array($arTmp))
			{
				if (array_key_exists("UF_SONET_COM_DOC", $arTmp))
					$GLOBALS["UF_FORUM_MESSAGE_DOC"] = $arTmp["UF_SONET_COM_DOC"];
				elseif (array_key_exists("UF_SONET_COM_FILE", $arTmp))
				{
					$arFieldsMessage["FILES"] = array();
					foreach($arTmp["UF_SONET_COM_FILE"] as $file_id)
						$arFieldsMessage["FILES"][] = array("FILE_ID" => $file_id);
				}
			}

			$messageID = ForumAddMessage("REPLY", $FORUM_ID, $TOPIC_ID, 0, $arFieldsMessage, $sError, $sNote);

			if (!$messageID)
				$strError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR");
			else
			{
				// get UF DOC value and FILE_ID there
				$dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $messageID));
				while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch())
					$ufFileID[] = $arAddedMessageFiles["FILE_ID"];

				$ufDocID = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $messageID, LANGUAGE_ID);

				CSocNetLogTools::AddComment_Review_UpdateElement_Forum($arElement, $TOPIC_ID, $bNewTopic);
			}
		}
		else
			$strError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR");
	}
	else
		$strError = GetMessage("SONET_ADD_COMMENT_SOURCE_ERROR");

	return array_merge(
		$arFilteredText, 
		array(
			"SOURCE_ID" => $messageID,
			"RATING_TYPE_ID" => "FORUM_POST",
			"RATING_ENTITY_ID" => $messageID,
			"ERROR" => $strError,
			"NOTES" => "",
			"UF" => array(
				"FILE" => $ufFileID,
				"DOC" => $ufDocID
			),
			"IM_MESSAGE" => ($messageID ? $arFields["TEXT_MESSAGE"] : false)
		)
	);
}