PageRenderTime 59ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

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

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