Your IP : 18.118.196.177
<?
define("NO_KEEP_STATISTIC", true);
define("BX_STATISTIC_BUFFER_USED", false);
define("NO_LANG_FILES", true);
define("NOT_CHECK_PERMISSIONS", true);
$site_id = (isset($_REQUEST["site"]) && is_string($_REQUEST["site"])) ? trim($_REQUEST["site"]): "";
$site_id = substr(preg_replace("/[^a-z0-9_]/i", "", $site_id), 0, 2);
define("SITE_ID", $site_id);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/bx_root.php");
$action = (isset($_REQUEST["action"]) && is_string($_REQUEST["action"])) ? trim($_REQUEST["action"]): "";
$entity_type = (isset($_REQUEST["et"]) && is_string($_REQUEST["et"])) ? trim($_REQUEST["et"]): "";
$entity_id = isset($_REQUEST["eid"])? $_REQUEST["eid"]: "";
$cb_id = isset($_REQUEST["cb_id"])? $_REQUEST["cb_id"]: "";
$event_id = (isset($_REQUEST["evid"]) && is_string($_REQUEST["evid"])) ? trim($_REQUEST["evid"]): "";
$transport = (isset($_REQUEST["transport"]) && is_string($_REQUEST["transport"])) ? trim($_REQUEST["transport"]): "";
$entity_xml_id = (isset($_REQUEST["exmlid"]) && is_string($_REQUEST["exmlid"])) ? trim($_REQUEST["exmlid"]): "";
$lng = (isset($_REQUEST["lang"]) && is_string($_REQUEST["lang"])) ? trim($_REQUEST["lang"]): "";
$lng = substr(preg_replace("/[^a-z0-9_]/i", "", $lng), 0, 2);
$ls = isset($_REQUEST["ls"]) && !is_array($_REQUEST["ls"])? trim($_REQUEST["ls"]): "";
$ls_arr = isset($_REQUEST["ls_arr"])? $_REQUEST["ls_arr"]: "";
$st_id = (isset($_REQUEST["st_id"]) && is_string($_REQUEST["st_id"])) ? trim($_REQUEST["st_id"]): "";
$st_id = preg_replace("/[^a-z0-9_]/i", "", $st_id);
define("SITE_TEMPLATE_ID", $st_id);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$rsSite = CSite::GetByID($site_id);
if ($arSite = $rsSite->Fetch())
define("LANGUAGE_ID", $arSite["LANGUAGE_ID"]);
else
define("LANGUAGE_ID", "en");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/components/bitrix/socialnetwork.log.entry/include.php");
__IncludeLang(dirname(__FILE__)."/lang/".$lng."/ajax.php");
if(CModule::IncludeModule("compression"))
CCompress::Disable2048Spaces();
if(CModule::IncludeModule("socialnetwork"))
{
$bCurrentUserIsAdmin = CSocNetUser::IsCurrentUserModuleAdmin();
// write and close session to prevent lock;
session_write_close();
$arResult = array();
if (in_array($action, array("add_comment", "get_comment", "get_comments", "get_more_destination")))
{
CSocNetTools::InitGlobalExtranetArrays();
}
if (!$GLOBALS["USER"]->IsAuthorized())
{
$arResult[0] = "*";
}
elseif (!check_bitrix_sessid())
{
$arResult[0] = "*";
}
elseif ($action == "add_comment")
{
$log_id = $_REQUEST["log_id"];
$cuid = (isset($_REQUEST["cuid"]) && is_string($_REQUEST["cuid"])) ? trim($_REQUEST["cuid"]): "";
$cuid = preg_replace("/[^a-z0-9]/i", "", $cuid);
if ($arLog = CSocNetLog::GetByID($log_id))
{
if (
strpos($arLog["ENTITY_TYPE"], "CRM") === 0
&&
(
!in_array($arLog["EVENT_ID"], array("crm_lead_message", "crm_deal_message", "crm_company_message", "crm_contact_message", "crm_activity_add"))
|| (isset($_REQUEST["crm"]) && $_REQUEST["crm"] == "Y")
)
&& IsModuleInstalled("crm")
)
{
$arListParams = array("IS_CRM" => "Y", "CHECK_CRM_RIGHTS" => "Y");
}
else
{
$arListParams = array("CHECK_RIGHTS" => "Y", "USE_SUBSCRIBE" => "N");
}
}
else
{
$log_id = 0;
}
if (
intval($log_id) > 0
&& ($rsLog = CSocNetLog::GetList(array(), array("ID" => $log_id), false, false, array(), $arListParams))
&& ($arLog = $rsLog->Fetch())
)
{
$arCommentEvent = CSocNetLogTools::FindLogCommentEventByLogEventID($arLog["EVENT_ID"]);
if ($arCommentEvent)
{
$feature = CSocNetLogTools::FindFeatureByEventID($arCommentEvent["EVENT_ID"]);
if (
array_key_exists("OPERATION_ADD", $arCommentEvent)
&& $arCommentEvent["OPERATION_ADD"] == "log_rights"
)
{
$bCanAddComments = CSocNetLogRights::CheckForUser($log_id, $GLOBALS["USER"]->GetID());
}
elseif (
$feature
&& array_key_exists("OPERATION_ADD", $arCommentEvent)
&& strlen($arCommentEvent["OPERATION_ADD"]) > 0
)
{
$bCanAddComments = CSocNetFeaturesPerms::CanPerformOperation(
$GLOBALS["USER"]->GetID(),
$arLog["ENTITY_TYPE"],
$arLog["ENTITY_ID"],
($feature == "microblog" ? "blog" : $feature),
$arCommentEvent["OPERATION_ADD"],
$bCurrentUserIsAdmin
);
}
else
{
$bCanAddComments = true;
}
if ($bCanAddComments)
{
$arCommentParams = $_REQUEST["id"];
if (is_array($arCommentParams) && isset($arCommentParams[1]) && intval($arCommentParams[1]) > 0)
{
$editCommentSourceID = intval($arCommentParams[1]);
}
}
if ($bCanAddComments)
{
// add source object and get source_id, $source_url
$arParams = array(
"PATH_TO_SMILE" => $_REQUEST["p_smile"],
"PATH_TO_USER_BLOG_POST" => $_REQUEST["p_ubp"],
"PATH_TO_GROUP_BLOG_POST" => $_REQUEST["p_gbp"],
"PATH_TO_USER_MICROBLOG_POST" => $_REQUEST["p_umbp"],
"PATH_TO_GROUP_MICROBLOG_POST" => $_REQUEST["p_gmbp"],
"BLOG_ALLOW_POST_CODE" => $_REQUEST["bapc"]
);
// $parser = new logTextParser(LANGUAGE_ID, $arParams["PATH_TO_SMILE"]);
$comment_text = $_REQUEST["message"];
CUtil::decodeURIComponent($comment_text);
$comment_text = Trim($comment_text);
if (strlen($comment_text) > 0)
{
$arSearchParams = array();
if($arCommentEvent["EVENT_ID"] == "forum")
{
$arSearchParams["FORUM_ID"] = intval($_REQUEST["f_id"]);
$arSearchParams["PATH_TO_GROUP_FORUM_MESSAGE"] = (
$arLog["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP
? str_replace(
"#GROUPS_PATH#",
COption::GetOptionString("socialnetwork", "workgroups_page", false, $site_id),
$arLog["URL"]
)
: ""
);
$arSearchParams["PATH_TO_USER_FORUM_MESSAGE"] = (
$arLog["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_USER
? $arLog["URL"]
: ""
);
}
elseif ($arCommentEvent["EVENT_ID"] == "files_comment")
{
if (strlen($arLog["PARAMS"]) > 0)
{
$files_forum_id = 0;
$arLogParams = explode("&", htmlspecialcharsback($arLog["PARAMS"]));
foreach($arLogParams as $prm)
{
list($k, $v) = explode("=", $prm);
if ($k == "forum_id")
{
$files_forum_id = $v;
break;
}
}
}
$arSearchParams["FILES_FORUM_ID"] = $files_forum_id;
$arSearchParams["PATH_TO_GROUP_FILES_ELEMENT"] = (
$arLog["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP
? str_replace(
"#GROUPS_PATH#",
COption::GetOptionString("socialnetwork", "workgroups_page", false, $site_id),
$arLog["URL"]
)
: ""
);
$arSearchParams["PATH_TO_USER_FILES_ELEMENT"] = (
$arLog["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_USER
? $arLog["URL"]
: ""
);
}
elseif($arCommentEvent["EVENT_ID"] == "photo_comment")
{
if (strlen($arLog["PARAMS"]) > 0)
{
$photo_forum_id = 0;
$arLogParams = unserialize(htmlspecialcharsback($arLog["PARAMS"]));
if (
is_array($arLogParams)
&& array_key_exists("FORUM_ID", $arLogParams)
&& intval($arLogParams["FORUM_ID"]) > 0
)
$photo_forum_id = $arLogParams["FORUM_ID"];
}
$arSearchParams["PHOTO_FORUM_ID"] = $photo_forum_id;
$arSearchParams["PATH_TO_GROUP_PHOTO_ELEMENT"] = (
$arLog["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP
? str_replace(
"#GROUPS_PATH#",
COption::GetOptionString("socialnetwork", "workgroups_page", false, $site_id),
$arLog["URL"]
)
: ""
);
$arSearchParams["PATH_TO_USER_PHOTO_ELEMENT"] = (
$arLog["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_USER
? $arLog["URL"]
: ""
);
}
global $bxSocNetSearch;
if (
!empty($arSearchParams)
&& !is_object($bxSocNetSearch)
)
{
$bxSocNetSearch = new CSocNetSearch(
($arLog["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_USER ? $arLog["ENTITY_ID"] : false),
($arLog["ENTITY_TYPE"] == SONET_SUBSCRIBE_ENTITY_GROUP ? $arLog["ENTITY_ID"] : false),
$arSearchParams
);
AddEventHandler("search", "BeforeIndex", Array($bxSocNetSearch, "BeforeIndex"));
}
$arAllow = array(
"HTML" => "N",
"ANCHOR" => "Y",
"LOG_ANCHOR" => "N",
"BIU" => "N",
"IMG" => "N",
"LIST" => "N",
"QUOTE" => "N",
"CODE" => "N",
"FONT" => "N",
"UPLOAD" => $arForum["ALLOW_UPLOAD"],
"NL2BR" => "N",
"SMILES" => "N",
"VIDEO" => "N",
"USER" => "N",
"ALIGN" => "N"
);
if ($editCommentSourceID > 0)
{
$arFields = array(
"EVENT_ID" => $arCommentEvent["EVENT_ID"],
// "MESSAGE" => $parser->convert($comment_text, array(), $arAllow),
"MESSAGE" => $comment_text,
"TEXT_MESSAGE" => $comment_text,
"BLOG_ALLOW_POST_CODE" => $arParams["BLOG_ALLOW_POST_CODE"]
);
}
else
{
$arFields = array(
"ENTITY_TYPE" => $arLog["ENTITY_TYPE"],
"ENTITY_ID" => $arLog["ENTITY_ID"],
"EVENT_ID" => $arCommentEvent["EVENT_ID"],
"=LOG_DATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
// "MESSAGE" => $parser->convert($comment_text, array(), $arAllow),
"MESSAGE" => $comment_text,
"TEXT_MESSAGE" => $comment_text,
"MODULE_ID" => false,
"LOG_ID" => $arLog["ID"],
"USER_ID" => $GLOBALS["USER"]->GetID(),
"PATH_TO_USER_BLOG_POST" => $arParams["PATH_TO_USER_BLOG_POST"],
"PATH_TO_GROUP_BLOG_POST" => $arParams["PATH_TO_GROUP_BLOG_POST"],
"PATH_TO_USER_MICROBLOG_POST" => $arParams["PATH_TO_USER_MICROBLOG_POST"],
"PATH_TO_GROUP_MICROBLOG_POST" => $arParams["PATH_TO_GROUP_MICROBLOG_POST"],
"BLOG_ALLOW_POST_CODE" => $arParams["BLOG_ALLOW_POST_CODE"]
);
}
$GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("SONET_COMMENT", $arFields);
if (
array_key_exists("UF_SONET_COM_FILE", $arFields)
&& !empty($arFields["UF_SONET_COM_FILE"])
)
{
if (is_array($arFields["UF_SONET_COM_FILE"]))
{
foreach($arFields["UF_SONET_COM_FILE"] as $key => $fileID)
{
if (
!$cuid
|| !array_key_exists("MFI_UPLOADED_FILES_".$cuid, $_SESSION)
|| !in_array($fileID, $_SESSION["MFI_UPLOADED_FILES_".$cuid])
)
{
unset($arFields["UF_SONET_COM_FILE"][$key]);
}
}
}
else
{
if (
!$cuid
|| !array_key_exists("MFI_UPLOADED_FILES_".$cuid, $_SESSION)
|| !in_array($arFields["UF_SONET_COM_FILE"], $_SESSION["MFI_UPLOADED_FILES_".$cuid])
)
{
unset($arFields["UF_SONET_COM_FILE"]);
}
}
}
if ($editCommentSourceID > 0)
{
if (
isset($arCommentEvent["ADD_CALLBACK"])
&& is_callable($arCommentEvent["ADD_CALLBACK"])
)
{
$rsRes = CSocNetLogComments::GetList(
array(),
array(
"EVENT_ID" => $arCommentEvent["EVENT_ID"],
"SOURCE_ID" => $editCommentSourceID
),
false,
false,
array("ID", "USER_ID", "LOG_ID")
);
if ($arRes = $rsRes->Fetch())
{
$update_id = $arRes["ID"];
$update_log_id = $arRes["LOG_ID"];
$update_user_id = $arRes["USER_ID"];
}
}
if (intval($update_id) <= 0)
{
$rsRes = CSocNetLogComments::GetList(
array(),
array(
"ID" => $editCommentSourceID
),
false,
false,
array("ID", "USER_ID", "LOG_ID")
);
if ($arRes = $rsRes->Fetch())
{
$update_id = $arRes["ID"];
$update_log_id = $arRes["LOG_ID"];
$update_user_id = $arRes["USER_ID"];
}
}
if (intval($update_id) > 0)
{
if (
CSocNetUser::IsCurrentUserModuleAdmin()
|| $update_user_id == $GLOBALS["USER"]->GetID()
)
{
if (IsModuleInstalled("intranet"))
{
$bAllowUpdate = true;
}
else
{
$rsResCheck = CSocNetLogComments::GetList(
array("ID" => "DESC"),
array(
"LOG_ID" => $update_log_id
),
false,
false,
array("ID")
);
if (
($arResCheck = $rsResCheck->Fetch())
&& ($arResCheck["ID"] == $update_id)
)
{
$bAllowUpdate = true;
}
}
}
}
if ($bAllowUpdate)
{
$commentIdres = CSocNetLogComments::Update($update_id, $arFields, true);
}
else
{
$commentIdres = array(
"MESSAGE" => GetMessage("SONET_LOG_COMMENT_NO_PERMISSIONS_UPDATE")
);
}
}
else
{
$commentIdres = CSocNetLogComments::Add($arFields, true, false);
}
if (
!is_array($commentIdres)
&& intval($commentIdres) > 0
)
{
$db_events = GetModuleEvents("socialnetwork", "OnAfterSocNetLogEntryCommentAdd");
while ($arEvent = $db_events->Fetch())
{
ExecuteModuleEventEx($arEvent, array($arLog));
}
$db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetLogCommentCounterIncrement");
while ($arEvent = $db_events->Fetch())
{
if (ExecuteModuleEventEx($arEvent, array($arLog))===false)
{
$bSkipCounterIncrement = true;
break;
}
}
if (!$bSkipCounterIncrement)
{
CSocNetLog::CounterIncrement(
$commentIdres,
false,
false,
"LC",
CSocNetLogRights::CheckForUserAll($arLog["ID"])
);
}
$arResult["commentID"] = $commentIdres;
$arResult["hasEditCallback"] = (
is_array($arCommentEvent)
&& isset($arCommentEvent["UPDATE_CALLBACK"])
&& (
$arCommentEvent["UPDATE_CALLBACK"] == "NO_SOURCE"
|| is_callable($arCommentEvent["UPDATE_CALLBACK"])
)
? "Y"
: "N"
);
$arResult["hasDeleteCallback"] = (
is_array($arCommentEvent)
&& isset($arCommentEvent["DELETE_CALLBACK"])
&& (
$arCommentEvent["DELETE_CALLBACK"] == "NO_SOURCE"
|| is_callable($arCommentEvent["DELETE_CALLBACK"])
)
? "Y"
: "N"
);
if ($arComment = CSocNetLogComments::GetByID($arResult["commentID"]))
{
foreach (GetModuleEvents("socialnetwork", "OnAfterSonetLogEntryAddComment", true) as $arModuleEvent) // send notification
{
ExecuteModuleEventEx($arModuleEvent, array($arComment));
}
$arResult["arComment"] = $arComment;
foreach($arResult["arComment"] as $key => $value)
{
if (strpos($key, "~") === 0)
{
unset($arResult["arComment"][$key]);
}
}
$arResult["arComment"]["RATING_USER_HAS_VOTED"] = "N";
$arResult["sourceID"] = $arComment["SOURCE_ID"];
$arResult["timestamp"] = MakeTimeStamp(array_key_exists("LOG_DATE_FORMAT", $arComment) ? $arComment["LOG_DATE_FORMAT"] : $arComment["LOG_DATE"]);
$arComment["UF"] = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("SONET_COMMENT", $arComment["ID"], LANGUAGE_ID);
if (
array_key_exists("UF_SONET_COM_DOC", $arComment["UF"])
&& array_key_exists("VALUE", $arComment["UF"]["UF_SONET_COM_DOC"])
&& is_array($arComment["UF"]["UF_SONET_COM_DOC"]["VALUE"])
&& count($arComment["UF"]["UF_SONET_COM_DOC"]["VALUE"]) > 0
&& $arCommentEvent["EVENT_ID"] != "tasks_comment"
)
{
$arRights = array();
$dbRight = CSocNetLogRights::GetList(array(), array("LOG_ID" => $arLog["ID"]));
while ($arRight = $dbRight->Fetch())
$arRights[] = $arRight["GROUP_CODE"];
CSocNetLogTools::SetUFRights($arComment["UF"]["UF_SONET_COM_DOC"]["VALUE"], $arRights);
}
$dateFormated = FormatDate(
$GLOBALS['DB']->DateFormatToPHP(FORMAT_DATE),
$arResult["timestamp"]
);
$timeFormat = (isset($_REQUEST["dtf"]) ? $_REQUEST["dtf"] : CSite::GetTimeFormat());
$timeFormated = FormatDateFromDB(
(
array_key_exists("LOG_DATE_FORMAT", $arComment)
? $arComment["LOG_DATE_FORMAT"]
: $arComment["LOG_DATE"]
),
(
stripos($timeFormat, 'a')
|| (
$timeFormat == 'FULL'
&& (strpos(FORMAT_DATETIME, 'T')!==false || strpos(FORMAT_DATETIME, 'TT')!==false)
) !== false
? (strpos(FORMAT_DATETIME, 'TT')!==false ? 'H:MI TT' : 'H:MI T')
: 'HH:MI'
)
);
if (intval($arComment["USER_ID"]) > 0)
{
$arParams = array(
"PATH_TO_USER" => $_REQUEST["p_user"],
"NAME_TEMPLATE" => $_REQUEST["nt"],
"SHOW_LOGIN" => $_REQUEST["sl"],
"AVATAR_SIZE" => $_REQUEST["as"],
"PATH_TO_SMILE" => $_REQUEST["p_smile"]
);
$arUser = array(
"ID" => $arComment["USER_ID"],
"NAME" => $arComment["~CREATED_BY_NAME"],
"LAST_NAME" => $arComment["~CREATED_BY_LAST_NAME"],
"SECOND_NAME" => $arComment["~CREATED_BY_SECOND_NAME"],
"LOGIN" => $arComment["~CREATED_BY_LOGIN"],
"PERSONAL_PHOTO" => $arComment["~CREATED_BY_PERSONAL_PHOTO"],
"PERSONAL_GENDER" => $arComment["~CREATED_BY_PERSONAL_GENDER"],
);
$bUseLogin = $arParams["SHOW_LOGIN"] != "N" ? true : false;
$arCreatedBy = array(
"FORMATTED" => CUser::FormatName($arParams["NAME_TEMPLATE"], $arUser, $bUseLogin),
"URL" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arComment["USER_ID"], "id" => $arComment["USER_ID"]))
);
}
else
$arCreatedBy = array("FORMATTED" => GetMessage("SONET_C73_CREATED_BY_ANONYMOUS"));
$arTmpCommentEvent = array(
"LOG_DATE" => $arComment["LOG_DATE"],
"LOG_DATE_FORMAT" => $arComment["LOG_DATE_FORMAT"],
"LOG_DATE_DAY" => ConvertTimeStamp(MakeTimeStamp($arComment["LOG_DATE"]), "SHORT"),
"LOG_TIME_FORMAT" => $timeFormated,
"MESSAGE" => $arComment["MESSAGE"],
"MESSAGE_FORMAT" => $arComment["~MESSAGE"],
"CREATED_BY" => $arCreatedBy,
"AVATAR_SRC" => CSocNetLogTools::FormatEvent_CreateAvatar($arUser, $arParams, ""),
"USER_ID" => $arComment["USER_ID"]
);
$arEventTmp = CSocNetLogTools::FindLogCommentEventByID($arComment["EVENT_ID"]);
if (
$arEventTmp
&& array_key_exists("CLASS_FORMAT", $arEventTmp)
&& array_key_exists("METHOD_FORMAT", $arEventTmp)
)
{
$arFIELDS_FORMATTED = call_user_func(array($arEventTmp["CLASS_FORMAT"], $arEventTmp["METHOD_FORMAT"]), $arComment, $arParams);
$arTmpCommentEvent["MESSAGE_FORMAT"] = htmlspecialcharsback($arFIELDS_FORMATTED["EVENT_FORMATTED"]["MESSAGE"]);
}
else
{
$arTmpCommentEvent["MESSAGE_FORMAT"] = $arComment["MESSAGE"];
}
if (IsModuleInstalled("mobile"))
{
if (
$arEventTmp
&& array_key_exists("CLASS_FORMAT", $arEventTmp)
&& array_key_exists("METHOD_FORMAT", $arEventTmp)
)
{
$arFIELDS_FORMATTED = call_user_func(
array($arEventTmp["CLASS_FORMAT"], $arEventTmp["METHOD_FORMAT"]),
$arComment,
array_merge(
$arParams,
array(
"MOBILE" => "Y"
)
)
);
$strMessageMobile = htmlspecialcharsback($arFIELDS_FORMATTED["EVENT_FORMATTED"]["MESSAGE"]);
}
else
{
$strMessageMobile = $arComment["MESSAGE"];
}
}
if (
is_array($arComment["UF"])
&& count($arComment["UF"]) > 0
)
{
ob_start();
$eventHandlerID = false;
$eventHandlerID = AddEventHandler("main", "system.field.view.file", Array("CSocNetLogTools", "logUFfileShow"));
foreach ($arComment["UF"] as $FIELD_NAME => $arUserField)
{
if(!empty($arUserField["VALUE"]))
{
$APPLICATION->IncludeComponent(
"bitrix:system.field.view",
$arUserField["USER_TYPE"]["USER_TYPE_ID"],
array("arUserField" => $arUserField),
null,
array("HIDE_ICONS"=>"Y")
);
}
}
if ($eventHandlerID !== false && ( intval($eventHandlerID) > 0 ))
{
RemoveEventHandler('main', 'system.field.view.file', $eventHandlerID);
}
if (
isset($arComment["UF"]["UF_SONET_COM_FILE"])
&& !empty($arComment["UF"]["UF_SONET_COM_FILE"]["VALUE"])
)
{
?><script>
top.arLogComFiles<?=$arComment["ID"]?> = <?=CUtil::PhpToJSObject($arComment["UF"]["UF_SONET_COM_FILE"]["VALUE"])?>;
</script><?
}
if (
isset($arComment["UF"]["UF_SONET_COM_DOC"])
&& !empty($arComment["UF"]["UF_SONET_COM_DOC"]["VALUE"])
)
{
?><script>
top.arLogComDocsType<?=$arComment["ID"]?> = '<?=$arComment["UF"]["UF_SONET_COM_DOC"]["USER_TYPE_ID"]?>';
top.arLogComDocs<?=$arComment["ID"]?> = <?=CUtil::PhpToJSObject($arComment["UF"]["UF_SONET_COM_DOC"]["VALUE"])?>;
</script><?
}
$arTmpCommentEvent["UF"] = ob_get_clean();
if (IsModuleInstalled("mobile"))
{
ob_start();
$eventHandlerID = false;
$eventHandlerID = AddEventHandler("main", "system.field.view.file", Array("CSocNetLogTools", "logUFfileShow"));
foreach ($arComment["UF"] as $FIELD_NAME => $arUserField)
{
if(!empty($arUserField["VALUE"]))
{
$APPLICATION->IncludeComponent(
"bitrix:system.field.view",
$arUserField["USER_TYPE"]["USER_TYPE_ID"],
array(
"arUserField" => $arUserField,
"MOBILE" => "Y"
),
null,
array("HIDE_ICONS"=>"Y")
);
}
}
if ($eventHandlerID !== false && ( intval($eventHandlerID) > 0 ))
{
RemoveEventHandler('main', 'system.field.view.file', $eventHandlerID);
}
$strUFMobile = ob_get_clean();
}
}
$arTmpCommentEvent["RATING"] = "";
if (!empty($arComment["RATING_TYPE_ID"]))
{
$arTmpCommentEvent["ALLOW_VOTE"] = CRatings::CheckAllowVote(
array(
"ENTITY_TYPE_ID" => $arComment["RATING_TYPE_ID"],
"OWNER_ID" => $arComment["USER_ID"]
)
);
if (!empty($_REQUEST["RATING_TYPE"]))
{
$arRating = array(
"USER_VOTE" => 0,
"USER_HAS_VOTED" => 'N',
"TOTAL_VOTES" => 0,
"TOTAL_POSITIVE_VOTES" => 0,
"TOTAL_NEGATIVE_VOTES" => 0,
"TOTAL_VALUE" => 0 );
$arRatings = CRatings::GetRatingVoteResult($arComment["RATING_TYPE_ID"], $arComment["RATING_ENTITY_ID"]);
if ($arRatings && $arRatings[$arComment["ID"]])
$arRating = $arRatings[$arComment["ID"]];
$arRatingParams = array_merge(Array(
"ENTITY_TYPE_ID" => $arComment["RATING_TYPE_ID"],
"ENTITY_ID" => $arComment["RATING_ENTITY_ID"],
"OWNER_ID" => $arComment["USER_ID"],
"PATH_TO_USER_PROFILE" =>$arParams["PATH_TO_USER"],
"AJAX_MODE" => "N"), $arRating
);
ob_start();
$GLOBALS["APPLICATION"]->IncludeComponent(
"bitrix:rating.vote",
$_REQUEST["RATING_TYPE"],
$arRatingParams,
null,
array("HIDE_ICONS" => "Y")
);
$arTmpCommentEvent["RATING"] = ob_get_clean();
if (IsModuleInstalled("mobile"))
{
ob_start();
$GLOBALS["APPLICATION"]->IncludeComponent(
"bitrix:rating.vote",
"mobile_comment_".$_REQUEST["RATING_TYPE"],
$arRatingParams,
null,
array("HIDE_ICONS" => "Y")
);
$strRatingMobile = ob_get_clean();
}
}
}
$arResult["arCommentFormatted"] = $arTmpCommentEvent;
if (
$_REQUEST["pull"] == "Y"
&& CModule::IncludeModule("pull")
&& CPullOptions::GetNginxStatus()
)
{
$entities_xml_id = array(
// "blog_post" => array("BLOG", "BG"),
"tasks" => array("TASK", "TK", "FORUM|COMMENT"),
"forum" => array("FORUM", "FM", "FORUM|COMMENT"),
"photo_photo" => array("PHOTO", "PH", "FORUM|COMMENT"),
"sonet" => array("SOCNET", "SC", ""),
);
if (
$arLog["ENTITY_TYPE"] == "CRMACTIVITY"
&& CModule::IncludeModule('crm')
&& ($arActivity = CCrmActivity::GetByID($arLog["ENTITY_ID"], false))
&& ($arActivity["TYPE_ID"] == CCrmActivityType::Task)
)
{
$entity_xml_id = "TASK_".$arActivity["ASSOCIATED_ENTITY_ID"];
}
elseif (
array_key_exists($arLog["EVENT_ID"], $entities_xml_id)
&& $arLog["SOURCE_ID"] > 0
)
{
$entity_xml_id = $entities_xml_id[$arLog["EVENT_ID"]][0]."_".$arLog["SOURCE_ID"];
}
else
{
$entity_xml_id = strtoupper($arLog["EVENT_ID"])."_".$arLog["ID"];
}
$commentId = (!!$arComment["SOURCE_ID"] ? $arComment["SOURCE_ID"] : $arComment["ID"]);
$arPullMessageParams = array(
"ID" => $commentId,
"ENTITY_XML_ID" => $entity_xml_id,
"FULL_ID" => array($entity_xml_id, $commentId),
"NEW" => "Y",
"APPROVED" => "Y",
"POST_TIMESTAMP" => ( $arResult["timestamp"] - CTimeZone::GetOffset() ),
"POST_TIME" => $arTmpCommentEvent["LOG_TIME_FORMAT"],
"POST_DATE" => $arTmpCommentEvent["LOG_TIME_FORMAT"],
"~POST_MESSAGE_TEXT" => $arComment["~MESSAGE"],
"POST_MESSAGE_TEXT" => $arTmpCommentEvent["MESSAGE_FORMAT"],
"URL" => array(
"LINK" => $arComment["URL"]
),
"AUTHOR" => array(
"ID" => $arComment["USER_ID"],
"NAME" => $arCreatedBy["FORMATTED"],
"URL" => $arCreatedBy["URL"],
"AVATAR" => $arTmpCommentEvent["AVATAR_SRC"]
),
"BEFORE_ACTIONS" => $arTmpCommentEvent["RATING"],
"AFTER" => $arTmpCommentEvent["UF"],
"ACTION" => "REPLY"
);
if (IsModuleInstalled("mobile"))
{
$arPullMessageParams["POST_MESSAGE_TEXT_MOBILE"] = $strMessageMobile;
$arPullMessageParams["AFTER_MOBILE"] = $strUFMobile;
$arPullMessageParams["BEFORE_ACTIONS_MOBILE"] = $strRatingMobile;
}
CPullWatch::AddToStack('UNICOMMENTS'.$entity_xml_id,
Array(
'module_id' => 'unicomments',
'command' => 'comment',
'params' => $arPullMessageParams
)
);
}
}
}
elseif (
is_array($commentIdres)
&& array_key_exists("MESSAGE", $commentIdres)
&& strlen($commentIdres["MESSAGE"]) > 0
)
{
$arResult["strMessage"] = $commentIdres["MESSAGE"];
$arResult["commentText"] = $comment_text;
}
}
else
$arResult["strMessage"] = GetMessage("SONET_LOG_COMMENT_EMPTY");
}
else
$arResult["strMessage"] = GetMessage("SONET_LOG_COMMENT_NO_PERMISSIONS");
}
}
}
elseif ($action == "get_comment")
{
$comment_id = $_REQUEST["cid"];
if ($arComment = CSocNetLogComments::GetByID($comment_id))
{
if (
strpos($arComment["ENTITY_TYPE"], "CRM") === 0
&& IsModuleInstalled("crm")
)
{
$arListParams = array("IS_CRM" => "Y", "CHECK_CRM_RIGHTS" => "Y");
}
else
{
$arListParams = array("CHECK_RIGHTS" => "Y", "USE_SUBSCRIBE" => "N");
}
if (
intval($arComment["LOG_ID"]) > 0
&& ($rsLog = CSocNetLog::GetList(array(), array("ID" => $arComment["LOG_ID"]), false, false, array("ID", "EVENT_ID"), $arListParams))
&& ($arLog = $rsLog->Fetch())
)
{
$arResult["arComment"] = $arComment;
$dateFormated = FormatDate(
$GLOBALS['DB']->DateFormatToPHP(FORMAT_DATE),
MakeTimeStamp(array_key_exists("LOG_DATE_FORMAT", $arComment) ? $arComment["LOG_DATE_FORMAT"] : $arComment["LOG_DATE"])
);
$timeFormat = (isset($_REQUEST["dtf"]) ? $_REQUEST["dtf"] : CSite::GetTimeFormat());
$timeFormated = FormatDateFromDB(
(
array_key_exists("LOG_DATE_FORMAT", $arComment)
? $arComment["LOG_DATE_FORMAT"]
: $arComment["LOG_DATE"]
),
(
stripos($timeFormat, 'a')
|| (
$timeFormat == 'FULL'
&& (strpos(FORMAT_DATETIME, 'T')!==false || strpos(FORMAT_DATETIME, 'TT')!==false)
) !== false
? (strpos(FORMAT_DATETIME, 'TT')!==false ? 'H:MI TT' : 'H:MI T')
: 'HH:MI'
)
);
if (intval($arComment["USER_ID"]) > 0)
{
$arParams = array(
"PATH_TO_USER" => $_REQUEST["p_user"],
"NAME_TEMPLATE" => $_REQUEST["nt"],
"SHOW_LOGIN" => $_REQUEST["sl"],
"AVATAR_SIZE" => $_REQUEST["as"],
"PATH_TO_SMILE" => $_REQUEST["p_smile"]
);
$arUser = array(
"ID" => $arComment["USER_ID"],
"NAME" => $arComment["~CREATED_BY_NAME"],
"LAST_NAME" => $arComment["~CREATED_BY_LAST_NAME"],
"SECOND_NAME" => $arComment["~CREATED_BY_SECOND_NAME"],
"LOGIN" => $arComment["~CREATED_BY_LOGIN"],
"PERSONAL_PHOTO" => $arComment["~CREATED_BY_PERSONAL_PHOTO"],
"PERSONAL_GENDER" => $arComment["~CREATED_BY_PERSONAL_GENDER"],
);
$bUseLogin = $arParams["SHOW_LOGIN"] != "N" ? true : false;
$arCreatedBy = array(
"FORMATTED" => CUser::FormatName($arParams["NAME_TEMPLATE"], $arUser, $bUseLogin),
"URL" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arComment["USER_ID"], "id" => $arComment["USER_ID"]))
);
}
else
$arCreatedBy = array("FORMATTED" => GetMessage("SONET_C73_CREATED_BY_ANONYMOUS"));
$arTmpCommentEvent = array(
"LOG_DATE" => $arComment["LOG_DATE"],
"LOG_DATE_FORMAT" => $arComment["LOG_DATE_FORMAT"],
"LOG_DATE_DAY" => ConvertTimeStamp(MakeTimeStamp($arComment["LOG_DATE"]), "SHORT"),
"LOG_TIME_FORMAT" => $timeFormated,
"MESSAGE" => $arComment["MESSAGE"],
"MESSAGE_FORMAT" => $arComment["~MESSAGE"],
"CREATED_BY" => $arCreatedBy,
"AVATAR_SRC" => CSocNetLogTools::FormatEvent_CreateAvatar($arUser, $arParams, ""),
"USER_ID" => $arComment["USER_ID"]
);
$arEventTmp = CSocNetLogTools::FindLogCommentEventByID($arComment["EVENT_ID"]);
if (
$arEventTmp
&& array_key_exists("CLASS_FORMAT", $arEventTmp)
&& array_key_exists("METHOD_FORMAT", $arEventTmp)
)
{
$arFIELDS_FORMATTED = call_user_func(array($arEventTmp["CLASS_FORMAT"], $arEventTmp["METHOD_FORMAT"]), $arComment, $arParams);
$arTmpCommentEvent["MESSAGE_FORMAT"] = htmlspecialcharsback($arFIELDS_FORMATTED["EVENT_FORMATTED"]["MESSAGE"]);
}
$arResult["arCommentFormatted"] = $arTmpCommentEvent;
}
}
}
elseif ($action == "get_comments")
{
$arResult["arComments"] = array();
$log_tmp_id = $_REQUEST["logid"];
$log_entity_type = $entity_type;
$arListParams = (strpos($log_entity_type, "CRM") === 0 && IsModuleInstalled("crm") ? array("IS_CRM" => "Y", "CHECK_CRM_RIGHTS" => "Y") : array("CHECK_RIGHTS" => "Y", "USE_SUBSCRIBE" => "N"));
if (
intval($log_tmp_id) > 0
&& ($rsLog = CSocNetLog::GetList(array(), array("ID" => $log_tmp_id), false, false, array("ID", "EVENT_ID"), $arListParams))
&& ($arLog = $rsLog->Fetch())
)
{
$arParams = array(
"PATH_TO_USER" => $_REQUEST["p_user"],
"PATH_TO_GROUP" => $_REQUEST["p_group"],
"PATH_TO_CONPANY_DEPARTMENT" => $_REQUEST["p_dep"],
"PATH_TO_LOG_ENTRY" => $_REQUEST["p_le"],
"NAME_TEMPLATE" => $_REQUEST["nt"],
"NAME_TEMPLATE_WO_NOBR" => str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $_REQUEST["nt"]),
"SHOW_LOGIN" => $_REQUEST["sl"],
"DATE_TIME_FORMAT" => (isset($_REQUEST["dtf"]) ? $_REQUEST["dtf"] : CSite::GetTimeFormat()),
"AVATAR_SIZE" => $_REQUEST["as"],
"PATH_TO_SMILE" => $_REQUEST["p_smile"]
);
$cache_time = 31536000;
$cache = new CPHPCache;
$arCacheID = array();
$arKeys = array(
"AVATAR_SIZE",
"NAME_TEMPLATE",
"NAME_TEMPLATE_WO_NOBR",
"SHOW_LOGIN",
"DATE_TIME_FORMAT",
"PATH_TO_USER",
"PATH_TO_GROUP",
"PATH_TO_CONPANY_DEPARTMENT"
);
foreach($arKeys as $param_key)
{
$arCacheID[$param_key] = (array_key_exists($param_key, $arParams) ? $arParams[$param_key] : false) ;
}
$cache_id = "log_comments_".$log_tmp_id."_".md5(serialize($arCacheID))."_".SITE_TEMPLATE_ID."_".SITE_ID."_".LANGUAGE_ID."_".FORMAT_DATETIME."_".CTimeZone::GetOffset();
$cache_path = "/sonet/log/".intval(intval($log_tmp_id) / 1000)."/".$log_tmp_id."/comments/";
if (
is_object($cache)
&& $cache->InitCache($cache_time, $cache_id, $cache_path)
)
{
$arCacheVars = $cache->GetVars();
$arResult["arComments"] = $arCacheVars["COMMENTS_FULL_LIST"];
}
else
{
if (is_object($cache))
{
$cache->StartDataCache($cache_time, $cache_id, $cache_path);
}
if (defined("BX_COMP_MANAGED_CACHE"))
{
$GLOBALS["CACHE_MANAGER"]->StartTagCache($cache_path);
$GLOBALS["CACHE_MANAGER"]->RegisterTag("SONET_LOG_".$log_tmp_id);
}
$arFilter = array("LOG_ID" => $log_tmp_id);
$arListParams = array("USE_SUBSCRIBE" => "N");
$arSelect = array(
"ID", "LOG_ID", "SOURCE_ID", "ENTITY_TYPE", "ENTITY_ID", "USER_ID", "EVENT_ID", "LOG_DATE", "MESSAGE", "TEXT_MESSAGE", "URL", "MODULE_ID",
"GROUP_NAME", "GROUP_OWNER_ID", "GROUP_VISIBLE", "GROUP_OPENED", "GROUP_IMAGE_ID",
"USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "USER_PERSONAL_PHOTO", "USER_PERSONAL_GENDER",
"CREATED_BY_NAME", "CREATED_BY_LAST_NAME", "CREATED_BY_SECOND_NAME", "CREATED_BY_LOGIN", "CREATED_BY_PERSONAL_PHOTO", "CREATED_BY_PERSONAL_GENDER",
"LOG_SITE_ID", "LOG_SOURCE_ID",
"RATING_TYPE_ID", "RATING_ENTITY_ID",
"UF_*"
);
$arUFMeta = __SLGetUFMeta();
$dbComments = CSocNetLogComments::GetList(
array("LOG_DATE" => "ASC"),
$arFilter,
false,
false,
$arSelect,
$arListParams
);
while($arComments = $dbComments->GetNext())
{
if (defined("BX_COMP_MANAGED_CACHE"))
{
$GLOBALS["CACHE_MANAGER"]->RegisterTag("USER_NAME_".intval($arComments["USER_ID"]));
$GLOBALS["CACHE_MANAGER"]->RegisterTag("SONET_LOG_COMMENT_".intval($arComments["ID"]));
}
$arComments["UF"] = $arUFMeta;
foreach($arUFMeta as $field_name => $arUF)
{
if (array_key_exists($field_name, $arComments))
{
$arComments["UF"][$field_name]["VALUE"] = $arComments[$field_name];
$arComments["UF"][$field_name]["ENTITY_VALUE_ID"] = $arComments["ID"];
}
}
$arResult["arComments"][$arComments["ID"]] = __SLEGetLogCommentRecord($arComments, $arParams, false);
}
if (is_object($cache))
{
$arCacheData = Array(
"COMMENTS_FULL_LIST" => $arResult["arComments"]
);
$cache->EndDataCache($arCacheData);
if(defined("BX_COMP_MANAGED_CACHE"))
{
$GLOBALS["CACHE_MANAGER"]->EndTagCache();
}
}
}
$cntOriginal = count($arResult["arComments"]);
if (
intval($_REQUEST["commentID"]) > 0
|| intval($_REQUEST["commentTS"]) > 0
)
{
foreach($arResult["arComments"] as $key => $res)
{
if (
(
intval($_REQUEST["commentTS"]) > 0
&& $res["LOG_DATE_TS"] >= $_REQUEST["commentTS"]
)
|| (
intval($_REQUEST["commentTS"]) <= 0
&& $key >= $_REQUEST["commentID"]
)
)
{
unset($arResult["arComments"][$key]);
}
}
if (
isset($_REQUEST["PAGEN_1"])
&& intval($_REQUEST["PAGEN_1"]) > 0
)
{
$cntHidden = count($arResult["arComments"]) - (intval($_REQUEST["PAGEN_1"]) * 20);
if ($cntHidden > 0)
{
$arResult["navigationNextPageNum"] = intval($_REQUEST["PAGEN_1"]) + 1;
$arResult["navigationCounter"] = $cntHidden;
}
$arResult["arComments"] = array_reverse($arResult["arComments"], true);
$rsNavResult = new CDBResult;
$rsNavResult->InitFromArray($arResult["arComments"]);
$rsNavResult->NavStart(20, false);
$arTmp = $arResult["arComments"];
$arResult["arComments"] = array();
while($arNavResult = $rsNavResult->Fetch())
{
$arResult["arComments"][$arNavResult["EVENT"]["ID"]] = $arNavResult;
}
$arResult["arComments"] = array_reverse($arResult["arComments"], true);
}
}
$rating_entity_type = null;
$arTmp = $arResult["arComments"];
$arResult["arComments"] = array();
foreach ($arTmp as $key => $arCommentTmp)
{
if ($rating_entity_type === null)
{
$rating_entity_type = (!!$arCommentTmp["EVENT"]["RATING_TYPE_ID"] ? $arCommentTmp["EVENT"]["RATING_TYPE_ID"] : false);
}
$arCommentID[] = $arCommentTmp["EVENT"]["RATING_ENTITY_ID"];
$arResult["arComments"][] = $arCommentTmp;
}
$arRatingComments = array();
if(
!empty($arCommentID)
&& strlen($rating_entity_type) > 0
)
{
$arRatingComments = CRatings::GetRatingVoteResult($rating_entity_type, $arCommentID);
}
if (!IsModuleInstalled("intranet"))
{
$rsResCheck = CSocNetLogComments::GetList(
array("ID" => "DESC"),
array(
"LOG_ID" => $log_tmp_id,
),
false,
false,
array("ID")
);
if ($arResCheck = $rsResCheck->Fetch())
{
$last_comment_id = $arResCheck["ID"];
}
}
$arCommentEvent = CSocNetLogTools::FindLogCommentEventByLogEventID($arLog["EVENT_ID"]);
$bHasEditCallback = (
is_array($arCommentEvent)
&& isset($arCommentEvent["UPDATE_CALLBACK"])
&& (
$arCommentEvent["UPDATE_CALLBACK"] == "NO_SOURCE"
|| is_callable($arCommentEvent["UPDATE_CALLBACK"])
)
);
$bHasDeleteCallback = (
is_array($arCommentEvent)
&& isset($arCommentEvent["DELETE_CALLBACK"])
&& (
$arCommentEvent["DELETE_CALLBACK"] == "NO_SOURCE"
|| is_callable($arCommentEvent["DELETE_CALLBACK"])
)
);
foreach($arResult["arComments"] as $key => $arCommentTmp)
{
if (
is_array($arCommentTmp["UF"])
&& count($arCommentTmp["UF"]) > 0
)
{
ob_start();
$eventHandlerID = false;
$eventHandlerID = AddEventHandler("main", "system.field.view.file", Array("CSocNetLogTools", "logUFfileShow"));
foreach ($arCommentTmp["UF"] as $FIELD_NAME => $arUserField)
{
if(!empty($arUserField["VALUE"]))
{
$APPLICATION->IncludeComponent(
"bitrix:system.field.view",
$arUserField["USER_TYPE"]["USER_TYPE_ID"],
array("arUserField" => $arUserField),
null,
array("HIDE_ICONS"=>"Y")
);
}
}
if (
$eventHandlerID !== false
&& intval($eventHandlerID) > 0
)
{
RemoveEventHandler('main', 'system.field.view.file', $eventHandlerID);
}
if (
isset($arCommentTmp["UF"]["UF_SONET_COM_FILE"])
&& !empty($arCommentTmp["UF"]["UF_SONET_COM_FILE"]["VALUE"])
)
{
?><script>
top.arLogComFiles<?=$arCommentTmp["EVENT"]["ID"]?> = <?=CUtil::PhpToJSObject($arCommentTmp["UF"]["UF_SONET_COM_FILE"]["VALUE"])?>;
</script><?
}
if (
isset($arCommentTmp["UF"]["UF_SONET_COM_DOC"])
&& !empty($arCommentTmp["UF"]["UF_SONET_COM_DOC"]["VALUE"])
)
{
?><script>
top.arLogComDocsType<?=$arCommentTmp["EVENT"]["ID"]?> = '<?=$arCommentTmp["UF"]["UF_SONET_COM_DOC"]["USER_TYPE_ID"]?>';
top.arLogComDocs<?=$arCommentTmp["EVENT"]["ID"]?> = <?=CUtil::PhpToJSObject($arCommentTmp["UF"]["UF_SONET_COM_DOC"]["VALUE"])?>;
</script><?
}
$arResult["arComments"][$key]["EVENT_FORMATTED"]["UF"] = ob_get_clean();
}
if (array_key_exists($arCommentTmp["EVENT"]["RATING_ENTITY_ID"], $arRatingComments))
{
$arResult["arComments"][$key]["EVENT"]["RATING_USER_VOTE_VALUE"] = (isset($arRatingComments[$arCommentTmp["EVENT"]["RATING_ENTITY_ID"]]["USER_VOTE"]) ? $arRatingComments[$arCommentTmp["EVENT"]["RATING_ENTITY_ID"]]["USER_VOTE"] : 0);
$arResult["arComments"][$key]["EVENT"]["RATING_USER_HAS_VOTED"] = (isset($arRatingComments[$arCommentTmp["EVENT"]["RATING_ENTITY_ID"]]["USER_HAS_VOTED"]) ? $arRatingComments[$arCommentTmp["EVENT"]["RATING_ENTITY_ID"]]["USER_HAS_VOTED"] : "N");
$arResult["arComments"][$key]["EVENT"]["RATING_TOTAL_POSITIVE_VOTES"] = (isset($arRatingComments[$arCommentTmp["EVENT"]["RATING_ENTITY_ID"]]["TOTAL_POSITIVE_VOTES"]) ? $arRatingComments[$arCommentTmp["EVENT"]["RATING_ENTITY_ID"]]["TOTAL_POSITIVE_VOTES"] : 0);
$arResult["arComments"][$key]["EVENT"]["RATING_TOTAL_NEGATIVE_VOTES"] = (isset($arRatingComments[$arCommentTmp["EVENT"]["RATING_ENTITY_ID"]]["TOTAL_NEGATIVE_VOTES"]) ? $arRatingComments[$arCommentTmp["EVENT"]["RATING_ENTITY_ID"]]["TOTAL_NEGATIVE_VOTES"] : 0);
$arResult["arComments"][$key]["EVENT"]["RATING_TOTAL_VALUE"] = (isset($arRatingComments[$arCommentTmp["EVENT"]["RATING_ENTITY_ID"]]["TOTAL_VALUE"]) ? $arRatingComments[$arCommentTmp["EVENT"]["RATING_ENTITY_ID"]]["TOTAL_VALUE"] : 0);
$arResult["arComments"][$key]["EVENT"]["RATING_TOTAL_VOTES"] = (isset($arRatingComments[$arCommentTmp["EVENT"]["RATING_ENTITY_ID"]]["TOTAL_VOTES"]) ? $arRatingComments[$arCommentTmp["EVENT"]["RATING_ENTITY_ID"]]["TOTAL_VOTES"] : 0);
}
else
{
$arResult["arComments"][$key]["EVENT"]["RATING_USER_VOTE_VALUE"] = 0;
$arResult["arComments"][$key]["EVENT"]["RATING_USER_HAS_VOTED"] = "N";
$arResult["arComments"][$key]["EVENT"]["RATING_TOTAL_POSITIVE_VOTES"] = 0;
$arResult["arComments"][$key]["EVENT"]["RATING_TOTAL_NEGATIVE_VOTES"] = 0;
$arResult["arComments"][$key]["EVENT"]["RATING_TOTAL_VALUE"] = 0;
$arResult["arComments"][$key]["EVENT"]["RATING_TOTAL_VOTES"] = 0;
}
if (strlen($rating_entity_type) > 0)
{
$arResult["arComments"][$key]["EVENT_FORMATTED"]["ALLOW_VOTE"] = CRatings::CheckAllowVote(
array(
"ENTITY_TYPE_ID" => $rating_entity_type,
"OWNER_ID" => $arResult["arComments"][$key]["EVENT"]["USER_ID"]
)
);
}
$canEdit = (
CSocNetUser::IsCurrentUserModuleAdmin()
|| (
$arResult["arComments"][$key]["EVENT"]["USER_ID"] == $GLOBALS["USER"]->GetID()
&& (
IsModuleInstalled("intranet")
|| ($arResult["arComments"][$key]["EVENT"]["ID"] == $last_comment_id)
)
)
? "Y"
: "N"
);
$arResult["arComments"][$key]["PANELS"] = array(
"EDIT" => ($canEdit == "Y" && $bHasEditCallback ? "Y" : "N"),
"MODERATE" => "N",
"DELETE" => ($canEdit == "Y" && $bHasDeleteCallback ? "Y" : "N")
);
$arResult["arComments"][$key]["URL"] = (
isset($arResult["arComments"][$key]["EVENT"]["URL"])
&& strlen($arResult["arComments"][$key]["EVENT"]["URL"]) > 0
? $arResult["arComments"][$key]["EVENT"]["URL"]
: (
isset($arParams["PATH_TO_LOG_ENTRY"]) && strlen($arParams["PATH_TO_LOG_ENTRY"]) > 0
? CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_LOG_ENTRY"], array("log_id" => $log_tmp_id))."?commentId=".$arResult["arComments"][$key]["EVENT"]["ID"]
: ""
)
);
$arResult["arComments"][$key]["URL_EDIT"] = "__logEditComment('".$entity_xml_id."', '".$arResult["arComments"][$key]["EVENT"]["ID"]."', '".$log_tmp_id."');";
}
}
}
elseif (
$action == "change_favorites"
&& $GLOBALS["USER"]->IsAuthorized()
)
{
$log_id = intval($_REQUEST["log_id"]);
if ($arLog = CSocNetLog::GetByID($log_id))
{
$strRes = CSocNetLogFavorites::Change($GLOBALS["USER"]->GetID(), $log_id);
if ($strRes)
{
if ($strRes == "Y")
CSocNetLogFollow::Set(
$GLOBALS["USER"]->GetID(),
"L".$log_id,
"Y",
$arLog["LOG_UPDATE"]
);
$arResult["bResult"] = $strRes;
}
else
{
if($e = $GLOBALS["APPLICATION"]->GetException())
$arResult["strMessage"] = $e->GetString();
else
$arResult["strMessage"] = GetMessage("SONET_LOG_FAVORITES_CANNOT_CHANGE");
$arResult["bResult"] = "E";
}
}
else
{
$arResult["strMessage"] = GetMessage("SONET_LOG_FAVORITES_INCORRECT_LOG_ID");
$arResult["bResult"] = "E";
}
}
elseif (
$action == "delete"
&& CSocNetUser::IsCurrentUserModuleAdmin(SITE_ID, false)
)
{
$log_id = intval($_REQUEST["log_id"]);
if ($log_id > 0)
{
$arResult["bResult"] = (CSocNetLog::Delete($log_id) ? "Y" : "N");
}
}
elseif ($action == "get_more_destination")
{
$isExtranetInstalled = (CModule::IncludeModule("extranet") ? "Y" : "N");
$isExtranetSite = ($isExtranetInstalled == "Y" && CExtranet::IsExtranetSite() ? "Y" : "N");
$isExtranetUser = ($isExtranetInstalled == "Y" && !CExtranet::IsIntranetUser() ? "Y" : "N");
$isExtranetAdmin = ($isExtranetInstalled == "Y" && CExtranet::IsExtranetAdmin() ? "Y" : "N");
if ($isExtranetUser == "Y")
{
$arUserIdVisible = CExtranet::GetMyGroupsUsersSimple(SITE_ID);
}
elseif (
$isExtranetInstalled == "Y"
&& $isExtranetUser != "Y"
&& $isExtranetAdmin != "Y"
)
{
if (
$isExtranetAdmin == "Y"
&& $bCurrentUserIsAdmin
)
{
$arAvailableExtranetUserID = CExtranet::GetMyGroupsUsers(SITE_ID);
}
else
{
$arAvailableExtranetUserID = CExtranet::GetMyGroupsUsersSimple(CExtranet::GetExtranetSiteID());
}
}
$arResult["arDestinations"] = false;
$log_id = intval($_REQUEST["log_id"]);
$created_by_id = intval($_REQUEST["created_by_id"]);
$iDestinationLimit = intval($_REQUEST["dlim"]);
if ($log_id > 0)
{
$arRights = array();
$db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetLogEntryGetRights");
while ($arEvent = $db_events->Fetch())
{
if (ExecuteModuleEventEx(
$arEvent,
array(
array("LOG_ID" => $log_id),
&$arRights
)
) === false
)
{
$bSkipGetRights = true;
break;
}
}
if (!$bSkipGetRights)
{
$dbRight = CSocNetLogRights::GetList(array(), array("LOG_ID" => $log_id));
while ($arRight = $dbRight->Fetch())
{
$arRights[] = $arRight["GROUP_CODE"];
}
}
$arParams = array(
"PATH_TO_USER" => $_REQUEST["p_user"],
"PATH_TO_GROUP" => $_REQUEST["p_group"],
"PATH_TO_CONPANY_DEPARTMENT" => $_REQUEST["p_dep"],
"NAME_TEMPLATE" => $_REQUEST["nt"],
"SHOW_LOGIN" => $_REQUEST["sl"],
"DESTINATION_LIMIT" => 100,
"CHECK_PERMISSIONS_DEST" => "N"
);
if ($created_by_id > 0)
$arParams["CREATED_BY"] = $created_by_id;
$arDestinations = CSocNetLogTools::FormatDestinationFromRights($arRights, $arParams, $iMoreCount);
if (is_array($arDestinations))
{
$iDestinationsHidden = 0;
$arGroupID = CSocNetLogTools::GetAvailableGroups();
foreach($arDestinations as $key => $arDestination)
{
if (
array_key_exists("TYPE", $arDestination)
&& array_key_exists("ID", $arDestination)
&& (
(
$arDestination["TYPE"] == "SG"
&& !in_array(intval($arDestination["ID"]), $arGroupID)
)
|| (
in_array($arDestination["TYPE"], array("CRMCOMPANY", "CRMLEAD", "CRMCONTACT", "CRMDEAL"))
&& CModule::IncludeModule("crm")
&& !CCrmAuthorizationHelper::CheckReadPermission(CCrmLiveFeedEntity::ResolveEntityTypeID($arDestination["TYPE"]), $arDestination["ID"])
)
|| (
in_array($arDestination["TYPE"], array("DR", "D"))
&& $isExtranetUser == "Y"
)
|| (
$arDestination["TYPE"] == "U"
&& isset($arUserIdVisible)
&& is_array($arUserIdVisible)
&& !in_array(intval($arDestination["ID"]), $arUserIdVisible)
)
|| (
$arDestination["TYPE"] == "U"
&& isset($arDestination["IS_EXTRANET"])
&& $arDestination["IS_EXTRANET"] == "Y"
&& isset($arAvailableExtranetUserID)
&& is_array($arAvailableExtranetUserID)
&& !in_array(intval($arDestination["ID"]), $arAvailableExtranetUserID)
)
)
)
{
unset($arDestinations[$key]);
$iDestinationsHidden++;
}
}
$arResult["arDestinations"] = array_slice($arDestinations, $iDestinationLimit);
$arResult["iDestinationsHidden"] = $iDestinationsHidden;
}
}
}
elseif ($action == "get_comment_src")
{
$arResult = false;
$comment_id = intval($_REQUEST["comment_id"]);
$post_id = intval($_REQUEST["post_id"]);
if (
$comment_id > 0
&& $post_id > 0
)
{
if (IsModuleInstalled("intranet"))
{
$arOrder = array();
$arFilter = array(
"ID" => $comment_id
);
}
else
{
$arOrder = array("ID" => "DESC");
$arFilter = array(
"LOG_ID" => $post_id
);
}
$dbRes = CSocNetLogComments::GetList(
$arOrder,
$arFilter,
false,
false,
array("ID", "EVENT_ID", "MESSAGE", "USER_ID", "SOURCE_ID")
);
if (
($arRes = $dbRes->Fetch())
&& ($arRes["EVENT_ID"] != "blog_comment")
&& ($arRes["ID"] == $comment_id)
&& (
CSocNetUser::IsCurrentUserModuleAdmin()
|| $arRes["USER_ID"] == $GLOBALS["USER"]->GetID()
)
)
{
$arResult["message"] = str_replace("<br />", "\n", $arRes["MESSAGE"]);
$arResult["sourceId"] = (intval($arRes["SOURCE_ID"]) > 0 ? intval($arRes["SOURCE_ID"]) : intval($arRes["ID"]));
}
}
}
elseif ($action == "delete_comment")
{
$arResult = false;
$comment_id = intval($_REQUEST["delete_comment_id"]);
$post_id = intval($_REQUEST["post_id"]);
if (
$comment_id > 0
&& $post_id > 0
)
{
if (IsModuleInstalled("intranet"))
{
$arOrder = array();
$arFilter = array(
"ID" => $comment_id
);
}
else
{
$arOrder = array("ID" => "DESC");
$arFilter = array(
"LOG_ID" => $post_id
);
}
$dbRes = CSocNetLogComments::GetList(
$arOrder,
$arFilter,
false,
false,
array("ID", "EVENT_ID", "MESSAGE", "USER_ID", "SOURCE_ID")
);
if (
($arRes = $dbRes->Fetch())
&& ($arRes["EVENT_ID"] != "blog_comment")
&& ($arRes["ID"] == $comment_id)
&& (
CSocNetUser::IsCurrentUserModuleAdmin()
|| $arRes["USER_ID"] == $GLOBALS["USER"]->GetID()
)
)
{
$bSuccess = CSocNetLogComments::Delete($arRes["ID"], true);
if (!$bSuccess)
{
if ($e = $GLOBALS["APPLICATION"]->GetException())
{
$errorMessage = $e->GetString();
}
}
}
}
$arResult = array(
'errorMessage' => ($bSuccess ? '' : ($errorMessage && strlen($errorMessage) > 0 ? $errorMessage : '')),
'okMessage' => ($bSuccess ? GetMessage('SONET_LOG_COMMENT_DELETED') : ''),
'status' => ($bSuccess ? true : false),
'message' => '',
'messageBBCode' => '',
'messageId' => array(
$_REQUEST['ENTITY_XML_ID'],
($arRes ? (intval($arRes["SOURCE_ID"]) > 0 ? intval($arRes["SOURCE_ID"]) : intval($arRes["ID"])) : 0)
),
'messageFields' => ''
);
}
header('Content-Type: application/x-javascript; charset='.LANG_CHARSET);
echo CUtil::PhpToJSObject($arResult);
}
define('PUBLIC_AJAX_MODE', true);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>