- Модуль: 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
)
);
}