PageRenderTime 39ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/bitrix/modules/socialnetwork/admin/smile_edit.php

https://gitlab.com/neuser/bitrix-core
PHP | 342 lines | 284 code | 53 blank | 5 comment | 71 complexity | ee7c9bed836c2846ddc65cfb543bdcb2 MD5 | raw file
  1. <?
  2. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
  3. /** @global CMain $APPLICATION */
  4. /** @global CDatabase $DB */
  5. use Bitrix\Main\Loader;
  6. Loader::includeModule('socialnetwork');
  7. $sonetPermissions = $APPLICATION->GetGroupRight("socialnetwork");
  8. if ($sonetPermissions < "R")
  9. $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
  10. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/socialnetwork/include.php");
  11. IncludeModuleLangFile(__FILE__);
  12. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/socialnetwork/prolog.php");
  13. ClearVars();
  14. $ID = intval($ID);
  15. $arSysLangs = array();
  16. $arSysLangNames = array();
  17. $db_lang = CLangAdmin::GetList();
  18. $langCount = 0;
  19. while ($arLang = $db_lang->Fetch())
  20. {
  21. $arSysLangs[$langCount] = $arLang["LID"];
  22. $arSysLangNames[$langCount] = htmlspecialcharsbx($arLang["NAME"]);
  23. $langCount++;
  24. }
  25. $strErrorMessage = "";
  26. $bInitVars = false;
  27. if (($save <> '' || $apply <> '') && $REQUEST_METHOD=="POST" && $sonetPermissions=="W" && check_bitrix_sessid())
  28. {
  29. $SORT = intval($SORT);
  30. if ($SORT<=0) $SORT = 150;
  31. if ($SMILE_TYPE!="S" && $SMILE_TYPE!="I")
  32. $strErrorMessage .= GetMessage("ERROR_NO_TYPE").". \n";
  33. for ($i = 0; $i<count($arSysLangs); $i++)
  34. {
  35. ${"NAME_".$arSysLangs[$i]} = Trim(${"NAME_".$arSysLangs[$i]});
  36. if (${"NAME_".$arSysLangs[$i]} == '')
  37. $strErrorMessage .= GetMessage("ERROR_NO_NAME")." [".$arSysLangs[$i]."] ".$arSysLangNames[$i].". \n";
  38. }
  39. if ($ID<=0 && (!is_set($_FILES, "IMAGE1") || $_FILES["IMAGE1"]["name"] == ''))
  40. $strErrorMessage .= GetMessage("ERROR_NO_IMAGE").". \n";
  41. $strFileName = "";
  42. if ($strErrorMessage == '')
  43. {
  44. $arOldSmile = false;
  45. if ($ID>0) $arOldSmile = CSocNetSmile::GetByID($ID);
  46. if (is_set($_FILES, "IMAGE1") && $_FILES["IMAGE1"]["name"] <> '')
  47. {
  48. $res = CFile::CheckImageFile($_FILES["IMAGE1"], 0, 0, 0);
  49. if ($res <> '')
  50. $strErrorMessage .= $res."\n";
  51. else
  52. {
  53. $io = CBXVirtualIo::GetInstance();
  54. $strFileName = basename($_FILES["IMAGE1"]["name"]);
  55. $strFileExt = strrchr($_FILES["IMAGE1"]["name"], ".");
  56. if(
  57. !$io->ValidateFilenameString($strFileName)
  58. || HasScriptExtension($strFileName)
  59. )
  60. $strErrorMessage .= GetMessage("FSE_ERROR_EXT").". \n";
  61. }
  62. if ($strErrorMessage == '')
  63. {
  64. $strDirName = $_SERVER["DOCUMENT_ROOT"]."/bitrix/images/socialnetwork/";
  65. if ($SMILE_TYPE=="I") $strDirName .= "icon";
  66. else $strDirName .= "smile";
  67. $strDirName .= "/";
  68. CheckDirPath($strDirName);
  69. if (file_exists($strDirName.$strFileName)
  70. && (!$arOldSmile
  71. || $arOldSmile["SMILE_TYPE"] != $SMILE_TYPE
  72. || $arOldSmile["IMAGE"] != $strFileName
  73. ))
  74. $strErrorMessage .= GetMessage("ERROR_EXISTS_IMAGE").". \n";
  75. else
  76. {
  77. if (!@copy($_FILES["IMAGE1"]["tmp_name"], $strDirName.$strFileName))
  78. $strErrorMessage .= GetMessage("ERROR_COPY_IMAGE").". \n";
  79. else
  80. {
  81. @chmod($strDirName.$strFileName, BX_FILE_PERMISSIONS);
  82. $imgArray = CFile::GetImageSize($strDirName.$strFileName);
  83. if (is_array($imgArray))
  84. {
  85. $iIMAGE_WIDTH = $imgArray[0];
  86. $iIMAGE_HEIGHT = $imgArray[1];
  87. }
  88. else
  89. {
  90. $iIMAGE_WIDTH = 0;
  91. $iIMAGE_HEIGHT = 0;
  92. }
  93. }
  94. if ($arOldSmile && ($arOldSmile["SMILE_TYPE"]!=$SMILE_TYPE || $arOldSmile["IMAGE"]!=$strFileName) && $arOldSmile["IMAGE"] <> '')
  95. {
  96. $strDirNameOld = $_SERVER["DOCUMENT_ROOT"]."/bitrix/images/socialnetwork/";
  97. if ($arOldSmile["SMILE_TYPE"]=="I") $strDirNameOld .= "icon";
  98. else $strDirNameOld .= "smile";
  99. $strDirNameOld .= "/".$arOldSmile["IMAGE"];
  100. @unlink($strDirNameOld);
  101. }
  102. }
  103. }
  104. if ($strFileName == '')
  105. $strErrorMessage .= GetMessage("ERROR_NO_IMAGE").". \n";
  106. }
  107. elseif ($arOldSmile && $arOldSmile["SMILE_TYPE"]!=$SMILE_TYPE)
  108. {
  109. $strDirNameOld = $_SERVER["DOCUMENT_ROOT"]."/bitrix/images/socialnetwork/";
  110. if ($arOldSmile["SMILE_TYPE"]=="I") $strDirNameOld .= "icon";
  111. else $strDirNameOld .= "smile";
  112. $strDirNameOld .= "/".$arOldSmile["IMAGE"];
  113. $strDirName = $_SERVER["DOCUMENT_ROOT"]."/bitrix/images/socialnetwork/";
  114. if ($SMILE_TYPE=="I") $strDirName .= "icon";
  115. else $strDirName .= "smile";
  116. $strDirName .= "/".$arOldSmile["IMAGE"];
  117. if (!@copy($strDirNameOld, $strDirName))
  118. $strErrorMessage .= GetMessage("ERROR_COPY_IMAGE").". \n";
  119. else
  120. {
  121. CheckDirPath($strDirName);
  122. @unlink($strDirNameOld);
  123. }
  124. }
  125. }
  126. if ($strErrorMessage == '')
  127. {
  128. $arFields = array(
  129. "SORT" => $SORT,
  130. "SMILE_TYPE" => $SMILE_TYPE,
  131. "TYPING" => $TYPING,
  132. "DESCRIPTION" => $DESCRIPTION
  133. );
  134. if ($strFileName <> '')
  135. {
  136. $arFields["IMAGE"] = $strFileName;
  137. $arFields["IMAGE_WIDTH"] = $iIMAGE_WIDTH;
  138. $arFields["IMAGE_HEIGHT"] = $iIMAGE_HEIGHT;
  139. }
  140. for ($i = 0; $i<count($arSysLangs); $i++)
  141. {
  142. $arFields["LANG"][] = array(
  143. "LID" => $arSysLangs[$i],
  144. "NAME" => ${"NAME_".$arSysLangs[$i]}
  145. );
  146. }
  147. if ($ID>0)
  148. {
  149. $ID1 = CSocNetSmile::Update($ID, $arFields);
  150. if (intval($ID1)<=0)
  151. $strErrorMessage .= GetMessage("ERROR_EDIT_SMILE").". \n";
  152. }
  153. else
  154. {
  155. $ID = CSocNetSmile::Add($arFields);
  156. if (intval($ID)<=0)
  157. $strErrorMessage .= GetMessage("ERROR_ADD_SMILE").". \n";
  158. }
  159. }
  160. if ($strErrorMessage <> '') $bInitVars = True;
  161. if ($save <> '' && $strErrorMessage == '')
  162. LocalRedirect("socnet_smile.php?lang=".LANG."&".GetFilterParams("filter_", false));
  163. }
  164. ClearVars("f_");
  165. ClearVars("str_");
  166. $str_SORT = 150;
  167. if ($ID > 0)
  168. {
  169. $db_smile = CSocNetSmile::GetList(array(), array("ID" => $ID));
  170. $db_smile->ExtractFields("str_", True);
  171. $f_IMAGE = $str_IMAGE;
  172. $f_IMAGE_WIDTH = $str_IMAGE_WIDTH;
  173. $f_IMAGE_HEIGHT = $str_IMAGE_HEIGHT;
  174. $f_SMILE_TYPE = $str_SMILE_TYPE;
  175. }
  176. if ($bInitVars)
  177. $DB->InitTableVarsForEdit("b_sonet_smile", "", "str_");
  178. $sDocTitle = ($ID>0) ? GetMessage("SONET_EDIT_RECORD", array("#ID#" => $ID)) : GetMessage("SONET_NEW_RECORD");
  179. $APPLICATION->SetTitle($sDocTitle);
  180. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
  181. /*********************************************************************/
  182. /******************** BODY *****************************************/
  183. /*********************************************************************/
  184. ?>
  185. <?
  186. $aMenu = array(
  187. array(
  188. "TEXT" => GetMessage("FSN_2FLIST"),
  189. "ICON" => "btn_list",
  190. "LINK" => "/bitrix/admin/socnet_smile.php?lang=".LANG."&".GetFilterParams("filter_", false)
  191. )
  192. );
  193. if ($ID > 0 && $sonetPermissions == "W")
  194. {
  195. $aMenu[] = array("SEPARATOR" => "Y");
  196. $aMenu[] = array(
  197. "TEXT" => GetMessage("FSN_NEW_SMILE"),
  198. "LINK" => "/bitrix/admin/socnet_smile_edit.php?lang=".LANG."&".GetFilterParams("filter_", false)
  199. );
  200. $aMenu[] = array(
  201. "TEXT" => GetMessage("FSN_DELETE_SMILE"),
  202. "LINK" => "javascript:if(confirm('".GetMessage("FSN_DELETE_SMILE_CONFIRM")."')) window.location='/bitrix/admin/socnet_smile.php?action=delete&ID[]=".$ID."&lang=".LANG."&".bitrix_sessid_get()."#tb';",
  203. "WARNING" => "Y"
  204. );
  205. }
  206. $context = new CAdminContextMenu($aMenu);
  207. $context->Show();
  208. ?>
  209. <?CAdminMessage::ShowMessage($strErrorMessage);?>
  210. <form method="POST" action="<?echo $APPLICATION->GetCurPage()?>?" name="fform" enctype="multipart/form-data">
  211. <input type="hidden" name="Update" value="Y">
  212. <input type="hidden" name="lang" value="<?echo LANG ?>">
  213. <input type="hidden" name="ID" value="<?echo $ID ?>">
  214. <?=bitrix_sessid_post()?>
  215. <?
  216. $aTabs = array(
  217. array("DIV" => "edit1", "TAB" => GetMessage("FSN_TAB_SMILE"), "ICON" => "sonet", "TITLE" => GetMessage("FSN_TAB_SMILE_DESCR"))
  218. );
  219. $tabControl = new CAdminTabControl("tabControl", $aTabs);
  220. $tabControl->Begin();
  221. $tabControl->BeginNextTab();
  222. if ($ID > 0):
  223. ?><tr>
  224. <td width="40%"><?echo GetMessage("SONET_CODE")?>:</td>
  225. <td width="60%"><?echo $ID ?></td>
  226. </tr><?
  227. endif;
  228. ?><tr>
  229. <td width="40%"><?echo GetMessage("SONET_SORT")?>:</td>
  230. <td width="60%">
  231. <input type="text" name="SORT" value="<?echo $str_SORT ?>" size="10">
  232. </td>
  233. </tr>
  234. <tr>
  235. <td><?echo GetMessage("SONET_TYPE")?>:</td>
  236. <td>
  237. <select name="SMILE_TYPE">
  238. <option value="S" <?if ($str_SMILE_TYPE=="S") echo "selected";?>><?echo GetMessage("FSE_SMILE");?></option>
  239. <option value="I" <?if ($str_SMILE_TYPE=="I") echo "selected";?>><?echo GetMessage("FSE_ICON");?></option>
  240. </select>
  241. </td>
  242. </tr>
  243. <tr>
  244. <td valign="top"><?echo GetMessage("SONET_TYPING")?>:<br><small><?echo GetMessage("SONET_TYPING_NOTE")?></small></td>
  245. <td valign="top">
  246. <input type="text" name="TYPING" value="<?echo $str_TYPING ?>" size="50">
  247. </td>
  248. </tr>
  249. <tr class="adm-detail-required-field">
  250. <td class="adm-detail-valign-top"><?echo GetMessage("SONET_IMAGE")?>:<br><small><?echo GetMessage("SONET_IMAGE_NOTE")?></small></td>
  251. <td>
  252. <input type="file" name="IMAGE1" size="30"><?
  253. if ($f_IMAGE <> '')
  254. {
  255. ?><div style="padding-top: 10px;"><img src="/bitrix/images/socialnetwork/<?echo ($f_SMILE_TYPE=="I")?"icon":"smile" ?>/<?echo $f_IMAGE?>" border="0" <?echo (intval($f_IMAGE_WIDTH)>0) ? "width=\"".$f_IMAGE_WIDTH."\"" : "" ?> <?echo (intval($f_IMAGE_WIDTH)>0) ? "height=\"".$f_IMAGE_HEIGHT."\"" : "" ?>></div><?
  256. }
  257. ?></td>
  258. </tr><?
  259. for ($i = 0; $i < count($arSysLangs); $i++):
  260. $arSmileLang = CSocNetSmile::GetLangByID($ID, $arSysLangs[$i]);
  261. $str_NAME = htmlspecialcharsbx($arSmileLang["NAME"]);
  262. $str_DESCRIPTION = htmlspecialcharsbx($arSmileLang["DESCRIPTION"]);
  263. if ($bInitVars)
  264. {
  265. $str_NAME = htmlspecialcharsbx(${"NAME_".$arSysLangs[$i]});
  266. $str_DESCRIPTION = htmlspecialcharsbx(${"DESCRIPTION_".$arSysLangs[$i]});
  267. }
  268. ?><tr class="heading">
  269. <td colspan="2">[<?echo $arSysLangs[$i];?>] <?echo $arSysLangNames[$i];?></td>
  270. </tr>
  271. <tr class="adm-detail-required-field">
  272. <td>
  273. <?echo GetMessage("SONET_NAME")?>:
  274. </td>
  275. <td>
  276. <input type="text" name="NAME_<?echo $arSysLangs[$i] ?>" value="<?echo $str_NAME ?>" size="40">
  277. </td>
  278. </tr><?
  279. endfor;
  280. $tabControl->EndTab();
  281. $tabControl->Buttons(
  282. array(
  283. "disabled" => ($sonetPermissions < "W"),
  284. "back_url" => "/bitrix/admin/socnet_smile.php?lang=".LANG."&".GetFilterParams("filter_", false)
  285. )
  286. );
  287. $tabControl->End();
  288. ?></form>
  289. <?require($DOCUMENT_ROOT."/bitrix/modules/main/include/epilog_admin.php");?>