PageRenderTime 37ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/bitrix/modules/forum/admin/forum_words.php

https://gitlab.com/Rad1calDreamer/honey
PHP | 243 lines | 224 code | 8 blank | 11 comment | 32 complexity | d2ff969a78cc29ff50676a2d01a6bd2d MD5 | raw file
  1. <?
  2. /********************************************************************
  3. Profanity dictionary.
  4. ********************************************************************/
  5. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
  6. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/forum/include.php");
  7. $forumModulePermissions = $APPLICATION->GetGroupRight("forum");
  8. if ($forumModulePermissions == "D")
  9. $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
  10. IncludeModuleLangFile(__FILE__);
  11. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/forum/prolog.php");
  12. $sTableID = "tbl_filter";
  13. $oSort = new CAdminSorting($sTableID, "ID", "asc");
  14. $lAdmin = new CAdminList($sTableID, $oSort);
  15. $lAdmin->InitFilter(array("ID", "find_pattern", "find_type", "USE_IT", "PATTERN_CREATE"));
  16. /*******************************************************************/
  17. $arFilter = array();
  18. $DICTIONARY_ID = intVal($_REQUEST["DICTIONARY_ID"]);
  19. if ($DICTIONARY_ID <= 0)
  20. {
  21. $DICTIONARY_ID = 0;
  22. $lAdmin->AddFilterError(GetMessage("FLT_NOT_DICTIONARY"));
  23. }
  24. $arFilter = array("DICTIONARY_ID" => $DICTIONARY_ID);
  25. $find_pattern = trim($find_pattern);
  26. if (strLen($find_pattern)>0)
  27. $arFilter = array_merge($arFilter, array("%".htmlspecialcharsEx(strToUpper($find_type)) => "%".$find_pattern."%"));
  28. if (($USE_IT) && $USE_IT != "all")
  29. $arFilter = array_merge($arFilter, array("USE_IT" => (trim($USE_IT) == "Y"? "Y" : "N")));
  30. if ($PATTERN_CREATE && $PATTERN_CREATE != "ALL")
  31. $arFilter = array_merge($arFilter, array("PATTERN_CREATE" => trim($PATTERN_CREATE)));
  32. /*******************************************************************/
  33. if ($lAdmin->EditAction() && $forumModulePermissions >= "W")
  34. {
  35. foreach ($FIELDS as $ID => $arFields)
  36. {
  37. $DB->StartTransaction();
  38. $ID = IntVal($ID);
  39. if (!$lAdmin->IsUpdated($ID))
  40. continue;
  41. if (is_set($arFields, "PATTERN_CREATE"))
  42. {
  43. $WORDS = trim($arFields["WORDS"]);
  44. if ($arFields["PATTERN_CREATE"] == "WORDS")
  45. {
  46. $arFields["WORDS"] = $WORDS;
  47. $arFields["PATTERN"] = CFilterUnquotableWords::CreatePattern($WORDS, -1);
  48. $arFields["PATTERN_CREATE"] = "WORDS";
  49. }
  50. elseif ($arFields["PATTERN_CREATE"] == "TRNSL")
  51. {
  52. $arFields["WORDS"] = trim($WORDS);
  53. $arFields["PATTERN"] = CFilterUnquotableWords::CreatePattern($WORDS, 0);
  54. $arFields["PATTERN_CREATE"] = "TRNSL";
  55. }
  56. elseif ($arFields["PATTERN_CREATE"] == "PTTRN")
  57. {
  58. $arFields["WORDS"] = $WORDS;
  59. $arFields["PATTERN"] = $WORDS;
  60. $arFields["PATTERN_CREATE"] = "PTTRN";
  61. }
  62. else
  63. {
  64. $arFields["WORDS"] = "";
  65. $arFields["PATTERN"] = "";
  66. }
  67. }
  68. if (!CFilterUnquotableWords::Update($ID, $arFields))
  69. {
  70. if ($ex = $APPLICATION->GetException())
  71. $lAdmin->AddUpdateError($ex->GetString(), $ID);
  72. else
  73. $lAdmin->AddUpdateError(GetMessage("FLT_NOT_UPDATE"));
  74. $DB->Rollback();
  75. }
  76. $DB->Commit();
  77. }
  78. }
  79. /*******************************************************************/
  80. if($arID = $lAdmin->GroupAction())
  81. {
  82. if($_REQUEST['action_target']=='selected')
  83. {
  84. $rsData = CFilterUnquotableWords::GetList(array($by=>$order), $arFilter);
  85. while($arRes = $rsData->Fetch())
  86. $arID[] = $arRes['ID'];
  87. }
  88. if(check_bitrix_sessid() && (CFilterUnquotableWords::FilterPerm()))
  89. {
  90. foreach($arID as $ID)
  91. {
  92. if(strlen($ID)<=0)
  93. continue;
  94. $ID = intval($ID);
  95. switch($_REQUEST['action'])
  96. {
  97. case "delete":
  98. CFilterUnquotableWords::Delete($ID);
  99. break;
  100. case "generate":
  101. CFilterUnquotableWords::GenPattern($ID, intVal($DICTIONARY_ID_T));
  102. break;
  103. }
  104. }
  105. }
  106. }
  107. $rsData = CFilterUnquotableWords::GetList(array($by=>$order), $arFilter);
  108. $rsData = new CAdminResult($rsData, $sTableID);
  109. $rsData->NavStart();
  110. $lAdmin->NavText($rsData->GetNavPrint(GetMessage("FLT_TITLE_NAV")));
  111. $lAdmin->AddHeaders(array(
  112. array("id"=>"ID", "content"=>"ID", "sort"=>"ID", "default"=>true),
  113. array("id"=>"USE_IT", "content"=>GetMessage("FLT_USE_IT"), "sort"=>"USE_IT", "default"=>true),
  114. array("id"=>"PATTERN_CREATE", "content"=>GetMessage("FLT_PATTERN_CREATE"), "sort"=>"PATTERN_CREATE", "default"=>true),
  115. array("id"=>"WORDS", "content"=>GetMessage("FLT_WORDS"), "sort"=>"WORDS", "default"=>true),
  116. array("id"=>"PATTERN", "content"=>GetMessage("FLT_PATTERN"), "sort"=>"PATTERN", "default"=>false),
  117. array("id"=>"REPLACEMENT","content"=>GetMessage("FLT_REPLACEMENT"), "sort"=>"REPLACEMENT", "default"=>true),
  118. array("id"=>"DESCRIPTION", "content"=>GetMessage("FLT_DESCRIPTION"), "sort"=>"DESCRIPTION", "default"=>true),
  119. ));
  120. /*******************************************************************/
  121. while ($arData = $rsData->NavNext(true, "t_"))
  122. {
  123. $row =& $lAdmin->AddRow($t_ID, $arData);
  124. if (!CFilterUnquotableWords::FilterPerm())
  125. $row->bReadOnly = True;
  126. $row->AddViewField("ID", '<a title="'.GetMessage("FLT_ACT_EDIT").'" href="'."forum_words_edit.php?DICTIONARY_ID=".$t_DICTIONARY_ID."&ID=".$t_ID."&amp;lang=".LANG.'">'.$t_ID.'</a>');
  127. $row->AddInputField("WORDS", array("size"=>"20"));
  128. $row->AddInputField("PATTERN", array());
  129. $row->AddInputField("REPLACEMENT", array("maxlength"=>"255", "size"=>"10%"));
  130. $row->AddInputField("DESCRIPTION", array("size"=>"80%"));
  131. $row->AddCheckField("USE_IT", array("Y"=>GetMessage("FLT_ACT_USE_IT_Y"), "N"=>GetMessage("FLT_ACT_USE_IT_N")));
  132. $row->AddSelectField("PATTERN_CREATE", array("WORDS"=>GetMessage("FLT_FLT_WORDS"), "TRNSL"=>GetMessage("FLT_FLT_TRNSL"), "PTTRN"=>GetMessage("FLT_FLT_PTTRN")));
  133. $arActions = Array();
  134. $arActions[] = array("ICON"=>"edit", "TEXT"=>GetMessage("FLT_ACT_EDIT"), "ACTION"=>$lAdmin->ActionRedirect("forum_words_edit.php?DICTIONARY_ID=".$t_DICTIONARY_ID."&lang=".LANG."&ID=".$t_ID.GetFilterParams("filter_", false).""), "DEFAULT" => true);
  135. // $arActions[] = array("ICON"=>"edit", "TEXT"=>GetMessage("FLT_ACT_GEN"), "ACTION"=>$lAdmin->ActionDoGroup($t_ID, "generate", "DICTIONARY_ID=".$t_DICTIONARY_ID."&lang=".LANG));
  136. $arActions[] = array("SEPARATOR" => true);
  137. $arActions[] = array("ICON"=>"delete", "TEXT"=>GetMessage("FLT_ACT_DEL"), "ACTION"=>"if(confirm('".GetMessage("FLT_ACT_DEL_CONFIRM")."')) ".$lAdmin->ActionDoGroup($t_ID, "delete", "DICTIONARY_ID=".$t_DICTIONARY_ID."&lang=".LANG),);
  138. $row->AddActions($arActions);
  139. }
  140. /*******************************************************************/
  141. $lAdmin->AddFooter(
  142. array(
  143. array("title"=>GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value" => $rsData->SelectedRowsCount()),
  144. array("counter"=>true, "title"=>GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value"=>"0"),
  145. )
  146. );
  147. $db_res = CFilterDictionary::GetList(array(), array("TYPE"=>"T"));
  148. $option = "";
  149. $active = COption::GetOptionString("forum", "FILTER_DICT_T", '', SITE);
  150. while ($res = $db_res->GetNext())
  151. $option .= "<option value='".$res["ID"].($res["ID"] == $active ? " selected " : "")."'>".$res["TITLE"]."</option>";
  152. $lAdmin->AddGroupActionTable(
  153. array(
  154. "delete" => GetMessage("MAIN_ADMIN_LIST_DELETE"),
  155. "generate" => GetMessage("FLT_ACT_GEN"),
  156. "copy2" => array(
  157. "type" => "html",
  158. "value" => GetMessage("FLT_ACT_GEN_CONFIRM")
  159. ),
  160. "copy1" => array(
  161. "type" => "html",
  162. "value" => "<select name='DICTIONARY_ID_T'>".$option."</select>"
  163. ),
  164. )
  165. );
  166. if (($forumModulePermissions >= "W") && ($DICTIONARY_ID))
  167. {
  168. $aContext = array(
  169. array(
  170. "TEXT" => GetMessage("FLT_ACT_ADD"),
  171. "LINK" => "forum_words_edit.php?DICTIONARY_ID=".$DICTIONARY_ID."&lang=".LANG,
  172. "TITLE" => GetMessage("FLT_ACT_ADD"),
  173. "ICON" => "btn_new")
  174. );
  175. $lAdmin->AddAdminContextMenu($aContext);
  176. }
  177. /*******************************************************************/
  178. $lAdmin->CheckListMode();
  179. /*******************************************************************/
  180. $APPLICATION->SetTitle(GetMessage("FLT_TITLE"));
  181. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
  182. $oFilter = new CAdminFilter(
  183. $sTableID."_filter",
  184. array(
  185. GetMessage("FLT_USE_IT"),
  186. GetMessage("FLT_PATTERN_CREATE"),
  187. )
  188. );
  189. ?><form name="form1" method="get" action="<?=$APPLICATION->GetCurPage()?>?">
  190. <input type="hidden" name="DICTIONARY_ID" value="<?=$DICTIONARY_ID?>">
  191. <?$oFilter->Begin();?>
  192. <tr valign="center">
  193. <td><b><?=GetMessage("MAIN_FIND")?>:</b></td>
  194. <td>
  195. <input type="text" size="47" name="find_pattern" value="<?=htmlspecialcharsEx($find_pattern)?>" title="<?=GetMessage("MAIN_FIND_TITLE")?>">
  196. <?
  197. $arr = array(
  198. "reference" => array(
  199. GetMessage("FLT_WORDS"),
  200. GetMessage("FLT_PATTERN"),
  201. GetMessage("FLT_REPLACEMENT"),
  202. GetMessage("FLT_DESCRIPTION"),
  203. ),
  204. "reference_id" => array(
  205. "WORDS",
  206. "PATTERN",
  207. "REPLACEMENT",
  208. "DESCRIPTION",
  209. )
  210. );
  211. echo SelectBoxFromArray("find_type", $arr, $find_type, "", "");
  212. ?>
  213. </td>
  214. </tr>
  215. <tr valign="center">
  216. <td><?=GetMessage("FLT_USE_IT")?>:</td>
  217. <td><?echo SelectBoxFromArray("USE_IT", array("REFERENCE" => array("", GetMessage("FLT_ACT_USE_IT_Y"), GetMessage("FLT_ACT_USE_IT_N")), "REFERENCE_ID" => array("all", "Y", "N")), $USE_IT)?></td>
  218. </tr>
  219. <tr valign="center">
  220. <td><?=GetMessage("FLT_PATTERN_CREATE")?>:</td>
  221. <td><?echo SelectBoxFromArray("PATTERN_CREATE", array("REFERENCE" => array("", GetMessage("FLT_FLT_WORDS"), GetMessage("FLT_FLT_TRNSL"), GetMessage("FLT_FLT_PTTRN")), "REFERENCE_ID" => array("ALL", "WORDS", "TRNSL", "PTTRN")), $PATTERN_CREATE)?></td>
  222. </tr>
  223. <?
  224. $oFilter->Buttons(
  225. array(
  226. "table_id" => $sTableID,
  227. "url" => $APPLICATION->GetCurPage()."?DICTIONARY_ID=".$DICTIONARY_ID."&lang=".LANG,
  228. "form" => "find_form"
  229. )
  230. );
  231. $oFilter->End();
  232. ?></form><?
  233. $lAdmin->DisplayList();
  234. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
  235. ?>