PageRenderTime 47ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/components/bitrix/socialnetwork_group/include/search.php

https://gitlab.com/alexprowars/bitrix
PHP | 169 lines | 140 code | 21 blank | 8 comment | 37 complexity | 53455f0b8014d6d4e5227afdc530e9aa MD5 | raw file
  1. <?php
  2. if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
  3. {
  4. die();
  5. }
  6. /** @var CBitrixComponent $component */
  7. /** @var array $arParams */
  8. /** @var array $arResult */
  9. /** @var array $arDefaultUrlTemplates404 */
  10. /** @var string $componentPage */
  11. /** @global CDatabase $DB */
  12. /** @global CUser $USER */
  13. /** @global CMain $APPLICATION */
  14. $arParams["SEARCH_FILTER_NAME"] = (
  15. isset($arParams["SEARCH_FILTER_NAME"])
  16. && $arParams["SEARCH_FILTER_NAME"] <> ''
  17. ? $arParams["SEARCH_FILTER_NAME"]
  18. : "sonet_search_filter"
  19. );
  20. $arParams["SEARCH_FILTER_DATE_NAME"] = (
  21. isset($arParams["SEARCH_FILTER_DATE_NAME"])
  22. && $arParams["SEARCH_FILTER_DATE_NAME"] <> ''
  23. ? $arParams["SEARCH_FILTER_DATE_NAME"]
  24. : "sonet_search_filter_date"
  25. );
  26. $arParams["SEARCH_RESTART"] = (
  27. isset($arParams["SEARCH_RESTART"])
  28. && $arParams["SEARCH_RESTART"] == "Y"
  29. ? $arParams["SEARCH_RESTART"]
  30. : "N"
  31. );
  32. $arParams["SEARCH_USE_LANGUAGE_GUESS"] = (
  33. isset($arParams["SEARCH_USE_LANGUAGE_GUESS"])
  34. && $arParams["SEARCH_USE_LANGUAGE_GUESS"] == "N"
  35. ? $arParams["SEARCH_USE_LANGUAGE_GUESS"]
  36. : "Y"
  37. );
  38. global ${$arParams["SEARCH_FILTER_NAME"]}, $sonet_search_settings;
  39. $sonet_search_filter = array();
  40. $EntityType = (mb_strpos($componentPage, "group_content_search") !== false ? SONET_ENTITY_GROUP : SONET_ENTITY_USER);
  41. $sFilterDateTo = $_REQUEST[$arParams["SEARCH_FILTER_DATE_NAME"]."_to"];
  42. if ($arr = ParseDateTime($_REQUEST[$arParams["SEARCH_FILTER_DATE_NAME"]."_to"]))
  43. {
  44. if (
  45. intval($arr["HH"]) == 0
  46. && intval($arr["MI"]) == 0
  47. && intval($arr["SS"]) == 0
  48. )
  49. {
  50. $arr["HH"] = "23";
  51. $arr["MI"] = "59";
  52. $arr["SS"] = "59";
  53. $sDateTime = $arr["DD"].".".$arr["MM"].".".$arr["YYYY"]." ".$arr["HH"].":".$arr["MI"].":".$arr["SS"];
  54. $stmp = MakeTimeStamp($sDateTime, "DD.MM.YYYY HH:MI:SS");
  55. $sFilterDateTo = ConvertTimeStamp($stmp, "FULL");
  56. }
  57. }
  58. if ($_REQUEST[$arParams["SEARCH_FILTER_NAME"]] <> '')
  59. $sonet_search_filter["SONET_FEATURE"] = $_REQUEST[$arParams["SEARCH_FILTER_NAME"]];
  60. if ($_REQUEST[$arParams["SEARCH_FILTER_DATE_NAME"]."_from"] <> '')
  61. $sonet_search_filter[">=DATE_CHANGE"] = $_REQUEST[$arParams["SEARCH_FILTER_DATE_NAME"]."_from"];
  62. if ($sFilterDateTo <> '')
  63. $sonet_search_filter["<=DATE_CHANGE"] = $sFilterDateTo;
  64. $sonet_search_settings = array(
  65. "PHOTO_IBLOCK_TYPE" => ($EntityType == SONET_ENTITY_GROUP ? $arParams["PHOTO_GROUP_IBLOCK_TYPE"] : $arParams["PHOTO_USER_IBLOCK_TYPE"]),
  66. "PHOTO_IBLOCK_ID" => ($EntityType == SONET_ENTITY_GROUP ? $arParams["PHOTO_GROUP_IBLOCK_ID"] : $arParams["PHOTO_USER_IBLOCK_ID"]),
  67. "FILES_IBLOCK_TYPE" => ($EntityType == SONET_ENTITY_GROUP ? $arParams["FILES_GROUP_IBLOCK_TYPE"] : $arParams["FILES_USER_IBLOCK_TYPE"]),
  68. "FILES_IBLOCK_ID" => ($EntityType == SONET_ENTITY_GROUP ? $arParams["FILES_GROUP_IBLOCK_ID"] : $arParams["FILES_USER_IBLOCK_ID"]),
  69. "CALENDAR_IBLOCK_TYPE" => $arParams["CALENDAR_IBLOCK_TYPE"],
  70. "CALENDAR_IBLOCK_ID" => ($EntityType == SONET_ENTITY_GROUP ? $arParams["CALENDAR_GROUP_IBLOCK_ID"] : $arParams["CALENDAR_USER_IBLOCK_ID"]),
  71. );
  72. AddEventHandler("search", "OnSearchPrepareFilter", Array("CSocNetSearchComponent", "OnSearchPrepareFilterHandler"));
  73. class CSocNetSearchComponent
  74. {
  75. public static function OnSearchPrepareFilterHandler($strSearchContentAlias, $field, $val)
  76. {
  77. if($field == "SONET_FEATURE")
  78. {
  79. $feature = false;
  80. if(!is_array($val))
  81. $feature = trim($val);
  82. if($feature)
  83. {
  84. switch($feature)
  85. {
  86. case "forum":
  87. return " ".$strSearchContentAlias."MODULE_ID = 'forum'";
  88. case "blog":
  89. return " ".$strSearchContentAlias."MODULE_ID = 'blog'";
  90. case "tasks":
  91. return " ".$strSearchContentAlias."MODULE_ID = 'tasks'";
  92. case "photo":
  93. $iblock_type = $GLOBALS["sonet_search_settings"]["PHOTO_IBLOCK_TYPE"];
  94. $iblock_id = $GLOBALS["sonet_search_settings"]["PHOTO_IBLOCK_ID"];
  95. if ($iblock_type <> '' && intval($iblock_id) > 0)
  96. return " ".$strSearchContentAlias."MODULE_ID = 'socialnetwork' AND ".$strSearchContentAlias."PARAM1 = '".$iblock_type."' AND ".$strSearchContentAlias."PARAM2 = ".$iblock_id;
  97. else
  98. return " 1=0";
  99. case "files":
  100. $iblock_type = $GLOBALS["sonet_search_settings"]["FILES_IBLOCK_TYPE"];
  101. $iblock_id = $GLOBALS["sonet_search_settings"]["FILES_IBLOCK_ID"];
  102. if ($iblock_type <> '' && intval($iblock_id) > 0)
  103. return " ".$strSearchContentAlias."MODULE_ID = 'socialnetwork' AND ".$strSearchContentAlias."PARAM1 = '".$iblock_type."' AND ".$strSearchContentAlias."PARAM2 = ".$iblock_id;
  104. else
  105. return " 1=0";
  106. default:
  107. return " 1=0";
  108. }
  109. }
  110. else
  111. return "";
  112. }
  113. else
  114. return "";
  115. }
  116. }
  117. if (mb_strpos($componentPage, "user_content_search") === false)
  118. {
  119. $APPLICATION->addChainItem(
  120. $arResult['groupFields']['NAME'],
  121. \CComponentEngine::makePathFromTemplate(htmlspecialcharsbx($arResult['PATH_TO_GROUP']), [
  122. 'group_id' => $arResult['groupFields']['ID'],
  123. ]));
  124. }
  125. else
  126. {
  127. $dbUser = CUser::GetByID($arResult["VARIABLES"]["user_id"]);
  128. $arUser = $dbUser->Fetch();
  129. if ($arParams["NAME_TEMPLATE"] == '')
  130. $arParams["NAME_TEMPLATE"] = CSite::GetNameFormat();
  131. $arParams["TITLE_NAME_TEMPLATE"] = str_replace(
  132. array("#NOBR#", "#/NOBR#"),
  133. array("", ""),
  134. $arParams["NAME_TEMPLATE"]
  135. );
  136. $bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false;
  137. $strTitleFormatted = CUser::FormatName($arParams['TITLE_NAME_TEMPLATE'], $arUser, $bUseLogin);
  138. $APPLICATION->AddChainItem($strTitleFormatted, CComponentEngine::MakePathFromTemplate(htmlspecialcharsbx($arResult["PATH_TO_USER"]), array("user_id" => $arUser["ID"])));
  139. }
  140. $feature = "search";
  141. $arEntityActiveFeatures = CSocNetFeatures::GetActiveFeaturesNames(((mb_strpos($componentPage, "user_content_search") === false) ? SONET_ENTITY_GROUP : SONET_ENTITY_USER), ((mb_strpos($componentPage, "user_content_search") === false) ? $arResult["VARIABLES"]["group_id"] : $arResult["VARIABLES"]["user_id"]));
  142. $strFeatureTitle = ((array_key_exists($feature, $arEntityActiveFeatures) && $arEntityActiveFeatures[$feature] <> '') ? $arEntityActiveFeatures[$feature] : GetMessage("SONET_CONTENT_SEARCH_CHAIN"));
  143. if (mb_strpos($componentPage, "user_content_search") === false)
  144. $url = CComponentEngine::MakePathFromTemplate(htmlspecialcharsbx($arResult["PATH_TO_GROUP_CONTENT_SEARCH"]), array("group_id" => $arResult["VARIABLES"]["group_id"]));
  145. else
  146. $url = CComponentEngine::MakePathFromTemplate(htmlspecialcharsbx($arResult["PATH_TO_USER_CONTENT_SEARCH"]), array("user_id" => $arResult["VARIABLES"]["user_id"]));
  147. $APPLICATION->AddChainItem($strFeatureTitle, $url);
  148. ?>