PageRenderTime 47ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/components/bitrix/forum.interface/templates/show_file/template.php

https://gitlab.com/alexprowars/bitrix
PHP | 124 lines | 109 code | 5 blank | 10 comment | 24 complexity | ab471435c55d0f5fb7e4b7282140cb74 MD5 | raw file
  1. <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
  2. //************************* Input params***************************************************************
  3. //************************* BASE **********************************************************************
  4. $arParams["FILE"] = (is_array($arParams["FILE"]) ? $arParams["FILE"] : intval($arParams["FILE"]));
  5. //************************* ADDITIONAL ****************************************************************
  6. $arParams["SHOW_MODE"] = (in_array($arParams["SHOW_MODE"], array("LINK", "THUMB", "FULL", "RSS")) ? $arParams["SHOW_MODE"] : "FULL");
  7. $arParams["MAX_FILE_SIZE"] = intval($arParams["MAX_FILE_SIZE"] > 0 ? $arParams["MAX_FILE_SIZE"] : 100)*1024*1024;
  8. //$arParams["SIZE"] user data in img tag <img width=... height=...>
  9. if (!is_array($arParams["MAX_SIZE"]))
  10. $arParams["MAX_SIZE"] = ($arParams["WIDTH"] > 0 ? array("width" => $arParams["WIDTH"]) : array()) +
  11. ($arParams["HEIGHT"] > 0 ? array("height" => $arParams["HEIGHT"]) : array());
  12. //$arParams["HTML_SIZE"] html resize for image. This is helpful for disk space economy.
  13. $arParams["CONVERT"] = ($arParams["CONVERT"] == "N" ? "N" : "Y");
  14. $arParams["FAMILY"] = trim($arParams["FAMILY"]);
  15. $arParams["FAMILY"] = CUtil::addslashes(empty($arParams["FAMILY"]) ? "FORUM" : $arParams["FAMILY"]);
  16. $arParams["RETURN"] = ($arParams["RETURN"] == "Y" || $arParams["RETURN"] == "ARRAY" ? $arParams["RETURN"] : "N");
  17. //$arParams["SHOW_LINK"] = ($arParams["SHOW_LINK"] == "Y" ? "Y" : "N");
  18. $arParams["ADDITIONAL_URL"] = htmlspecialcharsbx(trim($arParams["ADDITIONAL_URL"]));
  19. $arParams["SERVER_NAME"] = (defined("SITE_SERVER_NAME") && SITE_SERVER_NAME <> '') ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name");
  20. $arParams["NAME_TEMPLATE"] = str_replace(array("#NOBR#","#/NOBR#"), "", (!!$arParams["NAME_TEMPLATE"] ? $arParams["NAME_TEMPLATE"] : CSite::GetDefaultNameFormat()));
  21. // *************************/Input params***************************************************************
  22. // ************************* Default params*************************************************************
  23. $arResult["FILE"] = $arParams["FILE"];
  24. if (!is_array($arParams["FILE"]) && intval($arParams["FILE"]) > 0)
  25. $arResult["FILE"] = CFile::GetFileArray($arParams["FILE"]);
  26. $arResult["FILE"]["~SRC"] = $arResult["FILE"]["SRC"];
  27. if (intval($arResult["FILE"]["ID"]) > 0)
  28. $arResult["FILE"]["SRC"] = "/bitrix/components/bitrix/forum.interface/show_file.php?fid=".
  29. htmlspecialcharsbx($arResult["FILE"]["ID"]).
  30. (!empty($arParams["ADDITIONAL_URL"]) ? "&".$arParams["ADDITIONAL_URL"] : "");
  31. if ($arResult["FILE"]["USER_ID"] > 0)
  32. {
  33. $forumUser = CForumUser::GetByUSER_ID($arResult["FILE"]["USER_ID"]);
  34. $db_res = CUser::GetById($arResult["FILE"]["USER_ID"]);
  35. if ($db_res && ($arUser = $db_res->Fetch()))
  36. $arResult["FILE"]["OWNER"] = ($forumUser && $forumUser["SHOW_NAME"] != "Y") ? $arUser["LOGIN"] : CUser::FormatName($arParams["NAME_TEMPLATE"], $arUser, true, false);
  37. }
  38. $arResult["RETURN_DATA"] = "";
  39. $arResult["RETURN_DATA_ARRAY"] = array();
  40. // *************************/Default params*************************************************************
  41. if (is_array($arResult["FILE"]) && !empty($arResult["FILE"]["SRC"]))
  42. {
  43. $arResult["FILE"]["FULL_SRC"] = CHTTP::URN2URI($arResult["FILE"]["SRC"], $arParams["SERVER_NAME"]);
  44. $ct = mb_strtolower($arResult["FILE"]["CONTENT_TYPE"]);
  45. if ($arParams["SHOW_MODE"] == "LINK")
  46. {
  47. // do nothing
  48. }
  49. elseif ($arParams["MAX_FILE_SIZE"] >= $arResult["FILE"]["FILE_SIZE"] && mb_substr($ct, 0, 6) == "image/")
  50. {
  51. $arResult["RETURN_DATA"] = $GLOBALS["APPLICATION"]->IncludeComponent(
  52. "bitrix:forum.interface",
  53. "popup_image",
  54. Array(
  55. "URL" => ($arParams["SHOW_MODE"] == "RSS" ? $arResult["FILE"]["FULL_SRC"] : $arResult["FILE"]["SRC"]),
  56. "SIZE" => $arParams["SIZE"],
  57. "MAX_SIZE" => $arParams["MAX_SIZE"],
  58. "HTML_SIZE" => $arParams["HTML_SIZE"],
  59. "MODE" => ($arParams["SHOW_MODE"] == "RSS" ? "RSS" : "SHOW2IMAGES"),
  60. "IMG_WIDTH" => $arResult["FILE"]["WIDTH"],
  61. "IMG_HEIGHT" => $arResult["FILE"]["HEIGHT"],
  62. "IMG_NAME" => $arResult["FILE"]["ORIGINAL_NAME"],
  63. "IMG_SIZE" => $arResult["FILE"]["FILE_SIZE"],
  64. "CONVERT" => $arParams["CONVERT"],
  65. "FAMILY" => $arParams["FAMILY"],
  66. "RETURN" => "Y"
  67. ),
  68. ($this->__component->__parent !== null ? $this->__component->__parent : $this->__component),
  69. array("HIDE_ICONS" => "Y")
  70. );
  71. }
  72. $arResult["RETURN_DATA_ARRAY"]["DATA"] = $arResult["RETURN_DATA"];
  73. $arData = array();
  74. $attributes = Bitrix\Main\UI\Viewer\ItemAttributes::buildByFileData($arResult["FILE"], $arResult["FILE"]["SRC"]);
  75. $size = (intval($arResult["FILE"]["FILE_SIZE"]) > 0 ? CFile::FormatSize(intval($arResult['FILE']['FILE_SIZE'])) : '');
  76. $sTitle = (!empty($arResult["FILE"]["ORIGINAL_NAME"]) ? $arResult["FILE"]["ORIGINAL_NAME"] : GetMessage("FRM_DOWNLOAD"));
  77. $file_ext = GetFileExtension($arResult["FILE"]["ORIGINAL_NAME"]);
  78. $arData["TITLE"] = "<a href=\"".$arResult["FILE"]["SRC"]."&action=download"."\" class=\"forum-file forum-file-".$file_ext."\" ".
  79. (!empty($arResult["RETURN_DATA"]) ?: (mb_substr($ct, 0, 6) == "image/" ?
  80. " data-bx-viewer=\"image\" data-bx-src=\"".$arResult["FILE"]["SRC"]."\" ".
  81. " data-bx-title=\"".htmlspecialcharsbx($arResult["FILE"]["ORIGINAL_NAME"])."\" ".
  82. " data-bx-owner=\"".htmlspecialcharsbx($arResult["FILE"]["OWNER"])."\" ".
  83. " data-bx-dateModify=\"".htmlspecialcharsbx($arResult["FILE"]["TIMESTAMP_X"])."\" ".
  84. " data-bx-size=\"".htmlspecialcharsbx($arResult["FILE"]["FILE_SIZE"])."\" ".
  85. " data-bx-download=\"".$arResult["FILE"]["SRC"]."&action=download\" ".
  86. " data-bx-width=\"".htmlspecialcharsbx($arResult["FILE"]["WIDTH"])."\" ".
  87. " data-bx-height=\"".htmlspecialcharsbx($arResult["FILE"]["HEIGHT"])."\" " :
  88. " data-bx-viewer=\"unknown\" data-bx-src=\"".$arResult["FILE"]["SRC"]."\" ".
  89. " data-bx-title=\"".htmlspecialcharsbx($arResult["FILE"]["ORIGINAL_NAME"])."\" ".
  90. " data-bx-owner=\"".htmlspecialcharsbx($arResult["FILE"]["OWNER"])."\" ".
  91. " data-bx-dateModify=\"".htmlspecialcharsbx($arResult["FILE"]["TIMESTAMP_X"])."\" data-bx-tooBigSizeMsg=\"\" ".
  92. " data-bx-size=\"".$size."\" ".$attributes.
  93. " data-bx-download=\"".$arResult["FILE"]["SRC"]."&action=download\" " )).
  94. "title=\"".str_replace("#FILE_NAME#", $arResult["FILE"]["ORIGINAL_NAME"], GetMessage("FRM_DOWNLOAD_TITLE")).'" target="_blank">'.
  95. '<span>'.$arResult["FILE"]["ORIGINAL_NAME"].'</span></a>';
  96. if ($size != '')
  97. $arData["SIZE"] = "<span class=\"forum-file-size\">(".$size.")</span>";
  98. $arResult["RETURN_DATA_ARRAY"] += $arData;
  99. if ($arParams["SHOW_MODE"] == "RSS")
  100. $arResult["RETURN_DATA"] = (!empty($arResult["RETURN_DATA"]) ?
  101. $arResult["RETURN_DATA"] : '<a "'.$attributes.'" href="'.$arResult["FILE"]["FULL_SRC"].'">'.$arResult["FILE"]["ORIGINAL_NAME"].'</a>');
  102. elseif ($arParams["SHOW_MODE"] == "THUMB" && !empty($arResult["RETURN_DATA"]))
  103. $arResult["RETURN_DATA"] = "<span class=\"forum-attach\" title=\"".htmlspecialcharsbx($arResult["FILE"]["ORIGINAL_NAME"])." (".$size.")\">".$arResult["RETURN_DATA"]."</span>";
  104. elseif ($arParams["SHOW_MODE"] != "FULL" || empty($arResult["RETURN_DATA"]))
  105. $arResult["RETURN_DATA"] = "<span class=\"forum-attach\">".implode(" ", $arData)."</span>";
  106. else
  107. $arResult["RETURN_DATA"] = "<div class=\"forum-attach\">".$arResult["RETURN_DATA"]."<div>".implode(" ", $arData)."</div></div>";
  108. }
  109. if ($arParams["RETURN"] == "Y")
  110. $this->__component->arParams["RETURN_DATA"] = $arResult["RETURN_DATA"];
  111. elseif ($arParams["RETURN"] == "ARRAY")
  112. $this->__component->arParams["RETURN_DATA"] = $arResult["RETURN_DATA_ARRAY"] + array("RETURN_DATA" => $arResult["RETURN_DATA"]);
  113. else
  114. echo $arResult["RETURN_DATA"];
  115. return 0;
  116. ?>