PageRenderTime 41ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 1ms

/components/bitrix/socialnetwork.group_ban/component.php

https://gitlab.com/alexprowars/bitrix
PHP | 197 lines | 164 code | 28 blank | 5 comment | 49 complexity | 2d381204f73c508cf61c68c62c89e790 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 CUser $USER */
  10. /** @global CMain $APPLICATION */
  11. use Bitrix\Socialnetwork\ComponentHelper;
  12. if (!CModule::IncludeModule("socialnetwork"))
  13. {
  14. ShowError(GetMessage("SONET_MODULE_NOT_INSTALL"));
  15. return;
  16. }
  17. $arParams["GROUP_ID"] = intval($arParams["GROUP_ID"]);
  18. $arParams["SET_NAV_CHAIN"] = ($arParams["SET_NAV_CHAIN"] === "N" ? "N" : "Y");
  19. if ($arParams["USER_VAR"] == '')
  20. $arParams["USER_VAR"] = "user_id";
  21. if ($arParams["GROUP_VAR"] == '')
  22. $arParams["GROUP_VAR"] = "group_id";
  23. if ($arParams["PAGE_VAR"] == '')
  24. $arParams["PAGE_VAR"] = "page";
  25. $arParams["PATH_TO_USER"] = trim($arParams["PATH_TO_USER"]);
  26. if ($arParams["PATH_TO_USER"] == '')
  27. $arParams["PATH_TO_USER"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#");
  28. $arParams["PATH_TO_GROUP"] = trim($arParams["PATH_TO_GROUP"]);
  29. if ($arParams["PATH_TO_GROUP"] == '')
  30. $arParams["PATH_TO_GROUP"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=group&".$arParams["GROUP_VAR"]."=#group_id#");
  31. $arParams["PATH_TO_GROUP_MODS"] = trim($arParams["PATH_TO_GROUP_MODS"]);
  32. if($arParams["PATH_TO_GROUP_MODS"] == '')
  33. $arParams["PATH_TO_GROUP_MODS"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=group_mods&".$arParams["GROUP_VAR"]."=#group_id#");
  34. $arParams["PATH_TO_GROUP_USERS"] = trim($arParams["PATH_TO_GROUP_USERS"]);
  35. if($arParams["PATH_TO_GROUP_USERS"] == '')
  36. $arParams["PATH_TO_GROUP_USERS"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=group_users&".$arParams["GROUP_VAR"]."=#group_id#");
  37. $arParams["ITEMS_COUNT"] = intval($arParams["ITEMS_COUNT"]);
  38. if ($arParams["ITEMS_COUNT"] <= 0)
  39. $arParams["ITEMS_COUNT"] = 30;
  40. $tooltipParams = ComponentHelper::checkTooltipComponentParams($arParams);
  41. $arParams['SHOW_FIELDS_TOOLTIP'] = $tooltipParams['SHOW_FIELDS_TOOLTIP'];
  42. $arParams['USER_PROPERTY_TOOLTIP'] = $tooltipParams['USER_PROPERTY_TOOLTIP'];
  43. $arGroup = CSocNetGroup::GetByID($arParams["GROUP_ID"]);
  44. if (
  45. !$arGroup
  46. || !is_array($arGroup)
  47. || $arGroup["ACTIVE"] !== "Y"
  48. )
  49. $arResult["FatalError"] = GetMessage("SONET_P_USER_NO_GROUP");
  50. else
  51. {
  52. $arGroupSites = array();
  53. $rsGroupSite = CSocNetGroup::GetSite($arGroup["ID"]);
  54. while ($arGroupSite = $rsGroupSite->Fetch())
  55. $arGroupSites[] = $arGroupSite["LID"];
  56. if (!in_array(SITE_ID, $arGroupSites))
  57. $arResult["FatalError"] = GetMessage("SONET_P_USER_NO_GROUP");
  58. else
  59. {
  60. $arResult["Group"] = $arGroup;
  61. $arResult['CurrentUserPerms'] = \Bitrix\Socialnetwork\Helper\Workgroup::getPermissions([
  62. 'groupId' => $arGroup['ID'],
  63. ]);
  64. if (!$arResult["CurrentUserPerms"] || !$arResult["CurrentUserPerms"]["UserCanViewGroup"])
  65. $arResult["FatalError"] = GetMessage("SONET_C7_NO_PERMS").".";
  66. elseif (!$arResult["CurrentUserPerms"]["UserCanModerateGroup"])
  67. $arResult["FatalError"] = GetMessage("SONET_C7_NO_PMOD").".";
  68. else
  69. {
  70. $arNavParams = array("nPageSize" => $arParams["ITEMS_COUNT"], "bDescPageNumbering" => false);
  71. $arNavigation = CDBResult::GetNavParams($arNavParams);
  72. $arResult["Urls"]["Group"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arResult["Group"]["ID"]));
  73. $arResult["Urls"]["GroupMods"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_MODS"], array("group_id" => $arResult["Group"]["ID"]));
  74. $arResult["Urls"]["GroupUsers"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_USERS"], array("group_id" => $arResult["Group"]["ID"]));
  75. if ($arParams["SET_TITLE"] === "Y")
  76. $APPLICATION->SetTitle($arResult["Group"]["NAME"].": ".GetMessage("SONET_C7_TITLE"));
  77. if ($arParams["SET_NAV_CHAIN"] !== "N")
  78. {
  79. $APPLICATION->AddChainItem($arResult["Group"]["NAME"], $arResult["Urls"]["Group"]);
  80. $APPLICATION->AddChainItem(GetMessage("SONET_C7_TITLE"));
  81. }
  82. if ($_SERVER["REQUEST_METHOD"] === "POST" && $arResult["CurrentUserPerms"]["UserCanModerateGroup"]
  83. && ($_POST["save"] <> '') && check_bitrix_sessid())
  84. {
  85. $errorMessage = "";
  86. $arIDs = array();
  87. if ($errorMessage == '')
  88. {
  89. for ($i = 0; $i <= intval($_POST["max_count"]); $i++)
  90. {
  91. if ($_POST["checked_".$i] === "Y")
  92. $arIDs[] = intval($_POST["id_".$i]);
  93. }
  94. if (count($arIDs) <= 0)
  95. $errorMessage .= GetMessage("SONET_C7_ERR_SELECT").".";
  96. }
  97. if ($errorMessage == '')
  98. {
  99. if (!CSocNetUserToGroup::UnBanMember($GLOBALS["USER"]->GetID(), $arResult["Group"]["ID"], $arIDs, CSocNetUser::IsCurrentUserModuleAdmin()))
  100. {
  101. if ($e = $APPLICATION->GetException())
  102. $errorMessage .= $e->GetString();
  103. }
  104. }
  105. if ($errorMessage <> '')
  106. $arResult["ErrorMessage"] = $errorMessage;
  107. }
  108. $arResult["Users"] = false;
  109. $dbRequests = CSocNetUserToGroup::GetList(
  110. array("USER_LAST_NAME" => "ASC", "USER_NAME" => "ASC"),
  111. array(
  112. "GROUP_ID" => $arResult["Group"]["ID"],
  113. "ROLE" => SONET_ROLES_BAN
  114. ),
  115. false,
  116. $arNavParams,
  117. array("ID", "USER_ID", "ROLE", "DATE_CREATE", "DATE_UPDATE", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "USER_PERSONAL_PHOTO", "USER_PERSONAL_GENDER")
  118. );
  119. if ($dbRequests)
  120. {
  121. $arResult["Users"] = array();
  122. $arResult["Users"]["List"] = false;
  123. while ($arRequests = $dbRequests->GetNext())
  124. {
  125. if ($arResult["Users"]["List"] == false)
  126. $arResult["Users"]["List"] = array();
  127. $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arRequests["USER_ID"]));
  128. $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arRequests["USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
  129. if (intval($arParams["THUMBNAIL_LIST_SIZE"]) > 0)
  130. {
  131. if (intval($arRequests["USER_PERSONAL_PHOTO"]) <= 0)
  132. {
  133. switch ($arRequests["USER_PERSONAL_GENDER"])
  134. {
  135. case "M":
  136. $suffix = "male";
  137. break;
  138. case "F":
  139. $suffix = "female";
  140. break;
  141. default:
  142. $suffix = "unknown";
  143. }
  144. $arRequests["USER_PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_".$suffix, false, SITE_ID);
  145. }
  146. $arImage = CSocNetTools::InitImage($arRequests["USER_PERSONAL_PHOTO"], $arParams["THUMBNAIL_LIST_SIZE"], "/bitrix/images/socialnetwork/nopic_30x30.gif", 30, $pu, $canViewProfile);
  147. }
  148. else // old
  149. $arImage = CSocNetTools::InitImage($arRequests["USER_PERSONAL_PHOTO"], 150, "/bitrix/images/socialnetwork/nopic_user_150.gif", 150, $pu, $canViewProfile);
  150. $arResult["Users"]["List"][] = array(
  151. "ID" => $arRequests["ID"],
  152. "USER_ID" => $arRequests["USER_ID"],
  153. "USER_NAME" => $arRequests["USER_NAME"],
  154. "USER_LAST_NAME" => $arRequests["USER_LAST_NAME"],
  155. "USER_SECOND_NAME" => $arRequests["USER_SECOND_NAME"],
  156. "USER_LOGIN" => $arRequests["USER_LOGIN"],
  157. "USER_PERSONAL_PHOTO" => $arRequests["USER_PERSONAL_PHOTO"],
  158. "USER_PERSONAL_PHOTO_FILE" => $arImage["FILE"],
  159. "USER_PERSONAL_PHOTO_IMG" => $arImage["IMG"],
  160. "USER_PROFILE_URL" => $pu,
  161. "SHOW_PROFILE_LINK" => $canViewProfile,
  162. );
  163. }
  164. $arResult["NAV_STRING"] = $dbRequests->GetPageNavStringEx($navComponentObject, GetMessage("SONET_C7_NAV"), "", false);
  165. }
  166. }
  167. }
  168. }
  169. $this->IncludeComponentTemplate();