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

	if (!CModule::IncludeModule("forum") || !CModule::IncludeModule("tasks"))
	{
		return false;
	}

	if (
		!isset($arFields["SOURCE_ID"])
		|| intval($arFields["SOURCE_ID"]) <= 0
	)
	{
		return false;
	}

	$messageId = intval($arFields["SOURCE_ID"]);

	$sError = '';

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

	$arFields["LOG_ID"] = intval($arFields["LOG_ID"]);

	if ($arFields["LOG_ID"] && ($arForumMessage = CForumMessage::GetByID($messageId)))
	{
		$arFieldsMessage = array(
			"POST_MESSAGE" => $arFields["TEXT_MESSAGE"],
			"USE_SMILES" => "Y",
			"APPROVED" => "Y",
			"SONET_PERMS" => array("bCanFull" => true)
		);

		$logItem = CSocNetLog::GetList(
			array(),
			array("ID" => $arFields["LOG_ID"]),
			false,
			false,
			array("ID", "SOURCE_ID", "SITE_ID")
		)->fetch();

		$arTmp = array();
		$USER_FIELD_MANAGER->EditFormAddFields("SONET_COMMENT", $arTmp);
		if (is_array($arTmp) && $logItem)
		{
			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"][$file_id] = array("FILE_ID" => $file_id);
				}
				if (!empty($arFieldsMessage["FILES"]))
				{
					$arFileParams = array("FORUM_ID" => $arForumMessage["FORUM_ID"], "TOPIC_ID" => $arForumMessage["TOPIC_ID"]);
					if(CForumFiles::CheckFields($arFieldsMessage["FILES"], $arFileParams, "NOT_CHECK_DB"))
					{
						CForumFiles::Add(array_keys($arFieldsMessage["FILES"]), $arFileParams);
					}
				}
			}
		}

		$taskId = intval($logItem["SOURCE_ID"]);

		$feed = new BitrixForumCommentsFeed(
			$arForumMessage["FORUM_ID"],
			array(
				"type" => 'TK',
				"id" => $taskId,
				"xml_id" => "TASK_".$taskId
			)
		);

		BitrixTasksIntegrationSocialNetwork::disable(); // disable socnet on comment add to avoid recursion
		$message = $feed->edit($messageId, $arFieldsMessage);
		BitrixTasksIntegrationSocialNetwork::enable(); // enable it back

		$messageID = false;
		if(is_array($message))
		{
			$messageID = $message['ID'];
		}
		else
		{
			foreach($feed->getErrors() as $error)
			{
				$sError .= $error->getMessage();
			}
		}

		unset($GLOBALS["UF_FORUM_MESSAGE_DOC"]);

		// get UF DOC value and FILE_ID there
		if ($messageID > 0)
		{
			$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);
		}
	}
	else
	{
		$sError = GetMessage("SONET_UPDATE_COMMENT_SOURCE_ERROR");
	}

	return array(
		"ERROR" => $sError,
		"NOTES" => '',
		"UF" => array(
			"FILE" => $ufFileID,
			"DOC" => $ufDocID
		)
	);
}