function GetList($arOrder=Array(), $arFilter=Array()) { global $DB; $strSql = "SELECT * ". "FROM b_mail_msg_attachment MA "; $arSqlSearch = Array(); foreach ($arFilter as $key => $val) { $res = CMailUtil::MkOperationFilter($key); $key = strtoupper($res["FIELD"]); $cOperationType = $res["OPERATION"]; if($cOperationType == "?") { if (strlen($val)<=0) continue; switch($key) { case "ID": case "MESSAGE_ID": case "FILE_SIZE": case "IMAGE_WIDTH": case "IMAGE_HEIGHT": $arSqlSearch[] = GetFilterQuery("MA.".$key, $val, "N"); break; case "FILE_NAME": case "FILE_DATA": $arSqlSearch[] = GetFilterQuery("MA.".$key, $val); break; case "CONTENT_TYPE": $arSqlSearch[] = GetFilterQuery("MA.".$key, $val, "Y", array("/")); break; } } else { switch($key) { case "ID": case "MESSAGE_ID": case "FILE_SIZE": case "IMAGE_WIDTH": case "IMAGE_HEIGHT": $arSqlSearch[] = CMailUtil::FilterCreate("MA.".$key, $val, "number", $cOperationType); break; case "FILE_NAME": case "CONTENT_TYPE": case "FILE_DATA": $arSqlSearch[] = CMailUtil::FilterCreate("MA.".$key, $val, "string", $cOperationType); break; } } } $is_filtered = false; $strSqlSearch = ""; for($i = 0, $n = count($arSqlSearch); $i < $n; $i++) { if(strlen($arSqlSearch[$i])>0) { $strSqlSearch .= " AND (".$arSqlSearch[$i].") "; $is_filtered = true; } } $arSqlOrder = Array(); foreach($arOrder as $by=>$order) { $by = strtolower($by); $order = strtolower($order); if ($order!="asc") $order = "desc".(strtoupper($DB->type)=="ORACLE"?" NULLS LAST":""); else $order = "asc".(strtoupper($DB->type)=="ORACLE"?" NULLS FIRST":""); if ($by == "message_id") $arSqlOrder[] = " MA.MESSAGE_ID ".$order." "; elseif ($by == "file_name") $arSqlOrder[] = " MA.FILE_NAME ".$order." "; elseif ($by == "file_size") $arSqlOrder[] = " MA.FILE_SIZE ".$order." "; elseif ($by == "content_type") $arSqlOrder[] = " MA.CONTENT_TYPE ".$order." "; elseif ($by == "image_width") $arSqlOrder[] = " MA.IMAGE_WIDTH ".$order." "; elseif ($by == "image_height") $arSqlOrder[] = " MA.IMAGE_HEIGHT ".$order." "; else $arSqlOrder[] = " MA.ID ".$order." "; } $strSqlOrder = ""; $arSqlOrder = array_unique($arSqlOrder); DelDuplicateSort($arSqlOrder); for ($i = 0, $n = count($arSqlOrder); $i < $n; $i++) { if($i==0) $strSqlOrder = " ORDER BY "; else $strSqlOrder .= ","; $strSqlOrder .= $arSqlOrder[$i]; } $strSql .= " WHERE 1=1 ".$strSqlSearch.$strSqlOrder; //echo "<pre>".$strSql."</pre>"; $dbr = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); $dbr->is_filtered = $is_filtered; return $dbr; }