Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/forum/classes/mysql/ |
Upload File : |
<?php require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/forum/classes/general/filter_dictionary.php"); class CFilterDictionary extends CAllFilterDictionary { public static function GetList($arOrder = array("ID"=>"ASC"), $arFilter = array(), $bCount = false) { global $DB; $arSqlSearch = array(); $strSqlSearch = ""; $arSqlOrder = array(); $strSqlOrder = ""; $arFilter = (is_array($arFilter) ? $arFilter : array()); foreach ($arFilter as $key => $val) { $key_res = CFilterDictionary::GetFilterOperation($key); $key = mb_strtoupper($key_res["FIELD"]); $strNegative = $key_res["NEGATIVE"]; $strOperation = $key_res["OPERATION"]; switch ($key) { case "TYPE": case "TITLE": if ($val == '') $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FD.".$key." IS NULL OR LENGTH(FD.".$key.")<=0)"; else $arSqlSearch[] = ($strNegative=="Y"?" FD.".$key." IS NULL OR NOT ":"")."(FD.".$key." ".$strOperation." '".$DB->ForSql($val)."' )"; break; case "ID": if ($strOperation!="IN") { if (intval($val)<=0) $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FD.ID IS NULL OR FD.ID<=0)"; else $arSqlSearch[] = ($strNegative=="Y"?" FD.ID IS NULL OR NOT ":"")."(FD.ID ".$strOperation." ".intval($val)." )"; } else { if (!is_array($val)) $val = explode(',', $val); $val_int=array(); foreach($val as $v) $val_int[] = intval($v); $val = implode(', ', $val_int); $arSqlSearch[] = ($strNegative=="Y"?" NOT ":"")."(FD.ID IN (".$DB->ForSql($val).") )"; } break; } } if (!empty($arSqlSearch)) $strSqlSearch = "WHERE (".implode(") AND (", $arSqlSearch).")"; foreach ($arOrder as $by => $order) { $by = mb_strtoupper($by); $order = mb_strtoupper($order); if ($order!="ASC") $order = "DESC"; if ($by == "ID") $arSqlOrder[] = " FD.ID ".$order." "; elseif ($by == "TITLE") $arSqlOrder[] = " FD.TITLE ".$order." "; else { $arSqlOrder[] = " FD.ID ".$order." "; $by = "ID"; } } DelDuplicateSort($arSqlOrder); if (!empty($arSqlOrder)) $strSqlOrder = " ORDER BY ".implode(", ", $arSqlOrder); if ($bCount) { $strSql = "SELECT COUNT(FD.ID) as CNT FROM b_forum_dictionary FD ".$strSqlSearch; $db_res = $DB->Query($strSql); $iCnt = 0; if ($ar_res = $db_res->Fetch()) $iCnt = intval($ar_res["CNT"]); return $iCnt; } $strSql = "SELECT FD.ID, FD.TITLE, FD.TYPE FROM b_forum_dictionary FD ".$strSqlSearch.$strSqlOrder; $db_res = $DB->Query($strSql); return $db_res; } } class CFilterLetter extends CAllFilterLetter { public static function GetList($arOrder = array("ID"=>"ASC"), $arFilter = array(), $bCount = false) { global $DB; $arSqlSearch = array(); $strSqlSearch = ""; $arSqlOrder = array(); $strSqlOrder = ""; $arFilter = (is_array($arFilter) ? $arFilter : array()); foreach ($arFilter as $key => $val) { $key_res = CFilterDictionary::GetFilterOperation($key); $key = mb_strtoupper($key_res["FIELD"]); $strNegative = $key_res["NEGATIVE"]; $strOperation = $key_res["OPERATION"]; switch ($key) { case "LETTER": case "REPLACEMENT": if ($val == '') $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FL.".$key." IS NULL OR LENGTH(FL.".$key.")<=0)"; else $arSqlSearch[] = ($strNegative=="Y"?" FL.".$key." IS NULL OR NOT ":"")."(FL.".$key." ".$strOperation." '".$DB->ForSql($val)."' )"; break; case "DICTIONARY_ID": case "ID": if ($strOperation!="IN") { if (intval($val)<=0) $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FL.".$key." IS NULL OR FL.".$key."<=0)"; else $arSqlSearch[] = ($strNegative=="Y"?" FL.".$key." IS NULL OR NOT ":"")."(FL.".$key." ".$strOperation." ".intval($val)." )"; } else { if (!is_array($val)) $val = explode(',', $val); $val_int=array(); foreach($val as $v) $val_int[] = intval($v); $val = implode(', ', $val_int); $arSqlSearch[] = ($strNegative=="Y"?" NOT ":"")."(FL.".$key." IN (".$DB->ForSql($val).") )"; } break; } } if (!empty($arSqlSearch)) $strSqlSearch = " AND (".implode(") AND (", $arSqlSearch).") "; foreach ($arOrder as $by=>$order) { $by = mb_strtoupper($by); $order = mb_strtoupper($order); if ($order!="ASC") $order = "DESC"; if ($by == "ID") $arSqlOrder[] = " FL.ID ".$order." "; elseif ($by == "TITLE") $arSqlOrder[] = " FD.TITLE ".$order." "; elseif ($by == "LETTER") $arSqlOrder[] = " FL.LETTER ".$order." "; elseif ($by == "REPLACEMENT") $arSqlOrder[] = " FL.REPLACEMENT ".$order." "; else { $arSqlOrder[] = " FL.ID ".$order." "; $by = "ID"; } } DelDuplicateSort($arSqlOrder); if (!empty($arSqlOrder)) $strSqlOrder = " ORDER BY ".implode(") AND (", $arSqlOrder); if ($bCount) { $strSql = "SELECT COUNT(FD.ID) as CNT ". "FROM b_forum_letter FL, b_forum_dictionary FD ". "WHERE (FL.DICTIONARY_ID = FD.ID) ". $strSqlSearch; $db_res = $DB->Query($strSql); $iCnt = 0; if ($ar_res = $db_res->Fetch()) $iCnt = intval($ar_res["CNT"]); return $iCnt; } $strSql = "SELECT FL.ID, FL.LETTER, FL.REPLACEMENT, FL.DICTIONARY_ID, FD.TITLE ". "FROM b_forum_letter FL, b_forum_dictionary FD ". "WHERE (FL.DICTIONARY_ID = FD.ID) ". $strSqlSearch. $strSqlOrder; $db_res = $DB->Query($strSql); return $db_res; } } class CFilterUnquotableWords extends CAllFilterUnquotableWords { public static function GetList($arOrder = array("ID"=>"ASC"), $arFilter = array(), $bCount = false) { global $DB; $arSqlSearch = array(); $strSqlSearch = ""; $arSqlOrder = array(); $strSqlOrder = ""; $arFilter = (is_array($arFilter) ? $arFilter : array()); foreach ($arFilter as $key => $val) { $key_res = CFilterUnquotableWords::GetFilterOperation($key); $key = mb_strtoupper($key_res["FIELD"]); $strNegative = $key_res["NEGATIVE"]; $strOperation = $key_res["OPERATION"]; switch ($key) { case "WORDS": case "USE_IT": case "PATTERN": case "REPLACEMENT": case "DESCRIPTION": case "PATTERN_CREATE": if ($val == '') $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FM.".$key." IS NULL OR LENGTH(FM.".$key.")<=0)"; else $arSqlSearch[] = ($strNegative=="Y"?" FM.".$key." IS NULL OR NOT ":"")."(FM.".$key." ".$strOperation." '".$DB->ForSql($val)."' )"; break; case "ID": case "DICTIONARY_ID": if (intval($val)<=0) $arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FM.".$key." IS NULL OR FM.".$key."<=0)"; else { if ($strOperation!="IN") { $arSqlSearch[] = ($strNegative=="Y"?" FM.".$key." IS NULL OR NOT ":"")."(FM.".$key." ".$strOperation." ".intval($val)." )"; } else { if (!is_array($val)) $val = explode(',', $val); $val_int=array(); foreach($val as $v) $val_int[] = intval($v); $val = implode(', ', $val_int); $arSqlSearch[] = ($strNegative=="Y"?" NOT ":"")."(FM.".$key." IN (".$DB->ForSql($val).") )"; } } break; } } if (!empty($arSqlSearch)) $strSqlSearch = " WHERE (".implode(") AND (", $arSqlSearch).")"; foreach ($arOrder as $by=>$order) { $by = mb_strtoupper($by); $order = mb_strtoupper($order); if ($order!="ASC") $order = "DESC"; if ($by == "ID") $arSqlOrder[] = " FM.ID ".$order." "; elseif ($by == "WORDS") $arSqlOrder[] = " FM.WORDS ".$order." "; elseif ($by == "PATTERN") $arSqlOrder[] = " FM.PATTERN ".$order." "; elseif ($by == "REPLACEMENT") $arSqlOrder[] = " FM.REPLACEMENT ".$order." "; elseif ($by == "DESCRIPTION") $arSqlOrder[] = " FM.DESCRIPTION ".$order." "; elseif ($by == "USE_IT") $arSqlOrder[] = " FM.USE_IT ".$order." "; else { $arSqlOrder[] = " FM.ID ".$order." "; $by = "ID"; } } DelDuplicateSort($arSqlOrder); if (!empty($arSqlOrder)) $strSqlOrder = " ORDER BY ".implode(", ", $arSqlOrder); if ($bCount) { $strSql = "SELECT COUNT(FM.ID) as CNT ". "FROM b_forum_filter FM ". $strSqlSearch; $db_res = $DB->Query($strSql); $iCnt = 0; if ($ar_res = $db_res->Fetch()) $iCnt = intval($ar_res["CNT"]); return $iCnt; } $strSql = "SELECT FM.ID, FM.DICTIONARY_ID, FM.WORDS, FM.PATTERN, FM.REPLACEMENT, FM.DESCRIPTION, FM.USE_IT, FM.PATTERN_CREATE ". "FROM b_forum_filter FM ". $strSqlSearch. $strSqlOrder; $db_res = $DB->Query($strSql); return $db_res; } }