static function AddComment_Wiki($arFields)
{
if (!CModule::IncludeModule('iblock'))
return false;
if (!CModule::IncludeModule('socialnetwork'))
return false;
$ufFileID = array();
$ufDocID = array();
$dbResult = CSocNetLog::GetList(
array('ID' => 'DESC'),
array('TMP_ID' => $arFields['LOG_ID']),
false,
false,
array('ID', 'SOURCE_ID', 'PARAMS', 'URL')
);
$bFound = false;
if ($arLog = $dbResult->Fetch())
{
if ($arLog['PARAMS'] <> '')
{
$arFieldsParams = explode('&', $arLog['PARAMS']);
if (is_array($arFieldsParams) && count($arFieldsParams) > 0)
foreach ($arFieldsParams as $tmp)
{
list($key, $value) = explode('=', $tmp);
if ($key == 'forum_id')
{
$FORUM_ID = intval($value);
break;
}
}
}
if ($FORUM_ID > 0 && intval($arLog['SOURCE_ID']) > 0)
$bFound = true;
}
if ($bFound)
{
$arElement = false;
$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)
{
if (
isset($arFields["ENTITY_TYPE"])
&& isset($arFields["ENTITY_ID"])
)
{
$arElement["ENTITY_TYPE"] = $arFields["ENTITY_TYPE"];
$arElement["ENTITY_ID"] = $arFields["ENTITY_ID"];
}
// check iblock properties
CSocNetLogTools::AddComment_Review_CheckIBlock($arElement);
$dbMessage = CForumMessage::GetList(
array(),
array(
'FORUM_ID' => $FORUM_ID,
'PARAM2' => $arElement['ID']
)
);
if (!$arMessage = $dbMessage->Fetch())
{
// Add Topic and Root Message
$TOPIC_ID = CSocNetLogTools::AddComment_Review_CreateRoot($arElement, $FORUM_ID, false);
$bNewTopic = true;
}
else
$TOPIC_ID = $arMessage['TOPIC_ID'];
if(intval($TOPIC_ID) > 0)
{
// Add comment
$messageID = false;
$arFieldsMessage = array(
'POST_MESSAGE' => $arFields['TEXT_MESSAGE'],
'USE_SMILES' => 'Y',
'PARAM2' => $arElement['ID'],
'APPROVED' => 'Y'
);
$GLOBALS["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
{
$dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $messageID));
while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch())
$ufFileID[] = $arAddedMessageFiles["FILE_ID"];
$ufDocID = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $messageID, LANGUAGE_ID);
CSocNetLogTools::AddComment_Review_UpdateElement($arElement, $TOPIC_ID, $bNewTopic);
$userID = $GLOBALS["USER"]->GetID();
if (
CModule::IncludeModule("im")
&& intval($arElement["CREATED_BY"]) > 0
&& $arElement["CREATED_BY"] != $userID
)
{
$rsUnFollower = CSocNetLogFollow::GetList(
array(
"USER_ID" => $arElement["CREATED_BY"],
"CODE" => "L".$arLog["ID"],
"TYPE" => "N"
),
array("USER_ID")
);
$arUnFollower = $rsUnFollower->Fetch();
if (!$arUnFollower)
{
$arMessageFields = array(
"MESSAGE_TYPE" => IM_MESSAGE_SYSTEM,
"TO_USER_ID" => $arElement["CREATED_BY"],
"FROM_USER_ID" => $userID,
"LOG_ID" => $arLog["ID"],
"NOTIFY_TYPE" => IM_NOTIFY_FROM,
"NOTIFY_MODULE" => "wiki",
"NOTIFY_EVENT" => "comment",
);
$arParams["TITLE"] = str_replace(Array("rn", "n"), " ", $arElement["NAME"]);
$arParams["TITLE"] = TruncateText($arParams["TITLE"], 100);
$arParams["TITLE_OUT"] = TruncateText($arParams["TITLE"], 255);
$arTmp = CSocNetLogTools::ProcessPath(array("ELEMENT_URL" => $arLog["URL"]), $arElement["CREATED_BY"]);
$serverName = $arTmp["SERVER_NAME"];
$url = $arTmp["URLS"]["ELEMENT_URL"];
$arMessageFields["NOTIFY_TAG"] = "WIKI|COMMENT|".$arElement['ID'];
$arMessageFields["NOTIFY_MESSAGE"] = GetMessage("WIKI_SONET_FROM_LOG_IM_COMMENT", Array(
"#title#" => (
$url <> ''
? "".htmlspecialcharsbx($arParams["TITLE"]).""
: htmlspecialcharsbx($arParams["TITLE"])
)
));
$arMessageFields["NOTIFY_MESSAGE_OUT"] = GetMessage("WIKI_SONET_FROM_LOG_IM_COMMENT", Array(
"#title#" => htmlspecialcharsbx($arParams["TITLE"])
)).($url <> ''
? " (".$serverName.$url.")"
: ""
)."#BR##BR#".$arFields["TEXT_MESSAGE"];
CIMNotify::Add($arMessageFields);
}
}
}
}
else
$strError = GetMessage('SONET_ADD_COMMENT_SOURCE_ERROR');
}
else
$strError = GetMessage('SONET_ADD_COMMENT_SOURCE_ERROR');
}
else
$strError = GetMessage('SONET_ADD_COMMENT_SOURCE_ERROR');
return array(
'SOURCE_ID' => $messageID,
'RATING_TYPE_ID' => 'FORUM_POST',
'RATING_ENTITY_ID' => $messageID,
'ERROR' => $strError,
'NOTES' => '',
"UF" => array(
"FILE" => $ufFileID,
"DOC" => $ufDocID
)
);
}