• Модуль: subscribe
  • Путь к файлу: ~/bitrix/modules/subscribe/classes/general/subscription.php
  • Класс: CSubscriptionGeneral
  • Вызов: CSubscriptionGeneral::GetList
static function GetList($aSort=Array(), $arFilter=Array(), $arNavStartParams=false)
{
	global $DB;
	$arSqlSearch = Array();
	$from1 = "";
	if(is_array($arFilter))
	{
		foreach($arFilter as $key => $val)
		{
			if(!is_array($val))
			{
				if( ((string)$val == '') || ($val === "NOT_REF") )
					continue;
			}
			switch(strtoupper($key))
			{
				case "ID":
					$arSqlSearch[] = GetFilterQuery("S.ID", $val, "N");
					break;
				case "EMAIL":
					$arSqlSearch[] = GetFilterQuery("S.EMAIL", $val, "Y", array("@", ".", "_"));
					break;
				case "UPDATE_1":
					$arSqlSearch[] = "S.DATE_UPDATE>=".$DB->CharToDateFunction($val);
					break;
				case "UPDATE_2":
					$arSqlSearch[] = "S.DATE_UPDATE<=".$DB->CharToDateFunction($val." 23:59:59");
					break;
				case "INSERT_1":
					$arSqlSearch[] = "S.DATE_INSERT>=".$DB->CharToDateFunction($val);
					break;
				case "INSERT_2":
					$arSqlSearch[] = "S.DATE_INSERT<=".$DB->CharToDateFunction($val." 23:59:59");
					break;
				case "USER":
					$arSqlSearch[] = GetFilterQuery("U.ID, U.LOGIN, U.NAME, U.LAST_NAME", $val);
					break;
				case "USER_ID":
					$arSqlSearch[] = GetFilterQuery("S.USER_ID", $val, "N");
					break;
				case "ANONYMOUS":
					$arSqlSearch[] = ($val == "Y")? "(S.USER_ID = 0 or S.USER_ID is null)" : "(S.USER_ID > 0 and S.USER_ID is not null)";
					break;
				case "CONFIRMED":
					$arSqlSearch[] = ($val == "Y")? "S.CONFIRMED='Y'" : "S.CONFIRMED='N'";
					break;
				case "ACTIVE":
					$arSqlSearch[] = ($val == "Y")? "S.ACTIVE='Y'" : "S.ACTIVE='N'";
					break;
				case "FORMAT":
					$arSqlSearch[] = ($val == "text")? "S.FORMAT='text'" : "S.FORMAT='html'";
					break;
				case "RUBRIC":
				case "RUBRIC_MULTI":
				case "DISTRIBUTION":
					if(is_array($val))
					{
						$val = implode(" | ", $val);
					}
					if($val <> '')
					{
						$from1 = " INNER JOIN b_subscription_rubric SR ON (SR.SUBSCRIPTION_ID=S.ID) ";
						$arSqlSearch[] = GetFilterQuery("SR.LIST_RUBRIC_ID", $val, "N");
					}
					else
					{
						$arSqlSearch[] = " 1=0 ";
					}
					break;
			}
		}
	}
	$strSqlSearch = GetFilterSqlSearch($arSqlSearch);

	$arOrder = array();
	foreach($aSort as $by => $ord)
	{
		$by = mb_strtoupper($by);
		$ord = (mb_strtoupper($ord) <> "ASC"? "DESC": "ASC");
		switch($by)
		{
			case "ID":		$arOrder[$by] = "S.ID ".$ord; break;
			case "DATE_INSERT":	$arOrder[$by] = "S.DATE_INSERT ".$ord; break;
			case "DATE_UPDATE":	$arOrder[$by] = "S.DATE_UPDATE ".$ord; break;
			case "DATE_CONFIRM":	$arOrder[$by] = "S.DATE_CONFIRM ".$ord; break;
			case "ACT":		$arOrder[$by] = "S.ACTIVE ".$ord; break;
			case "CONF":		$arOrder[$by] = "S.CONFIRMED ".$ord; break;
			case "EMAIL":		$arOrder[$by] = "S.EMAIL ".$ord; break;
			case "FMT":		$arOrder[$by] = "S.FORMAT ".$ord; break;
			case "USER":		$arOrder[$by] = "S.USER_ID ".$ord; break;
			case "CONFIRM_CODE":	$arOrder[$by] = "S.CONFIRM_CODE ".$ord; break;
		}
	}
	if(count($arOrder) <= 0)
		$arOrder["ID"] = "S.ID DESC";

	if(is_array($arNavStartParams))
	{

		$strSql = "
			SELECT count(".($from1 <> ""? "DISTINCT S.ID": "'x'").") as C
			FROM
				b_subscription S
				LEFT JOIN b_user U ON (S.USER_ID=U.ID)
				$from1
			WHERE
			".$strSqlSearch;

		$res_cnt = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); $res_cnt = $res_cnt->Fetch(); $cnt = $res_cnt["C"]; $strSql = " SELECT S.ID, S.USER_ID, S.ACTIVE, S.EMAIL, S.FORMAT, S.CONFIRM_CODE, S.CONFIRMED, ".$DB->DateToCharFunction("S.DATE_UPDATE")." DATE_UPDATE, ".$DB->DateToCharFunction("S.DATE_INSERT")." DATE_INSERT, ".$DB->DateToCharFunction("S.DATE_CONFIRM")." DATE_CONFIRM, U.LOGIN USER_LOGIN, U.NAME USER_NAME, U.LAST_NAME USER_LAST_NAME FROM b_subscription S LEFT JOIN b_user U ON (S.USER_ID=U.ID) $from1 WHERE $strSqlSearch ".($from1 <> ""? "GROUP BY S.ID, S.USER_ID, S.ACTIVE, S.EMAIL, S.FORMAT, S.CONFIRM_CODE, S.CONFIRMED, S.DATE_CONFIRM, S.DATE_UPDATE, S.DATE_INSERT, U.LOGIN, U.NAME, U.LAST_NAME": "" )." ORDER BY ".implode(", ", $arOrder); $res = new CDBResult(); $res->NavQuery($strSql, $cnt, $arNavStartParams); $res->is_filtered = (IsFiltered($strSqlSearch)); return $res; } else { $strSql = " SELECT S.ID, S.USER_ID, S.ACTIVE, S.EMAIL, S.FORMAT, S.CONFIRM_CODE, S.CONFIRMED, ".$DB->DateToCharFunction("S.DATE_UPDATE")." DATE_UPDATE, ".$DB->DateToCharFunction("S.DATE_INSERT")." DATE_INSERT, ".$DB->DateToCharFunction("S.DATE_CONFIRM")." DATE_CONFIRM, U.LOGIN USER_LOGIN, U.NAME USER_NAME, U.LAST_NAME USER_LAST_NAME FROM b_subscription S LEFT JOIN b_user U ON (S.USER_ID=U.ID) $from1 WHERE $strSqlSearch ".($from1 <> ""? "GROUP BY S.ID, S.USER_ID, S.ACTIVE, S.EMAIL, S.FORMAT, S.CONFIRM_CODE, S.CONFIRMED, S.DATE_CONFIRM, S.DATE_UPDATE, S.DATE_INSERT, U.LOGIN, U.NAME, U.LAST_NAME": "" )." ORDER BY ".implode(", ", $arOrder); $res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); $res->is_filtered = (IsFiltered($strSqlSearch)); return $res; } }