function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; $arFields = array("ID" => array("FIELD" => "CPG.ID", "TYPE" => "int"), "PRODUCT_ID" => array("FIELD" => "CPG.PRODUCT_ID", "TYPE" => "int"), "GROUP_ID" => array("FIELD" => "CPG.GROUP_ID", "TYPE" => "int"), "ACCESS_LENGTH" => array("FIELD" => "CPG.ACCESS_LENGTH", "TYPE" => "int"), "ACCESS_LENGTH_TYPE" => array("FIELD" => "CPG.ACCESS_LENGTH_TYPE", "TYPE" => "char"), "GROUP_ACTIVE" => array("FIELD" => "G.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_group G ON (CPG.GROUP_ID = G.ID)"), "GROUP_NAME" => array("FIELD" => "G.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_group G ON (CPG.GROUP_ID = G.ID)")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (is_array($arGroupBy) && empty($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_product2group CPG " . "\t" . $arSqls["FROM"] . " "; if (!empty($arSqls["WHERE"])) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (!empty($arSqls["GROUPBY"])) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return False; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_product2group CPG " . "\t" . $arSqls["FROM"] . " "; if (!empty($arSqls["WHERE"])) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (!empty($arSqls["GROUPBY"])) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } if (!empty($arSqls["ORDERBY"])) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_product2group CPG " . "\t" . $arSqls["FROM"] . " "; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]); } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; $arFields = array("ID" => array("FIELD" => "DE.ID", "TYPE" => "int"), "DOC_ID" => array("FIELD" => "DE.DOC_ID", "TYPE" => "int"), "STORE_FROM" => array("FIELD" => "DE.STORE_FROM", "TYPE" => "int"), "STORE_TO" => array("FIELD" => "DE.STORE_TO", "TYPE" => "int"), "ELEMENT_ID" => array("FIELD" => "DE.ELEMENT_ID", "TYPE" => "int"), "AMOUNT" => array("FIELD" => "DE.AMOUNT", "TYPE" => "double"), "PURCHASING_PRICE" => array("FIELD" => "DE.PURCHASING_PRICE", "TYPE" => "double"), "IS_MULTIPLY_BARCODE" => array("FIELD" => "CP.BARCODE_MULTI", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_product CP ON (DE.ELEMENT_ID = CP.ID)")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_docs_element DE " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_docs_element DE " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } if (strlen($arSqls["ORDERBY"]) > 0) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_docs_element DE " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (strlen($arSqls["GROUPBY"]) <= 0) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]); } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; $arFields = array("ID" => array("FIELD" => "CP.ID", "TYPE" => "int"), "PRODUCT_ID" => array("FIELD" => "CP.PRODUCT_ID", "TYPE" => "int"), "STORE_ID" => array("FIELD" => "CP.STORE_ID", "TYPE" => "int"), "AMOUNT" => array("FIELD" => "CP.AMOUNT", "TYPE" => "double"), "STORE_NAME" => array("FIELD" => "CS.TITLE", "TYPE" => "string", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"), "STORE_ADDR" => array("FIELD" => "CS.ADDRESS", "TYPE" => "string", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"), "STORE_DESCR" => array("FIELD" => "CS.DESCRIPTION", "TYPE" => "string", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"), "STORE_GPS_N" => array("FIELD" => "CS.GPS_N", "TYPE" => "string", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"), "STORE_GPS_S" => array("FIELD" => "CS.GPS_S", "TYPE" => "string", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"), "STORE_IMAGE" => array("FIELD" => "CS.IMAGE_ID", "TYPE" => "int", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)"), "STORE_LOCATION" => array("FIELD" => "CS.LOCATION_ID", "TYPE" => "int", "FROM" => "RIGHT JOIN b_catalog_store CS ON (CS.ID = CP.STORE_ID)")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_store_product CP " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_store_product CP " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } if (strlen($arSqls["ORDERBY"]) > 0) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_store_product CP " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (strlen($arSqls["GROUPBY"]) <= 0) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]); } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; // for old execution style if (!is_array($arOrder) && !is_array($arFilter)) { $arOrder = strval($arOrder); $arFilter = strval($arFilter); if ('' != $arOrder && '' != $arFilter) { $arOrder = array($arOrder => $arFilter); } else { $arOrder = array(); } $arFilter = array(); $arGroupBy = false; } if (empty($arSelectFields)) { $arSelectFields = array("ID", "NAME", "PERCENTAGE"); } $arFields = array("ID" => array("FIELD" => "E.ID", "TYPE" => "int"), "NAME" => array("FIELD" => "E.NAME", "TYPE" => "string"), "PERCENTAGE" => array("FIELD" => "E.PERCENTAGE", "TYPE" => "double")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_extra E " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_extra E " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " ORDER BY " . $arSqls["ORDERBY"]; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_extra E " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " LIMIT " . $intTopCount; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (empty($arSelectFields)) { $arSelectFields = array("ID", "DOC_TYPE", "SITE_ID", "CONTRACTOR_ID", "CURRENCY", "STATUS", "DATE_DOCUMENT", "TOTAL", "DATE_STATUS", "COMMENTARY"); } $arFields = array("ID" => array("FIELD" => "CD.ID", "TYPE" => "int"), "DOC_TYPE" => array("FIELD" => "CD.DOC_TYPE", "TYPE" => "char"), "SITE_ID" => array("FIELD" => "CD.SITE_ID", "TYPE" => "string"), "CURRENCY" => array("FIELD" => "CD.CURRENCY", "TYPE" => "string"), "CONTRACTOR_ID" => array("FIELD" => "CD.CONTRACTOR_ID", "TYPE" => "int"), "DATE_CREATE" => array("FIELD" => "CD.DATE_CREATE", "TYPE" => "datetime"), "DATE_MODIFY" => array("FIELD" => "CD.DATE_MODIFY", "TYPE" => "datetime"), "DATE_DOCUMENT" => array("FIELD" => "CD.DATE_DOCUMENT", "TYPE" => "datetime"), "DATE_STATUS" => array("FIELD" => "CD.DATE_STATUS", "TYPE" => "datetime"), "CREATED_BY" => array("FIELD" => "CD.CREATED_BY", "TYPE" => "int"), "MODIFIED_BY" => array("FIELD" => "CD.MODIFIED_BY", "TYPE" => "int"), "STATUS_BY" => array("FIELD" => "CD.STATUS_BY", "TYPE" => "int"), "STATUS" => array("FIELD" => "CD.STATUS", "TYPE" => "string"), "TOTAL" => array("FIELD" => "CD.TOTAL", "TYPE" => "double"), "COMMENTARY" => array("FIELD" => "CD.COMMENTARY", "TYPE" => "string"), "PRODUCTS_ID" => array("FIELD" => "DE.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"), "PRODUCTS_DOC_ID" => array("FIELD" => "DE.DOC_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"), "PRODUCTS_STORE_FROM" => array("FIELD" => "DE.STORE_FROM", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"), "PRODUCTS_STORE_TO" => array("FIELD" => "DE.STORE_TO", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"), "PRODUCTS_ELEMENT_ID" => array("FIELD" => "DE.ELEMENT_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"), "PRODUCTS_AMOUNT" => array("FIELD" => "DE.AMOUNT", "TYPE" => "double", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)"), "PRODUCTS_PURCHASING_PRICE" => array("FIELD" => "DE.PURCHASING_PRICE", "TYPE" => "double", "FROM" => "INNER JOIN b_catalog_docs_element DE ON (CD.ID = DE.DOC_ID)")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_store_docs CD " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_store_docs CD " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " ORDER BY " . $arSqls["ORDERBY"]; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_store_docs CD " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " LIMIT " . $intTopCount; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
protected function __GetDiscountID($arFilter) { global $DB; $arResult = array(); $boolRest = array_key_exists('RESTRICTIONS', $arFilter); $arFields = array("DISCOUNT_ID" => array("FIELD" => "DC.DISCOUNT_ID", "TYPE" => "int"), "ACTIVE" => array("FIELD" => "DC.ACTIVE", "TYPE" => "char"), "USER_GROUP_ID" => array("FIELD" => "DC.USER_GROUP_ID", "TYPE" => "int"), "PRICE_TYPE_ID" => array("FIELD" => "DC.PRICE_TYPE_ID", "TYPE" => "int")); if (!isset($arFilter['USER_GROUP_ID'])) { $arFilter['USER_GROUP_ID'] = array(); } elseif (!is_array($arFilter['USER_GROUP_ID'])) { $arFilter['USER_GROUP_ID'] = array($arFilter['USER_GROUP_ID']); } if (!empty($arFilter['USER_GROUP_ID'])) { $arFilter['USER_GROUP_ID'][] = -1; } else { unset($arFilter['USER_GROUP_ID']); } if (!isset($arFilter['PRICE_TYPE_ID'])) { $arFilter['PRICE_TYPE_ID'] = array(); } elseif (!is_array($arFilter['PRICE_TYPE_ID'])) { $arFilter['PRICE_TYPE_ID'] = array($arFilter['PRICE_TYPE_ID']); } if (!empty($arFilter['PRICE_TYPE_ID'])) { $arFilter['PRICE_TYPE_ID'][] = -1; } else { unset($arFilter['PRICE_TYPE_ID']); } $active = 'Y'; if (array_key_exists('ACTIVE', $arFilter)) { if ($arFilter['ACTIVE'] === null) { $active = ''; } elseif ($arFilter['ACTIVE'] == 'Y' || $arFilter['ACTIVE'] == 'N') { $active = $arFilter['ACTIVE']; } unset($arFilter['ACTIVE']); } if ($active != '') { $arFilter['ACTIVE'] = $active; } if (array_key_exists('DISCOUNT_ID', $arFilter)) { unset($arFilter['DISCOUNT_ID']); } $arSelectFields = array('DISCOUNT_ID'); if ($boolRest) { $arSelectFields[] = 'USER_GROUP_ID'; $arSelectFields[] = 'PRICE_TYPE_ID'; unset($arFilter['RESTRICTIONS']); } $arSqls = CCatalog::PrepareSql($arFields, array(), $arFilter, false, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arSqls["WHERE"])) { $arSqls["WHERE"] = "1=1"; } $strQuery = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_discount_cond DC WHERE " . $arSqls["WHERE"]; $arDiscountID = array(); $rsDiscounts = $DB->Query($strQuery, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($boolRest) { $arRestrictions = array(); while ($arDiscount = $rsDiscounts->Fetch()) { $arDiscount['DISCOUNT_ID'] = intval($arDiscount['DISCOUNT_ID']); $arDiscountID[$arDiscount['DISCOUNT_ID']] = true; if (!array_key_exists($arDiscount['DISCOUNT_ID'], $arRestrictions)) { $arRestrictions[$arDiscount['DISCOUNT_ID']] = array('USER_GROUP' => array(), 'PRICE_TYPE' => array()); } $arDiscount['USER_GROUP_ID'] = intval($arDiscount['USER_GROUP_ID']); $arDiscount['PRICE_TYPE_ID'] = intval($arDiscount['PRICE_TYPE_ID']); $arRestrictions[$arDiscount['DISCOUNT_ID']]['USER_GROUP'][$arDiscount['USER_GROUP_ID']] = true; $arRestrictions[$arDiscount['DISCOUNT_ID']]['PRICE_TYPE'][$arDiscount['PRICE_TYPE_ID']] = true; } if (!empty($arDiscountID)) { $arDiscountID = array_keys($arDiscountID); foreach ($arRestrictions as $intKey => $arOneRestrictions) { if (array_key_exists(-1, $arOneRestrictions['USER_GROUP'])) { $arOneRestrictions['USER_GROUP'] = array(); } if (array_key_exists(-1, $arOneRestrictions['PRICE_TYPE'])) { $arOneRestrictions['PRICE_TYPE'] = array(); } $arRestrictions[$intKey] = $arOneRestrictions; } } $arResult = array('DISCOUNTS' => $arDiscountID, 'RESTRICTIONS' => $arRestrictions); } else { while ($arDiscount = $rsDiscounts->Fetch()) { $arDiscount['DISCOUNT_ID'] = intval($arDiscount['DISCOUNT_ID']); $arDiscountID[$arDiscount['DISCOUNT_ID']] = true; } if (!empty($arDiscountID)) { $arResult = array_keys($arDiscountID); } } return $arResult; }
/** * <p>Метод выбирает купоны, соответствующие условиям.</p> * * * * * @param array $arOrder = array() Массив вида array(by1=>order1[, by2=>order2 [, ..]]), где by - поле для сортировки, * может принимать значения: <ul> <li> <b>ID</b> - код (ID) купона;</li> <li> * <b>DISCOUNT_ID</b> - код (ID) скидки;</li> <li> <b>ACTIVE</b> - активность купона;</li> <li> * <b>ONE_TIME</b> - флаг однократного использования купона;</li> <li> <b>COUPON</b> - * код купона;</li> <li> <b>DATE_APPLY</b> - дата применения купона;</li> </ul> поле order * - направление сортировки, может принимать значения: <ul> <li> <b>asc</b> - * по возрастанию;</li> <li> <b>desc</b> - по убыванию.</li> </ul> Необязательный. * По умолчанию купоны не сортируются. * * * * @param array $arFilter = array() Массив параметров, по которым строится фильтр выборки. Имеет вид: * <pre class="syntax">array( "[модификатор1][оператор1]название_поля1" => * "значение1", "[модификатор2][оператор2]название_поля2" => "значение2", * . . . )</pre> Удовлетворяющие фильтру записи возвращаются в * результате, а записи, которые не удовлетворяют условиям фильтра, * отбрасываются.<br> Допустимыми являются следующие модификаторы: * <ul> <li> <b>!</b> - отрицание;</li> <li> <b>+</b> - значения null, 0 и пустая строка * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми * являются следующие операторы: <ul> <li> <b>>=</b> - значение поля больше * или равно передаваемой в фильтр величины;</li> <li> <b>></b> - значение * поля строго больше передаваемой в фильтр величины;</li> <li> <b><=</b> - * значение поля меньше или равно передаваемой в фильтр величины;</li> * <li> <b><</b> - значение поля строго меньше передаваемой в фильтр * величины;</li> <li> <b>@</b> - оператор может использоваться для * целочисленных и вещественных данных при передаче набора * значений (массива). В этом случае при генерации sql-запроса будет * использован sql-оператор <b>IN</b>, дающий компактную форму записи;</li> * <li> <b>~</b> - значение поля проверяется на соответствие * передаваемому в фильтр шаблону;</li> <li> <b>%</b> - значение поля * проверяется на соответствие передаваемой в фильтр строке в * соответствии с языком запросов.</li> </ul> "название поля" может * принимать значения: <ul> <li> <b>ID</b> - код (ID) купона (число);</li> <li> * <b>DISCOUNT_ID</b> - код (ID) скидки (число);</li> <li> <b>ACTIVE</b> - фильтр по * активности (Y|N); передача пустого значения ("ACTIVE"=>"") выводит * купоны без учета их состояния (строка);</li> <li> <b>ONE_TIME</b> - флаг * однократного использования купона (Y|N); передача пустого значения * ("ONE_TIME"=>"") выводит купоны без учета их типа (строка);</li> <li> <b>COUPON</b> * - код купона (маска);</li> <li> <b>DATE_APPLY</b> - дата применения купона * (дата);</li> <li> <b>DESCRIPTION</b> - комментарий (маска);</li> </ul> Значения * фильтра - одиночное значение или массив значений.<br> * Необязательное. По умолчанию купоны не фильтруются. * * * * @param mixed $arGroupBy = false Массив полей для группировки купонов. имеет вид: <pre * class="syntax">array("название_поля1", "название_поля2", . . .)</pre> В качестве * "название_поля<i>N</i>" может стоять любое поле каталога. <br><br> Если * массив пустой, то функция вернет число записей, удовлетворяющих * фильтру. <br> Значение по умолчанию - <i>false</i> - означает, что * результат группироваться не будет. * * * * @param mixed $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul> * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет * ограничено сверху значением этого ключа;</li> <li>любой ключ, * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего * параметра.</li> </ul> Необязательный. По умолчанию false - купоны не * ограничиваются. * * * * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены методом. Можно * указать следующие поля <i>ID</i>, <i>DISCOUNT_ID</i>, <i>ACTIVE</i>, <i>ONE_TIME</i>, <i>COUPON</i>, * <i>DATE_APPLY</i>, <i>DISCOUNT_NAME</i> и <i>DESCRIPTION</i>.<br> Если в массиве присутствует * значение "*", то будут возвращены все доступные поля.<br> * Необязательный. По умолчанию выводятся все поля. * * * * @return CDBResult <p>Метод возвращает объект класса CDBResult.</p> * * * <h4>Example</h4> * <pre> * if (CModule::IncludeModule("catalog")) * { * $arFilter = array('COUPON' => 'CP-R8RFW-5YGGPZJ'); * $dbCoupon = CCatalogDiscountCoupon::GetList (array(), $arFilter); * if($arCoupon = $dbCoupon->Fetch()) * { * echo "<pre>"; * print_r($arCoupon); * echo "</pre>"; * } * else * { * echo "купона нет"; * } * } * </pre> * * * * <h4>See Also</h4> * <ul> <li><a href="http://dev.1c-bitrix.ru/api_help/catalog/fields.php">Структура таблицы</a></li> <li><a * href="http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogdiscountcoupon/getbyid.php">CCatalogDiscountCoupon::GetByID</a></li> * </ul> </ht * * * @static * @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogdiscountcoupon/getlist.php * @author Bitrix */ public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; $arFields = array("ID" => array("FIELD" => "CD.ID", "TYPE" => "int"), "DISCOUNT_ID" => array("FIELD" => "CD.DISCOUNT_ID", "TYPE" => "string"), "ACTIVE" => array("FIELD" => "CD.ACTIVE", "TYPE" => "char"), "ONE_TIME" => array("FIELD" => "CD.ONE_TIME", "TYPE" => "char"), "COUPON" => array("FIELD" => "CD.COUPON", "TYPE" => "string"), "DATE_APPLY" => array("FIELD" => "CD.DATE_APPLY", "TYPE" => "datetime"), "DISCOUNT_NAME" => array("FIELD" => "CDD.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_catalog_discount CDD ON (CD.DISCOUNT_ID = CDD.ID)"), "DESCRIPTION" => array("FIELD" => "CD.DESCRIPTION", "TYPE" => "string"), "TIMESTAMP_X" => array("FIELD" => "CD.TIMESTAMP_X", "TYPE" => "datetime"), "MODIFIED_BY" => array("FIELD" => "CD.MODIFIED_BY", "TYPE" => "int"), "DATE_CREATE" => array("FIELD" => "CD.DATE_CREATE", "TYPE" => "datetime"), "CREATED_BY" => array("FIELD" => "CD.CREATED_BY", "TYPE" => "int")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_discount_coupon CD " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_discount_coupon CD " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " ORDER BY " . $arSqls["ORDERBY"]; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_discount_coupon CD " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " LIMIT " . $intTopCount; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (empty($arSelectFields)) { $arSelectFields = array("ID", "DOC_ELEMENT_ID", "BARCODE"); } $arFields = array("ID" => array("FIELD" => "DB.ID", "TYPE" => "int"), "DOC_ELEMENT_ID" => array("FIELD" => "DB.DOC_ELEMENT_ID", "TYPE" => "int"), "BARCODE" => array("FIELD" => "DB.BARCODE", "TYPE" => "string")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_docs_barcode DB " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_docs_barcode DB " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " ORDER BY " . $arSqls["ORDERBY"]; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_docs_barcode DB " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " LIMIT " . $intTopCount; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (empty($arSelectFields)) { $arSelectFields = array("ID", "CODE", "MEASURE_TITLE", "SYMBOL_RUS", "SYMBOL_INTL", "SYMBOL_LETTER_INTL", "IS_DEFAULT"); } elseif (is_array($arSelectFields)) { if (!in_array('*', $arSelectFields)) { $selectCodes = array_fill_keys($arSelectFields, true); if (!isset($selectCodes['CODE'])) { $arSelectFields[] = 'CODE'; } if ((isset($selectCodes['MEASURE_TITLE']) || isset($selectCodes['SYMBOL_RUS'])) && !isset($selectCodes['SYMBOL_INTL'])) { $arSelectFields[] = 'SYMBOL_INTL'; } unset($selectCodes); } } $arFields = array("ID" => array("FIELD" => "CM.ID", "TYPE" => "int"), "CODE" => array("FIELD" => "CM.CODE", "TYPE" => "int"), "MEASURE_TITLE" => array("FIELD" => "CM.MEASURE_TITLE", "TYPE" => "string"), "SYMBOL_RUS" => array("FIELD" => "CM.SYMBOL_RUS", "TYPE" => "string"), "SYMBOL_INTL" => array("FIELD" => "CM.SYMBOL_INTL", "TYPE" => "string"), "SYMBOL_LETTER_INTL" => array("FIELD" => "CM.SYMBOL_LETTER_INTL", "TYPE" => "string"), "IS_DEFAULT" => array("FIELD" => "CM.IS_DEFAULT", "TYPE" => "char")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_measure CM " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_measure CM " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " ORDER BY " . $arSqls["ORDERBY"]; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_measure CM " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " LIMIT " . $intTopCount; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } $dbMeasure = new CCatalogMeasureResult($dbRes); return $dbMeasure; }
static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (empty($arSelectFields)) { $arSelectFields = array("ID", "ACTIVE", "TITLE", "PHONE", "SCHEDULE", "ADDRESS", "DESCRIPTION", "GPS_N", "GPS_S", "IMAGE_ID", "DATE_CREATE", "DATE_MODIFY", "USER_ID", "XML_ID", "SORT", "EMAIL", "ISSUING_CENTER", "SHIPPING_CENTER", "SITE_ID"); } $keyForDelete = array_search("PRODUCT_AMOUNT", $arSelectFields); if (!isset($arFilter["PRODUCT_ID"]) && $keyForDelete !== false) { unset($arSelectFields[$keyForDelete]); } if ($keyForDelete == false) { $keyForDelete = array_search("ELEMENT_ID", $arSelectFields); if ($keyForDelete !== false) { unset($arSelectFields[$keyForDelete]); } } $productID = '('; if (is_array($arFilter["PRODUCT_ID"])) { foreach ($arFilter["PRODUCT_ID"] as $id) { $productID .= intval($id) . ','; } $productID = rtrim($productID, ',') . ')'; } else { $productID .= intval($arFilter["PRODUCT_ID"]) . ')'; } $arFields = array("ID" => array("FIELD" => "CS.ID", "TYPE" => "int"), "ACTIVE" => array("FIELD" => "CS.ACTIVE", "TYPE" => "string"), "TITLE" => array("FIELD" => "CS.TITLE", "TYPE" => "string"), "PHONE" => array("FIELD" => "CS.PHONE", "TYPE" => "string"), "SCHEDULE" => array("FIELD" => "CS.SCHEDULE", "TYPE" => "string"), "ADDRESS" => array("FIELD" => "CS.ADDRESS", "TYPE" => "string"), "DESCRIPTION" => array("FIELD" => "CS.DESCRIPTION", "TYPE" => "string"), "GPS_N" => array("FIELD" => "CS.GPS_N", "TYPE" => "string"), "GPS_S" => array("FIELD" => "CS.GPS_S", "TYPE" => "string"), "IMAGE_ID" => array("FIELD" => "CS.IMAGE_ID", "TYPE" => "int"), "LOCATION_ID" => array("FIELD" => "CS.LOCATION_ID", "TYPE" => "int"), "DATE_CREATE" => array("FIELD" => "CS.DATE_CREATE", "TYPE" => "datetime"), "DATE_MODIFY" => array("FIELD" => "CS.DATE_MODIFY", "TYPE" => "datetime"), "USER_ID" => array("FIELD" => "CS.USER_ID", "TYPE" => "int"), "MODIFIED_BY" => array("FIELD" => "CS.MODIFIED_BY", "TYPE" => "int"), "XML_ID" => array("FIELD" => "CS.XML_ID", "TYPE" => "string"), "SORT" => array("FIELD" => "CS.SORT", "TYPE" => "int"), "EMAIL" => array("FIELD" => "CS.EMAIL", "TYPE" => "string"), "ISSUING_CENTER" => array("FIELD" => "CS.ISSUING_CENTER", "TYPE" => "char"), "SHIPPING_CENTER" => array("FIELD" => "CS.SHIPPING_CENTER", "TYPE" => "char"), "SITE_ID" => array("FIELD" => "CS.SITE_ID", "TYPE" => "string"), "PRODUCT_AMOUNT" => array("FIELD" => "CP.AMOUNT", "TYPE" => "double", "FROM" => "LEFT JOIN b_catalog_store_product CP ON (CS.ID = CP.STORE_ID AND CP.PRODUCT_ID IN " . $productID . ")"), "ELEMENT_ID" => array("FIELD" => "CP.PRODUCT_ID", "TYPE" => "int")); $userField = new CUserTypeSQL(); $userField->SetEntity("CAT_STORE", "CS.ID"); $userField->SetSelect($arSelectFields); $userField->SetFilter($arFilter); $userField->SetOrder($arOrder); $strUfFilter = $userField->GetFilter(); $strSqlUfFilter = strlen($strUfFilter) > 0 ? " (" . $strUfFilter . ") " : ""; $strSqlUfOrder = ""; foreach ($arOrder as $field => $by) { $field = $userField->GetOrder($field); if (empty($field)) { continue; } if (strlen($strSqlUfOrder) > 0) { $strSqlUfOrder .= ', '; } $strSqlUfOrder .= $field . " " . $by; } $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . $userField->GetSelect() . " FROM b_catalog_store CS " . $arSqls["FROM"] . " " . $userField->GetJoin("CS.ID"); if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUfFilter) > 0) { $strSql .= " AND " . $strSqlUfFilter . " "; } elseif (strlen($arSqls["WHERE"]) == 0 && strlen($strSqlUfFilter) > 0) { $strSql .= " WHERE " . $strSqlUfFilter . " "; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . $userField->GetSelect() . " FROM b_catalog_store CS " . $arSqls["FROM"] . " " . $userField->GetJoin("CS.ID"); if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUfFilter) > 0) { $strSql .= " AND " . $strSqlUfFilter . " "; } elseif (strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUfFilter) > 0) { $strSql .= " WHERE " . $strSqlUfFilter . " "; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " ORDER BY " . $arSqls["ORDERBY"]; } elseif (strlen($arSqls["ORDERBY"]) <= 0 && strlen($strSqlUfOrder) > 0) { $strSql .= " ORDER BY " . $strSqlUfOrder; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_store CS " . $arSqls["FROM"] . " " . $userField->GetJoin("CS.ID"); if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " WHERE " . $arSqls["WHERE"]; } if (strlen($arSqls["WHERE"]) > 0 && strlen($strSqlUfFilter) > 0) { $strSql_tmp .= " AND " . $strSqlUfFilter . " "; } elseif (strlen($arSqls["WHERE"]) <= 0 && strlen($strSqlUfFilter) > 0) { $strSql_tmp .= " WHERE " . $strSqlUfFilter . " "; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } else { $cnt = $dbRes->SelectedRowsCount(); } } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " LIMIT " . $intTopCount; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; // For old-style execution if (!is_array($arOrder) && !is_array($arFilter)) { $arOrder = strval($arOrder); $arFilter = strval($arFilter); if (strlen($arOrder) > 0 && strlen($arFilter) > 0) { $arOrder = array($arOrder => $arFilter); } else { $arOrder = array(); } if (is_array($arGroupBy)) { $arFilter = $arGroupBy; } else { $arFilter = array(); } $arGroupBy = false; } // FIELDS --> $arFields = array("ID" => array("FIELD" => "I.ID", "TYPE" => "int"), "IBLOCK_ID" => array("FIELD" => "CI.IBLOCK_ID", "TYPE" => "int"), "YANDEX_EXPORT" => array("FIELD" => "CI.YANDEX_EXPORT", "TYPE" => "char"), "SUBSCRIPTION" => array("FIELD" => "CI.SUBSCRIPTION", "TYPE" => "char"), "PRODUCT_IBLOCK_ID" => array("FIELD" => "CI.PRODUCT_IBLOCK_ID", "TYPE" => "int"), "SKU_PROPERTY_ID" => array("FIELD" => "CI.SKU_PROPERTY_ID", "TYPE" => "int"), "OFFERS_PROPERTY_ID" => array("FIELD" => "OFFERS.SKU_PROPERTY_ID", "TYPE" => "int"), "OFFERS_IBLOCK_ID" => array("FIELD" => "OFFERS.IBLOCK_ID", "TYPE" => "int"), "IBLOCK_TYPE_ID" => array("FIELD" => "I.IBLOCK_TYPE_ID", "TYPE" => "string"), "IBLOCK_ACTIVE" => array("FIELD" => "I.ACTIVE", "TYPE" => "char"), "LID" => array("FIELD" => "I.LID", "TYPE" => "string"), "NAME" => array("FIELD" => "I.NAME", "TYPE" => "string")); // <-- FIELDS $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_iblock CI\n\t\t\t\tINNER JOIN b_iblock I ON CI.IBLOCK_ID = I.ID\n\t\t\t\tLEFT JOIN b_catalog_iblock OFFERS ON CI.IBLOCK_ID = OFFERS.PRODUCT_IBLOCK_ID" . " " . $arSqls["FROM"] . " " . "WHERE 1=1 "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "AND " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return False; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_iblock CI\n\t\t\tINNER JOIN b_iblock I ON CI.IBLOCK_ID = I.ID\n\t\t\tLEFT JOIN b_catalog_iblock OFFERS ON CI.IBLOCK_ID = OFFERS.PRODUCT_IBLOCK_ID" . " " . $arSqls["FROM"] . " " . "WHERE 1=1 "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "AND " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } if (strlen($arSqls["ORDERBY"]) > 0) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_iblock CI\n\t\t\t\tINNER JOIN b_iblock I ON CI.IBLOCK_ID = I.ID\n\t\t\t\tLEFT JOIN b_catalog_iblock OFFERS ON CI.IBLOCK_ID = OFFERS.PRODUCT_IBLOCK_ID" . " " . $arSqls["FROM"] . " " . "WHERE 1=1 "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "AND " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (strlen($arSqls["GROUPBY"]) <= 0) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]); } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "PRODUCT_ID", "STORE_ID", "BARCODE", "ORDER_ID"); } $arFields = array("ID" => array("FIELD" => "CB.ID", "TYPE" => "int"), "PRODUCT_ID" => array("FIELD" => "CB.PRODUCT_ID", "TYPE" => "int"), "STORE_ID" => array("FIELD" => "CB.STORE_ID", "TYPE" => "int"), "BARCODE" => array("FIELD" => "CB.BARCODE", "TYPE" => "string"), "ORDER_ID" => array("FIELD" => "CB.ORDER_ID", "TYPE" => "int")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_store_barcode CB " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_store_barcode CB " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } if (strlen($arSqls["ORDERBY"]) > 0) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_store_barcode CB " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (strlen($arSqls["GROUPBY"]) <= 0) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]); } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
protected function __GetDiscountID($arFilter) { global $DB; $arResult = array(); $arFields = array("DISCOUNT_ID" => array("FIELD" => "DC.DISCOUNT_ID", "TYPE" => "int"), "USER_GROUP_ID" => array("FIELD" => "DC.USER_GROUP_ID", "TYPE" => "int"), "PRICE_TYPE_ID" => array("FIELD" => "DC.PRICE_TYPE_ID", "TYPE" => "int")); if (!isset($arFilter['USER_GROUP_ID'])) { $arFilter['USER_GROUP_ID'] = array(); } elseif (!is_array($arFilter['USER_GROUP_ID'])) { $arFilter['USER_GROUP_ID'] = array($arFilter['USER_GROUP_ID']); } $arFilter['USER_GROUP_ID'][] = -1; if (!isset($arFilter['PRICE_TYPE_ID'])) { $arFilter['PRICE_TYPE_ID'] = array(); } elseif (!is_array($arFilter['PRICE_TYPE_ID'])) { $arFilter['PRICE_TYPE_ID'] = array($arFilter['PRICE_TYPE_ID']); } $arFilter['PRICE_TYPE_ID'][] = -1; if (array_key_exists('DISCOUNT_ID', $arFilter)) { unset($arFilter['DISCOUNT_ID']); } $arSelectFields = array('DISCOUNT_ID'); $arSqls = CCatalog::PrepareSql($arFields, array(), $arFilter, false, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); $strQuery = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_discount_cond DC WHERE " . $arSqls["WHERE"]; $rsDiscounts = $DB->Query($strQuery, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); while ($arDiscount = $rsDiscounts->Fetch()) { $arResult[] = intval($arDiscount['DISCOUNT_ID']); } return $arResult; }
/** * @param array $arOrder * @param array $arFilter * @param bool|array $arGroupBy * @param bool|array $arNavStartParams * @param array $arSelectFields * @return bool|CDBResult */ function GetListEx($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (empty($arSelectFields)) { $arSelectFields = array("ID", "PRODUCT_ID", "EXTRA_ID", "CATALOG_GROUP_ID", "PRICE", "CURRENCY", "TIMESTAMP_X", "QUANTITY_FROM", "QUANTITY_TO", "TMP_ID"); } $arFields = array("ID" => array("FIELD" => "P.ID", "TYPE" => "int"), "PRODUCT_ID" => array("FIELD" => "P.PRODUCT_ID", "TYPE" => "int"), "EXTRA_ID" => array("FIELD" => "P.EXTRA_ID", "TYPE" => "int"), "CATALOG_GROUP_ID" => array("FIELD" => "P.CATALOG_GROUP_ID", "TYPE" => "int"), "PRICE" => array("FIELD" => "P.PRICE", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "P.CURRENCY", "TYPE" => "string"), "TIMESTAMP_X" => array("FIELD" => "P.TIMESTAMP_X", "TYPE" => "datetime"), "QUANTITY_FROM" => array("FIELD" => "P.QUANTITY_FROM", "TYPE" => "int"), "QUANTITY_TO" => array("FIELD" => "P.QUANTITY_TO", "TYPE" => "int"), "TMP_ID" => array("FIELD" => "P.TMP_ID", "TYPE" => "string"), "PRICE_BASE_RATE" => array("FIELD" => "P.PRICE*CC.CURRENT_BASE_RATE", "TYPE" => "double", "FROM" => "LEFT JOIN b_catalog_currency CC ON (P.CURRENCY = CC.CURRENCY)"), "PRODUCT_QUANTITY" => array("FIELD" => "CP.QUANTITY", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_product CP ON (P.PRODUCT_ID = CP.ID)"), "PRODUCT_QUANTITY_TRACE" => array("FIELD" => "IF (CP.QUANTITY_TRACE = 'D', '" . $DB->ForSql((string) Option::get('catalog', 'default_quantity_trace', 'N')) . "', CP.QUANTITY_TRACE)", "TYPE" => "char", "FROM" => "INNER JOIN b_catalog_product CP ON (P.PRODUCT_ID = CP.ID)"), "PRODUCT_CAN_BUY_ZERO" => array("FIELD" => "IF (CP.CAN_BUY_ZERO = 'D', '" . $DB->ForSql((string) Option::get('catalog', 'default_can_buy_zero', 'N')) . "', CP.CAN_BUY_ZERO)", "TYPE" => "char", "FROM" => "INNER JOIN b_catalog_product CP ON (P.PRODUCT_ID = CP.ID)"), "PRODUCT_NEGATIVE_AMOUNT_TRACE" => array("FIELD" => "IF (CP.NEGATIVE_AMOUNT_TRACE = 'D', '" . $DB->ForSql((string) Option::get('catalog', 'allow_negative_amount', 'N')) . "', CP.NEGATIVE_AMOUNT_TRACE)", "TYPE" => "char", "FROM" => "INNER JOIN b_catalog_product CP ON (P.PRODUCT_ID = CP.ID)"), "PRODUCT_WEIGHT" => array("FIELD" => "CP.WEIGHT", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_product CP ON (P.PRODUCT_ID = CP.ID)"), "ELEMENT_IBLOCK_ID" => array("FIELD" => "IE.IBLOCK_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_iblock_element IE ON (P.PRODUCT_ID = IE.ID)"), "ELEMENT_NAME" => array("FIELD" => "IE.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock_element IE ON (P.PRODUCT_ID = IE.ID)"), "CATALOG_GROUP_CODE" => array("FIELD" => "CG.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_catalog_group CG ON (P.CATALOG_GROUP_ID = CG.ID)"), "CATALOG_GROUP_BASE" => array("FIELD" => "CG.BASE", "TYPE" => "char", "FROM" => "INNER JOIN b_catalog_group CG ON (P.CATALOG_GROUP_ID = CG.ID)"), "CATALOG_GROUP_SORT" => array("FIELD" => "CG.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_group CG ON (P.CATALOG_GROUP_ID = CG.ID)"), "CATALOG_GROUP_NAME" => array("FIELD" => "CGL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_catalog_group_lang CGL ON (P.CATALOG_GROUP_ID = CGL.CATALOG_GROUP_ID AND CGL.LANG = '" . LANGUAGE_ID . "')"), "GROUP_GROUP_ID" => array("FIELD" => "CGG.GROUP_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_catalog_group2group CGG ON (P.CATALOG_GROUP_ID = CGG.CATALOG_GROUP_ID)"), "GROUP_BUY" => array("FIELD" => "CGG.BUY", "TYPE" => "char", "FROM" => "INNER JOIN b_catalog_group2group CGG ON (P.CATALOG_GROUP_ID = CGG.CATALOG_GROUP_ID)")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_price P " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_price P " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " ORDER BY " . $arSqls["ORDERBY"]; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && isset($arNavStartParams['nTopCount'])) { $intTopCount = (int) $arNavStartParams["nTopCount"]; } if ($boolNavStartParams && $intTopCount <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_price P " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && $intTopCount > 0) { $strSql .= " LIMIT " . $intTopCount; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
public static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (empty($arSelectFields)) { $arSelectFields = array("ID", "PRODUCT_ID", "RATIO"); } $arFields = array("ID" => array("FIELD" => "MR.ID", "TYPE" => "int"), "PRODUCT_ID" => array("FIELD" => "MR.PRODUCT_ID", "TYPE" => "int"), "RATIO" => array("FIELD" => "MR.RATIO", "TYPE" => "double")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "select " . $arSqls["SELECT"] . " from b_catalog_measure_ratio MR " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " where " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " group by " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "select " . $arSqls["SELECT"] . " from b_catalog_measure_ratio MR " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " where " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " group by " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " order by " . $arSqls["ORDERBY"]; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && isset($arNavStartParams['nTopCount'])) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "select COUNT('x') as CNT FROM b_catalog_measure_ratio MR " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " where " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " group by " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " limit " . $intTopCount; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
public function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelect = array()) { global $DB; $arFields = array('ID' => array('FIELD' => 'CPS.ID', 'TYPE' => 'int'), 'TYPE' => array('FIELD' => 'CPS.TYPE', 'TYPE' => 'int'), 'SET_ID' => array('FIELD' => 'CPS.SET_ID', 'TYPE' => 'int'), 'ACTIVE' => array('FIELD' => 'CPS.ACTIVE', 'TYPE' => 'char'), 'OWNER_ID' => array('FIELD' => 'CPS.OWNER_ID', 'TYPE' => 'int'), 'ITEM_ID' => array('FIELD' => 'CPS.ITEM_ID', 'TYPE' => 'int'), 'QUANTITY' => array('FIELD' => 'CPS.QUANTITY', 'TYPE' => 'double'), 'MEASURE' => array('FIELD' => 'CPS.MEASURE', 'TYPE' => 'int'), 'DISCOUNT_PERCENT' => array('FIELD' => 'CPS.DISCOUNT_PERCENT', 'TYPE' => 'double'), 'SORT' => array('FIELD' => 'CPS.SORT', 'TYPE' => 'int'), 'CREATED_BY' => array('FIELD' => 'CPS.CREATED_BY', 'TYPE' => 'int'), 'DATE_CREATE' => array('FIELD' => 'CPS.DATE_CREATE', 'TYPE' => 'datetime'), 'MODIFIED_BY' => array('FIELD' => 'CPS.MODIFIED_BY', 'TYPE' => 'int'), 'TIMESTAMP_X' => array('FIELD' => 'CPS.TIMESTAMP_X', 'TYPE' => 'datetime'), 'XML_ID' => array('FIELD' => 'CPS.XML_ID', 'TYPE' => 'string')); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelect); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "select " . $arSqls["SELECT"] . " from b_catalog_product_sets CPS " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " where " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " group by " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, 'File: ' . __FILE__ . '<br>Line: ' . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "select " . $arSqls["SELECT"] . " from b_catalog_product_sets CPS " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " where " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " group by " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " order by " . $arSqls["ORDERBY"]; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && isset($arNavStartParams['nTopCount'])) { $intTopCount = (int) $arNavStartParams["nTopCount"]; } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "select COUNT('x') as CNT from b_catalog_product_sets CPS " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " where " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " group by " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, 'File: ' . __FILE__ . '<br>Line: ' . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " limit " . $intTopCount; } $dbRes = $DB->Query($strSql, false, 'File: ' . __FILE__ . '<br>Line: ' . __LINE__); } return $dbRes; }
public static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (empty($arSelectFields)) { $arSelectFields = array("ID", "PERSON_TYPE", "PERSON_NAME", "PERSON_LASTNAME", "PERSON_MIDDLENAME", "EMAIL", "PHONE", "POST_INDEX", "COUNTRY", "CITY", "COMPANY", "ADDRESS", "INN", "KPP"); } $arFields = array("ID" => array("FIELD" => "CC.ID", "TYPE" => "int"), "PERSON_TYPE" => array("FIELD" => "CC.PERSON_TYPE", "TYPE" => "char"), "PERSON_NAME" => array("FIELD" => "CC.PERSON_NAME", "TYPE" => "string"), "PERSON_LASTNAME" => array("FIELD" => "CC.PERSON_LASTNAME", "TYPE" => "string"), "PERSON_MIDDLENAME" => array("FIELD" => "CC.PERSON_MIDDLENAME", "TYPE" => "string"), "EMAIL" => array("FIELD" => "CC.EMAIL", "TYPE" => "string"), "PHONE" => array("FIELD" => "CC.PHONE", "TYPE" => "string"), "POST_INDEX" => array("FIELD" => "CC.POST_INDEX", "TYPE" => "string"), "COUNTRY" => array("FIELD" => "CC.COUNTRY", "TYPE" => "string"), "CITY" => array("FIELD" => "CC.CITY", "TYPE" => "string"), "COMPANY" => array("FIELD" => "CC.COMPANY", "TYPE" => "string"), "ADDRESS" => array("FIELD" => "CC.ADDRESS", "TYPE" => "string"), "INN" => array("FIELD" => "CC.INN", "TYPE" => "string"), "KPP" => array("FIELD" => "CC.KPP", "TYPE" => "string"), "DATE_CREATE" => array("FIELD" => "CC.DATE_CREATE", "TYPE" => "datetime"), "DATE_MODIFY" => array("FIELD" => "CC.DATE_MODIFY", "TYPE" => "datetime"), "CREATED_BY" => array("FIELD" => "CC.CREATED_BY", "TYPE" => "int"), "MODIFIED_BY" => array("FIELD" => "CC.MODIFIED_BY", "TYPE" => "int")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_contractor CC " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_contractor CC " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " ORDER BY " . $arSqls["ORDERBY"]; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_contractor CC " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " LIMIT " . $intTopCount; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
public function GetUserInfoByDiscount($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; $arFields = array("ID" => array("FIELD" => "DSU.ID", "TYPE" => "int"), "DISCOUNT_ID" => array("FIELD" => "DSU.DISCOUNT_ID", "TYPE" => "int"), "USER_ID" => array("FIELD" => "DSU.USER_ID", "TYPE" => "int"), "ACTIVE_FROM" => array("FIELD" => "DSU.ACTIVE_FROM", "TYPE" => "datetime"), "ACTIVE_TO" => array("FIELD" => "DSU.ACTIVE_TO", "TYPE" => "datetime"), "RANGE_FROM" => array("FIELD" => "DSU.RANGE_FROM", "TYPE" => "double")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (is_array($arGroupBy) && empty($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_disc_save_user DSU " . "\t" . $arSqls["FROM"] . " "; if (!empty($arSqls["WHERE"])) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (!empty($arSqls["GROUPBY"])) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_disc_save_user DSU " . "\t" . $arSqls["FROM"] . " "; if (!empty($arSqls["WHERE"])) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (!empty($arSqls["GROUPBY"])) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } if (!empty($arSqls["ORDERBY"])) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_disc_save_user DSU " . "\t" . $arSqls["FROM"] . " "; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]); } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
public static function GetListEx($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (empty($arSelectFields)) { $arSelectFields = array('ID', 'TIMESTAMP_X', 'ACTIVE', 'C_SORT', 'NAME', 'RATE'); } $arFields = array('ID' => array("FIELD" => "CV.ID", "TYPE" => "int"), 'TIMESTAMP_X' => array("FIELD" => "CV.TIMESTAMP_X", "TYPE" => "datetime"), 'ACTIVE' => array("FIELD" => "CV.ACTIVE", "TYPE" => "char"), 'C_SORT' => array("FIELD" => "CV.C_SORT", "TYPE" => "int"), 'SORT' => array("FIELD" => "CV.C_SORT", "TYPE" => "int"), 'NAME' => array("FIELD" => "CV.NAME", "TYPE" => "string"), 'RATE' => array("FIELD" => "CV.RATE", "TYPE" => "double")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_vat CV " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_vat CV " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " ORDER BY " . $arSqls["ORDERBY"]; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_vat CV " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " LIMIT " . $intTopCount; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (!is_array($arOrder) && !is_array($arFilter)) { $arOrder = (string) $arOrder; $arFilter = (string) $arFilter; $arOrder = $arOrder != '' && $arFilter != '' ? array($arOrder => $arFilter) : array(); $arFilter = is_array($arGroupBy) ? $arGroupBy : array(); $arGroupBy = false; } $defaultQuantityTrace = (string) Option::get('catalog', 'default_quantity_trace') == 'Y' ? 'Y' : 'N'; $defaultCanBuyZero = (string) Option::get('catalog', 'default_can_buy_zero') == 'Y' ? 'Y' : 'N'; $defaultNegativeAmount = (string) Option::get('catalog', 'allow_negative_amount') == 'Y' ? 'Y' : 'N'; $defaultSubscribe = (string) Option::get('catalog', 'default_subscribe') == 'N' ? 'N' : 'Y'; $arFields = array("ID" => array("FIELD" => "CP.ID", "TYPE" => "int"), "QUANTITY" => array("FIELD" => "CP.QUANTITY", "TYPE" => "double"), "QUANTITY_RESERVED" => array("FIELD" => "CP.QUANTITY_RESERVED", "TYPE" => "double"), "QUANTITY_TRACE_ORIG" => array("FIELD" => "CP.QUANTITY_TRACE", "TYPE" => "char"), "CAN_BUY_ZERO_ORIG" => array("FIELD" => "CP.CAN_BUY_ZERO", "TYPE" => "char"), "NEGATIVE_AMOUNT_TRACE_ORIG" => array("FIELD" => "CP.NEGATIVE_AMOUNT_TRACE", "TYPE" => "char"), "QUANTITY_TRACE" => array("FIELD" => "IF (CP.QUANTITY_TRACE = 'D', '" . $defaultQuantityTrace . "', CP.QUANTITY_TRACE)", "TYPE" => "char"), "CAN_BUY_ZERO" => array("FIELD" => "IF (CP.CAN_BUY_ZERO = 'D', '" . $defaultCanBuyZero . "', CP.CAN_BUY_ZERO)", "TYPE" => "char"), "NEGATIVE_AMOUNT_TRACE" => array("FIELD" => "IF (CP.NEGATIVE_AMOUNT_TRACE = 'D', '" . $defaultNegativeAmount . "', CP.NEGATIVE_AMOUNT_TRACE)", "TYPE" => "char"), "SUBSCRIBE_ORIG" => array("FIELD" => "CP.SUBSCRIBE", "TYPE" => "char"), "SUBSCRIBE" => array("FIELD" => "IF (CP.SUBSCRIBE = 'D', '" . $defaultSubscribe . "', CP.SUBSCRIBE)", "TYPE" => "char"), "AVAILABLE" => array("FIELD" => "IF (\n\t\t\t\tCP.QUANTITY <= 0 AND\n\t\t\t\tIF (CP.QUANTITY_TRACE = 'D', '" . $defaultQuantityTrace . "', CP.QUANTITY_TRACE) = 'Y' AND\n\t\t\t\tIF (CP.CAN_BUY_ZERO = 'D', '" . $defaultCanBuyZero . "', CP.CAN_BUY_ZERO) = 'N',\n\t\t\t\t'N', 'Y'\n\t\t\t)", "TYPE" => "char"), "WEIGHT" => array("FIELD" => "CP.WEIGHT", "TYPE" => "double"), "WIDTH" => array("FIELD" => "CP.WIDTH", "TYPE" => "double"), "LENGTH" => array("FIELD" => "CP.LENGTH", "TYPE" => "double"), "HEIGHT" => array("FIELD" => "CP.HEIGHT", "TYPE" => "double"), "TIMESTAMP_X" => array("FIELD" => "CP.TIMESTAMP_X", "TYPE" => "datetime"), "PRICE_TYPE" => array("FIELD" => "CP.PRICE_TYPE", "TYPE" => "char"), "RECUR_SCHEME_TYPE" => array("FIELD" => "CP.RECUR_SCHEME_TYPE", "TYPE" => "char"), "RECUR_SCHEME_LENGTH" => array("FIELD" => "CP.RECUR_SCHEME_LENGTH", "TYPE" => "int"), "TRIAL_PRICE_ID" => array("FIELD" => "CP.TRIAL_PRICE_ID", "TYPE" => "int"), "WITHOUT_ORDER" => array("FIELD" => "CP.WITHOUT_ORDER", "TYPE" => "char"), "SELECT_BEST_PRICE" => array("FIELD" => "CP.SELECT_BEST_PRICE", "TYPE" => "char"), "VAT_ID" => array("FIELD" => "CP.VAT_ID", "TYPE" => "int"), "VAT_INCLUDED" => array("FIELD" => "CP.VAT_INCLUDED", "TYPE" => "char"), "TMP_ID" => array("FIELD" => "CP.TMP_ID", "TYPE" => "char"), "PURCHASING_PRICE" => array("FIELD" => "CP.PURCHASING_PRICE", "TYPE" => "double"), "PURCHASING_CURRENCY" => array("FIELD" => "CP.PURCHASING_CURRENCY", "TYPE" => "string"), "BARCODE_MULTI" => array("FIELD" => "CP.BARCODE_MULTI", "TYPE" => "char"), "MEASURE" => array("FIELD" => "CP.MEASURE", "TYPE" => "int"), "TYPE" => array("FIELD" => "CP.TYPE", "TYPE" => "int"), "ELEMENT_IBLOCK_ID" => array("FIELD" => "I.IBLOCK_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_iblock_element I ON (CP.ID = I.ID)"), "ELEMENT_XML_ID" => array("FIELD" => "I.XML_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock_element I ON (CP.ID = I.ID)"), "ELEMENT_NAME" => array("FIELD" => "I.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock_element I ON (CP.ID = I.ID)")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_product CP " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_product CP " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " ORDER BY " . $arSqls["ORDERBY"]; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_product CP " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " LIMIT " . $intTopCount; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
/** * <p>Функция возвращает результат выборки записей из таблицы складов в соответствии со своими параметрами.</p> * * * * * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" => * "направление_сортировки1", "название_поля2" => * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>" * может стоять любое поле, а в качестве * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по * возрастанию) и "<i>DESC</i>" (по убыванию). <br><br> Если массив сортировки * имеет несколько элементов, то результирующий набор сортируется * последовательно по каждому элементу (т.е. сначала сортируется по * первому элементу, потом результат сортируется по второму и т.д.). * <br><br> Значение по умолчанию - пустой массив array() - означает, что * результат отсортирован не будет. * * * * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи. Массив имеет * вид: <pre class="syntax">array( "[модификатор1][оператор1]название_поля1" => * "значение1", "[модификатор2][оператор2]название_поля2" => "значение2", * . . . )</pre> Удовлетворяющие фильтру записи возвращаются в * результате, а записи, которые не удовлетворяют условиям фильтра, * отбрасываются. <br><br> Допустимыми являются следующие * модификаторы: <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и * пустая строка так же удовлетворяют условиям фильтра.</li> </ul> * Допустимыми являются следующие операторы: <ul> <li> <b>>=</b> - значение * поля больше или равно передаваемой в фильтр величины;</li> <li> <b>></b> * - значение поля строго больше передаваемой в фильтр величины;</li> * <li> <b><=</b> - значение поля меньше или равно передаваемой в фильтр * величины;</li> <li> <b><</b> - значение поля строго меньше передаваемой * в фильтр величины;</li> <li> <b>@</b> - оператор может использоваться для * целочисленных и вещественных данных при передаче набора * значений (массива). В этом случае при генерации sql-запроса будет * использован sql-оператор <b>IN</b>, дающий компактную форму записи;</li> * <li> <b>~</b> - значение поля проверяется на соответствие * передаваемому в фильтр шаблону;</li> <li> <b>%</b> - значение поля * проверяется на соответствие передаваемой в фильтр строке в * соответствии с языком запросов.</li> </ul> В качестве "название_поляX" * может стоять любое поле. <br><br> Пример фильтра: <pre class="syntax">array("ACTIVE" * => "Y")</pre> Этот фильтр означает "выбрать все записи, в которых * значение в поле ACTIVE (флаг "Активность склада") равно Y". <br><br> * Значение по умолчанию - пустой массив array() - означает, что * результат отфильтрован не будет. * * * * @param array $arGroupBy = false Массив полей, по которым группируются записи. Массив имеет вид: <pre * class="syntax">array("название_поля1", "название_поля2", . . .)</pre> В качестве * "название_поля<i>N</i>" может стоять любое поле. <br><br> Если массив * пустой, то функция вернет число записей, удовлетворяющих фильтру. * <br><br> Значение по умолчанию - <i>false</i> - означает, что результат * группироваться не будет. * * * * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul> * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет * ограничено сверху значением этого ключа;</li> <li>любой ключ, * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что * параметров выборки нет. * * * * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно * указать только те поля, которые необходимы. Если в массиве * присутствует значение "*", то будут возвращены все доступные поля. * <br><br> Значение по умолчанию - пустой массив array() - означает, что * будут возвращены все поля основной таблицы запроса. * * * * @return mixed <p>Возвращает объект класса <a * href="http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php">CDBResult</a>, содержащий * коллекцию ассоциативных массивов с ключами.</p><br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogstore/getlist.php * @author Bitrix */ static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (empty($arSelectFields)) { $arSelectFields = array("ID", "ACTIVE", "TITLE", "PHONE", "SCHEDULE", "ADDRESS", "DESCRIPTION", "GPS_N", "GPS_S", "IMAGE_ID", "DATE_CREATE", "DATE_MODIFY", "USER_ID", "XML_ID"); } if (!isset($arFilter["PRODUCT_ID"]) && isset($arSelectFields["PRODUCT_AMOUNT"])) { unset($arSelectFields["PRODUCT_AMOUNT"]); } $productID = intval($arFilter["PRODUCT_ID"]); $arFields = array("ID" => array("FIELD" => "CS.ID", "TYPE" => "int"), "ACTIVE" => array("FIELD" => "CS.ACTIVE", "TYPE" => "string"), "TITLE" => array("FIELD" => "CS.TITLE", "TYPE" => "string"), "PHONE" => array("FIELD" => "CS.PHONE", "TYPE" => "string"), "SCHEDULE" => array("FIELD" => "CS.SCHEDULE", "TYPE" => "string"), "ADDRESS" => array("FIELD" => "CS.ADDRESS", "TYPE" => "string"), "DESCRIPTION" => array("FIELD" => "CS.DESCRIPTION", "TYPE" => "string"), "GPS_N" => array("FIELD" => "CS.GPS_N", "TYPE" => "string"), "GPS_S" => array("FIELD" => "CS.GPS_S", "TYPE" => "string"), "IMAGE_ID" => array("FIELD" => "CS.IMAGE_ID", "TYPE" => "int"), "LOCATION_ID" => array("FIELD" => "CS.LOCATION_ID", "TYPE" => "int"), "DATE_CREATE" => array("FIELD" => "CS.DATE_CREATE", "TYPE" => "datetime"), "DATE_MODIFY" => array("FIELD" => "CS.DATE_MODIFY", "TYPE" => "datetime"), "USER_ID" => array("FIELD" => "CS.USER_ID", "TYPE" => "int"), "MODIFIED_BY" => array("FIELD" => "CS.MODIFIED_BY", "TYPE" => "int"), "XML_ID" => array("FIELD" => "CS.XML_ID", "TYPE" => "string"), 'PRODUCT_AMOUNT' => array("FIELD" => "CP.AMOUNT", "TYPE" => "double", "FROM" => "LEFT JOIN b_catalog_store_product CP ON (CS.ID = CP.STORE_ID AND CP.PRODUCT_ID={$productID})")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_store CS " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_store CS " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " ORDER BY " . $arSqls["ORDERBY"]; } $intTopCount = 0; $boolNavStartParams = !empty($arNavStartParams) && is_array($arNavStartParams); if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_store CS " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql_tmp .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql_tmp .= " GROUP BY " . $arSqls["GROUPBY"]; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " LIMIT " . $intTopCount; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
function GetLangList($arFilter = array()) { global $DB; $arFields = array("ID" => array("FIELD" => "CGL.ID", "TYPE" => "int"), "CATALOG_GROUP_ID" => array("FIELD" => "CGL.CATALOG_GROUP_ID", "TYPE" => "int"), "LID" => array("FIELD" => "CGL.LANG", "TYPE" => "string"), "LANG" => array("FIELD" => "CGL.LANG", "TYPE" => "string"), "NAME" => array("FIELD" => "CGL.NAME", "TYPE" => "string")); $arSqls = CCatalog::PrepareSql($arFields, array(), $arFilter, false, false); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_catalog_group_lang CGL " . $arSqls["FROM"]; if (!empty($arSqls["WHERE"])) { $strSql .= " WHERE " . $arSqls["WHERE"]; } if (!empty($arSqls["GROUPBY"])) { $strSql .= " GROUP BY " . $arSqls["GROUPBY"]; } if (!empty($arSqls["ORDERBY"])) { $strSql .= " ORDER BY " . $arSqls["ORDERBY"]; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); return $dbRes; }
/** * <p>Функция возвращает результат выборки записей из каталога в соответствии со своими параметрами.</p> * * * * * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" => * "направление_сортировки1", "название_поля2" => * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>" * может стоять любое поле каталога, а в качестве * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки * имеет несколько элементов, то результирующий набор сортируется * последовательно по каждому элементу (т.е. сначала сортируется по * первому элементу, потом результат сортируется по второму и * т.д.). <br><br> Значение по умолчанию - пустой массив array() - означает, * что результат отсортирован не будет. * * * * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи каталога. * Массив имеет вид: <pre class="syntax">array( * "[модификатор1][оператор1]название_поля1" => "значение1", * "[модификатор2][оператор2]название_поля2" => "значение2", . . . )</pre> * Удовлетворяющие фильтру записи возвращаются в результате, а * записи, которые не удовлетворяют условиям фильтра, * отбрасываются.<br><br> Допустимыми являются следующие модификаторы: * <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и пустая строка * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми * являются следующие операторы: <ul> <li> <b>>=</b> - значение поля больше * или равно передаваемой в фильтр величины;</li> <li> <b>></b> - значение * поля строго больше передаваемой в фильтр величины;</li> <li> <b><=</b> - * значение поля меньше или равно передаваемой в фильтр величины;</li> * <li> <b><</b> - значение поля строго меньше передаваемой в фильтр * величины;</li> <li> <b>@</b> - оператор может использоваться для * целочисленных и вещественных данных при передаче набора * значений (массива). В этом случае при генерации sql-запроса будет * использован sql-оператор <b>IN</b>, дающий компактную форму записи;</li> * <li> <b>~</b> - значение поля проверяется на соответствие * передаваемому в фильтр шаблону;</li> <li> <b>%</b> - значение поля * проверяется на соответствие передаваемой в фильтр строке в * соответствии с языком запросов.</li> </ul> В качестве "название_поляX" * может стоять любое поле каталога.<br><br> Пример фильтра: <pre * class="syntax">array("SUBSCRIPTION" => "Y")</pre> Этот фильтр означает "выбрать все * записи, в которых значение в поле SUBSCRIPTION (флаг "Продажа контента") * равно Y".<br><br> Значение по умолчанию - пустой массив array() - означает, * что результат отфильтрован не будет. * * * * @param array $arGroupBy = false Массив полей, по которым группируются записи каталога. Массив * имеет вид: <pre class="syntax">array("название_поля1", "название_поля2", . . .)</pre> В * качестве "название_поля<i>N</i>" может стоять любое поле каталога. <br> * Если массив пустой, то функция вернет число записей, * удовлетворяющих фильтру.<br><br> Значение по умолчанию - <i>false</i> - * означает, что результат группироваться не будет. * * * * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul> * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет * ограничено сверху значением этого ключа;</li> <li> любой ключ, * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что * параметров выборки нет. * * * * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно * указать только те поля, которые необходимы. Если в массиве * присутствует значение "*", то будут возвращены все доступные * поля.<br><br> Значение по умолчанию - пустой массив array() - означает, * что будут возвращены все поля основной таблицы запроса. * * * * @return CDBResult <p>Возвращает объект класса CDBResult, содержащий коллекцию * ассоциативных массивов с ключами:</p><table class="tnormal" width="100%"> <tr> <th * width="15%">Ключ</th> <th>Описание</th> </tr> <tr> <td>ID</td> <td>Код каталога. * Совпадает с кодом информационного блока.</td> </tr> <tr> <td>IBLOCK_ID</td> * <td>Код информационного блока.</td> </tr> <tr> <td>IBLOCK_TYPE_ID</td> <td>Тип * информационного блока.</td> </tr> <tr> <td>SUBSCRIPTION</td> <td>Флаг "Продажа * контента".</td> </tr> <tr> <td>NAME</td> <td>Название информационного блока.</td> * </tr> <tr> <td>YANDEX_EXPORT</td> <td>флаг "экспортировать в Яндекс.Товары"</td> </tr> * </table><p>Если в качестве параметра arGroupBy передается пустой массив, * то функция вернет число записей, удовлетворяющих фильтру.</p><br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalog/ccatalog__getlist.d4805440.php * @author Bitrix */ public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; // For old-style execution if (!is_array($arOrder) && !is_array($arFilter)) { $arOrder = strval($arOrder); $arFilter = strval($arFilter); if ('' != $arOrder && '' != $arFilter) $arOrder = array($arOrder => $arFilter); else $arOrder = array(); if (is_array($arGroupBy)) $arFilter = $arGroupBy; else $arFilter = array(); $arGroupBy = false; } $arFields = array( "IBLOCK_ID" => array("FIELD" => "CI.IBLOCK_ID", "TYPE" => "int"), "YANDEX_EXPORT" => array("FIELD" => "CI.YANDEX_EXPORT", "TYPE" => "char"), "SUBSCRIPTION" => array("FIELD" => "CI.SUBSCRIPTION", "TYPE" => "char"), "VAT_ID" => array("FIELD" => "CI.VAT_ID", "TYPE" => "int"), "PRODUCT_IBLOCK_ID" => array("FIELD" => "CI.PRODUCT_IBLOCK_ID", "TYPE" => "int"), "SKU_PROPERTY_ID" => array("FIELD" => "CI.SKU_PROPERTY_ID", "TYPE" => "int"), "OFFERS_PROPERTY_ID" => array("FIELD" => "OFFERS.SKU_PROPERTY_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_catalog_iblock OFFERS ON (CI.IBLOCK_ID = OFFERS.PRODUCT_IBLOCK_ID)"), "OFFERS_IBLOCK_ID" => array("FIELD" => "OFFERS.IBLOCK_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_catalog_iblock OFFERS ON (CI.IBLOCK_ID = OFFERS.PRODUCT_IBLOCK_ID)"), "ID" => array("FIELD" => "I.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_iblock I ON (CI.IBLOCK_ID = I.ID)"), "IBLOCK_TYPE_ID" => array("FIELD" => "I.IBLOCK_TYPE_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock I ON (CI.IBLOCK_ID = I.ID)"), "IBLOCK_ACTIVE" => array("FIELD" => "I.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_iblock I ON (CI.IBLOCK_ID = I.ID)"), "LID" => array("FIELD" => "I.LID", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock I ON (CI.IBLOCK_ID = I.ID)"), "NAME" => array("FIELD" => "I.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock I ON (CI.IBLOCK_ID = I.ID)") ); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT ".$arSqls["SELECT"]." FROM b_catalog_iblock CI ".$arSqls["FROM"]; if (!empty($arSqls["WHERE"])) $strSql .= " WHERE ".$arSqls["WHERE"]; if (!empty($arSqls["GROUPBY"])) $strSql .= " GROUP BY ".$arSqls["GROUPBY"]; $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if ($arRes = $dbRes->Fetch()) return $arRes["CNT"]; else return False; } $strSql = "SELECT ".$arSqls["SELECT"]." FROM b_catalog_iblock CI ".$arSqls["FROM"]; if (!empty($arSqls["WHERE"])) $strSql .= " WHERE ".$arSqls["WHERE"]; if (!empty($arSqls["GROUPBY"])) $strSql .= " GROUP BY ".$arSqls["GROUPBY"]; if (!empty($arSqls["ORDERBY"])) $strSql .= " ORDER BY ".$arSqls["ORDERBY"]; $intTopCount = 0; $boolNavStartParams = (!empty($arNavStartParams) && is_array($arNavStartParams)); if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_iblock CI ".$arSqls["FROM"]; if (!empty($arSqls["WHERE"])) $strSql_tmp .= " WHERE ".$arSqls["WHERE"]; if (!empty($arSqls["GROUPBY"])) $strSql_tmp .= " GROUP BY ".$arSqls["GROUPBY"]; $dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."<br>Line: ".__LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) $cnt = $arRes["CNT"]; } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " LIMIT ".$intTopCount; } $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } return $dbRes; }
/** * <p>Функция возвращает результат выборки записей товаров в соответствии со своими параметрами. </p> * * * * * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" => * "направление_сортировки1", "название_поля2" => * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>" * может стоять любое поле товара, а в качестве * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки * имеет несколько элементов, то результирующий набор сортируется * последовательно по каждому элементу (т.е. сначала сортируется по * первому элементу, потом результат сортируется по второму и * т.д.). <br><br> Значение по умолчанию - пустой массив array() - означает, * что результат отсортирован не будет. * * * * @param array $arFilter = array() Массив, в соответствии с которым фильтруются записи товара. * Массив имеет вид: <pre class="syntax">array( * "[модификатор1][оператор1]название_поля1" => "значение1", * "[модификатор2][оператор2]название_поля2" => "значение2", . . . )</pre> * Удовлетворяющие фильтру записи возвращаются в результате, а * записи, которые не удовлетворяют условиям фильтра, * отбрасываются.<br><br> Допустимыми являются следующие модификаторы: * <ul> <li> <b> !</b> - отрицание;</li> <li> <b> +</b> - значения null, 0 и пустая строка * так же удовлетворяют условиям фильтра.</li> </ul> Допустимыми * являются следующие операторы: <ul> <li> <b>>=</b> - значение поля больше * или равно передаваемой в фильтр величины;</li> <li> <b>></b> - значение * поля строго больше передаваемой в фильтр величины;</li> <li><b> - * значение поля меньше или равно передаваемой в фильтр * величины;</b></li> <li><b> - значение поля строго меньше передаваемой в * фильтр величины;</b></li> <li> <b>@</b> - значение поля находится в * передаваемом в фильтр разделенном запятой списке значений;</li> <li> * <b>~</b> - значение поля проверяется на соответствие передаваемому в * фильтр шаблону;</li> <li> <b>%</b> - значение поля проверяется на * соответствие передаваемой в фильтр строке в соответствии с * языком запросов.</li> </ul> В качестве "название_поляX" может стоять * любое поле товара.<br><br> Пример фильтра: <pre class="syntax">array("SUBSCRIPTION" => * "Y")</pre> Этот фильтр означает "выбрать все записи, в которых * значение в поле SUBSCRIPTION (флаг "Продажа контента") равно Y".<br><br> * Значение по умолчанию - пустой массив array() - означает, что * результат отфильтрован не будет. * * * * @param array $arGroupBy = false Массив полей, по которым группируются записи типов товара. Массив * имеет вид: <pre class="syntax">array("название_поля1", "название_поля2", . . .)</pre> В * качестве "название_поля<i>N</i>" может стоять любое поле типов * товара. <br><br> Если массив пустой, то функция вернет число записей, * удовлетворяющих фильтру.<br><br> Значение по умолчанию - <i>false</i> - * означает, что результат группироваться не будет. * * * * @param array $arNavStartParams = false Массив параметров выборки. Может содержать следующие ключи: <ul> * <li>"<b>nTopCount</b>" - количество возвращаемых функцией записей будет * ограничено сверху значением этого ключа;</li> <li> любой ключ, * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что * параметров выборки нет. * * * * @param array $arSelectFields = array() Массив полей записей, которые будут возвращены функцией. Можно * указать только те поля, которые необходимы. Если в массиве * присутствует значение "*", то будут возвращены все доступные * поля.<br><br> Значение по умолчанию - пустой массив array() - означает, * что будут возвращены все поля основной таблицы запроса. * * * * @return CDBResult <p>Объект класса CDBResult, содержащий записи в виде ассоциативных * массивов параметров товара с ключами</p><table class="tnormal" width="100%"> <tr> <th * width="15%">Ключ</th> <th>Описание</th> </tr> <tr> <td>ID</td> <td>Код товара.</td> </tr> <tr> * <td>QUANTITY</td> <td>Количество на складе.</td> </tr> <tr> <td>QUANTITY_TRACE</td> <td>Флаг * (Y/N/D - значение берется из настроек модуля) "уменьшать количество * при оформлении заказа"</td> </tr> <tr> <td>WEIGHT</td> <td>Вес единицы товара.</td> * </tr> <tr> <td>PRICE_TYPE</td> <td>Тип цены (S - одноразовый платеж, R - регулярные * платежи, T - пробная подписка)</td> </tr> <tr> <td>RECUR_SCHEME_TYPE</td> <td>Тип * периода подписки ("H" - час, "D" - сутки, "W" - неделя, "M" - месяц, "Q" - * квартал, "S" - полугодие, "Y" - год)</td> </tr> <tr> <td>RECUR_SCHEME_LENGTH</td> <td>Длина * периода подписки.</td> </tr> <tr> <td>TRIAL_PRICE_ID</td> <td>Код товара, для * которого данный товар является пробным.</td> </tr> <tr> <td>WITHOUT_ORDER</td> * <td>Флаг "Продление подписки без оформления заказа"</td> </tr> <tr> * <td>VAT_ID</td> <td>Идентификатор ставки НДС.</td> </tr> <tr> <td>VAT_INCLUDED</td> * <td>Признак включённости НДС в цену (Y/N).</td> </tr> <tr> <td>PURCHASING_PRICE</td> * <td>Величина закупочной цены.</td> </tr> <tr> <td>PURCHASING_CURRENCY</td> <td>Валюта * закупочной цены.</td> </tr> <tr> <td>CAN_BUY_ZERO</td> <td>Флаг (Y/N/D - значение * берется из настроек модуля) "разрешить покупку при отсутствии * товара".</td> </tr> <tr> <td>NEGATIVE_AMOUNT_TRACE</td> <td>Флаг (Y/N/D - значение берется из * настроек модуля) "разрешить отрицательное количество товара".</td> * </tr> </table><a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * // Выведем коды 10 товаров с самым большим количеством на складе * // из тех, количество которых при заказе должно уменьшаться * $ind = 0; * $db_res = CCatalogProduct::GetList( * array("QUANTITY" => "DESC"), * array("QUANTITY_TRACE" => "Y"), * false, * array("nTopCount" => 10) * ); * while (($ar_res = $db_res->Fetch()) && ($ind < 10)) * { * echo $ar_res["ID"].", "; * $ind++; * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/catalog/classes/ccatalogproduct/ccatalogproduct__getlist.971a2b70.php * @author Bitrix */ public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (!is_array($arOrder) && !is_array($arFilter)) { $arOrder = strval($arOrder); $arFilter = strval($arFilter); if ('' != $arOrder && '' != $arFilter) $arOrder = array($arOrder => $arFilter); else $arOrder = array(); if (is_array($arGroupBy)) $arFilter = $arGroupBy; else $arFilter = array(); $arGroupBy = false; } $arFields = array( "ID" => array("FIELD" => "CP.ID", "TYPE" => "int"), "QUANTITY" => array("FIELD" => "CP.QUANTITY", "TYPE" => "double"), "QUANTITY_RESERVED" => array("FIELD" => "CP.QUANTITY_RESERVED", "TYPE" => "double"), "QUANTITY_TRACE_ORIG" => array("FIELD" => "CP.QUANTITY_TRACE", "TYPE" => "char"), "CAN_BUY_ZERO_ORIG" => array("FIELD" => "CP.CAN_BUY_ZERO", "TYPE" => "char"), "NEGATIVE_AMOUNT_TRACE_ORIG" => array("FIELD" => "CP.NEGATIVE_AMOUNT_TRACE", "TYPE" => "char"), "QUANTITY_TRACE" => array("FIELD" => "IF (CP.QUANTITY_TRACE = 'D', '".$DB->ForSql(COption::GetOptionString('catalog','default_quantity_trace','N'))."', CP.QUANTITY_TRACE)", "TYPE" => "char"), "CAN_BUY_ZERO" => array("FIELD" => "IF (CP.CAN_BUY_ZERO = 'D', '".$DB->ForSql(COption::GetOptionString('catalog','default_can_buy_zero','N'))."', CP.CAN_BUY_ZERO)", "TYPE" => "char"), "NEGATIVE_AMOUNT_TRACE" => array("FIELD" => "IF (CP.NEGATIVE_AMOUNT_TRACE = 'D', '".$DB->ForSql(COption::GetOptionString('catalog','allow_negative_amount','N'))."', CP.NEGATIVE_AMOUNT_TRACE)", "TYPE" => "char"), "WEIGHT" => array("FIELD" => "CP.WEIGHT", "TYPE" => "double"), "TIMESTAMP_X" => array("FIELD" => "CP.TIMESTAMP_X", "TYPE" => "datetime"), "PRICE_TYPE" => array("FIELD" => "CP.PRICE_TYPE", "TYPE" => "char"), "RECUR_SCHEME_TYPE" => array("FIELD" => "CP.RECUR_SCHEME_TYPE", "TYPE" => "char"), "RECUR_SCHEME_LENGTH" => array("FIELD" => "CP.RECUR_SCHEME_LENGTH", "TYPE" => "int"), "TRIAL_PRICE_ID" => array("FIELD" => "CP.TRIAL_PRICE_ID", "TYPE" => "int"), "WITHOUT_ORDER" => array("FIELD" => "CP.WITHOUT_ORDER", "TYPE" => "char"), "SELECT_BEST_PRICE" => array("FIELD" => "CP.SELECT_BEST_PRICE", "TYPE" => "char"), "VAT_ID" => array("FIELD" => "CP.VAT_ID", "TYPE" => "int"), "VAT_INCLUDED" => array("FIELD" => "CP.VAT_INCLUDED", "TYPE" => "char"), "TMP_ID" => array("FIELD" => "CP.TMP_ID", "TYPE" => "char"), "PURCHASING_PRICE" => array("FIELD" => "CP.PURCHASING_PRICE", "TYPE" => "double"), "PURCHASING_CURRENCY" => array("FIELD" => "CP.PURCHASING_CURRENCY", "TYPE" => "string"), "BARCODE_MULTI" => array("FIELD" => "CP.BARCODE_MULTI", "TYPE" => "char"), "ELEMENT_IBLOCK_ID" => array("FIELD" => "I.IBLOCK_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_iblock_element I ON (CP.ID = I.ID)"), "ELEMENT_XML_ID" => array("FIELD" => "I.XML_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock_element I ON (CP.ID = I.ID)"), "ELEMENT_NAME" => array("FIELD" => "I.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_iblock_element I ON (CP.ID = I.ID)") ); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (empty($arGroupBy) && is_array($arGroupBy)) { $strSql = "SELECT ".$arSqls["SELECT"]." FROM b_catalog_product CP ".$arSqls["FROM"]; if (!empty($arSqls["WHERE"])) $strSql .= " WHERE ".$arSqls["WHERE"]; if (!empty($arSqls["GROUPBY"])) $strSql .= " GROUP BY ".$arSqls["GROUPBY"]; $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if ($arRes = $dbRes->Fetch()) return $arRes["CNT"]; else return false; } $strSql = "SELECT ".$arSqls["SELECT"]." FROM b_catalog_product CP ".$arSqls["FROM"]; if (!empty($arSqls["WHERE"])) $strSql .= " WHERE ".$arSqls["WHERE"]; if (!empty($arSqls["GROUPBY"])) $strSql .= " GROUP BY ".$arSqls["GROUPBY"]; if (!empty($arSqls["ORDERBY"])) $strSql .= " ORDER BY ".$arSqls["ORDERBY"]; $intTopCount = 0; $boolNavStartParams = (!empty($arNavStartParams) && is_array($arNavStartParams)); if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams)) { $intTopCount = intval($arNavStartParams["nTopCount"]); } if ($boolNavStartParams && 0 >= $intTopCount) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_catalog_product CP ".$arSqls["FROM"]; if (!empty($arSqls["WHERE"])) $strSql_tmp .= " WHERE ".$arSqls["WHERE"]; if (!empty($arSqls["GROUPBY"])) $strSql_tmp .= " GROUP BY ".$arSqls["GROUPBY"]; $dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."<br>Line: ".__LINE__); $cnt = 0; if (empty($arSqls["GROUPBY"])) { if ($arRes = $dbRes->Fetch()) $cnt = $arRes["CNT"]; } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if ($boolNavStartParams && 0 < $intTopCount) { $strSql .= " LIMIT ".$intTopCount; } $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } return $dbRes; }
public static function getList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "PERSON_TYPE", "PERSON_NAME", "PERSON_LASTNAME", "PERSON_MIDDLENAME", "EMAIL", "PHONE", "POST_INDEX", "COUNTRY", "CITY", "COMPANY", "ADDRESS", "INN", "KPP"); } $arFields = array("ID" => array("FIELD" => "CC.ID", "TYPE" => "int"), "PERSON_TYPE" => array("FIELD" => "CC.PERSON_TYPE", "TYPE" => "char"), "PERSON_NAME" => array("FIELD" => "CC.PERSON_NAME", "TYPE" => "string"), "PERSON_LASTNAME" => array("FIELD" => "CC.PERSON_LASTNAME", "TYPE" => "string"), "PERSON_MIDDLENAME" => array("FIELD" => "CC.PERSON_MIDDLENAME", "TYPE" => "string"), "EMAIL" => array("FIELD" => "CC.EMAIL", "TYPE" => "string"), "PHONE" => array("FIELD" => "CC.PHONE", "TYPE" => "string"), "POST_INDEX" => array("FIELD" => "CC.POST_INDEX", "TYPE" => "string"), "COUNTRY" => array("FIELD" => "CC.COUNTRY", "TYPE" => "string"), "CITY" => array("FIELD" => "CC.CITY", "TYPE" => "string"), "COMPANY" => array("FIELD" => "IF (CC.PERSON_NAME IS NOT NULL, if(CC.PERSON_TYPE = " . CONTRACTOR_INDIVIDUAL . ", CC.PERSON_NAME, CONCAT(CC.COMPANY,' (',CC.PERSON_NAME,')')), CC.COMPANY)", "TYPE" => "string"), "ADDRESS" => array("FIELD" => "CC.ADDRESS", "TYPE" => "string"), "INN" => array("FIELD" => "CC.INN", "TYPE" => "string"), "KPP" => array("FIELD" => "CC.KPP", "TYPE" => "string"), "DATE_CREATE" => array("FIELD" => "CC.DATE_CREATE", "TYPE" => "datetime"), "DATE_MODIFY" => array("FIELD" => "CC.DATE_MODIFY", "TYPE" => "datetime"), "CREATED_BY" => array("FIELD" => "CC.CREATED_BY", "TYPE" => "int"), "MODIFIED_BY" => array("FIELD" => "CC.MODIFIED_BY", "TYPE" => "int")); $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_contractor CC " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_catalog_contractor CC " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } if (strlen($arSqls["ORDERBY"]) > 0) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_catalog_contractor CC " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = 0; if (strlen($arSqls["GROUPBY"]) <= 0) { if ($arRes = $dbRes->Fetch()) { $cnt = $arRes["CNT"]; } } else { $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . intval($arNavStartParams["nTopCount"]); } $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }