Beispiel #1
0
	function GetList($aSort = array(), $aFilter = array(), $limit = '', $count = false, $isFullList = false)
	{
		global $DB;

		$groupBy = " GROUP BY prmedia_treelike_comments.ID ";
		if ($aFilter['OBJECT_ID_UNIQUE'] === true)
		{
			unset($aFilter['OBJECT_ID_UNIQUE']);
			$groupBy = ' GROUP BY OBJECT_ID ';
		}

		if (intval($limit) > 0)
			$limit = " LIMIT 0, " . $limit;
		else
			$limit = "";

		$arHaving = array();

		foreach ($aFilter as $key => $val)
		{
			$val = $DB->ForSql($val);

			$key_res = CTreelikeComments::GetFilterOperation($key);
			$key = $key_res["FIELD"];
			$strNegative = $key_res["NEGATIVE"];
			$strOperation = $key_res["OPERATION"];

			if ($key == 'PARENT_ID')
			{
				if (intval($val) == 0)
					$arFilter[] = "prmedia_treelike_comments.PARENT_ID IS NULL";
				else
					$arFilter[] = "prmedia_treelike_comments.PARENT_ID=" . intval($val);

				continue;
			}

			if (strlen($val) <= 0)
				continue;
			switch (strtoupper($key))
			{
				case "ID":
					$arFilter[] = "prmedia_treelike_comments.ID = '" . $val . "'";
					break;
				case "PARENT_ID":
					$arFilter[] = "prmedia_treelike_comments.PARENT_ID = '" . $val . "'";
					break;

				case "OBJECT_ID":
					$arFilter[] = "b_iblock_element.NAME LIKE '%" . $val . "%'";
					break;

				case "IBLOCK_ID":
					$arFilter[] = "b_iblock_element.IBLOCK_ID IN (" . $val . ")";
					break;

				case "OBJECT_ID_NUMBER":
					$arFilter[] = "prmedia_treelike_comments.OBJECT_ID = '" . $val . "'";
					break;

				case "DATE":
					$arFilter[] = "DATE_FORMAT(prmedia_treelike_comments.DATE, '%d.%m.%Y') = '" . $val . "'";
					break;

				case "COMMENT":
					$arFilter[] = "prmedia_treelike_comments.COMMENT LIKE '%" . $val . "%'";
					break;

				case "USER_ID":
					$arFilter[] = "prmedia_treelike_comments.USER_ID='" . $val . "'";
					break;

				case "UP":
				case "DOWN":

					if ($strNegative == "Y")
						$strOperation = "!=";
					$arHaving[] = $key . " " . $strOperation . " " . $val;

					break;

				case "ACTIVATED":
					$arFilter[] = "ACTIVATED = '" . $val . "'";
					break;

				case "AUTHOR_NAME":
					$arFilter[] = "(prmedia_treelike_comments.AUTHOR_NAME LIKE '%" . $val . "%' OR b_user.LOGIN LIKE '%" . $val . "%' OR b_user.NAME LIKE '%" . $val . "%' OR b_user.LAST_NAME LIKE '%" . $val . "%')";
					break;

				case "IP":
					$arFilter[] = "prmedia_treelike_comments.REMOTE_ADDR = '" . $val . "'";
					break;

				case "EMAIL":
					$arFilter[] = "(prmedia_treelike_comments.EMAIL LIKE '%" . $val . "%' OR b_user.EMAIL LIKE '%" . $val . "%')";
					break;

				case "SITE_ID":
					$arFilter[] = "SITE_ID = '" . $val . "'";
					break;

				case "DATE_MODIFY":
					$arFilter[] = "DATE_FORMAT(prmedia_treelike_comments.DATE_MODIFY, '%d.%m.%Y') = '" . $val . "'";
					break;

				case "REMOTE_ADDR":
					$arFilter[] = "REMOTE_ADDR = '" . $val . "'";
					break;
			}
		}

		$arOrder = array();
		foreach ($aSort as $key => $val)
		{
			$ord = (strtoupper($val) <> "ASC" ? "DESC" : "ASC");
			switch (strtoupper($key))
			{

				case "ID":
					$arOrder[] = "prmedia_treelike_comments.ID " . $ord;
					break;
				case "PARENT_ID":
					$arOrder[] = "prmedia_treelike_comments.PARENT_ID " . $ord;
					break;

				case "OBJECT_ID":
					$arOrder[] = "b_iblock_element.NAME " . $ord;
					break;

				case "DATE":
					$arOrder[] = "prmedia_treelike_comments.DATE " . $ord;
					break;

				case "COMMENT":
					$arOrder[] = "prmedia_treelike_comments.COMMENT " . $ord;
					break;

				case "USER_ID":
					$arOrder[] = "prmedia_treelike_comments.USER_ID " . $ord;
					break;

				case "ACTIVATED":
					$arOrder[] = "prmedia_treelike_comments.ACTIVATED " . $ord;
					break;

				case "AUTHOR_NAME":
					$arOrder[] = "prmedia_treelike_comments.AUTHOR_NAME " . $ord;
					break;

				case "REMOTE_ADDR":
					$arOrder[] = "prmedia_treelike_comments.REMOTE_ADDR " . $ord;
					break;

				case "EMAIL":
					$arOrder[] = "prmedia_treelike_comments.EMAIL " . $ord;
					break;

				case "SITE_ID":
					$arOrder[] = "prmedia_treelike_comments.SITE_ID " . $ord;
					break;

				case "DATE_MODIFY":
					$arOrder[] = "prmedia_treelike_comments.DATE_MODIFY " . $ord;
					break;
			}
		}
		if (count($arOrder) == 0)
			$arOrder[] = "prmedia_treelike_comments.ID DESC";
		$sOrder = "\nORDER BY " . implode(", ", $arOrder);

		if (count($arFilter) == 0)
			$sFilter = "";
		else
			$sFilter = "\nWHERE " . implode("\nAND ", $arFilter);

		if (count($arHaving) == 0)
			$arHaving = "";
		else
			$arHaving = "\nHAVING " . implode("\nAND ", $arHaving);

		if (!$count)
		{

			if (!$isFullList)
			{
				$strSql = "
						SELECT
							prmedia_treelike_comments.ID, prmedia_treelike_comments.PARENT_ID, prmedia_treelike_comments.OBJECT_ID,
							DATE_FORMAT(prmedia_treelike_comments.DATE, '%d.%m.%Y %H:%i') AS NEW_DATE, prmedia_treelike_comments.COMMENT,
							DATE_FORMAT(prmedia_treelike_comments.DATE_MODIFY, '%d.%m.%Y %H:%i') AS DATE_MODIFY,
							prmedia_treelike_comments.USER_ID, prmedia_treelike_comments.ACTIVATED, prmedia_treelike_comments.AUTHOR_NAME,
							prmedia_treelike_comments.REMOTE_ADDR, prmedia_treelike_comments.SITE_ID, b_iblock_element.NAME, b_iblock_element.IBLOCK_ID,
							b_user.LOGIN, b_user.EMAIL, b_user.NAME, b_user.LAST_NAME, b_user.PERSONAL_PHOTO
						FROM
							prmedia_treelike_comments
						LEFT JOIN b_iblock_element ON OBJECT_ID = b_iblock_element.ID
						LEFT JOIN b_user ON USER_ID = b_user.ID

						" . $sFilter . " "
					. $groupBy
					. $arHaving
					. $sOrder
					. $limit;
			} else
			{
				$strSql = "
						SELECT
							prmedia_treelike_comments.ID, prmedia_treelike_comments.PARENT_ID, prmedia_treelike_comments.OBJECT_ID,
							DATE_FORMAT(prmedia_treelike_comments.DATE, '%d.%m.%Y %H:%i') AS NEW_DATE, prmedia_treelike_comments.COMMENT,
							DATE_FORMAT(prmedia_treelike_comments.DATE_MODIFY, '%d.%m.%Y %H:%i') AS DATE_MODIFY,
							prmedia_treelike_comments.USER_ID, prmedia_treelike_comments.ACTIVATED, prmedia_treelike_comments.AUTHOR_NAME,
							prmedia_treelike_comments.REMOTE_ADDR, prmedia_treelike_comments.SITE_ID, b_iblock_element.NAME, b_user.LOGIN,
							b_user.EMAIL, b_user.NAME, b_user.LAST_NAME, b_user.PERSONAL_PHOTO
						FROM
							prmedia_treelike_comments
						LEFT JOIN b_iblock_element ON OBJECT_ID = b_iblock_element.ID
						LEFT JOIN b_user ON USER_ID = b_user.ID
						" . $sFilter . " "
					. $groupBy
					. $arHaving
					. $sOrder
					. $limit;
			}

			return $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
		} else
		{
			$strSql = "
				SELECT
					COUNT(prmedia_treelike_comments.ID) as C
				FROM
					prmedia_treelike_comments LEFT JOIN b_iblock_element ON OBJECT_ID = b_iblock_element.ID LEFT JOIN b_user ON USER_ID = b_user.ID
				" . $sFilter . $sOrder . $limit;

			$res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);

			$res_cnt = $res->Fetch();
			return IntVal($res_cnt["C"]);
		}
	}