PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/components/bitrix/blog.user/component.php

https://gitlab.com/alexprowars/bitrix
PHP | 289 lines | 257 code | 30 blank | 2 comment | 61 complexity | 3b12cc81a390ce44f7ec2e777c9a1775 MD5 | raw file
  1. <?
  2. use Bitrix\Main\Text\HtmlFilter;
  3. if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
  4. if (!CModule::IncludeModule("blog"))
  5. {
  6. ShowError(GetMessage("BLOG_MODULE_NOT_INSTALL"));
  7. return;
  8. }
  9. $arParams["ID"] = intval($arParams["ID"]);
  10. if(!is_array($arParams["GROUP_ID"]))
  11. $arParams["GROUP_ID"] = array($arParams["GROUP_ID"]);
  12. foreach($arParams["GROUP_ID"] as $k=>$v)
  13. if(intval($v) <= 0)
  14. unset($arParams["GROUP_ID"][$k]);
  15. if($arParams["BLOG_VAR"] == '')
  16. $arParams["BLOG_VAR"] = "blog";
  17. if($arParams["USER_VAR"] == '')
  18. $arParams["USER_VAR"] = "id";
  19. if($arParams["PAGE_VAR"] == '')
  20. $arParams["PAGE_VAR"] = "page";
  21. $arParams["PATH_TO_BLOG"] = trim($arParams["PATH_TO_BLOG"]);
  22. if($arParams["PATH_TO_BLOG"] == '')
  23. $arParams["PATH_TO_BLOG"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=blog&".$arParams["BLOG_VAR"]."=#blog#");
  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. if($arParams["PATH_TO_USER_EDIT"] == '')
  28. $arParams["PATH_TO_USER_EDIT"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#&mode=edit");
  29. $arParams["PATH_TO_SEARCH"] = trim($arParams["PATH_TO_SEARCH"]);
  30. if($arParams["PATH_TO_SEARCH"] == '')
  31. $arParams["PATH_TO_SEARCH"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=search");
  32. if(mb_strpos($arParams["PATH_TO_SEARCH"], "?") === false)
  33. $arParams["PATH_TO_SEARCH"] .= "?";
  34. else
  35. $arParams["PATH_TO_SEARCH"] .= "&";
  36. $arParams["DATE_TIME_FORMAT"] = trim(empty($arParams["DATE_TIME_FORMAT"]) ? $DB->DateFormatToPHP(CSite::GetDateFormat("FULL")) : $arParams["DATE_TIME_FORMAT"]);
  37. $arResult["urlToCancel"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arParams["ID"]));
  38. $dbUser = CUser::GetByID($arParams["ID"]);
  39. $arResult["arUser"] = $dbUser->GetNext();
  40. $arResult["bEdit"] = ($_REQUEST['mode']=='edit' && ($USER->GetID()==$arParams["ID"] || $USER->IsAdmin())) ? "Y" : "N";
  41. if($arParams["ID"] == ($USER->GetID()) || $USER->IsAdmin())
  42. $arResult["urlToEdit"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_EDIT"], array("user_id" => $arParams["ID"]));
  43. if(!is_array($arResult["arUser"]))
  44. {
  45. $arResult["FATAL_ERROR"] = GetMessage("B_B_USER_NO_USER");
  46. CHTTP::SetStatus("404 Not Found");
  47. }
  48. else
  49. {
  50. $BLOG_USER_ID=intval($_POST["BLOG_USER_ID"]);
  51. if($_SERVER["REQUEST_METHOD"]=="POST" && $_POST["save"] <> '' && check_bitrix_sessid())
  52. {
  53. if(CModule::IncludeModule("blog"))
  54. {
  55. if($BLOG_USER_ID<=0)
  56. {
  57. $BlogUser = CBlogUser::GetByID($arParams["ID"], BLOG_BY_USER_ID);
  58. if(empty($BlogUser))
  59. {
  60. $BLOG_USER_ID=CBlogUser::Add(array(
  61. "USER_ID" => $arParams["ID"],
  62. "=LAST_VISIT" => $DB->GetNowFunction(),
  63. "=DATE_REG" => $DB->GetNowFunction(),
  64. "ALLOW_POST" => "Y",
  65. "PATH" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arParams["ID"])),
  66. ));
  67. $BlogUser = CBlogUser::GetByID($BLOG_USER_ID);
  68. }
  69. else
  70. {
  71. $BLOG_USER_ID = $BlogUser["ID"];
  72. }
  73. }
  74. else
  75. {
  76. $BlogUser = CBlogUser::GetByID($BLOG_USER_ID);
  77. }
  78. $BlogUser = CBlogTools::htmlspecialcharsExArray($BlogUser);
  79. if($BlogUser && ($USER->GetID()==$BlogUser["USER_ID"] || $USER -> IsAdmin()))
  80. {
  81. $arPICTURE = $_FILES["AVATAR"];
  82. $arPICTURE["old_file"] = $BlogUser["AVATAR"];
  83. $arPICTURE["del"] = $_POST["AVATAR_del"];
  84. $arHobbyDB=array();
  85. $arHobby=explode(",", $_POST["INTERESTS"]);
  86. foreach($arHobby as $Hobby)
  87. {
  88. $Hobby=trim($Hobby);
  89. $arHobbyDB[]=$Hobby;
  90. }
  91. $arHobbyDB=array_unique($arHobbyDB);
  92. if(count($arHobbyDB)>0)
  93. $Hobby=implode(", ", $arHobbyDB);
  94. else
  95. $Hobby="";
  96. $arFields = array(
  97. "ALIAS" => $_POST["ALIAS"],
  98. "DESCRIPTION" => $_POST["DESCRIPTION"],
  99. "AVATAR" => $arPICTURE,
  100. "INTERESTS" => $Hobby,
  101. "PATH" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arParams["ID"])),
  102. );
  103. $DB->StartTransaction();
  104. $res = CBlogUser::Update($BLOG_USER_ID, $arFields);
  105. if($res)
  106. {
  107. $arPICTURE = $_FILES["PERSONAL_PHOTO"];
  108. $arPICTURE["old_file"] = $arResult["arUser"]["PERSONAL_PHOTO"];
  109. $arPICTURE["del"] = $_POST["PERSONAL_PHOTO_del"];
  110. $arFields = Array(
  111. "PERSONAL_WWW" => $_POST["PERSONAL_WWW"],
  112. "PERSONAL_GENDER" => $_POST["PERSONAL_GENDER"],
  113. "PERSONAL_BIRTHDAY" => $_POST["PERSONAL_BIRTHDAY"],
  114. "PERSONAL_PHOTO" => $arPICTURE,
  115. );
  116. $GLOBALS["USER_FIELD_MANAGER"]->EditFormAddFields("USER", $arFields);
  117. $res = $USER->Update($BlogUser["USER_ID"], $arFields);
  118. if ($res)
  119. $DB->Commit();
  120. else
  121. {
  122. $DB->Rollback();
  123. $strErrorMessage .= $USER->LAST_ERROR;
  124. }
  125. $arFilter = Array(
  126. "OWNER_ID" => $BlogUser["USER_ID"],
  127. "ACTIVE" => "Y",
  128. "GROUP_SITE_ID" => SITE_ID,
  129. );
  130. if(!empty($arParams["GROUP_ID"]))
  131. $arFilter["GROUP_ID"] = $arParams["GROUP_ID"];
  132. $dbBlog = CBlog::GetList(Array("ID" => "DESC"), $arFilter, false, false, Array("ID", "OWNER_ID", "URL", "SOCNET_GROUP_ID"));
  133. while($arBlog = $dbBlog->Fetch())
  134. {
  135. if (intval($arBlog["SOCNET_GROUP_ID"]) > 0 && CModule::IncludeModule("socialnetwork") && method_exists("CSocNetGroup", "GetSite"))
  136. {
  137. $arSites = array();
  138. $rsGroupSite = CSocNetGroup::GetSite($arBlog["SOCNET_GROUP_ID"]);
  139. while($arGroupSite = $rsGroupSite->Fetch())
  140. $arSites[] = $arGroupSite["LID"];
  141. }
  142. else
  143. $arSites = array(SITE_ID);
  144. foreach ($arSites as $site_id_tmp)
  145. BXClearCache(True, "/".$site_id_tmp."/blog/".$arBlog['URL']);
  146. }
  147. }
  148. else
  149. {
  150. $DB->Rollback();
  151. if($e = $APPLICATION->GetException())
  152. $strErrorMessage .= $e->GetString();
  153. }
  154. }
  155. else
  156. $strErrorMessage.= GetMessage("B_B_PU_NO_RIGHTS")."<br />";
  157. }
  158. if($strErrorMessage == '')
  159. LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arParams["ID"])));
  160. else
  161. $arResult["ERROR_MESSAGE"] = $strErrorMessage;
  162. }
  163. $arResult["BlogUser"] = CBlogUser::GetByID($arParams["ID"], BLOG_BY_USER_ID);
  164. $arResult["BlogUser"] = CBlogTools::htmlspecialcharsExArray($arResult["BlogUser"]);
  165. $arResult["arSex"] = array(
  166. "M"=>GetMessage("B_B_USER_SEX_M"),
  167. "F"=>GetMessage("B_B_USER_SEX_F"),
  168. );
  169. $arResult["userName"] = CBlogUser::GetUserNameEx($arResult["arUser"], $arResult["BlogUser"], $arParams);
  170. $arResult["User"] = $arResult["arUser"];
  171. $arResult["BlogUser"]["LAST_VISIT_FORMATED"] = FormatDate($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($arResult["BlogUser"]["LAST_VISIT"], CSite::GetDateFormat("FULL")));
  172. foreach($arResult["BlogUser"] as $k=>$v)
  173. $arResult["User"][$k] = $v;
  174. if($arParams["SET_TITLE"]=="Y")
  175. {
  176. if($arResult["bEdit"] == "Y")
  177. $APPLICATION->SetTitle(GetMessage("B_B_USER_TITLE")." \"".$arResult["userName"]."\"");
  178. else
  179. $APPLICATION->SetTitle(GetMessage("B_B_USER_TITLE_VIEW")." ".$arResult["userName"]);
  180. }
  181. $arFilterTmp = Array("ACTIVE" => "Y", "GROUP_SITE_ID" => SITE_ID, "OWNER_ID" => $arParams["ID"]);
  182. if(!empty($arParams["GROUP_ID"]))
  183. $arFilterTmp["GROUP_ID"] = $arParams["GROUP_ID"];
  184. $dbBlog = CBlog::GetList(Array(), $arFilterTmp);
  185. if($arBlog = $dbBlog->GetNext())
  186. {
  187. $arResult["Blog"] = $arBlog;
  188. }
  189. if(!empty($arResult["Blog"]))
  190. $arResult["Blog"]["urlToBlog"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("blog" => $arResult["Blog"]["URL"]));
  191. if($arResult["User"]["PERSONAL_WWW"] <> '')
  192. $arResult["User"]["PERSONAL_WWW"] = ((mb_strpos($arResult["User"]["PERSONAL_WWW"], "http") === false)? "http://" : "").$arResult["User"]["PERSONAL_WWW"];
  193. $arHobby = explode(", ", $arResult["User"]["~INTERESTS"]);
  194. $arResult["User"]["Hobby"]=Array();
  195. foreach($arHobby as $Hobby)
  196. {
  197. if($Hobby <> '')
  198. $arResult["User"]["Hobby"][] = Array(
  199. "link" => $arParams["PATH_TO_SEARCH"].'where=USER&q='.urlencode($Hobby),
  200. "name" => HtmlFilter::encode($Hobby),
  201. );
  202. }
  203. $dbFriends = CBlogUser::GetUserFriends($arParams["ID"], True);
  204. $arResult["User"]["friendsOf"] = Array();
  205. while ($arFriends = $dbFriends->GetNext())
  206. {
  207. $arResult["User"]["friendsOf"][] = Array(
  208. "link" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("blog" => $arFriends["URL"])),
  209. "name" => $arFriends["NAME"],
  210. );
  211. }
  212. $arResult["User"]["friends"] = Array();
  213. $dbFriends = CBlogUser::GetUserFriends($arParams["ID"], False);
  214. while ($arFriends = $dbFriends->GetNext())
  215. {
  216. $arResult["User"]["friends"][] = Array(
  217. "link" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_BLOG"], array("blog" => $arFriends["URL"])),
  218. "name" => $arFriends["NAME"],
  219. );
  220. }
  221. $arResult["User"]["PERSONAL_PHOTO_FILE"] = CFile::GetFileArray($arResult["User"]["PERSONAL_PHOTO"]);
  222. if ($arResult["User"]["PERSONAL_PHOTO_FILE"] !== false)
  223. $arResult["User"]["PERSONAL_PHOTO_IMG"] = CFile::ShowImage($arResult["User"]["PERSONAL_PHOTO_FILE"], 150, 150, "border=0", "", true);
  224. $arResult["User"]["AVATAR_FILE"] = CFile::GetFileArray($arResult["User"]["AVATAR"]);
  225. if ($arResult["User"]["AVATAR_FILE"] !== false)
  226. {
  227. $arResult["User"]["Avatar_resized"] = CFile::ResizeImageGet(
  228. $arResult["User"]["AVATAR_FILE"],
  229. array("width" => 100, "height" => 100),
  230. BX_RESIZE_IMAGE_EXACT,
  231. false
  232. );
  233. $arResult["User"]["AVATAR_IMG"] = CFile::ShowImage($arResult["User"]["Avatar_resized"]["src"], 100, 100, "border=0");
  234. }
  235. // ********************* User properties ***************************************************
  236. $arResult["USER_PROPERTIES"] = array("SHOW" => "N");
  237. if (!empty($arParams["USER_PROPERTY"]))
  238. {
  239. $arUserFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("USER", $arParams["ID"], LANGUAGE_ID);
  240. if (count($arParams["USER_PROPERTY"]) > 0)
  241. {
  242. foreach ($arUserFields as $FIELD_NAME => $arUserField)
  243. {
  244. if (!in_array($FIELD_NAME, $arParams["USER_PROPERTY"]))
  245. continue;
  246. $arUserField["EDIT_FORM_LABEL"] = $arUserField["EDIT_FORM_LABEL"] <> '' ? $arUserField["EDIT_FORM_LABEL"] : $arUserField["FIELD_NAME"];
  247. $arUserField["EDIT_FORM_LABEL"] = htmlspecialcharsEx($arUserField["EDIT_FORM_LABEL"]);
  248. $arUserField["~EDIT_FORM_LABEL"] = $arUserField["EDIT_FORM_LABEL"];
  249. $arResult["USER_PROPERTIES"]["DATA"][$FIELD_NAME] = $arUserField;
  250. }
  251. }
  252. if (!empty($arResult["USER_PROPERTIES"]["DATA"]))
  253. $arResult["USER_PROPERTIES"]["SHOW"] = "Y";
  254. $arResult["bVarsFromForm"] = $strErrorMessage <> '' ? true : false;
  255. }
  256. // ******************** /User properties ***************************************************
  257. }
  258. $this->IncludeComponentTemplate();
  259. ?>