• Модуль: support
  • Путь к файлу: ~/bitrix/modules/support/classes/general/support.php
  • Класс: CAllTicket
  • Вызов: CAllTicket::GetFileList
static function GetFileList($by = 's_id', $order = 'asc', $arFilter = [], $checkRights = 'N')
{
	$err_mess = (CAllTicket::err_mess())."
Function: GetFileList
Line: "; global $DB, $USER; $arSqlSearch = Array(); $strSqlSearch = ""; if (is_array($arFilter)) { $filter_keys = array_keys($arFilter); $filterKeysCount = count($filter_keys); for ($i=0; $i<$filterKeysCount; $i++) { $key = $filter_keys[$i]; $val = $arFilter[$filter_keys[$i]]; if ((is_array($val) && count($val)<=0) || (!is_array($val) && ((string) $val == '' || $val==='NOT_REF'))) continue; $match_value_set = (in_array($key."_EXACT_MATCH", $filter_keys)) ? true : false; $key = strtoupper($key); switch($key) { case "LINK_ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("MF.ID",$val,$match); break; case "MESSAGE": case "TICKET_ID": case "FILE_ID": case "HASH": case "MESSAGE_ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("MF.".$key,$val,$match); break; } } } if ($by == "s_id") $strSqlOrder = "ORDER BY MF.ID"; elseif ($by == "s_file_id") $strSqlOrder = "ORDER BY F.ID"; elseif ($by == "s_message_id") $strSqlOrder = "ORDER BY MF.MESSAGE_ID"; else { $strSqlOrder = "ORDER BY MF.ID"; } if ($order=="desc") { $strSqlOrder .= " desc "; } else { $strSqlOrder .= " asc "; } $messageJoin = ''; $ticketJoin = ''; if ($checkRights == 'Y') { $bAdmin = (CTicket::IsAdmin()) ? 'Y' : 'N'; $bSupportTeam = (CTicket::IsSupportTeam()) ? 'Y' : 'N'; $bSupportClient = (CTicket::IsSupportClient()) ? 'Y' : 'N'; $bDemo = (CTicket::IsDemo()) ? 'Y' : 'N'; $uid = intval($USER->GetID()); if ($bAdmin!='Y' && $bSupportTeam!='Y' && $bSupportClient!='Y' && $bDemo!='Y') return false; if (!($bAdmin == 'Y' || $bDemo == 'Y')) { // a list of users who own or are responsible for tickets, which we can show to our current user $ticketUsers = array($uid); // check if user has groups $result = $DB->Query('SELECT GROUP_ID FROM b_ticket_user_ugroup WHERE USER_ID = '.$uid.' AND CAN_VIEW_GROUP_MESSAGES = 'Y''); if ($result) { // collect members of these groups $uGroups = array(); while ($row = $result->Fetch()) { $uGroups[] = $row['GROUP_ID']; } if (!empty($uGroups)) { $result = $DB->Query('SELECT USER_ID FROM b_ticket_user_ugroup WHERE GROUP_ID IN ('.join(',', $uGroups).')'); if ($result) { while ($row = $result->Fetch()) { $ticketUsers[] = $row['USER_ID']; } } } } // build sql $strSqlSearchUser = ""; if($bSupportTeam == 'Y') { $strSqlSearchUser = 'T.RESPONSIBLE_USER_ID IN ('.join(',', $ticketUsers).')'; } elseif ($bSupportClient == 'Y') { $strSqlSearchUser = 'T.OWNER_USER_ID IN ('.join(',', $ticketUsers).')'; } if ($strSqlSearchUser) { $ticketJoin = 'INNER JOIN b_ticket T ON (T.ID = MF.TICKET_ID)'; $arSqlSearch[] = $strSqlSearchUser; } } if ($bSupportTeam!="Y" && $bAdmin!="Y" && $bDemo!='Y') { $messageJoin = 'INNER JOIN b_ticket_message M ON (M.ID = MF.MESSAGE_ID)'; $arSqlSearch[] = "M.IS_HIDDEN='N'"; $arSqlSearch[] = "M.IS_LOG='N'"; } } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $strSql = " SELECT F.*, ".$DB->DateToCharFunction("F.TIMESTAMP_X")." as TIMESTAMP_X, MF.ID as LINK_ID, MF.HASH, MF.MESSAGE_ID, MF.TICKET_ID, MF.EXTENSION_SUFFIX FROM b_ticket_message_2_file MF INNER JOIN b_file F ON (MF.FILE_ID = F.ID) $ticketJoin $messageJoin WHERE $strSqlSearch $strSqlOrder "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); return $res; }