PageRenderTime 41ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/components/bitrix/photogallery.section/component.php

https://gitlab.com/alexprowars/bitrix
PHP | 217 lines | 160 code | 14 blank | 43 comment | 55 complexity | add781080597a78f468d979b49120a69 MD5 | raw file
  1. <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
  2. if (!CModule::IncludeModule("photogallery"))
  3. return ShowError(GetMessage("P_MODULE_IS_NOT_INSTALLED"));
  4. elseif (!IsModuleInstalled("iblock"))
  5. return ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
  6. elseif (empty($arParams["SECTION_CODE"]) && intval($arParams["SECTION_ID"]) <= 0)
  7. return ShowError(GetMessage("P_SECTION_EMPTY"));
  8. elseif ($arParams["BEHAVIOUR"] == "USER" && empty($arParams["USER_ALIAS"]))
  9. return ShowError(GetMessage("P_GALLERY_EMPTY"));
  10. if (empty($arParams["INDEX_URL"]) && !empty($arParams["SECTIONS_TOP_URL"]))
  11. $arParams["INDEX_URL"] = $arParams["SECTIONS_TOP_URL"];
  12. /********************************************************************
  13. Input params
  14. ********************************************************************/
  15. //***************** BASE *******************************************/
  16. $arParams["IBLOCK_TYPE"] = trim($arParams["IBLOCK_TYPE"]);
  17. $arParams["IBLOCK_ID"] = intval($arParams["IBLOCK_ID"]);
  18. $arParams["SECTION_ID"] = intval($arParams["SECTION_ID"]);
  19. $arParams["SECTION_CODE"] = trim($arParams["SECTION_CODE"]);
  20. $arParams["USER_ALIAS"] = trim($arParams["USER_ALIAS"]);
  21. $arParams["BEHAVIOUR"] = ($arParams["BEHAVIOUR"] == "USER" ? "USER" : "SIMPLE");
  22. $arParams["PERMISSION_EXTERNAL"] = trim($arParams["PERMISSION"]);
  23. //***************** URL ********************************************/
  24. $URL_NAME_DEFAULT = array(
  25. "index" => "",
  26. "gallery" => "PAGE_NAME=gallery&USER_ALIAS=#USER_ALIAS#",
  27. "detail_slide_show" => "PAGE_NAME=detail_slide_show".($arParams["BEHAVIOUR"] == "USER" ? "&USER_ALIAS=#USER_ALIAS#" : "" ).
  28. "&SECTION_ID=#SECTION_ID#&ELEMENT_ID=#ELEMENT_ID#",
  29. "section" => "PAGE_NAME=section".($arParams["BEHAVIOUR"] == "USER" ? "&USER_ALIAS=#USER_ALIAS#" : "" ).
  30. "&SECTION_ID=#SECTION_ID#",
  31. "section_edit" => "PAGE_NAME=section_edit".($arParams["BEHAVIOUR"] == "USER" ? "&USER_ALIAS=#USER_ALIAS#" : "" ).
  32. "&SECTION_ID=#SECTION_ID#&ACTION=#ACTION#",
  33. "section_edit_icon" => "PAGE_NAME=section_edit_icon".($arParams["BEHAVIOUR"] == "USER" ? "&USER_ALIAS=#USER_ALIAS#" : "" ).
  34. "&SECTION_ID=#SECTION_ID#&ACTION=#ACTION#",
  35. "upload" => "PAGE_NAME=upload".($arParams["BEHAVIOUR"] == "USER" ? "&USER_ALIAS=#USER_ALIAS#" : "" ).
  36. "&SECTION_ID=#SECTION_ID#&ACTION=upload");
  37. foreach ($URL_NAME_DEFAULT as $URL => $URL_VALUE)
  38. {
  39. $arParams[mb_strtoupper($URL)."_URL"] = trim($arParams[mb_strtoupper($URL)."_URL"]);
  40. if (empty($arParams[mb_strtoupper($URL)."_URL"]))
  41. {
  42. $arParams[mb_strtoupper($URL)."_URL"] = $GLOBALS["APPLICATION"]->GetCurPageParam($URL_VALUE,
  43. array("PAGE_NAME", "SECTION_ID", "ELEMENT_ID", "ACTION", "AJAX_CALL", "sessid", "edit", "login", "USER_ALIAS", "order", "group_by"));
  44. }
  45. $arParams["~".mb_strtoupper($URL)."_URL"] = $arParams[mb_strtoupper($URL)."_URL"];
  46. $arParams[mb_strtoupper($URL)."_URL"] = htmlspecialcharsbx($arParams["~".mb_strtoupper($URL)."_URL"]);
  47. }
  48. //***************** ADDITIONAL **************************************/
  49. $arParams["DATE_TIME_FORMAT"] = trim(!empty($arParams["DATE_TIME_FORMAT"]) ? $arParams["DATE_TIME_FORMAT"] :
  50. $GLOBALS["DB"]->DateFormatToPHP(CSite::GetDateFormat("SHORT")));
  51. $arParams["ALBUM_PHOTO_SIZE"] = (intval($arParams["ALBUM_PHOTO_SIZE"]) > 0 ? intval($arParams["ALBUM_PHOTO_SIZE"]) : 150);
  52. $arParams["ALBUM_PHOTO_THUMBS_SIZE"] = (intval($arParams["ALBUM_PHOTO_THUMBS_SIZE"]) > 0 ? intval($arParams["ALBUM_PHOTO_THUMBS_SIZE"]) : 70);
  53. $arParams["GALLERY_SIZE"] = intval($arParams["GALLERY_SIZE"]);
  54. $arParams["RETURN_SECTION_INFO"] = ($arParams["RETURN_SECTION_INFO"] == "Y" ? "Y" : "N");
  55. $arParams["SET_STATUS_404"] = ($arParams["SET_STATUS_404"] == "Y" ? "Y" : "N");
  56. //***************** STANDART ****************************************/
  57. if(!isset($arParams["CACHE_TIME"]))
  58. $arParams["CACHE_TIME"] = 3600;
  59. if ($arParams["CACHE_TYPE"] == "Y" || ($arParams["CACHE_TYPE"] == "A" && COption::GetOptionString("main", "component_cache_on", "Y") == "Y"))
  60. $arParams["CACHE_TIME"] = intval($arParams["CACHE_TIME"]);
  61. else
  62. $arParams["CACHE_TIME"] = 0;
  63. $arParams["SET_TITLE"] = ($arParams["SET_TITLE"] == "N" ? "N" : "Y"); //Turn on by default
  64. $arParams["SET_NAV_CHAIN"] = ($arParams["SET_NAV_CHAIN"] == "N" ? "N" : "Y"); //Turn on by default
  65. $arParams["DISPLAY_PANEL"] = ($arParams["DISPLAY_PANEL"] == "Y" ? "Y" : "N"); //Turn off by default
  66. /********************************************************************
  67. /Input params
  68. ********************************************************************/
  69. $oPhoto = new CPGalleryInterface(
  70. array(
  71. "IBlockID" => $arParams["IBLOCK_ID"],
  72. "GalleryID" => $arParams["USER_ALIAS"],
  73. "Permission" => $arParams["PERMISSION_EXTERNAL"]),
  74. array(
  75. "cache_time" => $arParams["CACHE_TIME"],
  76. "set_404" => $arParams["SET_STATUS_404"]
  77. )
  78. );
  79. if (!$oPhoto)
  80. return false;
  81. $arResult["GALLERY"] = $oPhoto->Gallery;
  82. $arParams["PERMISSION"] = $oPhoto->User["Permission"];
  83. /********************************************************************
  84. Main data
  85. ********************************************************************/
  86. /************** SECTION ********************************************/
  87. $res = $oPhoto->GetSection($arParams["SECTION_ID"], $arResult["SECTION"]);
  88. if ($res > 400)
  89. {
  90. return false;
  91. }
  92. elseif ($res == 301)
  93. {
  94. $url = CComponentEngine::MakePathFromTemplate(
  95. $arParams["~SECTION_URL"],
  96. array(
  97. "USER_ALIAS" => $arGallery["CODE"],
  98. "SECTION_ID" => $arParams["SECTION_ID"])
  99. );
  100. if ($url == POST_FORM_ACTION_URI)
  101. $url = CComponentEngine::MakePathFromTemplate($arParams["~INDEX_URL"], array());
  102. LocalRedirect($url, false, "301 Moved Permanently");
  103. return false;
  104. }
  105. elseif (!$oPhoto->CheckPermission($arParams["PERMISSION"], $arResult["SECTION"]))
  106. {
  107. if ($arParams["SET_TITLE"] == "Y")
  108. $GLOBALS["APPLICATION"]->SetTitle(GetMessage('P_SECTION_ACCESS_DENIED'));
  109. return false;
  110. }
  111. if (is_array($arResult["SECTION"]["~DATE"]))
  112. $arResult["SECTION"]["DATE"]["VALUE"] = PhotoDateFormat($arParams["DATE_TIME_FORMAT"], MakeTimeStamp($arResult["SECTION"]["~DATE"]["VALUE"], CSite::GetDateFormat()));
  113. /********************************************************************
  114. /Main data
  115. ********************************************************************/
  116. /********************************************************************
  117. Prepare Data
  118. ********************************************************************/
  119. $url = array();
  120. if ($arParams["BEHAVIOUR"] == "USER" && $arResult["SECTION"]["IBLOCK_SECTION_ID"] == $arResult["GALLERY"]["ID"])
  121. $url["BACK_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["~GALLERY_URL"],
  122. array("USER_ALIAS" => $arResult["GALLERY"]["CODE"]));
  123. elseif (intval($arResult["SECTION"]["IBLOCK_SECTION_ID"]) > 0)
  124. $url["BACK_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["~SECTION_URL"],
  125. array("USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $arResult["SECTION"]["IBLOCK_SECTION_ID"]));
  126. else
  127. $url["BACK_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["~INDEX_URL"], array());
  128. $url["SLIDE_SHOW_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["~DETAIL_SLIDE_SHOW_URL"], array(
  129. "USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $arParams["SECTION_ID"], "ELEMENT_ID" => 0,
  130. "USER_ID" => $arResult["GALLERY"]["CREATED_BY"], "GROUP_ID" => $arResult["GALLERY"]["SOCNET_GROUP_ID"])).
  131. (mb_strpos($arParams["~DETAIL_SLIDE_SHOW_URL"], "?") === false ? "?" : "&")."BACK_URL=".urlencode($GLOBALS['APPLICATION']->GetCurPageParam());
  132. if ($arParams["PERMISSION"] >= "W")
  133. {
  134. $url["NEW_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["~SECTION_EDIT_URL"],
  135. array("USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $arParams["SECTION_ID"], "ACTION" => "new"));
  136. $url["EDIT_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["~SECTION_EDIT_URL"],
  137. array("USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $arParams["SECTION_ID"], "ACTION" => "edit"));
  138. if ($arResult["SECTION"]["ELEMENTS_CNT"] > 0)
  139. $url["EDIT_ICON_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["~SECTION_EDIT_ICON_URL"],
  140. array("USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $arParams["SECTION_ID"], "ACTION" => "edit"));
  141. $url["DROP_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["~SECTION_EDIT_URL"],
  142. array("USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $arParams["SECTION_ID"], "ACTION" => "drop")).
  143. (mb_strpos($arParams["~SECTION_EDIT_URL"], "?") === false ? "?" : "&").bitrix_sessid_get()."&edit=Y";
  144. if ($arParams["BEHAVIOUR"] != "USER" || $arParams["GALLERY_SIZE"] <= 0 || $arParams["GALLERY_SIZE"] > $arResult["GALLERY"]["UF_GALLERY_SIZE"])
  145. $url["UPLOAD_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["~UPLOAD_URL"],
  146. array("USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $arParams["SECTION_ID"]));
  147. }
  148. //echo $url["DROP_LINK"];
  149. foreach ($url as $key => $val)
  150. {
  151. $arResult["SECTION"]["~".$key] = $val;
  152. $arResult["SECTION"][$key] = htmlspecialcharsbx($val);
  153. }
  154. /********************************************************************
  155. /Data
  156. ********************************************************************/
  157. /********************************************************************
  158. For custom templates
  159. ********************************************************************/
  160. $arResult["SECTIONS_CNT"] = $arResult["SECTION"]["SECTIONS_CNT"];
  161. /********************************************************************
  162. /For custom templates
  163. ********************************************************************/
  164. CUtil::InitJSCore(array('window', 'ajax'));
  165. $this->IncludeComponentTemplate();
  166. /********************************************************************
  167. Standart
  168. ********************************************************************/
  169. /************** Title **********************************************/
  170. if ($arParams["SET_TITLE"] == "Y")
  171. $GLOBALS["APPLICATION"]->SetTitle($arResult["SECTION"]["NAME"]);
  172. /************** BreadCrumb *****************************************/
  173. if ($arParams["SET_NAV_CHAIN"] == "Y")
  174. {
  175. $bFounded = ($arParams["BEHAVIOUR"] != "USER");
  176. foreach($arResult["SECTION"]["PATH"] as $arPath)
  177. {
  178. if (!$bFounded):
  179. $bFounded = ($arResult["GALLERY"]["ID"] == $arPath["ID"]);
  180. continue;
  181. endif;
  182. if ($arPath["ID"] != $arParams["SECTION_ID"])
  183. $GLOBALS["APPLICATION"]->AddChainItem($arPath["NAME"],
  184. CComponentEngine::MakePathFromTemplate($arParams["~SECTION_URL"],
  185. array("USER_ALIAS" => $arParams["USER_ALIAS"], "SECTION_ID" => $arPath["ID"])));
  186. else
  187. $GLOBALS["APPLICATION"]->AddChainItem($arPath["NAME"]);
  188. }
  189. }
  190. /************** Admin Panel ****************************************/
  191. // if ($arParams["DISPLAY_PANEL"] == "Y" && $USER->IsAuthorized() && CModule::IncludeModule("iblock")):
  192. // CIBlock::ShowPanel($arParams["IBLOCK_ID"], 0, $arParams["SECTION_ID"], $arParams["IBLOCK_TYPE"], false, $this->GetName());
  193. // endif;
  194. /************** Returns ********************************************/
  195. if ($arParams["RETURN_SECTION_INFO"] == "Y"):
  196. return $arResult["SECTION"];
  197. else:
  198. return $arResult["SECTION"]["ID"];
  199. endif;
  200. /********************************************************************
  201. /Standart
  202. ********************************************************************/
  203. ?>