function OnAfterPhotoCommentAddForum($ID, $arFields)
{
global $USER, $DB;
static $arSiteWorkgroupsPage;
if (!CModule::IncludeModule('iblock'))
return;
if (!$this->IsSocnet)
return;
if (
(
!array_key_exists("PARAM1", $arFields)
|| $arFields["PARAM1"] != "IB"
)
&& array_key_exists("PARAM2", $arFields)
&& intval($arFields["PARAM2"]) > 0
)
{
$bSocNetLogRecordExists = false;
$dbRes = CSocNetLog::GetList(
array("ID" => "DESC"),
array(
"EVENT_ID" => "photo_photo",
"SOURCE_ID" => $arFields["PARAM2"] // file photo id
),
false,
false,
array("ID", "ENTITY_TYPE", "ENTITY_ID", "TMP_ID", "USER_ID", "TITLE", "URL", "PARAMS")
);
if ($arRes = $dbRes->Fetch())
{
$log_id = $arRes["ID"];
$entity_type = $arRes["ENTITY_TYPE"];
$entity_id = $arRes["ENTITY_ID"];
$log_title = $arRes["TITLE"];
$log_url = $arRes["URL"];
$log_user_id = $arRes["USER_ID"];
if ($arRes["PARAMS"] <> '')
{
$arTmp = unserialize($arRes["PARAMS"], [ 'allowed_classes' => false ]);
if ($arTmp)
{
if (
array_key_exists("SECTION_NAME", $arTmp)
&& $arTmp["SECTION_NAME"] <> ''
)
$log_section_name = $arTmp["SECTION_NAME"];
if (
array_key_exists("SECTION_URL", $arTmp)
&& $arTmp["SECTION_URL"] <> ''
)
$log_section_url = $arTmp["SECTION_URL"];
}
}
$bSocNetLogRecordExists = true;
}
else
{
$rsElement = CIBlockElement::GetByID($arFields["PARAM2"]);
if ($arElement = $rsElement->Fetch())
{
$url = $this->arPath["DETAIL_URL"];
$sAuthorName = GetMessage("SONET_PHOTO_LOG_GUEST");
if (intval($arElement["CREATED_BY"]) > 0)
{
$rsUser = CUser::GetByID($arElement["CREATED_BY"]);
if ($arUser = $rsUser->Fetch())
$sAuthorName = CUser::FormatName(CSite::GetNameFormat(false), $arUser, true, false);
}
if (
in_array( $this->entity_type, array(SONET_ENTITY_USER, SONET_ENTITY_GROUP))
&& intval($this->entity_id) > 0
)
{
$entity_type = $this->entity_type;
$entity_id = $this->entity_id;
$alias = ($this->entity_type == SONET_ENTITY_GROUP ? "group" : "user")."_".$this->entity_id;
}
$arLogParams = array(
"FORUM_ID" => intval($this->ForumID)
);
$rsIBlock = CIBlock::GetByID($arElement["IBLOCK_ID"]);
if($arIBlock = $rsIBlock->Fetch())
{
$arLogParams["IBLOCK_ID"] = $arIBlock["ID"];
$arLogParams["IBLOCK_TYPE"] = $arIBlock["IBLOCK_TYPE_ID"];
}
$rsSection = CIBlockSection::GetByID($arElement["IBLOCK_SECTION_ID"]);
if ($arSection = $rsSection->Fetch())
{
$arLogParams["SECTION_ID"] = $arSection["ID"];
$arLogParams["SECTION_NAME"] = $arSection["NAME"];
$arLogParams["SECTION_URL"] = str_replace("#SECTION_ID#", $arSection["ID"], $this->arPath["SECTION_URL"]);
$arSectionPath = array();
$bPassword = false;
$dbSection = CIBlockSection::GetList(
array("LEFT_MARGIN" => "ASC"),
array(
"IBLOCK_ID" => intval($arLogParams["IBLOCK_ID"]),
"<=LEFT_BORDER" => intval($arSection["LEFT_MARGIN"]),
">=RIGHT_BORDER" => intval($arSection["RIGHT_MARGIN"]),
"<=DEPTH_LEVEL" => intval($arSection["DEPTH_LEVEL"]),
),
false,
array("ID", "IBLOCK_ID", "NAME", "CODE", "CREATED_BY", "DEPTH_LEVEL", "LEFT_MARGIN", "RIGHT_MARGIN", "UF_PASSWORD")
);
while ($arPath = $dbSection->Fetch())
{
$arSectionPath[] = $arPath;
if (trim($arPath["UF_PASSWORD"]) <> '')
{
$bPassword = true;
break;
}
}
if (!$alias)
{
$entity_type = SONET_ENTITY_USER;
$entity_id = $arSectionPath[0]["CREATED_BY"];
$alias = $arSectionPath[0]["CODE"];
}
if (!$arSiteWorkgroupsPage && IsModuleInstalled("extranet") && $entity_type == SONET_ENTITY_GROUP)
{
$rsSite = CSite::GetList("sort", "desc", Array("ACTIVE" => "Y"));
while($arSite = $rsSite->Fetch())
$arSiteWorkgroupsPage[$arSite["ID"]] = COption::GetOptionString("socialnetwork", "workgroups_page", $arSite["DIR"]."workgroups/", $arSite["ID"]);
}
if (is_set($arLogParams["SECTION_URL"]) && is_array($arSiteWorkgroupsPage) && $entity_type == SONET_ENTITY_GROUP)
foreach($arSiteWorkgroupsPage as $groups_page)
if (mb_strpos($arLogParams["SECTION_URL"], $groups_page) === 0)
$arLogParams["SECTION_URL"] = "#GROUPS_PATH#".mb_substr($arLogParams["SECTION_URL"], mb_strlen($groups_page), mb_strlen($arLogParams["SECTION_URL"]) - mb_strlen($groups_page));
}
$arLogParams["ALIAS"] = $alias;
$arSonetFields = array(
"ENTITY_TYPE" => $entity_type,
"ENTITY_ID" => $entity_id,
"EVENT_ID" => "photo_photo",
"LOG_DATE" => $arElement["TIMESTAMP_X"],
"TITLE_TEMPLATE" => str_replace("#AUTHOR_NAME#", $sAuthorName, GetMessage("SONET_PHOTOPHOTO_LOG_1")),
"TITLE" => $arElement["NAME"],
"MESSAGE" => "",
"TEXT_MESSAGE" => "",
"URL" => CComponentEngine::MakePathFromTemplate($url, array(
"ELEMENT_ID" => $arElement["ID"],
"element_id" => $arElement["ID"],
"SECTION_ID" => $arElement["IBLOCK_SECTION_ID"],
"section_id" => $arElement["IBLOCK_SECTION_ID"]
)),
"MODULE_ID" => false,
"CALLBACK_FUNC" => false,
"SOURCE_ID" => $arElement["ID"],
"PARAMS" => serialize($arLogParams),
"RATING_TYPE_ID" => "IBLOCK_ELEMENT",
"RATING_ENTITY_ID"=> $arElement["ID"],
);
if (intval($arElement["CREATED_BY"]) > 0)
$arSonetFields["USER_ID"] = $arElement["CREATED_BY"];
$log_id = CSocNetLog::Add($arSonetFields, false);
if (intval($log_id) > 0)
{
$log_title = $arSonetFields["TITLE"];
$log_url = $arSonetFields["URL"];
$log_section_name = $arLogParams["SECTION_NAME"];
$log_section_url = $arLogParams["SECTION_URL"];
$log_user_id = $arSonetFields["USER_ID"];
CSocNetLog::Update($log_id, array("TMP_ID" => $log_id));
if ($bPassword)
{
CSocNetLogRights::DeleteByLogID($log_id);
CSocNetLogRights::Add($log_id, array("U".$USER->GetID(), "SA"));
}
else
{
CSocNetLogRights::SetForSonet($log_id, $entity_type, $entity_id, "photo", "view");
}
}
}
}
if (intval($log_id) > 0)
{
$arForum = CForumNew::GetByID($this->ForumID);
$parser = new forumTextParser(LANGUAGE_ID, $this->arPath["PATH_TO_SMILE"]);
$parser->imageWidth = false;
$parser->imageHeight = false;
$arAllow = array(
"HTML" => "N",
"ANCHOR" => "N",
"BIU" => "N",
"IMG" => "N",
"LIST" => "N",
"QUOTE" => "N",
"CODE" => "N",
"FONT" => "N",
"UPLOAD" => $arForum["ALLOW_UPLOAD"],
"NL2BR" => "N",
"SMILES" => "N",
"VIDEO" => "N"
);
$url = $this->arPath["DETAIL_URL"];
if ($bSocNetLogRecordExists)
{
$arMessage = CForumMessage::GetByIDEx($ID);
$arFieldsForSocnet = array(
"ENTITY_TYPE" => $entity_type,
"ENTITY_ID" => $entity_id,
"EVENT_ID" => "photo_comment",
"=LOG_DATE" => $DB->CurrentTimeFunction(),
"MESSAGE" => $parser->convert(empty($arFields["POST_MESSAGE_FILTER"]) ? $arFields["POST_MESSAGE"] : $arFields["POST_MESSAGE_FILTER"], $arAllow),
"TEXT_MESSAGE" => $parser->convert4mail(empty($arFields["POST_MESSAGE_FILTER"]) ? $arFields["POST_MESSAGE"] : $arFields["POST_MESSAGE_FILTER"]),
"MODULE_ID" => false,
"SOURCE_ID" => $ID,
"LOG_ID" => $log_id,
"RATING_TYPE_ID" => "FORUM_POST",
"RATING_ENTITY_ID" => $ID,
);
if (intval($arMessage["AUTHOR_ID"]) > 0)
$arFieldsForSocnet["USER_ID"] = $arMessage["AUTHOR_ID"];
$comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false);
if ($comment_id)
{
CSocNetLog::CounterIncrement($comment_id, false, false, "LC");
$arFieldsIM = Array(
"TYPE" => "COMMENT",
"TITLE" => $log_title,
"MESSAGE" => $arFieldsForSocnet["MESSAGE"],
"URL" => $log_url,
"SECTION_NAME" => $log_section_name,
"SECTION_URL" => $log_section_url,
"ID" => $arFields["PARAM2"],
"PHOTO_AUTHOR_ID" => $log_user_id,
"COMMENT_AUTHOR_ID" => $arMessage["AUTHOR_ID"],
);
CSocNetPhotoCommentEvent::NotifyIm($arFieldsIM);
}
}
else
{
$dbComments = CForumMessage::GetListEx(
array(),
array('TOPIC_ID' => $arFields["TOPIC_ID"], "NEW_TOPIC" => "N")
);
while ($arComment = $dbComments->GetNext())
{
$arFieldsForSocnet = array(
"ENTITY_TYPE" => $entity_type,
"ENTITY_ID" => $entity_id,
"EVENT_ID" => "photo_comment",
"=LOG_DATE" => $DB->CharToDateFunction($arComment["POST_DATE"], "FULL", SITE_ID),
"MESSAGE" => $parser->convert(empty($arComment["POST_MESSAGE_FILTER"]) ? $arComment["POST_MESSAGE"] : $arComment["POST_MESSAGE_FILTER"], $arAllow),
"TEXT_MESSAGE" => $parser->convert4mail(empty($arComment["POST_MESSAGE_FILTER"]) ? $arComment["POST_MESSAGE"] : $arComment["POST_MESSAGE_FILTER"]),
"MODULE_ID" => false,
"SOURCE_ID" => $arComment["ID"],
"LOG_ID" => $log_id,
"RATING_TYPE_ID" => "FORUM_POST",
"RATING_ENTITY_ID" => $arComment["ID"],
);
if (intval($arComment["AUTHOR_ID"]) > 0)
{
$arFieldsForSocnet["USER_ID"] = $arComment["AUTHOR_ID"];
}
$comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false);
if ($comment_id)
{
CSocNetLog::CounterIncrement($comment_id, false, false, "LC");
$arFieldsIM = Array(
"TYPE" => "COMMENT",
"TITLE" => $log_title,
"MESSAGE" => $arFieldsForSocnet["MESSAGE"],
"URL" => $log_url,
"SECTION_NAME" => $log_section_name,
"SECTION_URL" => $log_section_url,
"ID" => $arFields["PARAM2"],
"PHOTO_AUTHOR_ID" => $log_user_id,
"COMMENT_AUTHOR_ID" => $arComment["AUTHOR_ID"],
);
CSocNetPhotoCommentEvent::NotifyIm($arFieldsIM);
}
}
if ($arElement)
{
self::InheriteAlbumFollow($arElement["IBLOCK_SECTION_ID"], $log_id, (intval($arElement["CREATED_BY"]) > 0 ? $arElement["CREATED_BY"] : false));
}
}
}
}
}