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"]); } }