PageRenderTime 36ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/components/bitrix/socialnetwork.messages_input/component.php

https://gitlab.com/alexprowars/bitrix
PHP | 255 lines | 210 code | 39 blank | 6 comment | 70 complexity | 780736bb9e5471df2bd00b97bbdad354 MD5 | raw file
  1. <?php
  2. if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
  3. {
  4. die();
  5. }
  6. /** @var CBitrixComponent $this */
  7. /** @var array $arParams */
  8. /** @var array $arResult */
  9. /** @global CMain $APPLICATION */
  10. use Bitrix\Socialnetwork\ComponentHelper;
  11. if (!CModule::IncludeModule("socialnetwork"))
  12. {
  13. ShowError(GetMessage("SONET_MODULE_NOT_INSTALL"));
  14. return;
  15. }
  16. $arParams["USER_ID"] = intval($arParams["USER_ID"]);
  17. $arParams["SET_NAV_CHAIN"] = ($arParams["SET_NAV_CHAIN"] === "N" ? "N" : "Y");
  18. if ($arParams["USER_VAR"] == '')
  19. $arParams["USER_VAR"] = "user_id";
  20. if ($arParams["PAGE_VAR"] == '')
  21. $arParams["PAGE_VAR"] = "page";
  22. if ($arParams["MESSAGE_VAR"] == '')
  23. $arParams["MESSAGE_VAR"] = "message_id";
  24. $arParams["PATH_TO_USER"] = trim($arParams["PATH_TO_USER"]);
  25. if ($arParams["PATH_TO_USER"] == '')
  26. $arParams["PATH_TO_USER"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#");
  27. $arParams["PATH_TO_MESSAGE_FORM"] = trim($arParams["PATH_TO_MESSAGE_FORM"]);
  28. if ($arParams["PATH_TO_MESSAGE_FORM"] == '')
  29. $arParams["PATH_TO_MESSAGE_FORM"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=message_form&".$arParams["USER_VAR"]."=#user_id#");
  30. $arParams["PATH_TO_MESSAGE_FORM_MESS"] = trim($arParams["PATH_TO_MESSAGE_FORM_MESS"]);
  31. if ($arParams["PATH_TO_MESSAGE_FORM_MESS"] == '')
  32. $arParams["PATH_TO_MESSAGE_FORM_MESS"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=messages_chat&".$arParams["USER_VAR"]."=#user_id#&".$arParams["MESSAGE_VAR"]."=#message_id#");
  33. $arParams["PATH_TO_MESSAGES_INPUT"] = trim($arParams["PATH_TO_MESSAGES_INPUT"]);
  34. if ($arParams["PATH_TO_MESSAGES_INPUT"] == '')
  35. $arParams["PATH_TO_MESSAGES_INPUT"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=messages_input");
  36. $arParams["PATH_TO_MESSAGES_INPUT_USER"] = trim($arParams["PATH_TO_MESSAGES_INPUT_USER"]);
  37. if ($arParams["PATH_TO_MESSAGES_INPUT_USER"] == '')
  38. $arParams["PATH_TO_MESSAGES_INPUT_USER"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=messages_input_user&".$arParams["USER_VAR"]."=#user_id#");
  39. $arParams["ITEMS_COUNT"] = intval($arParams["ITEMS_COUNT"]);
  40. if ($arParams["ITEMS_COUNT"] <= 0)
  41. $arParams["ITEMS_COUNT"] = 30;
  42. $arParams["PATH_TO_SMILE"] = trim($arParams["PATH_TO_SMILE"]);
  43. $tooltipParams = ComponentHelper::checkTooltipComponentParams($arParams);
  44. $arParams['SHOW_FIELDS_TOOLTIP'] = $tooltipParams['SHOW_FIELDS_TOOLTIP'];
  45. $arParams['USER_PROPERTY_TOOLTIP'] = $tooltipParams['USER_PROPERTY_TOOLTIP'];
  46. if (!$GLOBALS["USER"]->IsAuthorized())
  47. {
  48. $arResult["NEED_AUTH"] = "Y";
  49. }
  50. else
  51. {
  52. $arNavParams = array("nPageSize" => $arParams["ITEMS_COUNT"], "bDescPageNumbering" => true, "bShowAll" => false);
  53. $arNavigation = CDBResult::GetNavParams($arNavParams);
  54. /*********************** ACTIONS *******************************/
  55. if ($_REQUEST["action"] === "close" && check_bitrix_sessid() && intval($_REQUEST["eventID"]) > 0)
  56. {
  57. $errorMessage = "";
  58. if (!CSocNetMessages::MarkMessageRead($GLOBALS["USER"]->GetID(), intval($_REQUEST["eventID"])))
  59. {
  60. if ($e = $APPLICATION->GetException())
  61. $errorMessage .= $e->GetString();
  62. }
  63. if ($errorMessage <> '')
  64. $arResult["ErrorMessage"] = $errorMessage;
  65. }
  66. if ($_REQUEST["action"] === "delete" && check_bitrix_sessid() && intval($_REQUEST["eventID"]) > 0)
  67. {
  68. $errorMessage = "";
  69. if (!CSocNetMessages::DeleteMessage(intval($_REQUEST["eventID"]), $GLOBALS["USER"]->GetID()))
  70. {
  71. if ($e = $APPLICATION->GetException())
  72. $errorMessage .= $e->GetString();
  73. }
  74. if ($errorMessage <> '')
  75. $arResult["ErrorMessage"] = $errorMessage;
  76. }
  77. if ($_REQUEST["action"] === "ban" && check_bitrix_sessid() && intval($_REQUEST["userID"]) > 0)
  78. {
  79. $errorMessage = "";
  80. if (!CSocNetUserRelations::BanUser($GLOBALS["USER"]->GetID(), intval($_REQUEST["userID"])))
  81. {
  82. if ($e = $APPLICATION->GetException())
  83. $errorMessage .= $e->GetString();
  84. }
  85. if ($errorMessage <> '')
  86. $arResult["ErrorMessage"] = $errorMessage;
  87. }
  88. if ($_SERVER["REQUEST_METHOD"] === "POST" && ($_POST["do_read"] <> '' || $_POST["do_delete"] <> '') && check_bitrix_sessid())
  89. {
  90. $errorMessage = "";
  91. $arIDs = array();
  92. if ($errorMessage == '')
  93. {
  94. for ($i = 0; $i <= intval($_POST["max_count"]); $i++)
  95. {
  96. if ($_POST["checked_".$i] === "Y")
  97. $arIDs[] = intval($_POST["id_".$i]);
  98. }
  99. if (count($arIDs) <= 0)
  100. $errorMessage .= GetMessage("SONET_C27_NO_SELECTED").". ";
  101. }
  102. if ($errorMessage == '')
  103. {
  104. if ($_POST["do_read"] <> '')
  105. {
  106. if (!CSocNetMessages::MarkMessageReadMultiple($GLOBALS["USER"]->GetID(), $arIDs))
  107. {
  108. if ($e = $APPLICATION->GetException())
  109. $errorMessage .= $e->GetString();
  110. }
  111. }
  112. elseif ($_POST["do_delete"] <> '')
  113. {
  114. if (!CSocNetMessages::DeleteMessageMultiple($GLOBALS["USER"]->GetID(), $arIDs))
  115. {
  116. if ($e = $APPLICATION->GetException())
  117. $errorMessage .= $e->GetString();
  118. }
  119. }
  120. }
  121. if ($errorMessage <> '')
  122. $arResult["ErrorMessage"] = $errorMessage;
  123. }
  124. /********************* END ACTIONS *****************************/
  125. $arResult["Urls"]["ReadAll"] = htmlspecialcharsbx($APPLICATION->GetCurUri("action=close&".bitrix_sessid_get().""));
  126. if ($arParams["SET_TITLE"] === "Y")
  127. $APPLICATION->SetTitle(GetMessage("SONET_C27_PAGE_TITLE"));
  128. if ($arParams["SET_NAV_CHAIN"] !== "N")
  129. $APPLICATION->AddChainItem(GetMessage("SONET_C27_PAGE_TITLE"));
  130. $parser = new CSocNetTextParser(LANGUAGE_ID, $arParams["PATH_TO_SMILE"]);
  131. $arResult["Events"] = false;
  132. $arFilter = array(
  133. "TO_USER_ID" => $GLOBALS["USER"]->GetID(),
  134. "MESSAGE_TYPE" => SONET_MESSAGE_PRIVATE,
  135. "TO_DELETED" => "N",
  136. );
  137. if ($arParams["USER_ID"] > 0 && $arParams["USER_ID"] != $GLOBALS["USER"]->GetID())
  138. $arFilter["FROM_USER_ID"] = $arParams["USER_ID"];
  139. $dbMessages = CSocNetMessages::GetList(
  140. array("DATE_CREATE" => "DESC"),
  141. $arFilter,
  142. false,
  143. $arNavParams,
  144. array("ID", "FROM_USER_ID", "TITLE", "MESSAGE", "DATE_CREATE", "DATE_VIEW", "MESSAGE_TYPE", "FROM_USER_NAME", "FROM_USER_LAST_NAME", "FROM_USER_SECOND_NAME", "FROM_USER_LOGIN_NAME", "FROM_USER_PERSONAL_PHOTO", "FROM_USER_PERSONAL_GENDER")
  145. );
  146. while ($arMessages = $dbMessages->GetNext())
  147. {
  148. if ($arResult["Events"] == false)
  149. $arResult["Events"] = array();
  150. $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arMessages["FROM_USER_ID"]));
  151. $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arMessages["FROM_USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
  152. $canAnsver = (IsModuleInstalled("im") || CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arMessages["FROM_USER_ID"], "message", CSocNetUser::IsCurrentUserModuleAdmin()));
  153. $relation = CSocNetUserRelations::GetRelation($GLOBALS["USER"]->GetID(), $arMessages["FROM_USER_ID"]);
  154. if (intval($arMessages["FROM_USER_PERSONAL_PHOTO"]) <= 0)
  155. {
  156. switch ($arMessages["FROM_USER_PERSONAL_GENDER"])
  157. {
  158. case "M":
  159. $suffix = "male";
  160. break;
  161. case "F":
  162. $suffix = "female";
  163. break;
  164. default:
  165. $suffix = "unknown";
  166. }
  167. $arMessages["FROM_USER_PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_".$suffix, false, SITE_ID);
  168. }
  169. $arImage = CSocNetTools::InitImage($arMessages["FROM_USER_PERSONAL_PHOTO"], 150, "/bitrix/images/socialnetwork/nopic_user_150.gif", 150, $pu, $canViewProfile);
  170. $arResult["Events"][] = array(
  171. "ID" => $arMessages["ID"],
  172. "USER_ID" => $arMessages["FROM_USER_ID"],
  173. "USER_NAME" => $arMessages["FROM_USER_NAME"],
  174. "USER_LAST_NAME" => $arMessages["FROM_USER_LAST_NAME"],
  175. "USER_SECOND_NAME" => $arMessages["FROM_USER_SECOND_NAME"],
  176. "USER_LOGIN" => $arMessages["FROM_USER_LOGIN"],
  177. "USER_PERSONAL_PHOTO" => $arMessages["FROM_USER_PERSONAL_PHOTO"],
  178. "USER_PERSONAL_PHOTO_FILE" => $arImage["FILE"],
  179. "USER_PERSONAL_PHOTO_IMG" => $arImage["IMG"],
  180. "USER_PROFILE_URL" => $pu,
  181. "SHOW_PROFILE_LINK" => $canViewProfile,
  182. "SHOW_ANSWER_LINK" => $canAnsver,
  183. "ANSWER_LINK" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGE_FORM_MESS"], array("user_id" => $arMessages["FROM_USER_ID"], "message_id" => $arMessages["ID"])),
  184. "READ_LINK" => htmlspecialcharsbx($APPLICATION->GetCurUri("eventID=".$arMessages["ID"]."&action=close&".bitrix_sessid_get()."")),
  185. "DELETE_LINK" => htmlspecialcharsbx($APPLICATION->GetCurUri("eventID=".$arMessages["ID"]."&action=delete&".bitrix_sessid_get()."")),
  186. "BAN_LINK" => htmlspecialcharsbx($APPLICATION->GetCurUri("userID=".$arMessages["FROM_USER_ID"]."&action=ban&".bitrix_sessid_get()."")),
  187. "SHOW_BAN_LINK" => ((!$relation || $relation != SONET_RELATIONS_BAN) && !CSocNetUser::IsUserModuleAdmin($arMessages["FROM_USER_ID"])),
  188. "ALL_USER_MESSAGES_LINK" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGES_INPUT_USER"], array("user_id" => $arMessages["FROM_USER_ID"])),
  189. "DATE_CREATE" => $arMessages["DATE_CREATE"],
  190. "IS_READ" => ($arMessages["DATE_VIEW"] <> ''),
  191. "TITLE" => $arMessages["TITLE"],
  192. "MESSAGE" => $parser->convert(
  193. $arMessages["~MESSAGE"],
  194. false,
  195. array(),
  196. array(
  197. "HTML" => "N",
  198. "ANCHOR" => "Y",
  199. "BIU" => "Y",
  200. "IMG" => "Y",
  201. "LIST" => "Y",
  202. "QUOTE" => "Y",
  203. "CODE" => "Y",
  204. "FONT" => "Y",
  205. "SMILES" => "Y",
  206. "UPLOAD" => "N",
  207. "NL2BR" => "N"
  208. )
  209. ),
  210. );
  211. }
  212. $arResult["NAV_STRING"] = $dbMessages->GetPageNavStringEx($navComponentObject, GetMessage("SONET_C27_NAV"), "", false);
  213. $arResult["NAV_CACHED_DATA"] = $navComponentObject->GetTemplateCachedData();
  214. $arResult["NAV_RESULT"] = $dbMessages;
  215. }
  216. $this->IncludeComponentTemplate();