PageRenderTime 48ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/components/bitrix/socialnetwork.reindex/component.php

https://gitlab.com/alexprowars/bitrix
PHP | 343 lines | 294 code | 40 blank | 9 comment | 96 complexity | 071df26d014a0d22b5961210641b788c MD5 | raw file
  1. <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
  2. /** @var CBitrixComponent $this */
  3. /** @var array $arParams */
  4. /** @var array $arResult */
  5. /** @var string $componentPath */
  6. /** @var string $componentName */
  7. /** @var string $componentTemplate */
  8. /** @global CDatabase $DB */
  9. /** @global CUser $USER */
  10. /** @global CMain $APPLICATION */
  11. if(!$USER->IsAdmin() || !CModule::IncludeModule('socialnetwork'))
  12. {
  13. echo GetMessage("CC_BSR_WRONG_RIGHTS");
  14. return;
  15. }
  16. $arWarnings = array();
  17. $arSteps = array(
  18. "init" => GetMessage("CC_BSR_STEP_INIT"),
  19. "groups" => GetMessage("CC_BSR_STEP_GROUPS"),
  20. );
  21. if(mb_strlen($arParams["PATH_TO_GROUP_BLOG"]) && mb_strlen($arParams["PATH_TO_GROUP_BLOG_POST"]))
  22. $arSteps["group_blogs"] = GetMessage("CC_BSR_STEP_GROUPS_BLOGS");
  23. if($arParams["PATH_TO_USER_BLOG"] <> '' && $arParams["PATH_TO_USER_BLOG_POST"] <> '')
  24. $arSteps["user_blogs"] = GetMessage("CC_BSR_STEP_USERS_BLOGS");
  25. if(intval($arParams["FORUM_ID"]) && CModule::IncludeModule('forum'))
  26. {
  27. $arForum = CForumNew::GetByID($arParams["FORUM_ID"]);
  28. if ($arForum === false)
  29. $arWarnings[] = GetMessage("CC_BSR_WARN_FORUM_NOT_FOUND", array("#FORUM_ID#" => htmlspecialcharsbx($arParams["FORUM_ID"])));
  30. else if($arForum["INDEXATION"]!=="Y")
  31. $arWarnings[] = GetMessage("CC_BSR_WARN_FORUM", array("#href#" => htmlspecialcharsbx(BX_ROOT."/admin/forum_edit.php?lang=".LANGUAGE_ID."&ID=".intval($arForum["ID"]))));
  32. if($arParams["PATH_TO_GROUP_FORUM_MESSAGE"] <> '')
  33. {
  34. $arSteps["group_forums"] = GetMessage("CC_BSR_STEP_GROUPS_FORUMS");
  35. }
  36. if($arParams["PATH_TO_USER_FORUM_MESSAGE"] <> '')
  37. {
  38. $arSteps["user_forums"] = GetMessage("CC_BSR_STEP_USERS_FORUMS");
  39. }
  40. }
  41. else
  42. $arWarnings[] = GetMessage("CC_BSR_WARN_FORUM_NOT_SET");
  43. if(intval($arParams["PHOTO_GROUP_IBLOCK_ID"]) && CModule::IncludeModule('iblock'))
  44. {
  45. $arIBlock = CIBlock::GetArrayByID($arParams["PHOTO_GROUP_IBLOCK_ID"]);
  46. if($arIBlock["INDEX_ELEMENT"]==="Y" || $arIBlock["INDEX_SECTION"]==="Y")
  47. $arWarnings[] = GetMessage("CC_BSR_WARN_PHOTO_GROUP_IBLOCK", array("#href#" => htmlspecialcharsbx(BX_ROOT."/admin/iblock_edit.php?type=".urlencode($arIBlock["IBLOCK_TYPE_ID"])."&lang=".LANGUAGE_ID."&ID=".urlencode($arIBlock["ID"])."&admin=Y&return_url=".urlencode($APPLICATION->GetCurPageParam()))));
  48. if($arParams["PATH_TO_GROUP_PHOTO_ELEMENT"] <> '')
  49. {
  50. $arSteps["group_photos"] = GetMessage("CC_BSR_STEP_GROUPS_PHOTOS");
  51. }
  52. }
  53. if(intval($arParams["PHOTO_USER_IBLOCK_ID"]) && CModule::IncludeModule('iblock'))
  54. {
  55. $arIBlock = CIBlock::GetArrayByID($arParams["PHOTO_USER_IBLOCK_ID"]);
  56. if($arIBlock["INDEX_ELEMENT"]==="Y" || $arIBlock["INDEX_SECTION"]==="Y")
  57. $arWarnings[] = GetMessage("CC_BSR_WARN_PHOTO_USER_IBLOCK", array("#href#" => htmlspecialcharsbx(BX_ROOT."/admin/iblock_edit.php?type=".urlencode($arIBlock["IBLOCK_TYPE_ID"])."&lang=".LANGUAGE_ID."&ID=".urlencode($arIBlock["ID"])."&admin=Y&return_url=".urlencode($APPLICATION->GetCurPageParam()))));
  58. if($arParams["PATH_TO_USER_PHOTO_ELEMENT"] <> '')
  59. {
  60. $arSteps["user_photos"] = GetMessage("CC_BSR_STEP_USERS_PHOTOS");
  61. }
  62. }
  63. if(array_key_exists("group_photos", $arSteps) || array_key_exists("user_photos", $arSteps))
  64. {
  65. if(intval($arParams["PHOTO_FORUM_ID"]) && CModule::IncludeModule('forum'))
  66. {
  67. $arForum = CForumNew::GetByID($arParams["PHOTO_FORUM_ID"]);
  68. if ($arForum === false)
  69. $arWarnings[] = GetMessage("CC_BSR_WARN_PHOTO_FORUM_NOT_FOUND", array("#FORUM_ID#" => htmlspecialcharsbx($arParams["PHOTO_FORUM_ID"])));
  70. else if($arForum["INDEXATION"]!=="Y")
  71. $arWarnings[] = GetMessage("CC_BSR_WARN_PHOTO_FORUM", array("#href#" => htmlspecialcharsbx(BX_ROOT."/admin/forum_edit.php?lang=".LANGUAGE_ID."&ID=".intval($arForum["ID"]))));
  72. }
  73. else if ($arParams["PHOTO_USE_COMMENTS"] != "N")
  74. $arWarnings[] = GetMessage("CC_BSR_WARN_PHOTO_FORUM_NOT_SET");
  75. }
  76. if(intval($arParams["CALENDAR_GROUP_IBLOCK_ID"]) && CModule::IncludeModule('iblock'))
  77. {
  78. $arIBlock = CIBlock::GetArrayByID($arParams["CALENDAR_GROUP_IBLOCK_ID"]);
  79. if($arIBlock["INDEX_ELEMENT"]==="Y" || $arIBlock["INDEX_SECTION"]==="Y")
  80. $arWarnings[] = GetMessage("CC_BSR_WARN_CALENDAR_GROUP_IBLOCK", array("#href#" => htmlspecialcharsbx(BX_ROOT."/admin/iblock_edit.php?type=".urlencode($arIBlock["IBLOCK_TYPE_ID"])."&lang=".LANGUAGE_ID."&ID=".urlencode($arIBlock["ID"])."&admin=Y&return_url=".urlencode($APPLICATION->GetCurPageParam()))));
  81. if($arParams["PATH_TO_GROUP_CALENDAR_ELEMENT"] <> '')
  82. {
  83. $arSteps["group_calendars"] = GetMessage("CC_BSR_STEP_GROUPS_CALENDARS");
  84. }
  85. }
  86. if (\Bitrix\Main\ModuleManager::isModuleInstalled('tasks'))
  87. {
  88. if(intval($arParams["TASK_FORUM_ID"]) && CModule::IncludeModule('forum'))
  89. {
  90. $arForum = CForumNew::GetByID($arParams["TASK_FORUM_ID"]);
  91. if ($arForum === false)
  92. {
  93. $arWarnings[] = GetMessage("CC_BSR_WARN_TASK_FORUM_NOT_FOUND", array("#FORUM_ID#" => htmlspecialcharsbx($arParams["TASK_FORUM_ID"])));
  94. }
  95. else if($arForum["INDEXATION"]!=="Y")
  96. {
  97. $arWarnings[] = GetMessage("CC_BSR_WARN_TASK_FORUM", array("#href#" => htmlspecialcharsbx(BX_ROOT."/admin/forum_edit.php?lang=".LANGUAGE_ID."&ID=".intval($arForum["ID"]))));
  98. }
  99. }
  100. else
  101. {
  102. $arWarnings[] = GetMessage("CC_BSR_WARN_TASK_FORUM_NOT_SET");
  103. }
  104. }
  105. if(intval($arParams["FILES_GROUP_IBLOCK_ID"]) && CModule::IncludeModule('iblock'))
  106. {
  107. $arIBlock = CIBlock::GetArrayByID($arParams["FILES_GROUP_IBLOCK_ID"]);
  108. if($arIBlock["INDEX_ELEMENT"]==="Y" || $arIBlock["INDEX_SECTION"]==="Y")
  109. $arWarnings[] = GetMessage("CC_BSR_WARN_FILE_GROUP_IBLOCK", array("#href#" => htmlspecialcharsbx(BX_ROOT."/admin/iblock_edit.php?type=".urlencode($arIBlock["IBLOCK_TYPE_ID"])."&lang=".LANGUAGE_ID."&ID=".urlencode($arIBlock["ID"])."&admin=Y&return_url=".urlencode($APPLICATION->GetCurPageParam()))));
  110. if($arParams["PATH_TO_GROUP_FILES_ELEMENT"] <> '')
  111. {
  112. $arSteps["group_files"] = GetMessage("CC_BSR_STEP_GROUPS_FILES");
  113. }
  114. }
  115. if (
  116. is_array($arParams["TYPE"])
  117. && in_array("groups", $arParams["TYPE"])
  118. && CModule::IncludeModule('iblock')
  119. && CModule::IncludeModule("wiki")
  120. )
  121. {
  122. $arIBlock = CIBlock::GetArrayByID(COption::GetOptionInt("wiki", "socnet_iblock_id"));
  123. if($arIBlock["INDEX_ELEMENT"]==="Y" || $arIBlock["INDEX_SECTION"]==="Y")
  124. $arWarnings[] = GetMessage("CC_BSR_WARN_WIKI_GROUP_IBLOCK", array("#href#" => htmlspecialcharsbx(BX_ROOT."/admin/iblock_edit.php?type=".urlencode($arIBlock["IBLOCK_TYPE_ID"])."&lang=".LANGUAGE_ID."&ID=".urlencode($arIBlock["ID"])."&admin=Y&return_url=".urlencode($APPLICATION->GetCurPageParam()))));
  125. $arSteps["group_wiki"] = GetMessage("CC_BSR_STEP_GROUPS_WIKI");
  126. }
  127. if(intval($arParams["FILES_USER_IBLOCK_ID"]) && CModule::IncludeModule('iblock'))
  128. {
  129. $arIBlock = CIBlock::GetArrayByID($arParams["FILES_USER_IBLOCK_ID"]);
  130. if($arIBlock["INDEX_ELEMENT"]==="Y" || $arIBlock["INDEX_SECTION"]==="Y")
  131. $arWarnings[] = GetMessage("CC_BSR_WARN_FILE_USER_IBLOCK", array("#href#" => htmlspecialcharsbx(BX_ROOT."/admin/iblock_edit.php?type=".urlencode($arIBlock["IBLOCK_TYPE_ID"])."&lang=".LANGUAGE_ID."&ID=".urlencode($arIBlock["ID"])."&admin=Y&return_url=".urlencode($APPLICATION->GetCurPageParam()))));
  132. if($arParams["PATH_TO_USER_FILES_ELEMENT"] <> '')
  133. {
  134. $arSteps["user_files"] = GetMessage("CC_BSR_STEP_USERS_FILES");
  135. }
  136. }
  137. if(array_key_exists("group_files", $arSteps) || array_key_exists("user_files", $arSteps))
  138. {
  139. if(intval($arParams["FILES_FORUM_ID"]) && CModule::IncludeModule('forum'))
  140. {
  141. $arForum = CForumNew::GetByID($arParams["FILES_FORUM_ID"]);
  142. if ($arForum === false)
  143. $arWarnings[] = GetMessage("CC_BSR_WARN_FILES_FORUM_NOT_FOUND", array("#FORUM_ID#" => htmlspecialcharsbx($arParams["FILES_FORUM_ID"])));
  144. else if($arForum["INDEXATION"]!=="Y")
  145. $arWarnings[] = GetMessage("CC_BSR_WARN_FILES_FORUM", array("#href#" => htmlspecialcharsbx(BX_ROOT."/admin/forum_edit.php?lang=".LANGUAGE_ID."&ID=".intval($arForum["ID"]))));
  146. }
  147. else if ($arParams["FILES_USE_COMMENTS"] != "N")
  148. $arWarnings[] = GetMessage("CC_BSR_WARN_FILES_FORUM_NOT_SET");
  149. }
  150. if(count($arWarnings) > 0)
  151. $arWarnings[] = GetMessage("CC_BSR_WARN_REINDEX", array("#href#" => htmlspecialcharsbx(BX_ROOT."/admin/search_reindex.php?lang=".LANGUAGE_ID)));
  152. $arForums = array();
  153. $FORUM_ID = intval($arParams["FORUM_ID"]);
  154. if($FORUM_ID > 0)
  155. $arForums[$FORUM_ID] = true;
  156. $PHOTO_FORUM_ID = intval($arParams["PHOTO_FORUM_ID"]);
  157. if($PHOTO_FORUM_ID > 0)
  158. {
  159. if(isset($arForums[$PHOTO_FORUM_ID]))
  160. $arWarnings[] = GetMessage("CC_BSR_WARN_DIST_PHOTO_FORUM");
  161. $arForums[$PHOTO_FORUM_ID] = true;
  162. }
  163. $TASK_FORUM_ID = intval($arParams["TASK_FORUM_ID"]);
  164. if($TASK_FORUM_ID > 0)
  165. {
  166. if(isset($arForums[$TASK_FORUM_ID]))
  167. $arWarnings[] = GetMessage("CC_BSR_WARN_DIST_TASK_FORUM");
  168. $arForums[$TASK_FORUM_ID] = true;
  169. }
  170. $FILES_FORUM_ID = intval($arParams["FILES_FORUM_ID"]);
  171. if($FILES_FORUM_ID > 0)
  172. {
  173. if(isset($arForums[$FILES_FORUM_ID]))
  174. $arWarnings[] = GetMessage("CC_BSR_WARN_DIST_FILES_FORUM");
  175. $arForums[$FILES_FORUM_ID] = true;
  176. }
  177. $arSteps["delete_old"] = GetMessage("CC_BSR_STEP_FINISH");
  178. if($_GET["index"] == "y" && check_bitrix_sessid())
  179. {
  180. $APPLICATION->RestartBuffer();
  181. @set_time_limit(0);
  182. if(array_key_exists($_GET["step"], $arSteps))
  183. $step = $_GET["step"];
  184. else
  185. $step = "init";
  186. if(preg_match('/^[a-zA-Z]\d+$/', $_GET["last_id"]))
  187. $last_id = $_GET["last_id"];
  188. else
  189. $last_id = intval($_GET["last_id"]);
  190. $obSearchReindex = new CSocNetSearchReindex(intval($arParams["USER_ID"]), intval($arParams["GROUP_ID"]), $arParams);
  191. if($step == "init")
  192. $obSearchReindex->InitSession($arParams["TYPE"]);
  193. $arResult = $obSearchReindex->StepIndex(array_keys($arSteps), $step, $last_id, 10);
  194. $cnt = intval($_GET["cnt"]) + $obSearchReindex->GetCounter();
  195. if($arResult["step"] == "end"):
  196. ?><script>
  197. HighlightItem('');
  198. run = false;
  199. document.getElementById("btn_start").disabled = false;
  200. document.getElementById("btn_pause").disabled = true;
  201. document.getElementById("btn_continue").disabled = true;
  202. </script>
  203. <?echo GetMessage("CC_BSR_MESS_DONE");
  204. else:
  205. ?><script>
  206. var url = url_template.replace(/#step#/, '<?echo $arResult["step"]?>');
  207. url = url.replace(/#last_id#/, '<?echo $arResult["last_id"]?>');
  208. url = url.replace(/#cnt#/, '<?echo $cnt?>');
  209. if(run)
  210. {
  211. HighlightItem('<?echo $arResult["step"]?>');
  212. BX.ajax.insertToNode(url, 'reindex_result');
  213. }
  214. else
  215. {
  216. continue_url = url;
  217. continue_item = '<?echo $arResult["step"]?>';
  218. }
  219. </script>
  220. <?echo GetMessage("CC_BSR_MESS_PROGRESS", array("#cnt#" => $cnt));
  221. endif;
  222. echo $APPLICATION->EndBufferContentMan();
  223. die();
  224. }
  225. $APPLICATION->SetTitle(GetMessage("CC_BSR_TITLE"));
  226. if(count($arWarnings) > 0)
  227. {
  228. echo "<ul class=\"errortext\">";
  229. foreach($arWarnings as $strWarning)
  230. echo "<li>",$strWarning,"</li>\n";
  231. echo "</ul>";
  232. }
  233. CUtil::InitJSCore(array('ajax'));
  234. ?>
  235. <div id="reindex_result">
  236. </div>
  237. <ul>
  238. <?foreach($arSteps as $id => $label):?>
  239. <li id="<?echo $id?>"><?echo $label?></li>
  240. <?endforeach?>
  241. </ul>
  242. <script>
  243. var run = false;
  244. var steps = <?echo CUtil::PhpToJSObject($arSteps);?>;
  245. var url_template = <?echo CUtil::PhpToJSObject($APPLICATION->GetCurPageParam(bitrix_sessid_get()."&index=y&step=#step#&last_id=#last_id#&cnt=#cnt#", array("step", "last_id", "cnt", "sessid", "index")));?>;
  246. var continue_url = '';
  247. var continue_item = '';
  248. function HighlightItem(id)
  249. {
  250. for(var x in steps)
  251. {
  252. var el = document.getElementById(x);
  253. if(el)
  254. {
  255. if(x == id)
  256. el.innerHTML = '<b>'+steps[x]+'</b>';
  257. else
  258. el.innerHTML = steps[x];
  259. }
  260. }
  261. }
  262. function StartIndex()
  263. {
  264. document.getElementById("btn_start").disabled = true;
  265. document.getElementById("btn_pause").disabled = false;
  266. document.getElementById("btn_continue").disabled = true;
  267. run = true;
  268. continue_url = '';
  269. document.getElementById('reindex_result').innerHTML = '';
  270. HighlightItem('init');
  271. var url = url_template.replace(/#step#/, '');
  272. url = url.replace(/#last_id#/, '0');
  273. url = url.replace(/#cnt#/, '0');
  274. BX.ajax.insertToNode(url, 'reindex_result');
  275. }
  276. function PauseIndex()
  277. {
  278. document.getElementById("btn_start").disabled = false;
  279. document.getElementById("btn_pause").disabled = true;
  280. document.getElementById("btn_continue").disabled = false;
  281. run = false;
  282. }
  283. function ContinueIndex()
  284. {
  285. document.getElementById("btn_start").disabled = true;
  286. document.getElementById("btn_pause").disabled = false;
  287. document.getElementById("btn_continue").disabled = true;
  288. if(continue_url != '')
  289. {
  290. run = true;
  291. HighlightItem(continue_item);
  292. BX.ajax.insertToNode(continue_url, 'reindex_result');
  293. }
  294. }
  295. </script>
  296. <form method="get">
  297. <input type="button" id="btn_start" value="<?echo GetMessage("CC_BSR_BTN_START")?>" <?if(count($arWarnings)) echo "disabled=\"disabled\"";?> OnClick="StartIndex()">
  298. <input type="button" id="btn_pause" value="<?echo GetMessage("CC_BSR_BTN_PAUSE")?>" disabled="disabled" OnClick="PauseIndex()">
  299. <input type="button" id="btn_continue" value="<?echo GetMessage("CC_BSR_BTN_CONTINUE")?>" disabled="disabled" OnClick="ContinueIndex()">
  300. </form>
  301. <?
  302. $this->IncludeComponentTemplate();
  303. ?>