• Модуль: 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; }