3##############################################
4# Bitrix Site Manager Forum #
5# Copyright (c) 2002-2009 Bitrix #
7# mailto:admin@bitrixsoft.com #
8##############################################
55 $strUpdate =
$DB->PrepareUpdate(
"b_forum_dictionary",
$arFields);
56 $res =
$DB->Query(
"UPDATE b_forum_dictionary SET ".$strUpdate.
" WHERE ID=".
$ID);
68 $Dictionary = $Dictionary->Fetch();
69 $DB->StartTransaction();
70 if ($Dictionary[
"TYPE"] ==
"T")
72 $res =
$DB->Query(
"DELETE FROM b_forum_letter WHERE DICTIONARY_ID=".
$ID);
76 $res =
$DB->Query(
"DELETE FROM b_forum_filter WHERE DICTIONARY_ID=".
$ID);
80 $res =
$DB->Query(
"DELETE FROM b_forum_dictionary WHERE ID=".
$ID);
96 if (mb_substr(
$key, 0, 1) ==
"!")
102 if (mb_substr(
$key, 0, 2) ==
">=")
105 $strOperation =
">=";
115 $strOperation =
"<=";
125 $strOperation =
"IN";
130 $strOperation =
"LIKE";
136 return array(
"FIELD"=>
$key,
"NEGATIVE"=>$strNegative,
"OPERATION"=>$strOperation);
179 $letter =
false; $dictionary_id =
false; $update =
false;
190 $dictionary_id =
true;
193 if ($letter || $dictionary_id)
197 if ($letter && !$dictionary_id)
199 elseif (!$letter && $dictionary_id)
201 elseif ($letter && $dictionary_id)
212 $strUpdate =
$DB->PrepareUpdate(
"b_forum_letter",
$arFields);
213 $res =
$DB->Query(
"UPDATE b_forum_letter SET ".$strUpdate.
" WHERE ID=".
$ID);
223 return $DB->Query(
"DELETE FROM b_forum_letter WHERE ID=".
$ID);
231 return $res->GetNext();
242 $sDelimiter = mb_substr($sPattern, 0, 1);
243 if ($sDelimiter !==
'/')
245 "code" =>
"bad_delimiter",
246 "title" =>
GetMessage(
"FLT_ERR_BAD_DELIMITER"));
248 $sModificators = strrchr(mb_substr($sPattern, 1), $sDelimiter);
249 if ($sModificators && mb_strpos($sModificators,
"e") !==
false)
251 "code" =>
"bad_modificator",
252 "title" =>
GetMessage(
"FLT_ERR_BAD_MODIFICATOR"));
256 $sTest = preg_match($sPattern,
"test string", $arTest);
261 "code" =>
"bad_pattern",
262 "title" =>
GetMessage(
"FLT_ERR_BAD_PATTERN"));
280 "code" =>
"empty_data",
281 "title" =>
GetMessage(
"FLT_ERR_DICT_PATT_MISSED"));
282 if (intval(
$arFields[
"DICTIONARY_ID"]) <= 0)
284 "code" =>
"bad_dictionary_id",
285 "title" =>
GetMessage(
"FLT_ERR_DICTIONARY_MISSED"));
291 "code" =>
"empty_id",
292 "title" =>
GetMessage(
"FLT_ERR_ID_NOT_ENTER"));
295 "code" =>
"bad_dictionary_id",
296 "title" =>
GetMessage(
"FLT_ERR_DICTIONARY_MISSED"));
300 "code" =>
"bad_pattern",
310 "code" =>
"already_exists",
324 if(CACHED_b_forum_filter !==
false)
325 $GLOBALS[
"CACHE_MANAGER"]->CleanDir(
"b_forum_filter");
338 return $DB->Add(
"b_forum_filter",
$arFields, Array(
"PATTERN",
"DESCRIPTION"));
346 if(CACHED_b_forum_filter !==
false)
347 $GLOBALS[
"CACHE_MANAGER"]->CleanDir(
"b_forum_filter");
364 if (
$arFields[
"PATTERN_CREATE"] ==
"TRNSL")
379 $strUpdate =
$DB->PrepareUpdate(
"b_forum_filter",
$arFields);
380 $strSql =
"UPDATE b_forum_filter SET ".$strUpdate.
" WHERE ID=".
$ID;
391 if(CACHED_b_forum_filter !==
false)
392 $GLOBALS[
"CACHE_MANAGER"]->CleanDir(
"b_forum_filter");
393 return $DB->Query(
"DELETE FROM b_forum_filter WHERE ID=".
$ID);
400 return $res->Fetch();
406 if (mb_substr(
$key, 0, 1) ==
"!")
412 if (mb_substr(
$key, 0, 2) ==
">=")
415 $strOperation =
">=";
425 $strOperation =
"<=";
435 $strOperation =
"IN";
440 $strOperation =
"LIKE";
446 return array(
"FIELD"=>
$key,
"NEGATIVE"=>$strNegative,
"OPERATION"=>$strOperation);
451 $DICTIONARY_ID_T = intval($DICTIONARY_ID_T);
452 if (!$DICTIONARY_ID_T)
453 $DICTIONARY_ID_T = (COption::GetOptionString(
"forum",
"FILTER_DICT_T",
'', LANGUAGE_ID));
456 $res = CFilterUnquotableWords::GetByID(
$ID);
457 if ((trim(
$res[
"WORDS"]) <>
'') && (
$res[
"PATTERN_CREATE"] ==
"TRNSL")):
466 public static function GenPatternAll($DICTIONARY_ID_W=0, $DICTIONARY_ID_T=0)
468 $DICTIONARY_ID_W = intval($DICTIONARY_ID_W);
469 $DICTIONARY_ID_T = intval($DICTIONARY_ID_T);
470 if (!$DICTIONARY_ID_W)
471 $DICTIONARY_ID_W = (COption::GetOptionString(
"forum",
"FILTER_DICT_W",
'', LANGUAGE_ID));
472 if (!$DICTIONARY_ID_T)
473 $DICTIONARY_ID_T = (COption::GetOptionString(
"forum",
"FILTER_DICT_T",
'', LANGUAGE_ID));
474 if ($DICTIONARY_ID_W):
477 if ((trim(
$res[
"WORDS"]) <>
'') && (
$res[
"PATTERN_CREATE"] ==
"TRNSL")):
491 $NotWord =
"\s.,;:!?\#\-\*\|\[\]\(\)";
492 $word_separator =
"[".$NotWord.
"]";
494 $DICTIONARY_ID = intval($DICTIONARY_ID);
499 if ($DICTIONARY_ID == 0)
500 $DICTIONARY_ID = (COption::GetOptionString(
"forum",
"FILTER_DICT_T",
'', LANGUAGE_ID));
501 elseif ($DICTIONARY_ID < 0)
505 $lettersPatt =
array();
508 while ($lett = $letters->Fetch())
514 $arrRepl = explode(
",", $lett[
"REPLACEMENT"]);
516 for ($ii = 0; $ii <
count($arrRepl); $ii++)
518 $arrRepl[$ii] = trim($arrRepl[$ii]);
519 if (mb_strlen($lett[
"LETTER"]) == 1)
521 if (mb_strlen($arrRepl[$ii]) == 1)
522 $arrRes[$ii] = $arrRepl[$ii].
"+";
523 elseif (mb_substr($arrRepl[$ii], 0, 1) ==
"(" && (mb_substr($arrRepl[$ii], -1, 1) ==
")" || mb_substr($arrRepl[$ii], -2, 1) ==
")"))
525 if (mb_substr($arrRepl[$ii], -1, 1) ==
")")
526 $arrRes[$ii] = $arrRepl[$ii].
"+";
528 $arrRes[$ii] = $arrRepl[$ii];
530 elseif (mb_strlen($arrRepl[$ii]) > 1)
531 $arrRes[$ii] =
"[".$arrRepl[$ii].
"]+";
537 if ($arrRepl[$ii] <>
'')
538 $arrRes[$ii] = $arrRepl[$ii];
542 if (mb_strlen($lett[
"LETTER"]) == 1)
547 $lettPatt[$lett[
"LETTER"]] = implode(
"|", $arrRes);
551 $lettersPatt[
"/".preg_quote($lett[
"LETTER"]).
"/isu"] =
"(".implode(
"|", $arrRes).
")";
555 foreach ($lettersPatt as
$key =>
$val)
557 for ($ii = 0; $ii < mb_strlen(
$pattern); $ii++)
559 $sPattern = mb_substr(
$pattern, $ii, 1);
564 $ord = ord(mb_substr(
$pattern, $ii, 1));
565 if ((48>$ord) || ((64>$ord) and ($ord>57)) || ((97>$ord) and ($ord>90)) || ((127>$ord) and ($ord>122)))
568 $res .=
"[^".$NotWord.
"]*";
570 $res .=
"[^".$NotWord.
"]+";
581 $res =
"/(?<=".$word_separator.
")(".
$res.
")(?=".$word_separator.
")/isu";
593 static $arFilterPattern =
array();
596 $replacement =
array();
598 if (!array_key_exists(LANGUAGE_ID, $arFilterPattern))
600 $cache_id =
"b_forum_filter_".COption::GetOptionInt(
"forum",
"FILTER_DICT_W",
false, LANGUAGE_ID);
601 if (CACHED_b_forum_filter !==
false &&
$CACHE_MANAGER->Read(CACHED_b_forum_filter, $cache_id,
"b_forum_filter"))
608 array(
"USE_IT"=>
"Y",
"DICTIONARY_ID"=>COption::GetOptionInt(
"forum",
"FILTER_DICT_W",
false, LANGUAGE_ID)));
609 $replace = COption::GetOptionString(
"forum",
"FILTER_RPL",
"*");
612 if (trim(
$res[
"PATTERN"]) <>
'' )
614 $arFilterPattern[LANGUAGE_ID][
"pattern"][] = trim(
$res[
"PATTERN"]);
615 $arFilterPattern[LANGUAGE_ID][
"replacement"][] =
$res[
"REPLACEMENT"] <>
'' ?
" ".$res[
"REPLACEMENT"].
" " :
" ".$replace.
" ";
621 if (empty($arFilterPattern[LANGUAGE_ID][
"pattern"])):
625 $pattern = $arFilterPattern[LANGUAGE_ID][
"pattern"];
626 $replacement = $arFilterPattern[LANGUAGE_ID][
"replacement"];
628 ksort(
$pattern); ksort($replacement);
630 switch (COption::GetOptionString(
"forum",
"FILTER_ACTION",
"rpl"))
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
static GetFilterOperation($key)
static Update($ID, $arFields)
static CheckFields($arFields=array(), $ACTION="ADD")
static CheckFields($arFields=array())
static Update($ID, $arFields)
static GetFilterOperation($key)
static CheckPattern($sPattern, &$sError)
static CheckFields($action="INSERT", $ID=false, $arFields=array())
static GenPatternAll($DICTIONARY_ID_W=0, $DICTIONARY_ID_T=0)
static CreatePattern($pattern="", $DICTIONARY_ID=0)
static Update($ID, $arFields)
static GenPattern($ID=false, $DICTIONARY_ID_T=0)
static IsAdmin($userId=false, $arGroups=false)
static GetList($arOrder=array("ID"=>"ASC"), $arFilter=array(), $bCount=false)
static GetList($arOrder=array("ID"=>"ASC"), $arFilter=array(), $bCount=false)
static GetList($arOrder=array("ID"=>"ASC"), $arFilter=array(), $bCount=false)
if(!in_array("BC". $f_USER_ID, $arContra)) endwhile
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
ForumShowError($arError, $bShowErrorCode=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
if(!Loader::includeModule('sale')) $pattern
$GLOBALS['_____370096793']