%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/support/classes/mysql/ |
Current File : /home/bitrix/www/bitrix/modules/support/classes/mysql/dictionary.php |
<? require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/classes/general/dictionary.php"); class CTicketDictionary extends CAllTicketDictionary { function err_mess() { $module_id = "support"; @include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$module_id."/install/version.php"); return "<br>Module: ".$module_id." <br>Class: CTicketDictionary<br>File: ".__FILE__; } 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); $filterKeysCount = count($filterKeys); for ($i=0; $i<$filterKeysCount; $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 = ", DS.SITE_ID "; 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 = ", U.LOGIN RESPONSIBLE_LOGIN, concat(ifnull(U.NAME,''),' ',ifnull(U.LAST_NAME,'')) RESPONSIBLE_NAME "; $leftJoinUser = "LEFT JOIN b_user U ON (U.ID = D.RESPONSIBLE_USER_ID)"; 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 = " SELECT D.*, D.FIRST_SITE_ID LID, D.ID REFERENCE_ID, D.NAME REFERENCE $select_user FROM b_ticket_dictionary D $leftJoinUser $leftJoinSite WHERE $strSqlSearch GROUP BY D.ID ORDER BY case D.C_TYPE when 'C' then '1' when 'F' then '2' when 'S' then '3' when 'M' then '4' when 'K' then '5' when 'SR' then '6' when 'D' then '7' else '' end, $strSqlOrder "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); $isFiltered = (IsFiltered($strSqlSearch)); return $res; } } ?>