- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/classes/general/mail.php
- Класс: CMailAttachment
- Вызов: CMailAttachment::GetList
static 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 = mb_strtoupper($res["FIELD"]);
$cOperationType = $res["OPERATION"];
if($cOperationType == "?")
{
if ($val == '') 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($arSqlSearch[$i] <> '')
{
$strSqlSearch .= " AND (".$arSqlSearch[$i].") ";
$is_filtered = true;
}
}
$arSqlOrder = Array();
foreach($arOrder as $by=>$order)
{
$by = mb_strtolower($by);
$order = mb_strtolower($order);
if ($order!="asc")
$order = "desc".($DB->type == "ORACLE"?" NULLS LAST":"");
else
$order = "asc".($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 "".$strSql."
«;
$dbr = $DB->Query($strSql, false, «File: «.__FILE__.»
Line: «.__LINE__);
$dbr = new _CMailAttachmentDBRes($dbr);
$dbr->is_filtered = $is_filtered;
return $dbr;
}