'' && !CheckDateTime($date1)) $date1_wrong = "Y"; if ($date2 <> '' && !CheckDateTime($date2)) $date2_wrong = "Y"; if ($date1_wrong!="Y" && $date2_wrong!="Y" && $date1 <> '' && $date2 <> '' && $DB->CompareDates($date2,$date1)<0) $date2_less_date1="Y"; } function InitFilterEx($arName, $varName, $action="set", $session=true, $FilterLogic="FILTER_logic") { $sessAdmin = Application::getInstance()->getSession()["SESS_ADMIN"]; if ($session && isset($sessAdmin[$varName]) && is_array($sessAdmin[$varName])) { $FILTER = $sessAdmin[$varName]; } else { $FILTER = []; } global $$FilterLogic; if ($action=="set") { $FILTER[$FilterLogic] = $$FilterLogic; } else { $$FilterLogic = ($FILTER[$FilterLogic] ?? ''); } for($i=0, $n=count($arName); $i < $n; $i++) { $name = $arName[$i]; $period = $arName[$i]."_FILTER_PERIOD"; $direction = $arName[$i]."_FILTER_DIRECTION"; $bdays = $arName[$i]."_DAYS_TO_BACK"; global $$name, $$direction, $$period, $$bdays; if ($action=="set") { $FILTER[$name] = $$name; if(isset($$period) || isset($FILTER[$period])) $FILTER[$period] = $$period; if(isset($$direction) || isset($FILTER[$direction])) $FILTER[$direction] = $$direction; if(isset($$bdays) || isset($FILTER[$bdays])) { $FILTER[$bdays] = $$bdays; if ((string)$$bdays <> '' && $$bdays!="NOT_REF") $$name = GetTime(time()-86400*intval($FILTER[$bdays])); } } else { $$name = $FILTER[$name] ?? null; if(isset($$period) || isset($FILTER[$period])) $$period = $FILTER[$period]; if(isset($$direction) || isset($FILTER[$direction])) $$direction = $FILTER[$direction]; if (isset($FILTER[$bdays]) && (string)$FILTER[$bdays] <> '' && $FILTER[$bdays]!="NOT_REF") { $$bdays = $FILTER[$bdays]; $$name = GetTime(time()-86400*intval($FILTER[$bdays])); } } } if($session) { if(!is_array(Application::getInstance()->getSession()["SESS_ADMIN"])) Application::getInstance()->getSession()->set("SESS_ADMIN", []); Application::getInstance()->getSession()["SESS_ADMIN"][$varName] = $FILTER; } } function DelFilterEx($arName, $varName, $session=true, $FilterLogic="FILTER_logic") { global $$FilterLogic; if ($session) unset(Application::getInstance()->getSession()["SESS_ADMIN"][$varName]); foreach ($arName as $name) { $period = $name."_FILTER_PERIOD"; $direction = $name."_FILTER_DIRECTION"; $bdays = $name."_DAYS_TO_BACK"; global $$name, $$period, $$direction, $$bdays; $$name = ""; $$period =""; $$direction = ""; $$bdays = ""; } $$FilterLogic = "and"; } function InitFilter($arName) { $md5Path = md5(GetPagePath()); $FILTER = Application::getInstance()->getSession()->get("SESS_ADMIN")[$md5Path]; foreach ($arName as $name) { global $$name; if(isset($$name)) $FILTER[$name] = $$name; else $$name = $FILTER[$name]; } Application::getInstance()->getSession()->get("SESS_ADMIN")[$md5Path] = $FILTER; } function DelFilter($arName) { $md5Path = md5(GetPagePath()); unset(Application::getInstance()->getSession()->get("SESS_ADMIN")[$md5Path]); foreach ($arName as $name) { global $$name; $$name = ""; } } function GetFilterHiddens($var = "filter_", $button = array("filter" => "Y", "set_filter" => "Y")) { $res = ''; // если поступил не массив имен переменных то $arrVars = []; if (!is_array($var)) { // получим имена переменных фильтра по префиксу $arKeys = @array_merge(array_keys($_GET), array_keys($_POST)); if (is_array($arKeys) && !empty($arKeys)) { $len = mb_strlen($var); foreach (array_unique($arKeys) as $key) { if (mb_substr($key, 0, $len) == $var) { $arrVars[] = $key; } } } } else { $arrVars = $var; } // если получили массив переменных фильтра то if (is_array($arrVars) && !empty($arrVars)) { // соберем строку из URL параметров foreach ($arrVars as $var_name) { global $$var_name; $value = $$var_name; if (is_array($value)) { foreach($value as $v) { $res .= ''; } } elseif ((string)$value <> '' && $value!="NOT_REF") { $res .= ''; } } } if(is_array($button)) { foreach($button as $key => $val) { $res.=''; } } else { $res .= $button; } return $res; } function GetFilterParams($var="filter_", $bDoHtmlEncode=true, $button = array("filter" => "Y", "set_filter" => "Y")) { $arrVars = array(); // массив имен переменных фильтра $res=""; // результирующая строка // если поступил не массив имен переменных то if(!is_array($var)) { // получим имена переменных фильтра по префиксу $arKeys = @array_merge(array_keys($_GET), array_keys($_POST)); if(is_array($arKeys) && !empty($arKeys)) { $len = mb_strlen($var); foreach (array_unique($arKeys) as $key) if (mb_substr($key, 0, $len) == $var) $arrVars[] = $key; } } else $arrVars = $var; // если получили массив переменных фильтра то if(is_array($arrVars) && !empty($arrVars)) { // соберем строку из URL параметров foreach($arrVars as $var_name) { global $$var_name; $value = $$var_name; if(is_array($value)) { foreach($value as $v) $res .= "&".urlencode($var_name)."[]=".urlencode($v); } elseif((string)$value <> '' && $value!="NOT_REF") { $res .= "&".urlencode($var_name)."=".urlencode($value); } } } if(is_array($button)) { foreach($button as $key => $val) { $res .= "&".$key."=".urlencode($val); } } else { $res .= $button; } $tmp_phpbug = ($bDoHtmlEncode) ? htmlspecialcharsbx($res) : $res; return $tmp_phpbug; //return ($bDoHtmlEncode) ? htmlspecialcharsbx($res) : $res; } // устаревшая функция, оставлена для совместимости function GetFilterStr($arr, $button="set_filter") { foreach ($arr as $var) { global $$var; $value = $$var; if (is_array($value)) { if (!empty($value)) { foreach($value as $v) { $str .= "&".urlencode($var)."[]=".urlencode($v); } } } elseif ((string)$value <> '' && $value!="NOT_REF") { $str .= "&".urlencode($var)."=".urlencode($value); } } return $str."&".$button."=Y"; } function ShowExactMatchCheckbox($name, $title=false) { $var = $name."_exact_match"; global $$var; if ($title===false) $title=GetMessage("MAIN_EXACT_MATCH"); return ''.InputType("checkbox", $name."_exact_match", "Y", $$var, false, "", "title='".$title."'"); } function GetUrlFromArray($arr) { if(!is_array($arr)) return ""; $str = ""; foreach($arr as $key => $value) { if (is_array($value)) { foreach ($value as $a) { $str .= "&".$key.urlencode("[]")."=".urlencode($a); } } elseif((string)$value <> '' && $value!="NOT_REF") { $str .= "&".$key."=".urlencode($value); } } return $str; } function ShowAddFavorite($filterName=false, $btnName="set_filter", $module="statistic", $alt=false) { global $QUERY_STRING, $SCRIPT_NAME, $sFilterID; if ($alt===false) $alt=GetMessage("MAIN_ADD_TO_FAVORITES"); if ($filterName===false) $filterName = $sFilterID; $url = urlencode($SCRIPT_NAME."?".$QUERY_STRING. GetUrlFromArray(Application::getInstance()->getSession()["SESS_ADMIN"][$filterName])."&".$btnName."=Y"); $str = "".$alt.""; echo $str; } function IsFiltered($strSqlSearch) { return ($strSqlSearch <> '' && $strSqlSearch!="(1=1)" && $strSqlSearch!="(1=2)"); } function ResetFilterLogic($FilterLogic="FILTER_logic") { $var = $FilterLogic."_reset"; global $$var; $$var = "Y"; } function ShowFilterLogicHelp() { global $LogicHelp; $str = ""; if(LANGUAGE_ID == "ru") $help_link = "https://dev.1c-bitrix.ru/api_help/main/general/filter.php"; else $help_link = "http://www.bitrixsoft.com/help/index.html?page=".urlencode("source/main/help/en/filter.php.html"); if ($LogicHelp != "Y") { $str = ""; } $str .= ""; $LogicHelp = "Y"; return $str; } function ShowLogicRadioBtn($FilterLogic="FILTER_logic") { global $$FilterLogic; $s_and = "checked"; if ($$FilterLogic=="or") { $s_or = "checked"; $s_and = ""; } $str = "".GetMessage("FILTER_LOGIC")."".GetMessage("AND")." ".GetMessage("OR").""; return $str; } function GetFilterQuery($field, $val, $procent="Y", $ex_sep=array(), $clob="N", $div_fields="Y", $clob_upper="N") { global $strError; $f = new CFilterQuery("and", "yes", $procent, $ex_sep, $clob, $div_fields, $clob_upper); $query = $f->GetQueryString($field, $val); $error = $f->error; if (trim($error) <> '') { $strError .= $error."
"; $query = "0"; } return $query; } function GetFilterSqlSearch($arSqlSearch=array(), $FilterLogic="FILTER_logic") { $var = $FilterLogic."_reset"; global $strError, $$FilterLogic, $$var; $ResetFilterLogic = $$var; $$FilterLogic = ($$FilterLogic=="or") ? "or" : "and"; if($ResetFilterLogic=="Y" && $$FilterLogic=="or") { $$FilterLogic = "and"; $strError .= GetMessage("FILTER_ERROR_LOGIC")."
"; } if($$FilterLogic=="or") $strSqlSearch = "1=2"; else $strSqlSearch = "1=1"; if (is_array($arSqlSearch) && !empty($arSqlSearch)) { foreach ($arSqlSearch as $condition) { if ($condition <> '' && $condition!="0") { $strSqlSearch .= " ".mb_strtoupper($$FilterLogic)." ( ".$condition." ) "; } } } return "($strSqlSearch)"; } $bFilterScriptShown = false; $sFilterID = ""; function BeginFilter($sID, $bFilterSet, $bShowStatus=true) { global $bFilterScriptShown, $sFilterID; $sFilterID = $sID; $s = ""; if(!$bFilterScriptShown) { $s .= ' '; $bFilterScriptShown = true; } parse_str($_COOKIE["flts"], $arFlts); if(is_set($arFlts, $sID)) { $fltval = $arFlts[$sID]; if(is_set($_COOKIE, "flt_".$sID)) unset($_COOKIE["flt_".$sID]); } else $fltval = $_COOKIE["flt_".$sID]; $s .= '
'; if($bShowStatus) { $s .= ' '; } else { $s .= ' '; } $s .= '
  '.($bFilterSet? GetMessage("admin_filter_filter_set"):GetMessage("admin_filter_filter_not_set")).'      '.GetMessage(
'; return $s; } function EndFilter($sID="") { global $sFilterID; if($sID == "") $sID = $sFilterID; $s = '
'; parse_str($_COOKIE["flts"], $arFlts); if(is_set($arFlts, $sID)) $fltval = $arFlts[$sID]; else $fltval = $_COOKIE["flt_".$sID]; if($fltval[0]<>"Y") $s .= ''."\n"; return $s; } function BeginNote($sParams="") { if (defined("PUBLIC_MODE") && PUBLIC_MODE == 1) { \Bitrix\Main\UI\Extension::load("ui.alerts"); return '
'; } else { return '
'; } } function EndNote() { return '
'; } function ShowSubMenu($aMenu) { $s = '
'; return $s; } /********************************************************************* Сортировка *********************************************************************/ function InitSorting($Path=false, $sByVar="by", $sOrderVar="order") { global $APPLICATION, $$sByVar, $$sOrderVar; if($Path===false) $Path = $APPLICATION->GetCurPage(); $md5Path = md5($Path); if ($$sByVar <> '') Application::getInstance()->getSession()["SESS_SORT_BY"][$md5Path] = $$sByVar; else $$sByVar = Application::getInstance()->getSession()["SESS_SORT_BY"][$md5Path]; if($$sOrderVar <> '') Application::getInstance()->getSession()["SESS_SORT_ORDER"][$md5Path] = $$sOrderVar; else $$sOrderVar = Application::getInstance()->getSession()["SESS_SORT_ORDER"][$md5Path]; mb_strtolower($$sByVar); mb_strtolower($$sOrderVar); } function SortingEx($By, $Path = false, $sByVar="by", $sOrderVar="order", $Anchor="nav_start") { global $APPLICATION; $sImgDown = "\"".GetMessage("ASC_ORDER")."\""; $sImgUp = "\"".GetMessage("DESC_ORDER")."\""; global $$sByVar, $$sOrderVar; $by=$$sByVar; $order=$$sOrderVar; if(mb_strtoupper($By) == mb_strtoupper($by)) { if(mb_strtoupper($order) == "DESC") $sImgUp = "\"".GetMessage("DESC_ORDER")."\""; else $sImgDown = "\"".GetMessage("ASC_ORDER")."\""; } //Если путь не задан, то будем брать текущий со всеми переменными if($Path===false) $Path = $APPLICATION->GetCurUri(); //Если нет переменных, то надо добавлять параметры через ? $found = mb_strpos($Path, "?"); if ($found === false) $strAdd2URL = "?"; else $strAdd2URL = "&"; $Path = preg_replace("/([?&])".$sByVar."=[^&]*[&]*/i", "\\1", $Path); $Path = preg_replace("/([?&])".$sOrderVar."=[^&]*[&]*/i", "\\1", $Path); $strTest = mb_substr($Path, mb_strlen($Path) - 1); if($strTest=="&" OR $strTest == "?") $strAdd2URL=""; return "".$sImgDown."". "".$sImgUp.""; }?>