function GetList(&$by, &$order, $arFilter = array(), &$isFiltered) { $err_mess = CTicketDictionary::err_mess() . "<br>Function: GetList<br>Line: "; global $DB; $arSqlSearch = array(); $strSqlSearch = ""; $leftJoinSite = ""; $leftJoinUser = ""; if (is_array($arFilter)) { $filterKeys = array_keys($arFilter); for ($i = 0; $i < count($filterKeys); $i++) { $key = $filterKeys[$i]; $val = $arFilter[$filterKeys[$i]]; if (is_array($val) && count($val) <= 0 || !is_array($val) && (strlen($val) <= 0 || $val === 'NOT_REF')) { continue; } $match_value_set = in_array($key . "_EXACT_MATCH", $filterKeys) ? true : false; $key = strtoupper($key); switch ($key) { case "ID": case "SID": if (is_array($val)) { $val = implode(" | ", $val); } $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("D." . $key, $val, $match); break; case "SITE": if (is_array($val)) { $val = implode(" | ", $val); } $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("DS.SITE_ID", $val, $match); $leftJoinSite .= "LEFT JOIN b_ticket_dictionary_2_site DS ON (D.ID = DS.DICTIONARY_ID)"; $select_user = "******"; break; case "TYPE": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("D.C_TYPE", $val, $match); break; case "NAME": case "DESCR": $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("D." . $key, $val, $match); break; case "RESPONSIBLE_ID": if (intval($val) > 0) { $arSqlSearch[] = "D.RESPONSIBLE_USER_ID = '" . intval($val) . "'"; } elseif ($val == 0) { $arSqlSearch[] = "(D.RESPONSIBLE_USER_ID is null or D.RESPONSIBLE_USER_ID=0)"; } break; case "RESPONSIBLE": $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("D.RESPONSIBLE_USER_ID, U.LOGIN, U.LAST_NAME, U.NAME", $val, $match); $select_user = "******"; $leftJoinUser = "******"; break; case "DEFAULT": $arSqlSearch[] = $val == "Y" ? "D.SET_AS_DEFAULT='Y'" : "D.SET_AS_DEFAULT='N'"; break; case "LID": case "FIRST_SITE_ID": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("D.FIRST_SITE_ID", $val, $match); break; } } } if ($by == "s_id") { $strSqlOrder = "D.ID"; } elseif ($by == "s_c_sort") { $strSqlOrder = "D.C_SORT"; } elseif ($by == "s_sid") { $strSqlOrder = "D.SID"; } elseif ($by == "s_lid") { $strSqlOrder = "D.FIRST_SITE_ID"; } elseif ($by == "s_name") { $strSqlOrder = "D.NAME"; } elseif ($by == "s_responsible") { $strSqlOrder = "D.RESPONSIBLE_USER_ID"; } elseif ($by == "s_dropdown") { $strSqlOrder = "D.C_SORT, D.ID, D.NAME"; } else { $by = "s_c_sort"; $strSqlOrder = "D.C_SORT"; } if ($order != "desc") { $strSqlOrder .= " asc "; $order = "asc"; } else { $strSqlOrder .= " desc "; $order = "desc"; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $strSql = "\n\t\t\tSELECT\n\t\t\t\tD.*,\n\t\t\t\tD.FIRST_SITE_ID\t\t\t\t\t\tLID,\n\t\t\t\tD.ID\t\t\t\t\t\t\t\tREFERENCE_ID,\n\t\t\t\tD.NAME\t\t\t\t\t\t\t\tREFERENCE\n\t\t\t\t{$select_user}\n\t\t\tFROM\n\t\t\t\tb_ticket_dictionary D\n\t\t\t{$leftJoinUser}\n\t\t\t{$leftJoinSite}\n\t\t\tWHERE\n\t\t\t{$strSqlSearch}\n\t\t\tGROUP BY\n\t\t\t\tD.ID\n\t\t\tORDER BY\n\t\t\t\tcase D.C_TYPE\n\t\t\t\t\twhen 'C'\tthen '1'\n\t\t\t\t\twhen 'F'\tthen '2'\n\t\t\t\t\twhen 'S'\tthen '3'\n\t\t\t\t\twhen 'M'\tthen '4'\n\t\t\t\t\twhen 'K'\tthen '5'\n\t\t\t\t\twhen 'SR'\tthen '6'\n\t\t\t\t\twhen 'D'\tthen '7'\n\t\t\t\t\telse ''\tend,\n\t\t\t{$strSqlOrder}\n\t\t\t"; $res = $DB->Query($strSql, false, $err_mess . __LINE__); $isFiltered = IsFiltered($strSqlSearch); return $res; }