42 $this->_user_id = intval($user_id);
43 $this->_group_id = intval($group_id);
49 if(CModule::IncludeModule(
'search'))
61 while ($arFriend = $dbFriend->Fetch())
63 $friendID = (($user_id == $arFriend[
"FIRST_USER_ID"]) ? $arFriend[
"SECOND_USER_ID"] : $arFriend[
"FIRST_USER_ID"]);
70 if(mb_substr($operation, 0, 4) ===
"view")
72 global $arSonetFeaturesPermsCache;
73 unset($arSonetFeaturesPermsCache[$entity_type.
"_".$entity_id]);
75 if(CModule::IncludeModule(
'search'))
85 && in_array($operation, Array(
"view_post",
"view_comment"))
86 && CModule::IncludeModule(
'blog')
89 if($operation ===
"view_post")
94 if(CModule::IncludeModule(
'search'))
96 if($operation ===
"view_post")
99 foreach($arPost as $id => $perms)
106 $arTmpCache = Array();
109 while($arComment = $dbComment->Fetch())
111 if(!empty($arPost[$arComment[
"POST_ID"]]))
113 if(empty($arPost[$arComment[
"POST_ID"]][
"PERMS_CALC"]))
115 $arPost[$arComment[
"POST_ID"]][
"PERMS_CALC"] =
array();
116 if(is_array($arPost[$arComment[
"POST_ID"]][
"PERMS_FULL"]) && !empty($arPost[$arComment[
"POST_ID"]][
"PERMS_FULL"]))
118 foreach($arPost[$arComment[
"POST_ID"]][
"PERMS_FULL"] as $e => $v)
120 if(in_array($v[
"TYPE"], Array(
"SG",
"U")))
122 $type = $v[
"TYPE"] ===
"SG" ?
"G" :
"U";
123 if(array_key_exists(
$type.$v[
"ID"], $arTmpCache))
125 $spt = $arTmpCache[
$type.$v[
"ID"]];
129 $spt = CBlogPost::GetSocnetGroups(
$type, $v[
"ID"],
"view_comment");
130 $arTmpCache[
$type.$v[
"ID"]] = $spt;
134 if(!in_array($vv, $arPost[$arComment[
"POST_ID"]][
"PERMS_CALC"]))
135 $arPost[$arComment[
"POST_ID"]][
"PERMS_CALC"][] = $vv;
140 $arPost[$arComment[
"POST_ID"]][
"PERMS_CALC"][] = $e;
154 public static function GetSearchParams($entity_type, $entity_id, $feature, $operation)
157 "feature_id" =>
"S".$entity_type.
"_".$entity_id.
"_".$feature.
"_".$operation,
158 ($entity_type ===
"G"?
"socnet_group":
"socnet_user") => $entity_id,
162 public static function GetSearchGroups($entity_type, $entity_id, $feature, $operation)
166 if($entity_type ===
"G")
168 $prefix =
"SG".$entity_id.
"_";
169 $letter = CSocNetFeaturesPerms::GetOperationPerm(
SONET_ENTITY_GROUP, $entity_id, $feature, $operation);
194 $prefix =
"SU".$entity_id.
"_";
195 $letter = CSocNetFeaturesPerms::GetOperationPerm(
SONET_ENTITY_USER, $entity_id, $feature, $operation);
223 if (
$NS[
"MODULE"] ===
"socialnetwork" &&
$NS[
"ID"] <>
'')
225 $id = (int)
$NS[
"ID"];
235 if(
$NS[
"SITE_ID"]!=
"")
237 $strNSJoin1 .=
" INNER JOIN b_sonet_group_site sgs ON sgs.GROUP_ID=g.ID ";
238 $strNSFilter1 .=
" AND sgs.SITE_ID='".$DB->ForSQL(
$NS[
"SITE_ID"]).
"' ";
244 ,".$DB->DateToCharFunction(
"g.DATE_UPDATE").
" as DATE_UPDATE
261 $rs =
$DB->Query($strSql);
262 while (
$ar =
$rs->Fetch())
264 $arSearchIndexSiteID =
array();
265 $rsGroupSite = CSocNetGroup::GetSite(
$ar[
"ID"]);
267 while($arGroupSite = $rsGroupSite->Fetch())
268 $arSearchIndexSiteID[$arGroupSite[
"LID"]] = str_replace(
"#group_id#",
$ar[
"ID"], \
Bitrix\Socialnetwork\Helper\Path::get(
'group_path_template', $arGroupSite[
'LID']));
271 "ID" =>
"G".
$ar[
"ID"],
272 "LAST_MODIFIED" =>
$ar[
"DATE_UPDATE"],
273 "TITLE" =>
$ar[
"NAME"],
275 "SITE_ID" => $arSearchIndexSiteID,
276 "PARAM1" =>
$ar[
"SUBJECT_ID"],
277 "PARAM2" =>
$ar[
"ID"],
280 $ar[
"VISIBLE"] ===
"Y"?
289 "socnet_group" =>
$ar[
"ID"],
290 "entity" =>
"socnet_group",
292 "TAGS" =>
$ar[
"KEYWORDS"],
297 $res = call_user_func(
array(&$oCallback, $callback_method), $Result);
299 return $Result[
"ID"];
315 if(defined(
"BX_COMP_MANAGED_CACHE") && in_array($field,
array(
"SOCIAL_NETWORK_USER",
"SOCIAL_NETWORK_GROUP")))
319 $CACHE_MANAGER->RegisterTag(
"sonet_search_".$tag_field.
"_".$tag_val);
327 $currentUserId = (int)
$USER->GetID();
330 if ($currentUserId > 0)
336 "USER_ID" => $currentUserId,
341 array(
"ID",
"FIRST_USER_ID",
"SECOND_USER_ID",
"DATE_CREATE",
"DATE_UPDATE",
"INITIATED_BY")
343 while ($arFriend = $rsFriends->Fetch())
345 if ((
int)$arFriend[
"FIRST_USER_ID"] !== $currentUserId)
347 $arResult[] =
"SU".$arFriend[
"FIRST_USER_ID"].
"_M";
350 if ((
int)$arFriend[
"SECOND_USER_ID"] !== $currentUserId)
352 $arResult[] =
"SU".$arFriend[
"SECOND_USER_ID"].
"_M";
359 array(
"USER_ID" => $currentUserId),
362 array(
"GROUP_ID",
"ROLE")
366 $arResult[] =
"SG".$arGroup[
"GROUP_ID"].
"_".$arGroup[
"ROLE"];
378 $ELEMENT_ID = intval(
$_REQUEST[
"photo_element_id"] ?? 0);
379 if (empty($ELEMENT_ID))
381 $ELEMENT_ID = intval(
$_REQUEST[
"ELEMENT_ID"] ?? 0);
386 && CModule::IncludeModule(
'iblock')
389 $rsSections = CIBlockElement::GetElementGroups($ELEMENT_ID,
true);
390 $arSection = $rsSections->Fetch();
393 $SECTION_ID = $arSection[
"ID"];
402 && CModule::IncludeModule(
"extranet")
413 foreach($arSiteData as $arUrl)
416 && mb_strpos($path_template, $arUrl[
"GROUPS_PATH"]) === 0)
418 $path_template = str_replace($arUrl[
"GROUPS_PATH"],
"#GROUP_PATH#", $path_template);
424 && mb_strpos($path_template, $arUrl[
"USER_PATH"]) === 0
427 $path_template = str_replace($arUrl[
"USER_PATH"],
"#USER_PATH#", $path_template);
450 ($this->_user_id > 0 ? $this->_user_id :
$USER->GetID()),
455 ($entity_type ===
"G" ?
"group_" :
"user_") . $entity_id,
459 ($arSiteData ? $arSiteData[
$site_id][
"GROUPS_PATH"] :
""),
460 ($arSiteData ? $arSiteData[
$site_id][
"USER_PATH"] :
"")
468 &&
$arFields[
"PARAM1"] == COption::GetOptionString(
"tasks",
"task_forum_id", 0)
469 && CModule::IncludeModule(
'tasks')
472 if (!preg_match(
'/^EVENT_[0-9]+/',
$arFields[
"TITLE"], $match))
475 if ($arTask = $rsTask->Fetch())
477 $arFields[
'PERMISSIONS'] = CTasks::__GetSearchPermissions($arTask);
504 $url_params =
array();
505 $p = mb_strpos(
$url,
"?");
508 $ar = explode(
"&", mb_substr(
$url,
$p + 1));
511 list(
$name, $value) = explode(
"=",
$str, 2);
520 if(
count($url_params))
521 return $url.
"?".implode(
"&", $url_params).($ancor <>
''?
"#".$ancor :
"");
523 return $url.($ancor <>
''?
"#".$ancor :
"");
532 || !is_array($this->_params)
548 && (
int)
$arFields[
"PARAM1"] === (
int) ($this->_params[
"FORUM_ID"] ??
null)
553 $rsGroupSite = CSocNetGroup::GetSite($this->_group_id);
554 while($arGroupSite = $rsGroupSite->Fetch())
562 $this->_params[
"PATH_TO_GROUP_FORUM_MESSAGE"]
567 && (
int)
$arFields[
"PARAM1"] === (
int) ($this->_params[
"FILES_FORUM_ID"] ??
null)
568 && isModuleInstalled(
"webdav")
574 $this->
Url($this->_params[
"PATH_TO_GROUP_FILES_ELEMENT"],
array(
"MID"=>
"#message_id#"),
"message#message_id#")
579 && (
int)
$arFields[
"PARAM1"] === (
int)$this->_params[
"TASK_FORUM_ID"]
580 && !preg_match(
'/^EVENT_[0-9]+/',
$arFields[
"TITLE"], $match)
586 && preg_match(
'/^EVENT_[0-9]+/',
$arFields[
"TITLE"], $match)
594 && (
int)
$arFields[
"PARAM1"] === (
int) ($this->_params[
"PHOTO_FORUM_ID"] ??
null)
600 $this->
Url($this->_params[
"PATH_TO_GROUP_PHOTO_ELEMENT"],
array(
"MID"=>
"#message_id#"),
"message#message_id#")
608 && (
int)
$arFields[
"PARAM1"] === (
int) ($this->_params[
"FORUM_ID"] ??
null)
617 $this->_params[
"PATH_TO_USER_FORUM_MESSAGE"]
622 && (
int)
$arFields[
"PARAM1"] === (
int) ($this->_params[
"FILES_FORUM_ID"] ??
null)
623 && isModuleInstalled(
"webdav")
629 $this->
Url($this->_params[
"PATH_TO_USER_FILES_ELEMENT"],
array(
"MID"=>
"#message_id#"),
"message#message_id#")
634 && (
int)
$arFields[
"PARAM1"] === (
int) ($this->_params[
"TASK_FORUM_ID"] ??
null)
640 && preg_match(
'/^EVENT_[0-9]+/',
$arFields[
"TITLE"], $match)
648 && (
int)
$arFields[
"PARAM1"] === (
int) ($this->_params[
"PHOTO_FORUM_ID"] ??
null)
658 $this->_params[
"PATH_TO_USER_PHOTO_ELEMENT"],
659 array(
"MID"=>
"#message_id#"),
660 "message#message_id#"
668 || (
$arFields[
"PARAM1"] ??
null) ===
"MICROBLOG"
678 ? array_merge($paramsTmp,
$arFields[
"PARAMS"])
684 && (
$arFields[
"PARAM1"] ??
null) ===
"COMMENT"
689 'blog',
'view_comment'
693 ? array_merge($paramsTmp,
$arFields[
"PARAMS"])
699 foreach(
GetModuleEvents(
"socialnetwork",
"BeforeIndexSocNet",
true) as $arEvent)
702 if(is_array($arEventResult))
715 && (
$arFields[
"PARAM1"] ??
null) ===
"USER"
733 if($entity_type ===
"G")
736 array(
"#group_id#",
"#user_alias#",
"#section_id#",
"#element_id#",
"#action#",
"#task_id#",
"#name#"),
744 array(
"#user_id#",
"#user_alias#",
"#section_id#",
"#element_id#",
"#action#",
"#task_id#"),
751 if ($feature ===
"wiki")
756 foreach($arFieldList as $field)
758 if($field ===
"PREVIEW_TEXT" || $field ===
"DETAIL_TEXT")
760 $key = $field .
"_TYPE";
761 if (isset($CWikiParser))
774 if(isset($CWikiParser))
786 if (CIBlock::GetArrayByID(
$IBLOCK_ID,
"RIGHTS_MODE") ===
"E")
789 $arPermissions = $obElementRights->GetGroups(
array(
"element_read"));
800 "LAST_MODIFIED" => ConvertTimeStamp(time()+CTimeZone::GetOffset(),
"FULL"),
804 "PARAM1" => CIBlock::GetArrayByID(
$IBLOCK_ID,
"IBLOCK_TYPE_ID"),
806 "PARAM3" => $feature,
808 "PERMISSIONS" => $arPermissions,
809 "PARAMS" => $arSearchIndexParams,
812 if(defined(
"BX_COMP_MANAGED_CACHE"))
814 $CACHE_MANAGER->ClearByTag(
"sonet_search_".$entity_type.
"_".$entity_id);
821 $WF_PARENT_ELEMENT_ID = intval(
$arFields[
"WF_PARENT_ELEMENT_ID"] ??
null);
822 if($WF_PARENT_ELEMENT_ID > 0 && $WF_PARENT_ELEMENT_ID != intval(
$arFields[
"ID"]))
825 if(!CModule::IncludeModule(
'search'))
829 $rsElement = CIBlockElement::GetList(
838 "WF_PARENT_ELEMENT_ID",
857 case intval($this->_params[
"PHOTO_GROUP_IBLOCK_ID"]):
858 $path_template = trim($this->_params[
"PATH_TO_GROUP_PHOTO_ELEMENT"]);
859 if($path_template <>
'')
865 case intval($this->_params[
"PHOTO_USER_IBLOCK_ID"]):
866 $path_template = trim($this->_params[
"PATH_TO_USER_PHOTO_ELEMENT"]);
867 if($path_template <>
'')
873 case intval($this->_params[
"CALENDAR_GROUP_IBLOCK_ID"]):
874 $path_template = trim($this->_params[
"PATH_TO_GROUP_CALENDAR_ELEMENT"]);
875 if($path_template <>
'')
881 case intval($this->_params[
"FILES_GROUP_IBLOCK_ID"] ??
null):
882 $path_template = trim($this->_params[
"PATH_TO_GROUP_FILES_ELEMENT"]);
883 if($path_template <>
'')
885 $property = mb_strtoupper(trim($this->_params[
"FILES_PROPERTY_CODE"]));
891 $rsFile = CIBlockElement::GetProperty(
$arFields[
"IBLOCK_ID"],
$arFields[
"ID"],
"sort",
"asc",
array(
"CODE" => $property,
"EMPTY" =>
"N"));
892 $arFile = $rsFile->Fetch();
895 $arFile = CIBlockElement::__GetFileContent($arFile[
"VALUE"]);
896 if(is_array($arFile))
898 $arFields[
"FILE_CONTENT"] = $arFile[
"CONTENT"];
901 $arFields[
"TAGS"] .=
",".$arFile[
"PROPERTIES"][COption::GetOptionString(
"search",
"page_tag_property")];
905 $arFields[
"TAGS"] = $arFile[
"PROPERTIES"][COption::GetOptionString(
"search",
"page_tag_property")];
913 case intval($this->_params[
"FILES_USER_IBLOCK_ID"] ??
null):
914 $path_template = trim($this->_params[
"PATH_TO_USER_FILES_ELEMENT"]);
915 if($path_template <>
'')
917 $property = mb_strtoupper(trim($this->_params[
"FILES_PROPERTY_CODE"]));
923 $rsFile = CIBlockElement::GetProperty(
$arFields[
"IBLOCK_ID"],
$arFields[
"ID"],
"sort",
"asc",
array(
"CODE" => $property,
"EMPTY" =>
"N"));
924 $arFile = $rsFile->Fetch();
927 $arFile = CIBlockElement::__GetFileContent($arFile[
"VALUE"]);
928 if(is_array($arFile))
930 $arFields[
"FILE_CONTENT"] = $arFile[
"CONTENT"];
933 $arFields[
"TAGS"] .=
",".$arFile[
"PROPERTIES"][COption::GetOptionString(
"search",
"page_tag_property")];
937 $arFields[
"TAGS"] = $arFile[
"PROPERTIES"][COption::GetOptionString(
"search",
"page_tag_property")];
944 case intval(COption::GetOptionInt(
"wiki",
"socnet_iblock_id")):
945 if(CModule::IncludeModule(
"wiki"))
953 if(CModule::IncludeModule(
"search"))
965 while (
$arPath = $rsPath->Fetch())
974 if($entity_type ===
"G")
976 array(
"#group_id#",
"#user_alias#",
"#section_id#",
"#element_id#",
"#action#",
"#task_id#",
"#name#",
"#path#"),
982 array(
"#user_id#",
"#user_alias#",
"#section_id#",
"#element_id#",
"#action#",
"#task_id#",
"#path#"),
998 if (CIBlock::GetArrayByID(
$IBLOCK_ID,
"RIGHTS_MODE") ===
"E")
1001 $arPermissions = $obSectionRights->GetGroups(
array(
"section_read"));
1012 "LAST_MODIFIED" => ConvertTimeStamp(time()+CTimeZone::GetOffset(),
"FULL"),
1016 "PARAM1" => CIBlock::GetArrayByID(
$IBLOCK_ID,
"IBLOCK_TYPE_ID"),
1018 "PARAM3" => $feature,
1020 "PERMISSIONS" => $arPermissions,
1021 "PARAMS" => $arSearchIndexParams,
1024 if(defined(
"BX_COMP_MANAGED_CACHE"))
1026 $CACHE_MANAGER->ClearByTag(
"sonet_search_".$entity_type.
"_".$entity_id);
1032 if(!CModule::IncludeModule(
'search'))
1037 case intval($this->_params[
"FILES_USER_IBLOCK_ID"] ??
null):
1038 $path_template = trim($this->_params[
"PATH_TO_USER_FILES"]);
1039 if($path_template <>
'')
1045 case intval($this->_params[
"FILES_GROUP_IBLOCK_ID"] ??
null):
1046 $path_template = trim($this->_params[
"PATH_TO_GROUP_FILES"]);
1047 if($path_template <>
'')
1057 if(CModule::IncludeModule(
"search"))
1068 && isset(
$arFields[
"PARAMS"][
"socnet_group"])
1071 CBitrixComponent::clearComponentCache(
"bitrix:search.tags.cloud");
1079 && isset(
$arFields[
"PARAMS"][
"socnet_group"])
1082 CBitrixComponent::clearComponentCache(
"bitrix:search.tags.cloud");
if(!Loader::includeModule('messageservice')) $provider
static ChangeSocNetPermission($entity_type, $entity_id, $operation)
static GetSocNetPostsPerms($entity_type, $entity_id)
static ChangePermission($MODULE_ID, $arGroups, $ITEM_ID=false, $PARAM1=false, $PARAM2=false, $SITE_ID=false, $PARAMS=false)
static DeleteIndex($MODULE_ID, $ITEM_ID=false, $PARAM1=false, $PARAM2=false, $SITE_ID=false)
static Index($MODULE_ID, $ITEM_ID, $arFields, $bOverWrite=false, $SEARCH_SESS_ID='')
static GetRelatedUsers($userID, $relation, $arNavStartParams=false, $bActiveOnly="N")
static DeleteByUserID($USER_ID)
static OnSearchCheckPermissions($FIELD)
__construct($user_id, $group_id, $arParams)
IndexIBlockElement($arFields, $entity_id, $entity_type, $feature, $operation, $path_template, $arFieldList)
static OnUserRelationsChange($user_id)
static OnSearchReindex($NS=Array(), $oCallback=NULL, $callback_method="")
static GetSearchGroups($entity_type, $entity_id, $feature, $operation)
IndexIBlockSection($arFields, $entity_id, $entity_type, $feature, $operation, $path_template)
static OnSearchPrepareFilter($strSearchContentAlias, $field, $val)
static IBlockElementDelete($zr)
Url($url, $params, $ancor)
static OnBeforeIndexUpdate($ID, $arFields)
static SetFeaturePermissions($entity_type, $entity_id, $feature, $operation, $new_perm)
static BeforeIndexLast($arFields)
static GetSearchParams($entity_type, $entity_id, $feature, $operation)
BeforeIndexForum($arFields, $entity_type, $entity_id, $feature, $operation, $path_template)
IBlockElementUpdate(&$arFields)
IBlockSectionUpdate(&$arFields)
static OnAfterIndexAdd($ID, $arFields)
static killAllTags($text)
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(!defined('NOT_CHECK_PERMISSIONS')) $NS
ExecuteModuleEventEx($arEvent, $arParams=[])
HTMLToTxt($str, $strSiteUrl="", $aDelete=[], $maxlen=70)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
const SONET_RELATIONS_FRIEND