/** * <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("!PERSON_TYPE_ID" * => 1)</pre> Этот фильтр означает "выбрать все записи, в которых * значение в поле PERSON_TYPE_ID (код типа плательщика) не равно 1".<br><br> * Значение по умолчанию - пустой массив array() - означает, что * результат отфильтрован не будет. * * * * @param array $arGroupBy = false Массив полей, по которым группируются записи групп свойств. * Массив имеет вид: <pre class="syntax">array("название_поля1", * "группирующая_функция2" => "название_поля2", ...)</pre> В качестве * "название_поля<i>N</i>" может стоять любое поле групп свойств. В * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> - * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li> * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> - * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление * суммы.</li> </ul> Если массив пустой, то функция вернет число записей, * удовлетворяющих фильтру.<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>PERSON_TYPE_ID</td> <td>Тип плательщика.</td> * </tr> <tr> <td>NAME</td> <td>Название группы.</td> </tr> <tr> <td>SORT</td> <td>Индекс * сортировки.</td> </tr> </table> <p>Если в качестве параметра arGroupBy * передается пустой массив, то функция вернет число записей, * удовлетворяющих фильтру.</p> <a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * // Выведем все группы свойств для плательщика с кодом $PERSON_TYPE * $db_propsGroup = CSaleOrderPropsGroup::GetList( * array("SORT" => "ASC"), * array("PERSON_TYPE_ID" => $PERSON_TYPE), * false, * false, * array() * ); * * while ($propsGroup = $db_propsGroup->Fetch()) * { * echo $propsGroup["NAME"]."<br>"; * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorderpropsgroup/csaleorderpropsgroup__getlist.7a3426ca.php * @author Bitrix */ public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; // To call the old form 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" => "PG.ID", "TYPE" => "int"), "PERSON_TYPE_ID" => array("FIELD" => "PG.PERSON_TYPE_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "PG.NAME", "TYPE" => "string"), "SORT" => array("FIELD" => "PG.SORT", "TYPE" => "int")); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_order_props_group PG " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_order_props_group PG " . "\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_sale_order_props_group PG " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
public static function GetBuyersList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (empty($arSelectFields) || in_array("*", $arSelectFields)) { $arSelectFields = array("ID", "ACTIVE", "LID", "DATE_REGISTER", "LOGIN", "EMAIL", "NAME", "LAST_NAME", "SECOND_NAME", "PERSONAL_PHONE", "USER_ID", "LAST_LOGIN", "TIMESTAMP_X", "PERSONAL_BIRTHDAY", "ORDER_COUNT", "ORDER_SUM", "CURRENCY", "LAST_ORDER_DATE"); } $arFields_m = array("ACTIVE", "LOGIN", "EMAIL", "NAME", "LAST_NAME", "SECOND_NAME", "PERSONAL_PHONE"); $arFields_md = array("LAST_LOGIN", "DATE_REGISTER", "TIMESTAMP_X", "PERSONAL_BIRTHDAY"); $CURRENCY = ""; if (strlen($arFilter["CURRENCY"]) > 0) { $CURRENCY = $arFilter["CURRENCY"]; unset($arFilter["CURRENCY"]); } else { CModule::IncludeModule("currency"); $CURRENCY = CCurrency::GetBaseCurrency(); } $LID = ""; if (strlen($arFilter["LID"]) > 0) { $LID = $arFilter["LID"]; unset($arFilter["LID"]); } else { $rsSites = CSite::GetList($by = "id", $order = "asc", array("ACTIVE" => "Y")); $arSite = $rsSites->Fetch(); $LID = $arSite["ID"]; } $arFields = array("ID" => array("FIELD" => "F.ID", "TYPE" => "int"), "LID" => array("FIELD" => "O1.LID", "TYPE" => "string"), "ORDER_COUNT" => array("FIELD" => "(SELECT COUNT(O3.PRICE) FROM b_sale_order O3 WHERE O3.USER_ID=F.USER_ID AND O3.CURRENCY = '" . $DB->ForSQL($CURRENCY) . "' AND O3.PAYED = 'Y' AND O3.LID = '" . $DB->ForSQL($LID) . "' )", "TYPE" => "double"), "ORDER_SUM" => array("FIELD" => "(SELECT SUM(O3.PRICE) FROM b_sale_order O3 WHERE O3.USER_ID=F.USER_ID AND O3.CURRENCY = '" . $DB->ForSQL($CURRENCY) . "' AND O3.PAYED = 'Y' AND O3.LID = '" . $DB->ForSQL($LID) . "' )", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "O1.CURRENCY", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order O1 ON (O1.USER_ID=U.ID AND O1.CURRENCY = '" . $DB->ForSQL($CURRENCY) . "' AND O1.LID = '" . $DB->ForSQL($LID) . "' AND O1.PAYED = 'Y')"), "LAST_ORDER_DATE" => array("FIELD" => "(SELECT MAX(O2.DATE_INSERT) FROM b_sale_order O2 WHERE (O2.USER_ID=F.USER_ID))", "TYPE" => "datetime"), "NAME_SEARCH" => array("FIELD" => "U.NAME, U.LAST_NAME, U.SECOND_NAME, U.EMAIL, U.LOGIN, U.ID", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (U.ID = F.USER_ID)"), "USER_ID" => array("FIELD" => "F.USER_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_user U ON (U.ID = F.USER_ID)"), "GROUPS_ID" => array("FIELD" => "UG.GROUP_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_user_group UG ON (UG.USER_ID = F.USER_ID)")); foreach ($arFields_m as $val) { $arFields[$val] = array("FIELD" => "U." . $val, "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (U.ID = F.USER_ID)"); } foreach ($arFields_md as $val) { $arFields[$val] = array("FIELD" => "U." . $val, "TYPE" => "datetime", "FROM" => "INNER JOIN b_user U ON (U.ID = F.USER_ID)"); } if (!in_array("USER_ID", $arSelectFields)) { $arSelectFields[] = "USER_ID"; } $arFilterH = array(); if (!empty($arFilter)) { foreach ($arFilter as $k => $v) { if (strpos($k, "ORDER_SUM") !== false || strpos($k, "ORDER_COUNT") !== false || strpos($k, "LAST_ORDER_DATE") !== false) { $arFilterH[$k] = $v; unset($arFilter[$k]); } } } if (!empty($arFilterH)) { $arSqlsH = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilterH, false, $arSelectFields); } $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_fuser F " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } $strSql .= "GROUP BY F.USER_ID "; if (strlen($arSqlsH["WHERE"]) > 0) { $strSql .= "HAVING " . $arSqlsH["WHERE"] . " "; } if (strlen($arSqls["ORDERBY"]) > 0) { $strSql .= "ORDER BY " . $arSqls["ORDERBY"] . " "; } // echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_fuser F " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } $strSql_tmp .= "GROUP BY F.USER_ID "; if (strlen($arSqlsH["WHERE"]) > 0) { $strSql_tmp .= "HAVING " . $arSqlsH["WHERE"] . " "; } // echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $dbRes = $DB->Query($strSql_tmp, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $cnt = $dbRes->SelectedRowsCount(); $dbRes = new CDBResult(); // echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } // echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $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> Значение по умолчанию - пустой массив array() - * означает, что результат отфильтрован не будет. * * * * @param array $arGroupBy = false Массив полей, по которым группируются записи типов плательщика. * Массив имеет вид: <pre class="syntax">array("название_поля1", * "группирующая_функция2" => "название_поля2", ...)</pre> В качестве * "название_поля<i>N</i>" может стоять любое поле типов плательщика. В * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> - * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li> * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> - * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление * суммы.</li> </ul> Этот фильтр означает "выбрать все записи, в которых * значение в поле LID (сайт системы) не равно en".<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>LID</td> <td>Код * сайта.</td> </tr> <tr> <td>LIDS</td> <td>Фильтрация/выборка всех сайтов, к * которым привязан тип плательщика.</td> </tr> <tr> <td>NAME</td> <td>Название * типа плательщика.</td> </tr> <tr> <td>SORT</td> <td>Индекс сортировки.</td> </tr> <tr> * <td>ACTIVE</td> <td>Флаг активности пользователя [Y|N].</td> </tr> </table> <p>Если в * качестве параметра arGroupBy передается пустой массив, то функция * вернет число записей, удовлетворяющих фильтру.</p> <a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * // Выведем переключатели для выбора типа плательщика для текущего сайта * $db_ptype = CSalePersonType::GetList(Array("SORT" => "ASC"), Array("LID"=>SITE_ID)); * $bFirst = True; * while ($ptype = $db_ptype->Fetch()) * { * ?><input type="radio" name="PERSON_TYPE" value="<?echo $ptype["ID"] ?>"<?if ($bFirst) echo " checked";?>><?echo $ptype["NAME"] ?><br><? * $bFirst = <i>false</i>; * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalepersontype/csalepersontype__getlist.2dca23fd.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 (strlen($arOrder) > 0 && strlen($arFilter) > 0) { $arOrder = array($arOrder => $arFilter); } else { $arOrder = array(); } if (is_array($arGroupBy)) { $arFilter = $arGroupBy; } else { $arFilter = array(); } $arGroupBy = false; } if (empty($arSelectFields)) { $arSelectFields = array("ID", "LID", "NAME", "SORT", "ACTIVE"); } if (is_set($arFilter, "LID") && !empty($arFilter["LID"])) { $arFilter["LIDS"] = $arFilter["LID"]; unset($arFilter["LID"]); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "PT.ID", "TYPE" => "int"), "LID" => array("FIELD" => "PT.LID", "TYPE" => "string"), "LIDS" => array("FIELD" => "PTS.SITE_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_person_type_site PTS ON (PT.ID = PTS.PERSON_TYPE_ID)"), "NAME" => array("FIELD" => "PT.NAME", "TYPE" => "string"), "SORT" => array("FIELD" => "PT.SORT", "TYPE" => "int"), "ACTIVE" => array("FIELD" => "PT.ACTIVE", "TYPE" => "char")); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_person_type PT " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_person_type PT " . "\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_sale_person_type PT " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } $arPT = array(); $arResTmp = array(); while ($arRes = $dbRes->Fetch()) { if (IntVal($arRes["ID"]) > 0) { if (!in_array($arRes["ID"], $arPT)) { $arPT[] = $arRes["ID"]; } $arResTmp[] = $arRes; } } if (!empty($arPT) && is_array($arPT)) { $strSql = "SELECT * from b_sale_person_type_site WHERE PERSON_TYPE_ID IN (" . implode(",", $arPT) . ")"; $dbRes1 = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); while ($arRes1 = $dbRes1->Fetch()) { $arRes2[$arRes1["PERSON_TYPE_ID"]][] = $arRes1["SITE_ID"]; } } foreach ($arResTmp as $k => $v) { $arResTmp[$k]["LIDS"] = $arRes2[$v["ID"]]; } $dbRes = new CDBResult(); $dbRes->InitFromArray($arResTmp); return $dbRes; }
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 (strlen($arOrder) > 0 && strlen($arFilter) > 0) { $arOrder = array($arOrder => $arFilter); } else { $arOrder = array(); } if (is_array($arGroupBy)) { $arFilter = $arGroupBy; } else { $arFilter = array(); } $arGroupBy = false; $arSelectFields = array("ID", "PERSON_TYPE_ID", "NAME", "TYPE", "REQUIED", "DEFAULT_VALUE", "SORT", "USER_PROPS", "IS_LOCATION", "PROPS_GROUP_ID", "SIZE1", "SIZE2", "DESCRIPTION", "IS_EMAIL", "IS_PROFILE_NAME", "IS_PAYER", "IS_LOCATION4TAX", "IS_ZIP", "CODE", "IS_FILTERED", "ACTIVE", "UTIL", "INPUT_FIELD_LOCATION"); } if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "PERSON_TYPE_ID", "NAME", "TYPE", "REQUIED", "DEFAULT_VALUE", "SORT", "USER_PROPS", "IS_LOCATION", "PROPS_GROUP_ID", "SIZE1", "SIZE2", "DESCRIPTION", "IS_EMAIL", "IS_PROFILE_NAME", "IS_PAYER", "IS_LOCATION4TAX", "IS_ZIP", "CODE", "IS_FILTERED", "ACTIVE", "UTIL", "INPUT_FIELD_LOCATION"); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "P.ID", "TYPE" => "int"), "PERSON_TYPE_ID" => array("FIELD" => "P.PERSON_TYPE_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "P.NAME", "TYPE" => "string"), "TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string"), "REQUIED" => array("FIELD" => "P.REQUIED", "TYPE" => "char"), "REQUIRED" => array("FIELD" => "P.REQUIED", "TYPE" => "char"), "DEFAULT_VALUE" => array("FIELD" => "P.DEFAULT_VALUE", "TYPE" => "string"), "SORT" => array("FIELD" => "P.SORT", "TYPE" => "int"), "USER_PROPS" => array("FIELD" => "P.USER_PROPS", "TYPE" => "char"), "IS_LOCATION" => array("FIELD" => "P.IS_LOCATION", "TYPE" => "char"), "PROPS_GROUP_ID" => array("FIELD" => "P.PROPS_GROUP_ID", "TYPE" => "int"), "SIZE1" => array("FIELD" => "P.SIZE1", "TYPE" => "int"), "SIZE2" => array("FIELD" => "P.SIZE2", "TYPE" => "int"), "DESCRIPTION" => array("FIELD" => "P.DESCRIPTION", "TYPE" => "string"), "IS_EMAIL" => array("FIELD" => "P.IS_EMAIL", "TYPE" => "char"), "IS_PROFILE_NAME" => array("FIELD" => "P.IS_PROFILE_NAME", "TYPE" => "char"), "IS_PAYER" => array("FIELD" => "P.IS_PAYER", "TYPE" => "char"), "IS_LOCATION4TAX" => array("FIELD" => "P.IS_LOCATION4TAX", "TYPE" => "char"), "IS_FILTERED" => array("FIELD" => "P.IS_FILTERED", "TYPE" => "char"), "IS_ZIP" => array("FIELD" => "P.IS_ZIP", "TYPE" => "char"), "CODE" => array("FIELD" => "P.CODE", "TYPE" => "string"), "ACTIVE" => array("FIELD" => "P.ACTIVE", "TYPE" => "char"), "UTIL" => array("FIELD" => "P.UTIL", "TYPE" => "char"), "INPUT_FIELD_LOCATION" => array("FIELD" => "P.INPUT_FIELD_LOCATION", "TYPE" => "int"), "GROUP_ID" => array("FIELD" => "PG.ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "GROUP_PERSON_TYPE_ID" => array("FIELD" => "PG.PERSON_TYPE_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "GROUP_NAME" => array("FIELD" => "PG.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "GROUP_SORT" => array("FIELD" => "PG.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "PERSON_TYPE_LID" => array("FIELD" => "SPT.LID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PERSON_TYPE_NAME" => array("FIELD" => "SPT.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PERSON_TYPE_SORT" => array("FIELD" => "SPT.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PERSON_TYPE_ACTIVE" => array("FIELD" => "SPT.ACTIVE", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)")); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_order_props P " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_order_props P " . "\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_sale_order_props P " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $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>" * может стоять любое поле информации о временном доступе, а в * качестве "направление_сортировки<span lang="en-us"><span class="style1">N</span></span>" * могут быть значения "<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> В качестве "название_поля<span lang="en-us">N</span>" может стоять любое * поле информации о временном доступе.<br><br> Пример фильтра: <pre * class="syntax">array("USER_ID" => 150)</pre> Этот фильтр означает "выбрать все * записи, в которых значение в поле USER_ID (код пользователя) равно * 150".<br><br> Значение по умолчанию - пустой массив array() - означает, что * результат отфильтрован не будет. * * @param array $arGroupBy = false Массив полей, по которым группируются записи информации о * временном доступе. Массив имеет вид: <pre * class="syntax">array("название_поля1", "группирующая_функция2" => * "название_поля2", . . .)</pre> В качестве "название_поля<i>N</i>" может * стоять любое поле информации о временном доступе. В качестве * группирующей функции могут стоять: <ul> <li> <b> COUNT</b> - подсчет * количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li> <li> * <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> - * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление * суммы.</li> </ul> Если массив пустой, то метод вернет число записей, * удовлетворяющих фильтру.<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> <ul> <li> <b>ID</b> - код записи; </li> <li> <b>USER_ID</b> - код * пользователя; </li> <li> <b>ITEM</b> - ресурс, доступ к которому разрешен; * </li> <li> <b>ITEM_MD5</b> - идентификатор ресурса (строка, однозначно * идентифицирующая ресурс); </li> <li> <b>TIMESTAMP_X</b> - дата изменения; </li> <li> * <b>DATE_INSERT</b> - дата вставки записи.</li> </ul> <p>Если в качестве параметра * arGroupBy передается пустой массив, то метод вернет число записей, * удовлетворяющих фильтру.</p> <br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleauxiliary/csaleauxiliary.getlist.php * @author Bitrix */ public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "USER_ID", "TIMESTAMP_X", "ITEM", "ITEM_MD5", "DATE_INSERT"); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "A.ID", "TYPE" => "int"), "USER_ID" => array("FIELD" => "A.USER_ID", "TYPE" => "int"), "TIMESTAMP_X" => array("FIELD" => "A.TIMESTAMP_X", "TYPE" => "datetime"), "ITEM" => array("FIELD" => "A.ITEM", "TYPE" => "string"), "ITEM_MD5" => array("FIELD" => "A.ITEM_MD5", "TYPE" => "string", "WHERE" => array("CSaleAuxiliary", "PrepareItemMD54Where")), "DATE_INSERT" => array("FIELD" => "A.DATE_INSERT", "TYPE" => "datetime")); // <-- FIELDS $arSqls = CSaleOrder::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_sale_auxiliary A " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_auxiliary A " . "\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_sale_auxiliary A " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br><br>"; $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("USER_ID" => 150)</pre> Этот * фильтр означает "выбрать все записи, в которых значение в поле * USER_ID (код пользователя) равно 150".<br><br> Значение по умолчанию - * пустой массив array() - означает, что результат отфильтрован не * будет. * * @param array $arGroupBy = false Массив полей, по которым группируются записи счетов. Массив имеет * вид: <pre class="syntax">array("название_поля1", "группирующая_функция2" => * "название_поля2", ...)</pre> В качестве "название_поля<i>N</i>" может стоять * любое поле счетов. В качестве группирующей функции могут стоять: * <ul> <li> <b> COUNT</b> - подсчет количества;</li> <li> <b>AVG</b> - вычисление * среднего значения;</li> <li> <b>MIN</b> - вычисление минимального * значения;</li> <li> <b> MAX</b> - вычисление максимального значения;</li> <li> * <b>SUM</b> - вычисление суммы.</li> </ul> Если массив пустой, то метод * вернет число записей, удовлетворяющих фильтру.<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> <ul> <li> <b>ID</b> - код * счета;</li> <li> <b>USER_ID</b> - код пользователя-владельца;</li> <li> * <b>CURRENT_BUDGET</b> - текущая сумма на счете;</li> <li> <b>CURRENCY</b> - валюта;</li> <li> * <b>NOTES</b> - текстовое описание;</li> <li> <b>LOCKED</b> - флаг * заблокированности счета;</li> <li> <b>TIMESTAMP_X</b> - дата последнего * изменения;</li> <li> <b>DATE_LOCKED</b> - дата блокировки счета Если в качестве * параметра arGroupBy передается пустой массив, то метод вернет число * записей, удовлетворяющих фильтру.</li> </ul> <a name="examples"></a> * * <h4>Example</h4> * <pre> * <? * // Выберем все счета (в разных валютах) пользователя с кодом 21 * $dbAccountCurrency = CSaleUserAccount::GetList( * array(), * array("USER_ID" => "21"), * false, * false, * array("CURRENT_BUDGET", "CURRENCY") * ); * while ($arAccountCurrency = $dbAccountCurrency->Fetch()) * { * echo "На счете ".$arAccountCurrency["CURRENCY"].": "; * echo SaleFormatCurrency($arAccountCurrency["CURRENT_BUDGET"], * $arAccountCurrency["CURRENCY"])."<br>"; * } * * // Выберем, сумму счетов покупателей (сколько должен магазин покупателям) * $dbAccountCurrency = CSaleUserAccount::GetList( * array("CURRENCY" => "ASC"), * array(), * array("CURRENCY", "SUM" => "CURRENT_BUDGET"), * false, * array("CURRENCY", "SUM" => "CURRENT_BUDGET") * ); * while ($arAccountCurrency = $dbAccountCurrency->Fetch()) * { * echo "В валюте ".$arAccountCurrency["CURRENCY"].": "; * echo SaleFormatCurrency($arAccountCurrency["CURRENT_BUDGET"], * $arAccountCurrency["CURRENCY"])."<br>"; * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleuseraccount/csaleuseraccount.getlist.php * @author Bitrix */ public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "USER_ID", "CURRENT_BUDGET", "CURRENCY", "LOCKED", "NOTES", "TIMESTAMP_X", "DATE_LOCKED"); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "UA.ID", "TYPE" => "int"), "USER_ID" => array("FIELD" => "UA.USER_ID", "TYPE" => "int"), "CURRENT_BUDGET" => array("FIELD" => "UA.CURRENT_BUDGET", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "UA.CURRENCY", "TYPE" => "string"), "LOCKED" => array("FIELD" => "UA.LOCKED", "TYPE" => "char"), "NOTES" => array("FIELD" => "UA.NOTES", "TYPE" => "string"), "TIMESTAMP_X" => array("FIELD" => "UA.TIMESTAMP_X", "TYPE" => "datetime"), "DATE_LOCKED" => array("FIELD" => "UA.DATE_LOCKED", "TYPE" => "datetime"), "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"), "USER_ACTIVE" => array("FIELD" => "U.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"), "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"), "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"), "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)"), "USER_USER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UA.USER_ID = U.ID)")); // <-- FIELDS $arSqls = CSaleOrder::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_sale_user_account UA " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_user_account UA " . "\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_sale_user_account UA " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $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("USER_ID" => 150)</pre> * Этот фильтр означает "выбрать все записи, в которых значение в * поле USER_ID (код пользователя) равно 150".<br><br> Значение по умолчанию - * пустой массив array() - означает, что результат отфильтрован не * будет. * * * * @param array $arGroupBy = false Массив полей, по которым группируются записи карт. Массив имеет * вид: <pre class="syntax">array("название_поля1", "группирующая_функция2" => * "название_поля2", . . .)</pre> В качестве "название_поля<i>N</i>" может * стоять любое поле карт. В качестве группирующей функции могут * стоять: <ul> <li> <b> COUNT</b> - подсчет количества;</li> <li> <b>AVG</b> - вычисление * среднего значения;</li> <li> <b>MIN</b> - вычисление минимального * значения;</li> <li> <b> MAX</b> - вычисление максимального значения;</li> <li> * <b>SUM</b> - вычисление суммы.</li> </ul> Если массив пустой, то функция * вернет число записей, удовлетворяющих фильтру.<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><ul> <li> <b>ID</b> - код * пластиковой карты;</li> <li> <b>USER_ID</b> - код пользователя;</li> <li> <b>SORT</b> - * индекс сортировки;</li> <li> <b>PAY_SYSTEM_ACTION_ID</b> - код обработчика * платежной системы;</li> <li> <b>CURRENCY</b> - валюта, которую можно снимать с * карты;</li> <li> <b>CARD_CODE</b> - CVC2;</li> <li> <b>CARD_TYPE</b> - тип карты;</li> <li> <b>CARD_NUM</b> * - номер карты;</li> <li> <b>CARD_EXP_MONTH</b> - месяц окончания действия * карты;</li> <li> <b>CARD_EXP_YEAR</b> - год окончания действия карты;</li> <li> * <b>DESCRIPTION</b> - краткое описание;</li> <li> <b>SUM_MIN</b> - минимальная сумма, * которую можно снять с карты за раз;</li> <li> <b>SUM_MAX</b> - максимальная * сумма, которую можно снять с карты за раз;</li> <li> <b>SUM_CURRENCY</b> - валюта * минимальной и максимальной сумм;</li> <li> <b>LAST_STATUS</b> - статус * последнего использования карты;</li> <li> <b>LAST_STATUS_CODE</b> - код статуса * последнего использования карты;</li> <li> <b>LAST_STATUS_DESCRIPTION</b> - описание * статуса последнего использования карты;</li> <li> <b>LAST_STATUS_MESSAGE</b> - * сообщение платежной системы;</li> <li> <b>LAST_SUM</b> - последняя снятая с * карты сумма;</li> <li> <b>LAST_CURRENCY</b> - валюта последней снятой с карты * суммы;</li> <li> <b>ACTIVE</b> - флаг активности;</li> <li> <b>TIMESTAMP_X</b> - дата * изменения;</li> <li> <b>LAST_DATE</b> - дата последнего использования * карты.</li> </ul><p>Если в качестве параметра arGroupBy передается пустой * массив, то функция вернет число записей, удовлетворяющих * фильтру.</p><br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleusercards/csaleusercards.getlist.php * @author Bitrix */ public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (count($arSelectFields) <= 0) $arSelectFields = array("ID", "USER_ID", "ACTIVE", "SORT", "PAY_SYSTEM_ACTION_ID", "CURRENCY", "CARD_TYPE", "CARD_NUM", "CARD_CODE", "CARD_EXP_MONTH", "CARD_EXP_YEAR", "DESCRIPTION", "SUM_MIN", "SUM_MAX", "SUM_CURRENCY", "TIMESTAMP_X", "LAST_STATUS", "LAST_STATUS_CODE", "LAST_STATUS_DESCRIPTION", "LAST_STATUS_MESSAGE", "LAST_SUM", "LAST_CURRENCY", "LAST_DATE"); // FIELDS --> $arFields = array( "ID" => array("FIELD" => "UC.ID", "TYPE" => "int"), "USER_ID" => array("FIELD" => "UC.USER_ID", "TYPE" => "int"), "ACTIVE" => array("FIELD" => "UC.ACTIVE", "TYPE" => "char"), "SORT" => array("FIELD" => "UC.SORT", "TYPE" => "int"), "PAY_SYSTEM_ACTION_ID" => array("FIELD" => "UC.PAY_SYSTEM_ACTION_ID", "TYPE" => "int"), "CURRENCY" => array("FIELD" => "UC.CURRENCY", "TYPE" => "string"), "CARD_TYPE" => array("FIELD" => "UC.CARD_TYPE", "TYPE" => "string"), "CARD_NUM" => array("FIELD" => "UC.CARD_NUM", "TYPE" => "string"), "CARD_CODE" => array("FIELD" => "UC.CARD_CODE", "TYPE" => "string"), "CARD_EXP_MONTH" => array("FIELD" => "UC.CARD_EXP_MONTH", "TYPE" => "int"), "CARD_EXP_YEAR" => array("FIELD" => "UC.CARD_EXP_YEAR", "TYPE" => "int"), "DESCRIPTION" => array("FIELD" => "UC.DESCRIPTION", "TYPE" => "string"), "SUM_MIN" => array("FIELD" => "UC.SUM_MIN", "TYPE" => "double"), "SUM_MAX" => array("FIELD" => "UC.SUM_MAX", "TYPE" => "double"), "SUM_CURRENCY" => array("FIELD" => "UC.SUM_CURRENCY", "TYPE" => "string"), "TIMESTAMP_X" => array("FIELD" => "UC.TIMESTAMP_X", "TYPE" => "datetime"), "LAST_STATUS" => array("FIELD" => "UC.LAST_STATUS", "TYPE" => "char"), "LAST_STATUS_CODE" => array("FIELD" => "UC.LAST_STATUS_CODE", "TYPE" => "string"), "LAST_STATUS_DESCRIPTION" => array("FIELD" => "UC.LAST_STATUS_DESCRIPTION", "TYPE" => "string"), "LAST_STATUS_MESSAGE" => array("FIELD" => "UC.LAST_STATUS_MESSAGE", "TYPE" => "string"), "LAST_SUM" => array("FIELD" => "UC.LAST_SUM", "TYPE" => "double"), "LAST_CURRENCY" => array("FIELD" => "UC.LAST_CURRENCY", "TYPE" => "string"), "LAST_DATE" => array("FIELD" => "UC.LAST_DATE", "TYPE" => "datetime"), "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UC.USER_ID = U.ID)"), "USER_ACTIVE" => array("FIELD" => "U.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_user U ON (UC.USER_ID = U.ID)"), "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UC.USER_ID = U.ID)"), "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UC.USER_ID = U.ID)"), "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UC.USER_ID = U.ID)"), "USER_USER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (UC.USER_ID = U.ID)") ); // <-- FIELDS $arSqls = CSaleOrder::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_sale_user_cards UC ". " ".$arSqls["FROM"]." "; if (strlen($arSqls["WHERE"]) > 0) $strSql .= "WHERE ".$arSqls["WHERE"]." "; if (strlen($arSqls["GROUPBY"]) > 0) $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." "; //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_user_cards UC ". " ".$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_sale_user_cards UC ". " ".$arSqls["FROM"]." "; if (strlen($arSqls["WHERE"]) > 0) $strSql_tmp .= "WHERE ".$arSqls["WHERE"]." "; if (strlen($arSqls["GROUPBY"]) > 0) $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." "; //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"])>0) $strSql .= "LIMIT ".IntVal($arNavStartParams["nTopCount"]); //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $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 = 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; } if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "PAY_SYSTEM_ID", "PERSON_TYPE_ID", "NAME", "ACTION_FILE", "RESULT_FILE", "NEW_WINDOW", "PARAMS", "ENCODING"); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "PSA.ID", "TYPE" => "int"), "PAY_SYSTEM_ID" => array("FIELD" => "PSA.PAY_SYSTEM_ID", "TYPE" => "int"), "PERSON_TYPE_ID" => array("FIELD" => "PSA.PERSON_TYPE_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "PSA.NAME", "TYPE" => "string"), "ACTION_FILE" => array("FIELD" => "PSA.ACTION_FILE", "TYPE" => "string"), "RESULT_FILE" => array("FIELD" => "PSA.RESULT_FILE", "TYPE" => "string"), "NEW_WINDOW" => array("FIELD" => "PSA.NEW_WINDOW", "TYPE" => "char"), "PARAMS" => array("FIELD" => "PSA.PARAMS", "TYPE" => "string"), "HAVE_PAYMENT" => array("FIELD" => "PSA.HAVE_PAYMENT", "TYPE" => "char"), "HAVE_ACTION" => array("FIELD" => "PSA.HAVE_ACTION", "TYPE" => "char"), "HAVE_RESULT" => array("FIELD" => "PSA.HAVE_RESULT", "TYPE" => "char"), "HAVE_PREPAY" => array("FIELD" => "PSA.HAVE_PREPAY", "TYPE" => "char"), "HAVE_RESULT_RECEIVE" => array("FIELD" => "PSA.HAVE_RESULT_RECEIVE", "TYPE" => "char"), "ENCODING" => array("FIELD" => "PSA.ENCODING", "TYPE" => "string"), "PS_LID" => array("FIELD" => "PS.LID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_CURRENCY" => array("FIELD" => "PS.CURRENCY", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_NAME" => array("FIELD" => "PS.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_ACTIVE" => array("FIELD" => "PS.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_SORT" => array("FIELD" => "PS.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_DESCRIPTION" => array("FIELD" => "PS.DESCRIPTION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PT_LID" => array("FIELD" => "PT.LID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"), "PT_NAME" => array("FIELD" => "PT.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"), "PT_SORT" => array("FIELD" => "PT.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"), "PT_ACTIVE" => array("FIELD" => "PT.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)")); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_pay_system_action PSA " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_pay_system_action PSA " . "\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_sale_pay_system_action PSA " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $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", "SITE_ID", "USER_ID", "AFFILIATE_ID", "PLAN_ID", "ACTIVE", "TIMESTAMP_X", "DATE_CREATE", "PAID_SUM", "APPROVED_SUM", "PENDING_SUM", "ITEMS_NUMBER", "ITEMS_SUM", "LAST_CALCULATE", "AFF_SITE", "AFF_DESCRIPTION", "FIX_PLAN"); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "A.ID", "TYPE" => "int"), "SITE_ID" => array("FIELD" => "A.SITE_ID", "TYPE" => "string"), "USER_ID" => array("FIELD" => "A.USER_ID", "TYPE" => "int"), "AFFILIATE_ID" => array("FIELD" => "A.AFFILIATE_ID", "TYPE" => "int"), "PLAN_ID" => array("FIELD" => "A.PLAN_ID", "TYPE" => "int"), "ACTIVE" => array("FIELD" => "A.ACTIVE", "TYPE" => "char"), "TIMESTAMP_X" => array("FIELD" => "A.TIMESTAMP_X", "TYPE" => "datetime"), "DATE_CREATE" => array("FIELD" => "A.DATE_CREATE", "TYPE" => "datetime"), "PAID_SUM" => array("FIELD" => "A.PAID_SUM", "TYPE" => "double"), "APPROVED_SUM" => array("FIELD" => "A.APPROVED_SUM", "TYPE" => "double"), "PENDING_SUM" => array("FIELD" => "A.PENDING_SUM", "TYPE" => "double"), "ITEMS_NUMBER" => array("FIELD" => "A.ITEMS_NUMBER", "TYPE" => "int"), "ITEMS_SUM" => array("FIELD" => "A.ITEMS_SUM", "TYPE" => "double"), "LAST_CALCULATE" => array("FIELD" => "A.LAST_CALCULATE", "TYPE" => "datetime"), "AFF_SITE" => array("FIELD" => "A.AFF_SITE", "TYPE" => "string"), "AFF_DESCRIPTION" => array("FIELD" => "A.AFF_DESCRIPTION", "TYPE" => "string"), "FIX_PLAN" => array("FIELD" => "A.FIX_PLAN", "TYPE" => "char"), "PLAN_SITE_ID" => array("FIELD" => "AP.SITE_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_NAME" => array("FIELD" => "AP.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_DESCRIPTION" => array("FIELD" => "AP.DESCRIPTION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_TIMESTAMP_X" => array("FIELD" => "AP.TIMESTAMP_X", "TYPE" => "datetime", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_ACTIVE" => array("FIELD" => "AP.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_BASE_RATE" => array("FIELD" => "AP.BASE_RATE", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_BASE_RATE_TYPE" => array("FIELD" => "AP.BASE_RATE_TYPE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_BASE_RATE_CURRENCY" => array("FIELD" => "AP.BASE_RATE_CURRENCY", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_MIN_PAY" => array("FIELD" => "AP.MIN_PAY", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "PLAN_MIN_PLAN_VALUE" => array("FIELD" => "AP.MIN_PLAN_VALUE", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_affiliate_plan AP ON (A.PLAN_ID = AP.ID)"), "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (A.USER_ID = U.ID)"), "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (A.USER_ID = U.ID)"), "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (A.USER_ID = U.ID)"), "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (A.USER_ID = U.ID)"), "USER_USER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (A.USER_ID = U.ID)"), "ORDER_ID" => array("FIELD" => "O.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order O ON (A.ID = O.AFFILIATE_ID)"), "ORDER_DATE_ALLOW_DELIVERY" => array("FIELD" => "O.DATE_ALLOW_DELIVERY", "TYPE" => "datetime", "FROM" => "INNER JOIN b_sale_order O ON (A.ID = O.AFFILIATE_ID)"), "ORDER_ALLOW_DELIVERY" => array("FIELD" => "O.ALLOW_DELIVERY", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order O ON (A.ID = O.AFFILIATE_ID)")); // <-- FIELDS $arSqls = CSaleOrder::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_sale_affiliate A " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_affiliate A " . "\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_sale_affiliate A " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
function GetPermissionsList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; // FIELDS --> $arFields = array("ID" => array("FIELD" => "S.ID", "TYPE" => "int"), "GROUP_ID" => array("FIELD" => "S.GROUP_ID", "TYPE" => "int"), "STATUS_ID" => array("FIELD" => "S.STATUS_ID", "TYPE" => "char"), "PERM_VIEW" => array("FIELD" => "S.PERM_VIEW", "TYPE" => "char"), "PERM_CANCEL" => array("FIELD" => "S.PERM_CANCEL", "TYPE" => "char"), "PERM_MARK" => array("FIELD" => "S.PERM_MARK", "TYPE" => "char"), "PERM_DELIVERY" => array("FIELD" => "S.PERM_DELIVERY", "TYPE" => "char"), "PERM_DEDUCTION" => array("FIELD" => "S.PERM_DEDUCTION", "TYPE" => "char"), "PERM_PAYMENT" => array("FIELD" => "S.PERM_PAYMENT", "TYPE" => "char"), "PERM_STATUS" => array("FIELD" => "S.PERM_STATUS", "TYPE" => "char"), "PERM_STATUS_FROM" => array("FIELD" => "S.PERM_STATUS_FROM", "TYPE" => "char"), "PERM_UPDATE" => array("FIELD" => "S.PERM_UPDATE", "TYPE" => "char"), "PERM_DELETE" => array("FIELD" => "S.PERM_DELETE", "TYPE" => "char")); // <-- FIELDS $arSqls = CSaleOrder::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_sale_status2group S " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_status2group S " . "\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_sale_status2group S " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
function GetList($arOrder = array("SORT"=>"ASC", "COUNTRY_NAME_LANG"=>"ASC", "CITY_NAME_LANG"=>"ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (is_string($arGroupBy) && strlen($arGroupBy) == 2) { $arFilter["LID"] = $arGroupBy; $arGroupBy = false; $arSelectFields = array("ID", "COUNTRY_ID", "REGION_ID", "CITY_ID", "SORT", "COUNTRY_NAME_ORIG", "COUNTRY_SHORT_NAME", "COUNTRY_NAME_LANG", "CITY_NAME_ORIG", "CITY_SHORT_NAME", "CITY_NAME_LANG", "REGION_NAME_ORIG", "REGION_SHORT_NAME", "REGION_NAME_LANG", "COUNTRY_NAME", "CITY_NAME", "REGION_NAME", "LOC_DEFAULT"); } if (count($arSelectFields) <= 0) $arSelectFields = array("ID", "COUNTRY_ID", "REGION_ID", "CITY_ID", "SORT", "COUNTRY_NAME_ORIG", "COUNTRY_SHORT_NAME", "REGION_NAME_ORIG", "CITY_NAME_ORIG", "REGION_SHORT_NAME", "CITY_SHORT_NAME", "COUNTRY_LID", "COUNTRY_NAME", "REGION_LID", "CITY_LID", "REGION_NAME", "CITY_NAME", "LOC_DEFAULT"); $additionalFilter = ""; if (isset($arFilter["LID"]) || strlen($arFilter["LID"]) > 0) { $additionalFilterLCL = " AND LCL.LID = '".$DB->ForSql($arFilter["LID"], 2)."'"; $additionalFilterLRL = " AND LRL.LID = '".$DB->ForSql($arFilter["LID"], 2)."'"; $additionalFilterLGL = " AND LGL.LID = '".$DB->ForSql($arFilter["LID"], 2)."'"; } // FIELDS --> $arFields = array( "ID" => array("FIELD" => "L.ID", "TYPE" => "int"), "LOC_DEFAULT" => array("FIELD" => "L.LOC_DEFAULT", "TYPE" => "string"), "COUNTRY_ID" => array("FIELD" => "L.COUNTRY_ID", "TYPE" => "int"), "CITY_ID" => array("FIELD" => "L.CITY_ID", "TYPE" => "int"), "REGION_ID" => array("FIELD" => "L.REGION_ID", "TYPE" => "int"), "SORT" => array("FIELD" => "L.SORT", "TYPE" => "int"), "COUNTRY_NAME_ORIG" => array("FIELD" => "LC.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country LC ON (L.COUNTRY_ID = LC.ID)"), "COUNTRY_SHORT_NAME" => array("FIELD" => "LC.SHORT_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country LC ON (L.COUNTRY_ID = LC.ID)"), "CITY_NAME_ORIG" => array("FIELD" => "LG.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city LG ON (L.CITY_ID = LG.ID)"), "CITY_SHORT_NAME" => array("FIELD" => "LG.SHORT_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city LG ON (L.CITY_ID = LG.ID)"), "REGION_NAME_ORIG" => array("FIELD" => "LR.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region LR ON (L.REGION_ID = LR.ID)"), "REGION_SHORT_NAME" => array("FIELD" => "LR.SHORT_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region LR ON (L.REGION_ID = LR.ID)"), "COUNTRY_LID" => array("FIELD" => "LCL.LID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country_lang LCL ON (L.COUNTRY_ID = LCL.COUNTRY_ID".$additionalFilterLCL.")"), "COUNTRY_NAME" => array("FIELD" => "LCL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country_lang LCL ON (L.COUNTRY_ID = LCL.COUNTRY_ID".$additionalFilterLCL.")"), "COUNTRY_NAME_LANG" => array("FIELD" => "LCL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country_lang LCL ON (L.COUNTRY_ID = LCL.COUNTRY_ID".$additionalFilterLCL.")"), "COUNTRY_SHORT_NAME_LANG" => array("FIELD" => "LCL.SHORT_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country_lang LCL ON (L.COUNTRY_ID = LCL.COUNTRY_ID".$additionalFilterLCL.")"), "REGION_LID" => array("FIELD" => "LRL.LID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region_lang LRL ON (L.REGION_ID = LRL.REGION_ID".$additionalFilterLRL.")"), "REGION_NAME" => array("FIELD" => "LRL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region_lang LRL ON (L.REGION_ID = LRL.REGION_ID".$additionalFilterLRL.")"), "REGION_NAME_LANG" => array("FIELD" => "LRL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region_lang LRL ON (L.REGION_ID = LRL.REGION_ID".$additionalFilterLRL.")"), "REGION_SHORT_NAME_LANG" => array("FIELD" => "LRL.SHORT_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region_lang LRL ON (L.REGION_ID = LRL.REGION_ID".$additionalFilterLRL.")"), "CITY_LID" => array("FIELD" => "LGL.LID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city_lang LGL ON (L.CITY_ID = LGL.CITY_ID".$additionalFilterLGL.")"), "CITY_NAME" => array("FIELD" => "LGL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city_lang LGL ON (L.CITY_ID = LGL.CITY_ID".$additionalFilterLGL.")"), "CITY_NAME_LANG" => array("FIELD" => "LGL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city_lang LGL ON (L.CITY_ID = LGL.CITY_ID".$additionalFilterLGL.")"), "CITY_SHORT_NAME_LANG" => array("FIELD" => "LGL.SHORT_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city_lang LGL ON (L.CITY_ID = LGL.CITY_ID".$additionalFilterLGL.")"), "COUNTRY" => array("FIELD" => "LCL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_country_lang LCL ON (L.COUNTRY_ID = LCL.COUNTRY_ID".$additionalFilterLCL.")"), "CITY" => array("FIELD" => "LGL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_city_lang LGL ON (L.CITY_ID = LGL.CITY_ID".$additionalFilterLGL.")"), "REGION" => array("FIELD" => "LRL.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_location_region_lang LRL ON (L.REGION_ID = LRL.REGION_ID".$additionalFilterLRL.")") ); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy)==0) { $strSql = "SELECT ".$arSqls["SELECT"]." ". "FROM b_sale_location L ". " ".$arSqls["FROM"]." "; if (strlen($arSqls["WHERE"]) > 0) $strSql .= "WHERE ".$arSqls["WHERE"]." "; if (strlen($arSqls["GROUPBY"]) > 0) $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." "; //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_location L ". " ".$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_sale_location L ". " ".$arSqls["FROM"]." "; if (strlen($arSqls["WHERE"]) > 0) $strSql_tmp .= "WHERE ".$arSqls["WHERE"]." "; if (strlen($arSqls["GROUPBY"]) > 0) $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." "; //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"])>0) $strSql .= "LIMIT ".IntVal($arNavStartParams["nTopCount"]); //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } return $dbRes; }
/** * The function select viewed product * * @param array $arOrder - array to sort * @param array $arFilter - array to filter * @param array $arGroupBy - array to group records * @param array $arNavStartParams - array to parameters * @param array $arSelectFields - array to selectes fields * @return object $dbRes - object result */ static public function GetList($arOrder = array("ID"=>"DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (array_key_exists("DATE_FROM", $arFilter)) { $arFilter[">=DATE_VISIT"] = trim($arFilter["DATE_FROM"]); unset($arFilter["DATE_FROM"]); } if (array_key_exists("DATE_TO", $arFilter)) { $arFilter["<=DATE_VISIT"] = trim($arFilter["DATE_TO"]); unset($arFilter["DATE_TO"]); } if (!$arSelectFields || count($arSelectFields) <= 0 || in_array("*", $arSelectFields)) $arSelectFields = array("ID", "FUSER_ID", "DATE_VISIT", "PRODUCT_ID", "MODULE", "LID", "NAME", "DETAIL_PAGE_URL", "CURRENCY", "PRICE", "NOTES", "PREVIEW_PICTURE", "DETAIL_PICTURE", "CALLBACK_FUNC"); $arFields = array( "ID" => array("FIELD" => "V.ID", "TYPE" => "int"), "FUSER_ID" => array("FIELD" => "V.FUSER_ID", "TYPE" => "int"), "DATE_VISIT" => array("FIELD" => "V.DATE_VISIT", "TYPE" => "datetime"), "PRODUCT_ID" => array("FIELD" => "V.PRODUCT_ID", "TYPE" => "int"), "MODULE" => array("FIELD" => "V.MODULE", "TYPE" => "string"), "LID" => array("FIELD" => "V.LID", "TYPE" => "string"), "NAME" => array("FIELD" => "V.NAME", "TYPE" => "string"), "DETAIL_PAGE_URL" => array("FIELD" => "V.DETAIL_PAGE_URL", "TYPE" => "string"), "CURRENCY" => array("FIELD" => "V.CURRENCY", "TYPE" => "string"), "PRICE" => array("FIELD" => "V.PRICE", "TYPE" => "double"), "NOTES" => array("FIELD" => "V.NOTES", "TYPE" => "string"), "PREVIEW_PICTURE" => array("FIELD" => "V.PREVIEW_PICTURE", "TYPE" => "string"), "DETAIL_PICTURE" => array("FIELD" => "V.DETAIL_PICTURE", "TYPE" => "string"), "CALLBACK_FUNC" => array("FIELD" => "V.CALLBACK_FUNC", "TYPE" => "string"), ); $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); $strSql = "SELECT ".$arSqls["SELECT"]." ". "FROM b_sale_viewed_product V "; 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($arGroupBy) && count($arGroupBy) == 0) { $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); if ($arRes = $dbRes->Fetch()) return $arRes["CNT"]; else return false; } if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0 ) { $strSql_tmp = "SELECT COUNT('x') as CNT ". "FROM b_sale_viewed_product B "; 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 { $strSql = $DB->TopSql($strSql, $arNavStartParams["nTopCount"]); $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("USER_PROPS_ID" => 120)</pre> Этот фильтр * означает "выбрать все записи, в которых значение в поле USER_PROPS_ID * (код профиля покупателя) равно 120".<br><br> Значение по умолчанию - * пустой массив array() - означает, что результат отфильтрован не * будет. <br><br><b>Важно!</b> Если результат фильтровать не нужно, то * пустой массив фильтра надо передать обязательно. Это требуется * из-за наследия старого API. * * * * @param array $arGroupBy = false Массив полей, по которым группируются записи значений свойств * профилей покупателя. Массив имеет вид: <pre * class="syntax">array("название_поля1", "группирующая_функция2" => * "название_поля2", ...)</pre> В качестве "название_поля<i>N</i>" может стоять * любое поле значений свойств профилей покупателя. В качестве * группирующей функции могут стоять: <ul> <li> <b> COUNT</b> - подсчет * количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li> <li> * <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> - * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление * суммы.</li> </ul> Если массив пустой, то функция вернет число записей, * удовлетворяющих фильтру.<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>USER_PROPS_ID</td> <td>Код профиля покупателя.</td> </tr> * <tr> <td>ORDER_PROPS_ID</td> <td>Код свойства заказа.</td> </tr> <tr> <td>USER_VALUE_NAME</td> * <td>Название свойства заказа, сохраненное в профиле покупателя.</td> * </tr> <tr> <td>VALUE</td> <td>Значение свойства заказа, сохраненное в профиле * покупателя.</td> </tr> <tr> <td>TYPE</td> <td>Тип свойства заказа.</td> </tr> <tr> * <td>SORT</td> <td>Индекс сортировки свойства заказа.</td> </tr> <tr> <td>VARIANT_NAME</td> * <td>Название варианта значения свойства заказа со значением из * профиля покупателя.</td> </tr> <tr> <td>CODE</td> <td>Символьный код свойства * заказа.</td> </tr> </table> <p>Если в качестве параметра arGroupBy передается * пустой массив, то функция вернет число записей, удовлетворяющих * фильтру.</p> <a name="examples"></a> * * * <h4>Example</h4> * <pre> * // Выведем все свойства профиля покупателя с кодом $ID * $db_propVals = CSaleOrderUserPropsValue::GetList(array("ID" => "ASC"), Array("USER_PROPS_ID"=>$ID)); * while ($arPropVals = $db_propVals->Fetch()) * { * echo $arPropVals["USER_VALUE_NAME"]."=".$arPropVals["VALUE"]."<br>"; * } * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorderuserpropsvalue/csaleorderuserpropsvalue__getlist.19b444a8.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 (strlen($arOrder) > 0 && strlen($arFilter) > 0) { $arOrder = array($arOrder => $arFilter); } else { $arOrder = array(); } if (is_array($arGroupBy)) { $arFilter = $arGroupBy; } else { $arFilter = array(); } $arGroupBy = false; if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "USER_PROPS_ID", "ORDER_PROPS_ID", "USER_VALUE_NAME", "VALUE", "TYPE", "SORT", "VARIANT_NAME", "CODE"); } } if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "USER_PROPS_ID", "ORDER_PROPS_ID", "NAME", "VALUE", "PROP_ID", "PROP_PERSON_TYPE_ID", "PROP_NAME", "PROP_TYPE", "PROP_REQUIED", "PROP_DEFAULT_VALUE", "PROP_SORT", "PROP_USER_PROPS", "PROP_IS_LOCATION", "PROP_PROPS_GROUP_ID", "PROP_SIZE1", "PROP_SIZE2", "PROP_DESCRIPTION", "PROP_IS_EMAIL", "PROP_IS_PROFILE_NAME", "PROP_IS_PAYER", "PROP_IS_LOCATION4TAX", "PROP_IS_ZIP", "PROP_CODE", "VARIANT_ID", "VARIANT_ORDER_PROPS_ID", "VARIANT_NAME", "VARIANT_VALUE", "VARIANT_SORT", "VARIANT_DESCRIPTION"); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "UP.ID", "TYPE" => "int"), "USER_PROPS_ID" => array("FIELD" => "UP.USER_PROPS_ID", "TYPE" => "int"), "ORDER_PROPS_ID" => array("FIELD" => "UP.ORDER_PROPS_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "UP.NAME", "TYPE" => "string"), "VALUE" => array("FIELD" => "UP.VALUE", "TYPE" => "string"), "PROP_ID" => array("FIELD" => "P.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_PERSON_TYPE_ID" => array("FIELD" => "P.PERSON_TYPE_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_NAME" => array("FIELD" => "P.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_REQUIED" => array("FIELD" => "P.REQUIED", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_DEFAULT_VALUE" => array("FIELD" => "P.DEFAULT_VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_SORT" => array("FIELD" => "P.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_USER_PROPS" => array("FIELD" => "P.USER_PROPS", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_LOCATION" => array("FIELD" => "P.IS_LOCATION", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_PROPS_GROUP_ID" => array("FIELD" => "P.PROPS_GROUP_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_SIZE1" => array("FIELD" => "P.SIZE1", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_SIZE2" => array("FIELD" => "P.SIZE2", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_DESCRIPTION" => array("FIELD" => "P.DESCRIPTION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_EMAIL" => array("FIELD" => "P.IS_EMAIL", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_PROFILE_NAME" => array("FIELD" => "P.IS_PROFILE_NAME", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_PAYER" => array("FIELD" => "P.IS_PAYER", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_LOCATION4TAX" => array("FIELD" => "P.IS_LOCATION4TAX", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_ZIP" => array("FIELD" => "P.IS_ZIP", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_CODE" => array("FIELD" => "P.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_ACTIVE" => array("FIELD" => "P.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_UTIL" => array("FIELD" => "P.UTIL", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "VARIANT_ID" => array("FIELD" => "PV.ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_ORDER_PROPS_ID" => array("FIELD" => "PV.ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_NAME" => array("FIELD" => "PV.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_VALUE" => array("FIELD" => "PV.VALUE", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_SORT" => array("FIELD" => "PV.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_DESCRIPTION" => array("FIELD" => "PV.DESCRIPTION", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "USER_VALUE_NAME" => array("FIELD" => "PV.NAME", "TYPE" => "string"), "TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "SORT" => array("FIELD" => "P.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "CODE" => array("FIELD" => "P.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)")); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_user_props_value UP " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_user_props_value UP " . "\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_sale_user_props_value UP " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // ТОЛЬКО ДЛЯ MYSQL!!! ДЛЯ ORACLE ДРУГОЙ КОД $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
function GetList($arOrder = array("SORT" => "ASC", "NAME" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (isset($arFilter["PERSON_TYPE_ID"])) { $arFilter["PSA_PERSON_TYPE_ID"] = $arFilter["PERSON_TYPE_ID"]; unset($arFilter["PERSON_TYPE_ID"]); if (count($arSelectFields) <= 0) { $arSelectFields = array("*"); } } if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "LID", "CURRENCY", "NAME", "ACTIVE", "SORT", "DESCRIPTION"); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "P.ID", "TYPE" => "int"), "LID" => array("FIELD" => "P.LID", "TYPE" => "string"), "CURRENCY" => array("FIELD" => "P.CURRENCY", "TYPE" => "string"), "NAME" => array("FIELD" => "P.NAME", "TYPE" => "string"), "ACTIVE" => array("FIELD" => "P.ACTIVE", "TYPE" => "char"), "SORT" => array("FIELD" => "P.SORT", "TYPE" => "int"), "DESCRIPTION" => array("FIELD" => "P.DESCRIPTION", "TYPE" => "string"), "PSA_ID" => array("FIELD" => "PA.ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_NAME" => array("FIELD" => "PA.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_ACTION_FILE" => array("FIELD" => "PA.ACTION_FILE", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_RESULT_FILE" => array("FIELD" => "PA.RESULT_FILE", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_NEW_WINDOW" => array("FIELD" => "PA.NEW_WINDOW", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_PERSON_TYPE_ID" => array("FIELD" => "PA.PERSON_TYPE_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_PARAMS" => array("FIELD" => "PA.PARAMS", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_HAVE_PAYMENT" => array("FIELD" => "PA.HAVE_PAYMENT", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_HAVE_ACTION" => array("FIELD" => "PA.HAVE_ACTION", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_HAVE_RESULT" => array("FIELD" => "PA.HAVE_RESULT", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_HAVE_PREPAY" => array("FIELD" => "PA.HAVE_PREPAY", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_HAVE_RESULT_RECEIVE" => array("FIELD" => "PA.HAVE_RESULT_RECEIVE", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_ENCODING" => array("FIELD" => "PA.ENCODING", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)"), "PSA_LOGOTIP" => array("FIELD" => "PA.LOGOTIP", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_pay_system_action PA ON (P.ID = PA.PAY_SYSTEM_ID)")); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_pay_system P " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_pay_system P " . "\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_sale_pay_system P " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // рнкэйн дкъ MYSQL!!! дкъ ORACLE дпсцни йнд $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
function GetPermissionsList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; $arFields = array("ID" => array("FIELD" => "S.ID", "TYPE" => "int"), "GROUP_ID" => array("FIELD" => "S.GROUP_ID", "TYPE" => "int"), "STATUS_ID" => array("FIELD" => "S.STATUS_ID", "TYPE" => "char"), "PERM_VIEW" => array("FIELD" => "S.PERM_VIEW", "TYPE" => "char"), "PERM_CANCEL" => array("FIELD" => "S.PERM_CANCEL", "TYPE" => "char"), "PERM_MARK" => array("FIELD" => "S.PERM_MARK", "TYPE" => "char"), "PERM_DELIVERY" => array("FIELD" => "S.PERM_DELIVERY", "TYPE" => "char"), "PERM_DEDUCTION" => array("FIELD" => "S.PERM_DEDUCTION", "TYPE" => "char"), "PERM_PAYMENT" => array("FIELD" => "S.PERM_PAYMENT", "TYPE" => "char"), "PERM_STATUS" => array("FIELD" => "S.PERM_STATUS", "TYPE" => "char"), "PERM_STATUS_FROM" => array("FIELD" => "S.PERM_STATUS_FROM", "TYPE" => "char"), "PERM_UPDATE" => array("FIELD" => "S.PERM_UPDATE", "TYPE" => "char"), "PERM_DELETE" => array("FIELD" => "S.PERM_DELETE", "TYPE" => "char")); $arSqls = CSaleOrder::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_sale_status2group S " . $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_sale_status2group S " . $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_sale_status2group S " . $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> - значение поля находится в передаваемом в * фильтр разделенном запятой списке значений. Можно передавать и * фильтр. Для ключа <b>CODE</b> - корректно формирует фильтр только для * массива, а не для перечисление через запятые.;</li> <li> <b>~</b> - * значение поля проверяется на соответствие передаваемому в * фильтр шаблону;</li> <li> <b>%</b> - значение поля проверяется на * соответствие передаваемой в фильтр строке в соответствии с * языком запросов.</li> </ul> В качестве "название_поляX" может стоять * любое поле заказов.<br><br> Пример фильтра: <pre class="syntax">array("REQUIED" => * "Y")</pre> Этот фильтр означает "выбрать все записи, в которых * значение в поле REQUIED (обязательно для заполнения) равно Y".<br><br> * Значение по умолчанию - пустой массив array() - означает, что * результат отфильтрован не будет. * * * * @param array $arGroupBy = false Массив полей, по которым группируются записи свойств заказа. * Массив имеет вид: <pre class="syntax"> array("название_поля1", * "группирующая_функция2" => "название_поля2", . . .)</pre> В качестве * "название_поля<i>N</i>" может стоять любое поле свойств заказа. В * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> - * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li> * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> - * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление * суммы.</li> </ul> Если массив пустой, то функция вернет число записей, * удовлетворяющих фильтру.<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>PERSON_TYPE_ID</td> <td>Тип * плательщика.</td> </tr> <tr> <td>NAME</td> <td>Название свойства.</td> </tr> <tr> * <td>TYPE</td> <td>Тип свойства. Допустимые значения: <ul> <li>CHECKBOX - флаг,</li> * <li>TEXT - строка текста,</li> <li>SELECT - выпадающий список значений, </li> * <li>MULTISELECT - список со множественным выбором,</li> <li>TEXTAREA - * многострочный текст,</li> <li>LOCATION - местоположение,</li> <li>RADIO - * переключатель.</li> </ul> </td> </tr> <tr> <td>REQUIED</td> <td>Флаг (Y/N) обязательное * ли поле.</td> </tr> <tr> <td>DEFAULT_VALUE</td> <td>Значение по умолчанию.</td> </tr> <tr> * <td>SORT</td> <td>Индекс сортировки.</td> </tr> <tr> <td>USER_PROPS</td> <td>Флаг (Y/N) входит * ли это свойство в профиль покупателя.</td> </tr> <tr> <td>IS_LOCATION</td> <td>Флаг * (Y/N) использовать ли значение свойства как местоположение * покупателя для расчёта стоимости доставки (только для свойств * типа LOCATION)</td> </tr> <tr> <td>PROPS_GROUP_ID</td> <td>Код группы свойств.</td> </tr> <tr> * <td>SIZE1</td> <td>Ширина поля (размер по горизонтали).</td> </tr> <tr> <td>SIZE2</td> * <td>Высота поля (размер по вертикали).</td> </tr> <tr> <td>DESCRIPTION</td> * <td>Описание свойства.</td> </tr> <tr> <td>IS_EMAIL</td> <td>Флаг (Y/N) использовать * ли значение свойства как E-Mail покупателя.</td> </tr> <tr> <td>IS_PROFILE_NAME</td> * <td>Флаг (Y/N) использовать ли значение свойства как название * профиля покупателя.</td> </tr> <tr> <td>IS_PAYER</td> <td>Флаг (Y/N) использовать ли * значение свойства как имя плательщика.</td> </tr> <tr> <td>IS_LOCATION4TAX</td> * <td>Флаг (Y/N) использовать ли значение свойства как местоположение * покупателя для расчёта налогов (только для свойств типа LOCATION)</td> * </tr> <tr> <td>CODE</td> <td>Символьный код свойства.</td> </tr> </table> <p>Если в * качестве параметра arGroupBy передается пустой массив, то функция * вернет число записей, удовлетворяющих фильтру.</p> <a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * // Выведем форму для ввода свойств заказа для группы свойств с кодом 5, которые входят в профиль покупателя, для типа плательщика с кодом 2 * $db_props = CSaleOrderProps::GetList( * array("SORT" => "ASC"), * array( * "PERSON_TYPE_ID" => 2, * "PROPS_GROUP_ID" => 5, * "USER_PROPS" => "Y" * ), * false, * false, * array() * ); * * if ($props = $db_props->Fetch()) * { * echo "Заполните параметры заказа:<br>"; * do * { * echo $props["NAME"]; * if ($props["REQUIED"]=="Y" || * $props["IS_EMAIL"]=="Y" || * $props["IS_PROFILE_NAME"]=="Y" || * $props["IS_LOCATION"]=="Y" || * $props["IS_LOCATION4TAX"]=="Y" || * $props["IS_PAYER"]=="Y") * { * echo "*"; * } * echo ": "; * * if ($props["TYPE"]=="CHECKBOX") * { * echo '<input type="checkbox" class="inputcheckbox" name="ORDER_PROP_'.$props["ID"].'" value="Y"'.(($props["DEFAULT_VALUE"]=="Y")?" checked":"").'>'; * } * elseif ($props["TYPE"]=="TEXT") * { * echo '<input type="text" class="inputtext" size="'.((IntVal($props["SIZE1"])>0)?$props["SIZE1"]:30).'" maxlength="250" value="'.htmlspecialchars($props["DEFAULT_VALUE"]).'" name="ORDER_PROP_'.$props["ID"].'">"; * } * elseif ($props["TYPE"]=="SELECT") * { * echo '<select name="ORDER_PROP_'.$props["ID"].'" size="'.((IntVal($props["SIZE1"])>0)?$props["SIZE1"]:1).'">'; * $db_vars = CSaleOrderPropsVariant::GetList(($by="SORT"), ($order="ASC"), Array("ORDER_PROPS_ID"=>$props["ID"])); * while ($vars = $db_vars->Fetch()) * { * echo '<option value="'.$vars["VALUE"].'"'.(($vars["VALUE"]==$props["DEFAULT_VALUE"])?" selected":"").'>'.htmlspecialchars($vars["NAME"]).'</option>'; * } * echo '</select>'; * } * elseif ($props["TYPE"]=="MULTISELECT") * { * echo '<select multiple name="ORDER_PROP_'.$props["ID"].'[]" size="'.((IntVal($props["SIZE1"])>0)?$props["SIZE1"]:5).'">'; * $arDefVal = Split(",", $props["DEFAULT_VALUE"]); * for ($i = 0; $i<count($arDefVal); $i++) * $arDefVal[$i] = Trim($arDefVal[$i]); * * $db_vars = CSaleOrderPropsVariant::GetList(($by="SORT"), ($order="ASC"), Array("ORDER_PROPS_ID"=>$props["ID"])); * while ($vars = $db_vars->Fetch()) * { * echo '<option value="'.$vars["VALUE"].'"'.(in_array($vars["VALUE"], $arDefVal)?" selected":"").'>'.htmlspecialchars($vars["NAME"]).'</option>'; * } * echo '</select>'; * } * elseif ($props["TYPE"]=="TEXTAREA") * { * echo '<textarea rows="'.((IntVal($props["SIZE2"])>0)?$props["SIZE2"]:4).'" cols="'.((IntVal($props["SIZE1"])>0)?$props["SIZE1"]:40).'" name="ORDER_PROP_'.$props["ID"].'">'.htmlspecialchars($props["DEFAULT_VALUE"]).'</textarea>'; * } * elseif ($props["TYPE"]=="LOCATION") * { * echo '<select name="ORDER_PROP_'.$props["ID"].'" size="'.((IntVal($props["SIZE1"])>0)?$props["SIZE1"]:1).'">'; * $db_vars = CSaleLocation::GetList(Array("SORT"=>"ASC", "COUNTRY_NAME_LANG"=>"ASC", "CITY_NAME_LANG"=>"ASC"), array(), LANGUAGE_ID); * while ($vars = $db_vars->Fetch()) * { * echo '<option value="'.$vars["ID"].'"".((IntVal($vars["ID"])==IntVal($props["DEFAULT_VALUE"]))?" selected":"").'>'.htmlspecialchars($vars["COUNTRY_NAME"]." - ".$vars["CITY_NAME"]).'</option>'; * } * echo '</select>'; * } * elseif ($props["TYPE"]=="RADIO") * { * $db_vars = CSaleOrderPropsVariant::GetList(($by="SORT"), ($order="ASC"), Array("ORDER_PROPS_ID"=>$props["ID"])); * while ($vars = $db_vars->Fetch()) * { * echo '<input type="radio" name="ORDER_PROP_'.$props["ID"].'" value="'.$vars["VALUE"].'"'.(($vars["VALUE"]==$props["DEFAULT_VALUE"])?" checked":"").'>'.htmlspecialchars($vars["NAME"]).'<br>'; * } * } * * if (strlen($props["DESCRIPTION"])>0) * { * echo "<br><small>".$props["DESCRIPTION"]."</small>"; * } * * echo "<br>"; * } * while ($props = $db_props->Fetch()); * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorderprops/csaleorderprops__getlist.d76e30a4.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 (strlen($arOrder) > 0 && strlen($arFilter) > 0) { $arOrder = array($arOrder => $arFilter); } else { $arOrder = array(); } if (is_array($arGroupBy)) { $arFilter = $arGroupBy; } else { $arFilter = array(); } $arGroupBy = false; $arSelectFields = array("ID", "PERSON_TYPE_ID", "NAME", "TYPE", "REQUIED", "DEFAULT_VALUE", "SORT", "USER_PROPS", "IS_LOCATION", "PROPS_GROUP_ID", "SIZE1", "SIZE2", "DESCRIPTION", "IS_EMAIL", "IS_PROFILE_NAME", "IS_PAYER", "IS_LOCATION4TAX", "IS_ZIP", "CODE", "IS_FILTERED", "ACTIVE", "UTIL", "INPUT_FIELD_LOCATION", "MULTIPLE", "PAYSYSTEM_ID", "DELIVERY_ID"); } if (empty($arSelectFields)) { $arSelectFields = array("ID", "PERSON_TYPE_ID", "NAME", "TYPE", "REQUIED", "DEFAULT_VALUE", "SORT", "USER_PROPS", "IS_LOCATION", "PROPS_GROUP_ID", "SIZE1", "SIZE2", "DESCRIPTION", "IS_EMAIL", "IS_PROFILE_NAME", "IS_PAYER", "IS_LOCATION4TAX", "IS_ZIP", "CODE", "IS_FILTERED", "ACTIVE", "UTIL", "INPUT_FIELD_LOCATION", "MULTIPLE", "PAYSYSTEM_ID", "DELIVERY_ID"); } // filter by relation to delivery and payment systems if (isset($arFilter["RELATED"]) && !is_array($arFilter["RELATED"]) && intval($arFilter["RELATED"]) == 0) { if (($key = array_search("PAYSYSTEM_ID", $arSelectFields)) !== false) { unset($arSelectFields[$key]); } if (($key = array_search("DELIVERY_ID", $arSelectFields)) !== false) { unset($arSelectFields[$key]); } } else { if (isset($arFilter["RELATED"]) && is_array($arFilter["RELATED"])) { if (isset($arFilter["RELATED"]["PAYSYSTEM_ID"])) { $arFilter["PAYSYSTEM_ID"] = $arFilter["RELATED"]["PAYSYSTEM_ID"]; unset($arFilter["RELATED"]["PAYSYSTEM_ID"]); } if (isset($arFilter["RELATED"]["DELIVERY_ID"])) { $arFilter["DELIVERY_ID"] = $arFilter["RELATED"]["DELIVERY_ID"]; unset($arFilter["RELATED"]["DELIVERY_ID"]); } } } // FIELDS --> $arFields = array("ID" => array("FIELD" => "P.ID", "TYPE" => "int"), "PERSON_TYPE_ID" => array("FIELD" => "P.PERSON_TYPE_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "P.NAME", "TYPE" => "string"), "TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string"), "REQUIED" => array("FIELD" => "P.REQUIED", "TYPE" => "char"), "REQUIRED" => array("FIELD" => "P.REQUIED", "TYPE" => "char"), "DEFAULT_VALUE" => array("FIELD" => "P.DEFAULT_VALUE", "TYPE" => "string"), "SORT" => array("FIELD" => "P.SORT", "TYPE" => "int"), "USER_PROPS" => array("FIELD" => "P.USER_PROPS", "TYPE" => "char"), "IS_LOCATION" => array("FIELD" => "P.IS_LOCATION", "TYPE" => "char"), "PROPS_GROUP_ID" => array("FIELD" => "P.PROPS_GROUP_ID", "TYPE" => "int"), "SIZE1" => array("FIELD" => "P.SIZE1", "TYPE" => "int"), "SIZE2" => array("FIELD" => "P.SIZE2", "TYPE" => "int"), "DESCRIPTION" => array("FIELD" => "P.DESCRIPTION", "TYPE" => "string"), "IS_EMAIL" => array("FIELD" => "P.IS_EMAIL", "TYPE" => "char"), "IS_PROFILE_NAME" => array("FIELD" => "P.IS_PROFILE_NAME", "TYPE" => "char"), "IS_PAYER" => array("FIELD" => "P.IS_PAYER", "TYPE" => "char"), "IS_LOCATION4TAX" => array("FIELD" => "P.IS_LOCATION4TAX", "TYPE" => "char"), "IS_FILTERED" => array("FIELD" => "P.IS_FILTERED", "TYPE" => "char"), "IS_ZIP" => array("FIELD" => "P.IS_ZIP", "TYPE" => "char"), "CODE" => array("FIELD" => "P.CODE", "TYPE" => "string"), "ACTIVE" => array("FIELD" => "P.ACTIVE", "TYPE" => "char"), "UTIL" => array("FIELD" => "P.UTIL", "TYPE" => "char"), "INPUT_FIELD_LOCATION" => array("FIELD" => "P.INPUT_FIELD_LOCATION", "TYPE" => "int"), "MULTIPLE" => array("FIELD" => "P.MULTIPLE", "TYPE" => "char"), "GROUP_ID" => array("FIELD" => "PG.ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "GROUP_PERSON_TYPE_ID" => array("FIELD" => "PG.PERSON_TYPE_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "GROUP_NAME" => array("FIELD" => "PG.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "GROUP_SORT" => array("FIELD" => "PG.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_group PG ON (P.PROPS_GROUP_ID = PG.ID)"), "PERSON_TYPE_LID" => array("FIELD" => "SPT.LID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PERSON_TYPE_NAME" => array("FIELD" => "SPT.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PERSON_TYPE_SORT" => array("FIELD" => "SPT.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PERSON_TYPE_ACTIVE" => array("FIELD" => "SPT.ACTIVE", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_person_type SPT ON (P.PERSON_TYPE_ID = SPT.ID)"), "PAYSYSTEM_ID" => array("FIELD" => "SOP.PROPERTY_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_relation SOP ON P.ID = SOP.PROPERTY_ID", "WHERE" => array("CSaleOrderProps", "PrepareRelation4Where")), "DELIVERY_ID" => array("FIELD" => "SOD.PROPERTY_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_relation SOD ON P.ID = SOD.PROPERTY_ID", "WHERE" => array("CSaleOrderProps", "PrepareRelation4Where"))); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); //filter order properties by relation to delivery and payment systems if (isset($arFilter["RELATED"])) { if (!is_array($arFilter["RELATED"]) && intval($arFilter["RELATED"]) == 0) { if (strlen($arSqls["WHERE"]) > 0) { $arSqls["WHERE"] .= " AND "; } $arSqls["WHERE"] .= "(P.ID NOT IN (SELECT DISTINCT SOR.PROPERTY_ID FROM b_sale_order_props_relation SOR))"; } elseif (is_array($arFilter["RELATED"])) { $strSqlRelatedWhere = ""; // payment if (isset($arFilter["PAYSYSTEM_ID"]) && intval($arFilter["PAYSYSTEM_ID"]) > 0) { $strSqlRelatedWhere .= "(SOP.ENTITY_TYPE = 'P' AND SOP.ENTITY_ID = " . $DB->ForSql($arFilter["PAYSYSTEM_ID"]) . ")"; } // delivery if (isset($arFilter["DELIVERY_ID"]) && strlen($arFilter["DELIVERY_ID"]) > 0) { if (strlen($strSqlRelatedWhere) > 0) { $logic = "OR"; if (isset($arFilter["RELATED"]["LOGIC"]) && $arFilter["RELATED"]["LOGIC"] == "AND") { $logic = "AND"; } $strSqlRelatedWhere .= " " . $logic . " "; } $strSqlRelatedWhere .= "(SOD.ENTITY_TYPE = 'D' AND SOD.ENTITY_ID = '" . $DB->ForSql($arFilter["DELIVERY_ID"]) . "')"; } // all other if (isset($arFilter["RELATED"]["TYPE"])) { if ($arFilter["RELATED"]["TYPE"] == "WITH_NOT_RELATED") { if (strlen($strSqlRelatedWhere) > 0) { $strSqlRelatedWhere .= " OR (P.ID NOT IN (SELECT DISTINCT SOR.PROPERTY_ID FROM b_sale_order_props_relation SOR))"; } } } if (strlen($strSqlRelatedWhere) > 0) { if (strlen($arSqls["WHERE"]) > 0) { $arSqls["WHERE"] .= " AND "; } $arSqls["WHERE"] .= "(" . $strSqlRelatedWhere . ")"; } } } $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_order_props P " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_order_props P " . "\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_sale_order_props P " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
/** * <p>Метод возвращает набор местоположений, удовлетворяющих фильтру arFilter. Возвращаются так же параметры стран и городов местоположений. Набор отсортирован в соответствии с массивом arOrder. Языкозависимые параметры выбираются для языка strLang. Метод динамичный.</p> * * * @param array $arOrder = array("SORT"=>"ASC" Массив, в соответствии с которым сортируются результирующие * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" => * "направление_сортировки1", "название_поля2" => * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>" * может стоять любое поле местоположения, а в качестве * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки * имеет несколько элементов, то результирующий набор сортируется * последовательно по каждому элементу (т.е. сначала сортируется по * первому элементу, потом результат сортируется по второму и т.д.). * * @param COUNTRY_NAME_LAN $G Массив, в соответствии с которым фильтруются записи * местоположений. Массив имеет вид: <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> </ul> В качестве * "название_поляX" может стоять любое поле местоположения.<br><br> * Пример фильтра: <pre class="syntax">array("COUNTRY_ID" => 15)</pre> Этот фильтр * означает "выбрать все записи, в которых значение в поле COUNTRY_ID (код * страны) равно 15".<br><br> Значение по умолчанию - пустой массив array() - * означает, что результат отфильтрован не будет. * * @param AS $C Массив полей, по которым группируются записи местоположений. * Массив имеет вид: <pre class="syntax">array("название_поля1", * "группирующая_функция2" => "название_поля2", ...)</pre> В качестве * "название_поля<i>N</i>" может стоять любое поле местоположений. В * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> - * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li> * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> - * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление * суммы.</li> </ul> Если массив пустой, то метод вернет число записей, * удовлетворяющих фильтру.<br><br> Значение по умолчанию - <i>false</i> - * означает, что результат группироваться не будет. * * @param CITY_NAME_LAN $G Массив параметров выборки. Может содержать следующие ключи: <ul> * <li>"<b>nTopCount</b>" - количество возвращаемых методом записей будет * ограничено сверху значением этого ключа;</li> <li> любой ключ, * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что * параметров выборки нет. * * @param AS $C Массив полей записей, которые будут возвращены методом. Можно * указать только те поля, которые необходимы. Если в массиве * присутствует значение "*", то будут возвращены все доступные * поля.<br><br> Значение по умолчанию - пустой массив array() - означает, * что будут возвращены все поля основной таблицы запроса. * * @param $array * * @param arFilte $r = array() Код местоположения. </h * * @param array $arGroupBy = false Код страны. * * @param array $arNavStartParams = false Код региона. * * @param array $arSelectFields = 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>COUNTRY_ID</td> <td>Код страны.</td> </tr> <tr> <td>REGION_ID</td> <td>Код * региона.</td> </tr> <tr> <td>CITY_ID</td> <td>Код города.</td> </tr> <tr> <td>SORT</td> <td>Индекс * сортировки.</td> </tr> <tr> <td>COUNTRY_NAME_ORIG</td> <td>Языконезависимое название * страны.</td> </tr> <tr> <td>COUNTRY_SHORT_NAME</td> <td>Языконезависимое короткое * название страны.</td> </tr> <tr> <td>REGION_NAME_ORIG</td> <td>Языконезависимое * название региона.</td> </tr> <tr> <td>CITY_NAME_ORIG</td> <td>Языконезависимое * название города.</td> </tr> <tr> <td>REGION_SHORT_NAME</td> <td>Языконезависимое * короткое название региона.</td> </tr> <tr> <td>CITY_SHORT_NAME</td> * <td>Языконезависимое короткое название города.</td> </tr> <tr> * <td>COUNTRY_LID</td> <td>Код языка для наименования страны.</td> </tr> <tr> * <td>COUNTRY_NAME</td> <td>Языкозависимое название страны, если оно * установлено. Иначе - языконезависимое название страны.</td> </tr> <tr> * <td>REGION_LID</td> <td>Код языка для наименования региона.</td> </tr> <tr> * <td>CITY_LID</td> <td>Код языка для наименования города.</td> </tr> <tr> * <td>REGION_NAME</td> <td>Языкозависимое название региона, если оно * установлено. Иначе - языконезависимое название региона.</td> </tr> <tr> * <td>CITY_NAME</td> <td>Языкозависимое название города, если оно * установлено. Иначе - языконезависимое название города.</td> </tr> <tr> * <td>LOC_DEFAULT</td> <td>Флаг "Выводить по умолчанию".</td> </tr> </table> <a * name="examples"></a> * * <h4>Example</h4> * <pre> * <?// Выведем выпадающий список местоположений?> * * <select name="LOCATION"> * <? * $db_vars = CSaleLocation::GetList( * array( * "SORT" => "ASC", * "COUNTRY_NAME_LANG" => "ASC", * "CITY_NAME_LANG" => "ASC" * ), * array("LID" => LANGUAGE_ID), * false, * false, * array() * ); * while ($vars = $db_vars->Fetch()): * ?> * <option value="<?= $vars["ID"]?>"><?= htmlspecialchars($vars["COUNTRY_NAME"]." - ".$vars["CITY_NAME"])?></option> * <? * endwhile; * ?> * </select> * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocation/csalelocation__getlist.a60c2ce1.php * @author Bitrix */ public static function GetList($arOrder = array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (is_string($arGroupBy) && strlen($arGroupBy) == 2) { $arFilter["LID"] = $arGroupBy; $arGroupBy = false; $arSelectFields = array("ID", "COUNTRY_ID", "REGION_ID", "CITY_ID", "SORT", "COUNTRY_NAME_ORIG", "COUNTRY_SHORT_NAME", "COUNTRY_NAME_LANG", "CITY_NAME_ORIG", "CITY_SHORT_NAME", "CITY_NAME_LANG", "REGION_NAME_ORIG", "REGION_SHORT_NAME", "REGION_NAME_LANG", "COUNTRY_NAME", "CITY_NAME", "REGION_NAME", "LOC_DEFAULT"); } if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "COUNTRY_ID", "REGION_ID", "CITY_ID", "SORT", "COUNTRY_NAME_ORIG", "COUNTRY_SHORT_NAME", "REGION_NAME_ORIG", "CITY_NAME_ORIG", "REGION_SHORT_NAME", "CITY_SHORT_NAME", "COUNTRY_LID", "COUNTRY_NAME", "REGION_LID", "CITY_LID", "REGION_NAME", "CITY_NAME", "LOC_DEFAULT"); } if (!is_array($arOrder)) { $arOrder = array(); } foreach ($arOrder as $key => $dir) { if (!in_array($key, $arSelectFields)) { $arSelectFields[] = $key; } } $arFilter = self::getFilterForGetList($arFilter); $arFields = self::getFieldMapForGetList($arFilter); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_location L " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_location L " . "\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_sale_location L " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $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 (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "PLAN_ID", "MODULE_ID", "SECTION_ID", "RATE", "RATE_TYPE", "RATE_CURRENCY"); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "APS.ID", "TYPE" => "int"), "PLAN_ID" => array("FIELD" => "APS.PLAN_ID", "TYPE" => "int"), "MODULE_ID" => array("FIELD" => "APS.MODULE_ID", "TYPE" => "string"), "SECTION_ID" => array("FIELD" => "APS.SECTION_ID", "TYPE" => "string"), "RATE" => array("FIELD" => "APS.RATE", "TYPE" => "double"), "RATE_TYPE" => array("FIELD" => "APS.RATE_TYPE", "TYPE" => "char"), "RATE_CURRENCY" => array("FIELD" => "APS.RATE_CURRENCY", "TYPE" => "string"), "PLAN_SITE_ID" => array("FIELD" => "AP.SITE_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_NAME" => array("FIELD" => "AP.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_DESCRIPTION" => array("FIELD" => "AP.DESCRIPTION", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_TIMESTAMP_X" => array("FIELD" => "AP.TIMESTAMP_X", "TYPE" => "datetime", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_ACTIVE" => array("FIELD" => "AP.ACTIVE", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_BASE_RATE" => array("FIELD" => "AP.BASE_RATE", "TYPE" => "double", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_BASE_RATE_TYPE" => array("FIELD" => "AP.BASE_RATE_TYPE", "TYPE" => "char", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_BASE_RATE_CURRENCY" => array("FIELD" => "AP.BASE_RATE_CURRENCY", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_MIN_PAY" => array("FIELD" => "AP.MIN_PAY", "TYPE" => "double", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)"), "PLAN_MIN_PLAN_VALUE" => array("FIELD" => "AP.MIN_PLAN_VALUE", "TYPE" => "double", "FROM" => "LEFT JOIN b_sale_affiliate_plan AP ON (APS.PLAN_ID = AP.ID)")); // <-- FIELDS $arSqls = CSaleOrder::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_sale_affiliate_plan_section APS " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_affiliate_plan_section APS " . "\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_sale_affiliate_plan_section APS " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $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 (empty($arSelectFields)) { $arSelectFields = array("ID", "USER_ID", "MODULE", "PRODUCT_ID", "PRODUCT_NAME", "PRODUCT_URL", "PRODUCT_PRICE_ID", "RECUR_SCHEME_TYPE", "RECUR_SCHEME_LENGTH", "WITHOUT_ORDER", "PRICE", "CURRENCY", "ORDER_ID", "CANCELED", "DATE_CANCELED", "CANCELED_REASON", "CALLBACK_FUNC", "PRODUCT_PROVIDER_CLASS", "DESCRIPTION", "TIMESTAMP_X", "PRIOR_DATE", "NEXT_DATE", "REMAINING_ATTEMPTS", "SUCCESS_PAYMENT"); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "SR.ID", "TYPE" => "int"), "USER_ID" => array("FIELD" => "SR.USER_ID", "TYPE" => "int"), "MODULE" => array("FIELD" => "SR.MODULE", "TYPE" => "string"), "PRODUCT_ID" => array("FIELD" => "SR.PRODUCT_ID", "TYPE" => "int"), "PRODUCT_NAME" => array("FIELD" => "SR.PRODUCT_NAME", "TYPE" => "string"), "PRODUCT_URL" => array("FIELD" => "SR.PRODUCT_URL", "TYPE" => "string"), "PRODUCT_PRICE_ID" => array("FIELD" => "SR.PRODUCT_PRICE_ID", "TYPE" => "int"), "RECUR_SCHEME_TYPE" => array("FIELD" => "SR.RECUR_SCHEME_TYPE", "TYPE" => "char"), "RECUR_SCHEME_LENGTH" => array("FIELD" => "SR.RECUR_SCHEME_LENGTH", "TYPE" => "int"), "WITHOUT_ORDER" => array("FIELD" => "SR.WITHOUT_ORDER", "TYPE" => "char"), "PRICE" => array("FIELD" => "SR.PRICE", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "SR.CURRENCY", "TYPE" => "string"), "ORDER_ID" => array("FIELD" => "SR.ORDER_ID", "TYPE" => "int"), "CANCELED" => array("FIELD" => "SR.CANCELED", "TYPE" => "char"), "DATE_CANCELED" => array("FIELD" => "SR.DATE_CANCELED", "TYPE" => "datetime"), "CANCELED_REASON" => array("FIELD" => "SR.CANCELED_REASON", "TYPE" => "string"), "CALLBACK_FUNC" => array("FIELD" => "SR.CALLBACK_FUNC", "TYPE" => "string"), "PRODUCT_PROVIDER_CLASS" => array("FIELD" => "SR.PRODUCT_PROVIDER_CLASS", "TYPE" => "string"), "DESCRIPTION" => array("FIELD" => "SR.DESCRIPTION", "TYPE" => "string"), "TIMESTAMP_X" => array("FIELD" => "SR.TIMESTAMP_X", "TYPE" => "datetime"), "PRIOR_DATE" => array("FIELD" => "SR.PRIOR_DATE", "TYPE" => "datetime"), "NEXT_DATE" => array("FIELD" => "SR.NEXT_DATE", "TYPE" => "datetime"), "REMAINING_ATTEMPTS" => array("FIELD" => "SR.REMAINING_ATTEMPTS", "TYPE" => "int"), "SUCCESS_PAYMENT" => array("FIELD" => "SR.SUCCESS_PAYMENT", "TYPE" => "char"), "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (SR.USER_ID = U.ID)"), "USER_ACTIVE" => array("FIELD" => "U.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_user U ON (SR.USER_ID = U.ID)"), "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (SR.USER_ID = U.ID)"), "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (SR.USER_ID = U.ID)"), "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (SR.USER_ID = U.ID)"), "USER_USER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (SR.USER_ID = U.ID)")); // <-- FIELDS $arSqls = CSaleOrder::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_sale_recurring SR " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_recurring SR " . "\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_sale_recurring SR " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
/** * <p>Метод возвращает результат выборки записей из налогов заказа в соответствии со своими параметрами. Метод динамичный.</p> * * * @param array $arOrder = array("TAX_NAME" Массив, в соответствии с которым сортируются результирующие * записи. Массив имеет вид: <pre class="syntax">array( "название_поля1" => * "направление_сортировки1", "название_поля2" => * "направление_сортировки2", . . . )</pre> В качестве "название_поля<i>N</i>" * может стоять любое поле налогов заказа, а в качестве * "направление_сортировки<i>X</i>" могут быть значения "<i>ASC</i>" (по * возрастанию) и "<i>DESC</i>" (по убыванию).<br><br> Если массив сортировки * имеет несколько элементов, то результирующий набор сортируется * последовательно по каждому элементу (т.е. сначала сортируется по * первому элементу, потом результат сортируется по второму и т.д.). * * @param AS $C Массив, в соответствии с которым фильтруются записи налогов * заказа. Массив имеет вид: <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("ORDER_ID" => 125)</pre> Этот * фильтр означает "выбрать все записи, в которых значение в поле * ORDER_ID (код налога) равно 125".<br><br> Значение по умолчанию - пустой * массив array() - означает, что результат отфильтрован не будет. * * @param $array Массив полей, по которым группируются записи вариантов налогов * заказа. Массив имеет вид: <pre class="syntax">array("название_поля1", * "группирующая_функция2" => "название_поля2", ...)</pre> В качестве * "название_поля<i>N</i>" может стоять любое поле налогов заказа. В * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> - * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li> * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> - * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление * суммы.</li> </ul> Если массив пустой, то метод вернет число записей, * удовлетворяющих фильтру.<br><br> Значение по умолчанию - <i>false</i> - * означает, что результат группироваться не будет. * * @param arFilte $r = array() Массив параметров выборки. Может содержать следующие ключи: <ul> * <li>"<b>nTopCount</b>" - количество возвращаемых методом записей будет * ограничено сверху значением этого ключа;</li> <li> любой ключ, * принимаемый методом <b> CDBResult::NavQuery</b> в качестве третьего * параметра.</li> </ul> Значение по умолчанию - <i>false</i> - означает, что * параметров выборки нет. * * @param array $arGroupBy = false Массив полей записей, которые будут возвращены методом. Можно * указать только те поля, которые необходимы. Если в массиве * присутствует значение "*", то будут возвращены все доступные * поля.<br><br> Значение по умолчанию - пустой массив array() - означает, * что будут возвращены все поля основной таблицы запроса. * * @param array $arNavStartParams = false * * @param array $arSelectFields = array() Код суммы налогов. </ht * * @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>ORDER_ID</td> * <td>Код заказа.</td> </tr> <tr> <td>TAX_NAME</td> <td>Название налога.</td> </tr> <tr> * <td>VALUE</td> <td>Ставка налога.</td> </tr> <tr> <td>VALUE_MONEY</td> <td>Сумма налога.</td> * </tr> <tr> <td>APPLY_ORDER</td> <td>Порядок применения.</td> </tr> <tr> <td>CODE</td> * <td>Символьный код налога.</td> </tr> <tr> <td>IS_IN_PRICE</td> <td>Флаг (Y/N) включен * ли налог в цену товара.</td> </tr> <tr> <td>IS_PERCENT</td> <td>Y</td> </tr> </table> <p>Если в * качестве параметра arGroupBy передается пустой массив, то метод * вернет число записей, удовлетворяющих фильтру.</p> <a name="examples"></a> * * <h4>Example</h4> * <pre> * <? * $arTaxList = array(); * // Выберем все суммы налогов для заказа $ORDER_ID * $db_tax_list = CSaleOrderTax::GetList(array("APPLY_ORDER"=>"ASC"), Array("ORDER_ID"=>$ORDER_ID)); * * $iNds = -1; * $i = 0; * while ($ar_tax_list = $db_tax_list->Fetch()) * { * $arTaxList[$i] = $ar_tax_list; * // определяем, какой из налогов - НДС, предполагая, что его символьный код - NDS * if ($arTaxList[$i]["CODE"] == "NDS") * $iNds = $i; * * $i++; * } * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleordertax/csaleordertax__getlist.1c2a6c7d.php * @author Bitrix */ public static function GetList($arOrder = array("TAX_NAME" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; // FIELDS --> $arFields = array("ID" => array("FIELD" => "T.ID", "TYPE" => "int"), "ORDER_ID" => array("FIELD" => "T.ORDER_ID", "TYPE" => "int"), "TAX_NAME" => array("FIELD" => "T.TAX_NAME", "TYPE" => "string"), "VALUE" => array("FIELD" => "T.VALUE", "TYPE" => "double"), "VALUE_MONEY" => array("FIELD" => "T.VALUE_MONEY", "TYPE" => "double"), "APPLY_ORDER" => array("FIELD" => "T.APPLY_ORDER", "TYPE" => "int"), "CODE" => array("FIELD" => "T.CODE", "TYPE" => "string"), "IS_PERCENT" => array("FIELD" => "T.IS_PERCENT", "TYPE" => "char"), "IS_IN_PRICE" => array("FIELD" => "T.IS_IN_PRICE", "TYPE" => "char")); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_order_tax T " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_order_tax T " . "\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_sale_order_tax T " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $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()) { if (\Bitrix\Main\Config\Option::get('main', '~sale_paysystem_converted') == 'Y') { $ignoredFields = array('PERSON_TYPE_ID'); if (!$arSelectFields) { $select = array("ID", "PAY_SYSTEM_ID", "PERSON_TYPE_ID", "PSA_NAME", "ACTION_FILE", "RESULT_FILE", "NEW_WINDOW", "PARAMS", "TARIF", "ENCODING", "LOGOTIP"); } else { $select = array(); foreach ($arSelectFields as $i => $field) { $select[] = self::getAlias($field); } } if (!in_array('ID', $select)) { $select[] = 'ID'; } $filter = array(); foreach ($arFilter as $i => $field) { if (in_array($i, $ignoredFields)) { continue; } if ($i == 'PAY_SYSTEM_ID') { $filter['ID'] = $field; } else { $filter[self::getAlias($i)] = $field; } } $groupBy = array(); if ($arGroupBy !== false) { $arGroupBy = !is_array($arGroupBy) ? array($arGroupBy) : $arGroupBy; foreach ($arGroupBy as $field => $order) { $groupBy[self::getAlias($field)] = $order; } } $dbRes = \Bitrix\Sale\Internals\PaySystemActionTable::getList(array('select' => $select, 'filter' => $filter, 'group' => $groupBy)); $limit = null; if (is_array($arNavStartParams) && isset($arNavStartParams['nTopCount'])) { if ($arNavStartParams['nTopCount'] > 0) { $limit = $arNavStartParams['nTopCount']; } } $result = array(); $busValEnable = in_array('PARAMS', $select); while ($data = $dbRes->fetch()) { if ($limit !== null && !$limit) { break; } $dbRestriction = ServiceRestrictionTable::getList(array('filter' => array('SERVICE_ID' => $data['ID'], 'SERVICE_TYPE' => Manager::SERVICE_TYPE_PAYMENT))); if (isset($data['ACTION_FILE'])) { $oldHandler = array_search($data['ACTION_FILE'], self::getOldToNewHandlersMap()); if ($oldHandler !== false) { $data['ACTION_FILE'] = $oldHandler; } } while ($restriction = $dbRestriction->fetch()) { if (!self::checkRestriction($restriction, $filter)) { continue 2; } } if (isset($data['PAY_SYSTEM_ID'])) { $data['PAY_SYSTEM_ID'] = $data['ID']; } if ($busValEnable) { if ($data['ID'] > 0) { $consumerId = $data['ID']; } else { $params = unserialize($data['PARAMS']); $consumerId = $params['BX_PAY_SYSTEM_ID']['VALUE']; } $consumer = 'PAYSYSTEM_' . $consumerId; if (!$data['PERSON_TYPE_ID']) { if (is_array($arFilter['PERSON_TYPE_ID'])) { $personTypeId = $arFilter['PERSON_TYPE_ID'][0]; } else { $personTypeId = $arFilter['PERSON_TYPE_ID']; } } else { $personTypeId = $data['PERSON_TYPE_ID']; } if (!in_array('ID', $arSelectFields)) { $key = array_search('ID', $data); unset($data[$key]); } $params = static::getParamsByConsumer($consumer, $personTypeId); $params['BX_PAY_SYSTEM_ID'] = array('TYPE' => '', 'VALUE' => $consumerId); $data['PARAMS'] = serialize($params); } if (in_array('PS_NAME', $arSelectFields)) { $data['PS_NAME'] = $data['NAME']; unset($data['NAME']); } if (array_key_exists('PSA_NAME', $data)) { $data['NAME'] = $data['PSA_NAME']; unset($data['PSA_NAME']); } $result[] = $data; $limit--; } $dbRes = new CDBResult(); $dbRes->InitFromArray($result); } else { global $DB; 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; } if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "PAY_SYSTEM_ID", "PERSON_TYPE_ID", "NAME", "ACTION_FILE", "RESULT_FILE", "NEW_WINDOW", "PARAMS", "TARIF", "ENCODING", "LOGOTIP"); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "PSA.ID", "TYPE" => "int"), "PAY_SYSTEM_ID" => array("FIELD" => "PSA.PAY_SYSTEM_ID", "TYPE" => "int"), "PERSON_TYPE_ID" => array("FIELD" => "PSA.PERSON_TYPE_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "PSA.NAME", "TYPE" => "string"), "ACTION_FILE" => array("FIELD" => "PSA.ACTION_FILE", "TYPE" => "string"), "RESULT_FILE" => array("FIELD" => "PSA.RESULT_FILE", "TYPE" => "string"), "NEW_WINDOW" => array("FIELD" => "PSA.NEW_WINDOW", "TYPE" => "char"), "PARAMS" => array("FIELD" => "PSA.PARAMS", "TYPE" => "string"), "TARIF" => array("FIELD" => "PSA.TARIF", "TYPE" => "string"), "HAVE_PAYMENT" => array("FIELD" => "PSA.HAVE_PAYMENT", "TYPE" => "char"), "HAVE_ACTION" => array("FIELD" => "PSA.HAVE_ACTION", "TYPE" => "char"), "HAVE_RESULT" => array("FIELD" => "PSA.HAVE_RESULT", "TYPE" => "char"), "HAVE_PREPAY" => array("FIELD" => "PSA.HAVE_PREPAY", "TYPE" => "char"), "HAVE_RESULT_RECEIVE" => array("FIELD" => "PSA.HAVE_RESULT_RECEIVE", "TYPE" => "char"), "ENCODING" => array("FIELD" => "PSA.ENCODING", "TYPE" => "string"), "LOGOTIP" => array("FIELD" => "PSA.LOGOTIP", "TYPE" => "int"), "PS_LID" => array("FIELD" => "PS.LID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_CURRENCY" => array("FIELD" => "PS.CURRENCY", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_NAME" => array("FIELD" => "PS.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_ACTIVE" => array("FIELD" => "PS.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_SORT" => array("FIELD" => "PS.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PS_DESCRIPTION" => array("FIELD" => "PS.DESCRIPTION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_pay_system PS ON (PSA.PAY_SYSTEM_ID = PS.ID)"), "PT_LID" => array("FIELD" => "PT.LID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"), "PT_NAME" => array("FIELD" => "PT.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"), "PT_SORT" => array("FIELD" => "PT.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)"), "PT_ACTIVE" => array("FIELD" => "PT.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_person_type PT ON (PSA.PERSON_TYPE_ID = PT.ID)")); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_pay_system_action PSA " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_pay_system_action PSA " . "\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_sale_pay_system_action PSA " . "\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; 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; if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "USER_PROPS_ID", "ORDER_PROPS_ID", "USER_VALUE_NAME", "VALUE", "TYPE", "SORT", "VARIANT_NAME", "CODE"); } } if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "USER_PROPS_ID", "ORDER_PROPS_ID", "NAME", "VALUE", "PROP_ID", "PROP_PERSON_TYPE_ID", "PROP_NAME", "PROP_TYPE", "PROP_REQUIED", "PROP_DEFAULT_VALUE", "PROP_SORT", "PROP_USER_PROPS", "PROP_IS_LOCATION", "PROP_PROPS_GROUP_ID", "PROP_SIZE1", "PROP_SIZE2", "PROP_DESCRIPTION", "PROP_IS_EMAIL", "PROP_IS_PROFILE_NAME", "PROP_IS_PAYER", "PROP_IS_LOCATION4TAX", "PROP_IS_ZIP", "PROP_CODE", "VARIANT_ID", "VARIANT_ORDER_PROPS_ID", "VARIANT_NAME", "VARIANT_VALUE", "VARIANT_SORT", "VARIANT_DESCRIPTION"); } // TODO proper compatibility CAllSaleOrderUserPropsValue::getList15 $sale15converted = \Bitrix\Main\Config\Option::get('main', '~sale_converted_15', 'N') == 'Y'; if ($sale15converted && is_array($arSelectFields) && $arSelectFields) { if (($i = array_search('PROP_SIZE1', $arSelectFields)) !== false) { unset($arSelectFields[$i]); } if (($i = array_search('PROP_SIZE2', $arSelectFields)) !== false) { unset($arSelectFields[$i]); } } // FIELDS --> $arFields = array("ID" => array("FIELD" => "UP.ID", "TYPE" => "int"), "USER_PROPS_ID" => array("FIELD" => "UP.USER_PROPS_ID", "TYPE" => "int"), "ORDER_PROPS_ID" => array("FIELD" => "UP.ORDER_PROPS_ID", "TYPE" => "int"), "NAME" => array("FIELD" => "UP.NAME", "TYPE" => "string"), "PROP_ID" => array("FIELD" => "P.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_PERSON_TYPE_ID" => array("FIELD" => "P.PERSON_TYPE_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_NAME" => array("FIELD" => "P.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_REQUIED" => array("FIELD" => "P.REQUI" . ($sale15converted ? 'R' : '') . "ED", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_DEFAULT_VALUE" => array("FIELD" => "P.DEFAULT_VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_SORT" => array("FIELD" => "P.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_USER_PROPS" => array("FIELD" => "P.USER_PROPS", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_LOCATION" => array("FIELD" => "P.IS_LOCATION", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_PROPS_GROUP_ID" => array("FIELD" => "P.PROPS_GROUP_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_SIZE1" => array("FIELD" => "P.SIZE1", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_SIZE2" => array("FIELD" => "P.SIZE2", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_DESCRIPTION" => array("FIELD" => "P.DESCRIPTION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_EMAIL" => array("FIELD" => "P.IS_EMAIL", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_PROFILE_NAME" => array("FIELD" => "P.IS_PROFILE_NAME", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_PAYER" => array("FIELD" => "P.IS_PAYER", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_LOCATION4TAX" => array("FIELD" => "P.IS_LOCATION4TAX", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_IS_ZIP" => array("FIELD" => "P.IS_ZIP", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_CODE" => array("FIELD" => "P.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_ACTIVE" => array("FIELD" => "P.ACTIVE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "PROP_UTIL" => array("FIELD" => "P.UTIL", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "VARIANT_ID" => array("FIELD" => "PV.ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_ORDER_PROPS_ID" => array("FIELD" => "PV.ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_NAME" => array("FIELD" => "PV.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_VALUE" => array("FIELD" => "PV.VALUE", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_SORT" => array("FIELD" => "PV.SORT", "TYPE" => "int", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "VARIANT_DESCRIPTION" => array("FIELD" => "PV.DESCRIPTION", "TYPE" => "string", "FROM" => "LEFT JOIN b_sale_order_props_variant PV ON (UP.ORDER_PROPS_ID = PV.ORDER_PROPS_ID AND UP.VALUE = PV.VALUE)"), "USER_VALUE_NAME" => array("FIELD" => "PV.NAME", "TYPE" => "string"), "TYPE" => array("FIELD" => "P.TYPE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "SORT" => array("FIELD" => "P.SORT", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)"), "CODE" => array("FIELD" => "P.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props P ON (UP.ORDER_PROPS_ID = P.ID)")); // <-- FIELDS self::addPropertyValueField('UP', $arFields, $arSelectFields); $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_user_props_value UP " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_user_props_value UP " . "\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_sale_user_props_value UP " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // рнкэйн дкъ MYSQL!!! дкъ ORACLE дпсцни йнд $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
public static function GetDiscountGroupList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; $arFields = array("ID" => array("FIELD" => "DG.ID", "TYPE" => "int"), "DISCOUNT_ID" => array("FIELD" => "DG.DISCOUNT_ID", "TYPE" => "int"), "GROUP_ID" => array("FIELD" => "DG.GROUP_ID", "TYPE" => "int")); $arSqls = CSaleOrder::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_sale_discount_group DG " . $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_sale_discount_group DG " . $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_sale_discount_group DG " . $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; }
/** * The function select order history * * @param array $arOrder - array to sort * @param array $arFilter - array to filter * @param array $arGroupBy - array to group records * @param array $arNavStartParams - array to parameters * @param array $arSelectFields - array to selectes fields * @return object $dbRes - object result */ public function GetHistoryList($arOrder = array("ID" => "DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (array_key_exists("H_DATE_INSERT_FROM", $arFilter)) { $val = $arFilter["H_DATE_INSERT_FROM"]; unset($arFilter["H_DATE_INSERT_FROM"]); $arFilter[">=H_DATE_INSERT"] = $val; } if (array_key_exists("H_DATE_INSERT_TO", $arFilter)) { $val = $arFilter["H_DATE_INSERT_TO"]; unset($arFilter["H_DATE_INSERT_TO"]); $arFilter["<=H_DATE_INSERT"] = $val; } if (!$arSelectFields || count($arSelectFields) <= 0 || in_array("*", $arSelectFields)) { $arSelectFields = array("ID", "H_USER_ID", "H_DATE_INSERT", "H_ORDER_ID", "H_CURRENCY", "PERSON_TYPE_ID", "PAYED", "DATE_PAYED", "EMP_PAYED_ID", "CANCELED", "DATE_CANCELED", "REASON_CANCELED", "MARKED", "DATE_MARKED", "REASON_MARKED", "DEDUCTED", "DATE_DEDUCTED", "REASON_UNDO_DEDUCTED", "STATUS_ID", "DATE_STATUS", "PRICE_DELIVERY", "ALLOW_DELIVERY", "DATE_ALLOW_DELIVERY", "PRICE", "CURRENCY", "DISCOUNT_VALUE", "USER_ID", "PAY_SYSTEM_ID", "DELIVERY_ID", "PS_STATUS", "PS_STATUS_CODE", "PS_STATUS_DESCRIPTION", "PS_STATUS_MESSAGE", "PS_SUM", "PS_CURRENCY", "PS_RESPONSE_DATE", "TAX_VALUE", "STAT_GID", "SUM_PAID", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE", "AFFILIATE_ID", "DELIVERY_DOC_NUM", "DELIVERY_DOC_DATE"); } $arFields = array("ID" => array("FIELD" => "V.ID", "TYPE" => "int"), "H_ORDER_ID" => array("FIELD" => "V.H_ORDER_ID", "TYPE" => "int"), "H_USER_ID" => array("FIELD" => "V.H_USER_ID", "TYPE" => "int"), "H_DATE_INSERT" => array("FIELD" => "V.H_DATE_INSERT", "TYPE" => "datetime"), "H_CURRENCY" => array("FIELD" => "V.H_CURRENCY", "TYPE" => "string"), "PERSON_TYPE_ID" => array("FIELD" => "V.PERSON_TYPE_ID", "TYPE" => "int"), "PAYED" => array("FIELD" => "V.PAYED", "TYPE" => "char"), "DATE_PAYED" => array("FIELD" => "V.DATE_PAYED", "TYPE" => "datetime"), "EMP_PAYED_ID" => array("FIELD" => "V.EMP_PAYED_ID", "TYPE" => "int"), "CANCELED" => array("FIELD" => "V.CANCELED", "TYPE" => "char"), "DATE_CANCELED" => array("FIELD" => "V.DATE_CANCELED", "TYPE" => "datetime"), "REASON_CANCELED" => array("FIELD" => "V.REASON_CANCELED", "TYPE" => "string"), "MARKED" => array("FIELD" => "V.MARKED", "TYPE" => "char"), "DATE_MARKED" => array("FIELD" => "V.DATE_MARKED", "TYPE" => "datetime"), "REASON_MARKED" => array("FIELD" => "V.REASON_MARKED", "TYPE" => "string"), "DEDUCTED" => array("FIELD" => "V.DEDUCTED", "TYPE" => "char"), "DATE_DEDUCTED" => array("FIELD" => "V.DATE_DEDUCTED", "TYPE" => "datetime"), "REASON_DEDUCTED" => array("FIELD" => "V.REASON_UNDO_DEDUCTED", "TYPE" => "string"), "STATUS_ID" => array("FIELD" => "V.STATUS_ID", "TYPE" => "char"), "DATE_STATUS" => array("FIELD" => "V.DATE_STATUS", "TYPE" => "datetime"), "PAY_VOUCHER_NUM" => array("FIELD" => "V.PAY_VOUCHER_NUM", "TYPE" => "string"), "PAY_VOUCHER_DATE" => array("FIELD" => "V.PAY_VOUCHER_DATE", "TYPE" => "date"), "PRICE_DELIVERY" => array("FIELD" => "V.PRICE_DELIVERY", "TYPE" => "double"), "ALLOW_DELIVERY" => array("FIELD" => "V.ALLOW_DELIVERY", "TYPE" => "char"), "DATE_ALLOW_DELIVERY" => array("FIELD" => "V.DATE_ALLOW_DELIVERY", "TYPE" => "datetime"), "PRICE" => array("FIELD" => "V.PRICE", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "V.CURRENCY", "TYPE" => "string"), "DISCOUNT_VALUE" => array("FIELD" => "V.DISCOUNT_VALUE", "TYPE" => "double"), "SUM_PAID" => array("FIELD" => "V.SUM_PAID", "TYPE" => "double"), "USER_ID" => array("FIELD" => "V.USER_ID", "TYPE" => "int"), "PAY_SYSTEM_ID" => array("FIELD" => "V.PAY_SYSTEM_ID", "TYPE" => "int"), "DELIVERY_ID" => array("FIELD" => "V.DELIVERY_ID", "TYPE" => "string"), "PS_STATUS" => array("FIELD" => "V.PS_STATUS", "TYPE" => "char"), "PS_STATUS_CODE" => array("FIELD" => "V.PS_STATUS_CODE", "TYPE" => "string"), "PS_STATUS_DESCRIPTION" => array("FIELD" => "V.PS_STATUS_DESCRIPTION", "TYPE" => "string"), "PS_STATUS_MESSAGE" => array("FIELD" => "V.PS_STATUS_MESSAGE", "TYPE" => "string"), "PS_SUM" => array("FIELD" => "V.PS_SUM", "TYPE" => "double"), "PS_CURRENCY" => array("FIELD" => "V.PS_CURRENCY", "TYPE" => "string"), "PS_RESPONSE_DATE" => array("FIELD" => "V.PS_RESPONSE_DATE", "TYPE" => "datetime"), "TAX_VALUE" => array("FIELD" => "V.TAX_VALUE", "TYPE" => "double"), "AFFILIATE_ID" => array("FIELD" => "V.AFFILIATE_ID", "TYPE" => "int"), "DELIVERY_DOC_NUM" => array("FIELD" => "V.DELIVERY_DOC_NUM", "TYPE" => "string"), "DELIVERY_DOC_DATE" => array("FIELD" => "V.DELIVERY_DOC_DATE", "TYPE" => "date")); $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); $strSql = "SELECT " . $arSqls["SELECT"] . " FROM b_sale_order_history V "; 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($arGroupBy) && count($arGroupBy) == 0) { $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT FROM b_sale_order_history B "; 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 { $strSql = $DB->TopSql($strSql, $arNavStartParams["nTopCount"]); $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
/** * The function select viewed product * * @param array $arOrder - array to sort * @param array $arFilter - array to filter * @param array $arGroupBy - array to group records * @param array $arNavStartParams - array to parameters * @param array $arSelectFields - array to selectes fields * @return object $dbRes - object result */ public static function GetList($arOrder = array("ID" => "DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (array_key_exists("DATE_FROM", $arFilter)) { $arFilter[">=DATE_VISIT"] = trim($arFilter["DATE_FROM"]); unset($arFilter["DATE_FROM"]); } if (array_key_exists("DATE_TO", $arFilter)) { $arFilter["<=DATE_VISIT"] = trim($arFilter["DATE_TO"]); unset($arFilter["DATE_TO"]); } if (!$arSelectFields || count($arSelectFields) <= 0 || in_array("*", $arSelectFields)) { $arSelectFields = array("ID", "FUSER_ID", "DATE_VISIT", "PRODUCT_ID", "MODULE", "LID", "NAME", "DETAIL_PAGE_URL", "CURRENCY", "PRICE", "NOTES", "PREVIEW_PICTURE", "DETAIL_PICTURE", "CALLBACK_FUNC", "PRODUCT_PROVIDER_CLASS"); } if (\Bitrix\Main\Loader::includeModule("catalog")) { if (\Bitrix\Main\Config\Option::get("sale", "viewed_capability", "") == "Y") { foreach ($arFilter as $key => $value) { if ($key == "LID") { $arFilter['SITE_ID'] = $value; unset($arFilter['LID']); } } $limit = 100; if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) >= 0) { $limit = IntVal($arNavStartParams["nTopCount"]); } $viewedIterator = \Bitrix\Catalog\CatalogViewedProductTable::getList(array("filter" => $arFilter, "select" => array("ID", "PRODUCT_ID", "DATE_VISIT", "LID" => "SITE_ID", "NAME" => "ELEMENT.NAME"), "order" => array("DATE_VISIT" => "DESC"), "limit" => $limit)); $viewed = array(); while ($row = $viewedIterator->fetch()) { $row['MODULE'] = "catalog"; $row['DATE_VISIT'] = $row['DATE_VISIT']->toString(); $viewed[$row['PRODUCT_ID']] = $row; } if (count($viewed)) { // Map to parent sku $newIds = array(); $ids = array_keys($viewed); $catalogIterator = CCatalog::getList(); while ($catalog = $catalogIterator->fetch()) { if ($catalog['IBLOCK_TYPE_ID'] == "offers") { $elementIterator = CIBlockElement::getList(array(), array("ID" => $ids, "IBLOCK_ID" => $catalog['IBLOCK_ID']), false, false, array("ID", "IBLOCK_ID", "PROPERTY_" . $catalog['SKU_PROPERTY_ID'])); while ($item = $elementIterator->fetch()) { $propertyName = "PROPERTY_" . $catalog['SKU_PROPERTY_ID'] . "_VALUE"; $parentId = $item[$propertyName]; if (!empty($parentId)) { $newIds[$item['ID']] = $parentId; } else { $newIds[$item['ID']] = $item['ID']; } } } } // Push missing foreach ($ids as $id) { if (!isset($newIds[$id])) { $newIds[$id] = $id; } } $filter = array("ID" => array_values($newIds)); if (!count($filter['ID'])) { $filter = array("ID" => -1); } $mapped = array(); if (in_array("DETAIL_PAGE_URL", $arSelectFields) || in_array("PREVIEW_PICTURE", $arSelectFields) || in_array("DETAIL_PICTURE", $arSelectFields)) { $elementIterator = CIBlockElement::GetList(array(), $filter); while ($elementObj = $elementIterator->GetNextElement()) { $fields = $elementObj->GetFields(); $mapped[$fields['ID']]['PREVIEW_PICTURE'] = $fields['PREVIEW_PICTURE']; $mapped[$fields['ID']]['DETAIL_PICTURE'] = $fields['DETAIL_PICTURE']; } } foreach ($newIds as $natural => $tr) { $viewed[$natural]['PREVIEW_PICTURE'] = $mapped[$tr]['DETAIL_PICTURE']; $viewed[$natural]['DETAIL_PICTURE'] = $mapped[$tr]['PREVIEW_PICTURE']; $viewed[$natural]['PRODUCT_ID'] = $tr; } if (in_array("CURRENCY", $arSelectFields) || in_array("PRICE", $arSelectFields)) { // Prices $priceIterator = CPrice::getList(array(), array("PRODUCT_ID" => $ids), false, false, array("PRODUCT_ID", "PRICE", "CURRENCY")); while ($price = $priceIterator->fetch()) { if (!isset($viewed[$price['PRODUCT_ID']]['PRICE'])) { $viewed[$price['PRODUCT_ID']]['PRICE'] = $price['PRICE']; $viewed[$price['PRODUCT_ID']]['CURRENCY'] = $price['CURRENCY']; } } } } // resort $dbresult = new CDBResult(); $dbresult->InitFromArray(array_values($viewed)); return $dbresult; } } $arFields = array("ID" => array("FIELD" => "V.ID", "TYPE" => "int"), "FUSER_ID" => array("FIELD" => "V.FUSER_ID", "TYPE" => "int"), "DATE_VISIT" => array("FIELD" => "V.DATE_VISIT", "TYPE" => "datetime"), "PRODUCT_ID" => array("FIELD" => "V.PRODUCT_ID", "TYPE" => "int"), "MODULE" => array("FIELD" => "V.MODULE", "TYPE" => "string"), "LID" => array("FIELD" => "V.LID", "TYPE" => "string"), "NAME" => array("FIELD" => "V.NAME", "TYPE" => "string"), "DETAIL_PAGE_URL" => array("FIELD" => "V.DETAIL_PAGE_URL", "TYPE" => "string"), "CURRENCY" => array("FIELD" => "V.CURRENCY", "TYPE" => "string"), "PRICE" => array("FIELD" => "V.PRICE", "TYPE" => "double"), "NOTES" => array("FIELD" => "V.NOTES", "TYPE" => "string"), "PREVIEW_PICTURE" => array("FIELD" => "V.PREVIEW_PICTURE", "TYPE" => "string"), "DETAIL_PICTURE" => array("FIELD" => "V.DETAIL_PICTURE", "TYPE" => "string"), "CALLBACK_FUNC" => array("FIELD" => "V.CALLBACK_FUNC", "TYPE" => "string"), "PRODUCT_PROVIDER_CLASS" => array("FIELD" => "V.PRODUCT_PROVIDER_CLASS", "TYPE" => "string")); $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); $strSql = "SELECT " . $arSqls["SELECT"] . " " . "FROM b_sale_viewed_product V "; 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($arGroupBy) && count($arGroupBy) == 0) { $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return false; } } if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0) { $strSql_tmp = "SELECT COUNT('x') as CNT " . "FROM b_sale_viewed_product B "; 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 { $strSql = $DB->TopSql($strSql, $arNavStartParams["nTopCount"]); $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
function GetList($arOrder = array("ID" => "DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array(), $arOptions = array()) { global $DB, $USER_FIELD_MANAGER; if (!is_array($arOrder)) { $arOrder = array('ID' => 'DESC'); } if (!is_array($arFilter)) { $arFilter = array(); } if (!is_array($arSelectFields)) { $arSelectFields = array(); } $obUserFieldsSql = new CUserTypeSQL(); $obUserFieldsSql->SetEntity("ORDER", "O.ID"); $obUserFieldsSql->SetSelect($arSelectFields); $obUserFieldsSql->SetFilter($arFilter); $obUserFieldsSql->SetOrder($arOrder); if (array_key_exists("DATE_FROM", $arFilter)) { $val = $arFilter["DATE_FROM"]; unset($arFilter["DATE_FROM"]); $arFilter[">=DATE_INSERT"] = $val; } if (array_key_exists("DATE_TO", $arFilter)) { $val = $arFilter["DATE_TO"]; unset($arFilter["DATE_TO"]); $arFilter["<=DATE_INSERT"] = $val; } if (array_key_exists("DATE_INSERT_FROM", $arFilter)) { $val = $arFilter["DATE_INSERT_FROM"]; unset($arFilter["DATE_INSERT_FROM"]); $arFilter[">=DATE_INSERT"] = $val; } if (array_key_exists("DATE_INSERT_TO", $arFilter)) { $val = $arFilter["DATE_INSERT_TO"]; unset($arFilter["DATE_INSERT_TO"]); $arFilter["<=DATE_INSERT"] = $val; } if (array_key_exists("DATE_UPDATE_FROM", $arFilter)) { $val = $arFilter["DATE_UPDATE_FROM"]; unset($arFilter["DATE_UPDATE_FROM"]); $arFilter[">=DATE_UPDATE"] = $val; } if (array_key_exists("DATE_UPDATE_TO", $arFilter)) { $val = $arFilter["DATE_UPDATE_TO"]; unset($arFilter["DATE_UPDATE_TO"]); $arFilter["<=DATE_UPDATE"] = $val; } if (array_key_exists("DATE_STATUS_FROM", $arFilter)) { $val = $arFilter["DATE_STATUS_FROM"]; unset($arFilter["DATE_STATUS_FROM"]); $arFilter[">=DATE_STATUS"] = $val; } if (array_key_exists("DATE_STATUS_TO", $arFilter)) { $val = $arFilter["DATE_STATUS_TO"]; unset($arFilter["DATE_STATUS_TO"]); $arFilter["<=DATE_STATUS"] = $val; } if (array_key_exists("DATE_PAYED_FROM", $arFilter)) { $val = $arFilter["DATE_PAYED_FROM"]; unset($arFilter["DATE_PAYED_FROM"]); $arFilter[">=DATE_PAYED"] = $val; } if (array_key_exists("DATE_PAYED_TO", $arFilter)) { $val = $arFilter["DATE_PAYED_TO"]; unset($arFilter["DATE_PAYED_TO"]); $arFilter["<=DATE_PAYED"] = $val; } if (array_key_exists("DATE_ALLOW_DELIVERY_FROM", $arFilter)) { $val = $arFilter["DATE_ALLOW_DELIVERY_FROM"]; unset($arFilter["DATE_ALLOW_DELIVERY_FROM"]); $arFilter[">=DATE_ALLOW_DELIVERY"] = $val; } if (array_key_exists("DATE_ALLOW_DELIVERY_TO", $arFilter)) { $val = $arFilter["DATE_ALLOW_DELIVERY_TO"]; unset($arFilter["DATE_ALLOW_DELIVERY_TO"]); $arFilter["<=DATE_ALLOW_DELIVERY"] = $val; } if (array_key_exists("DATE_CANCELED_FROM", $arFilter)) { $val = $arFilter["DATE_CANCELED_FROM"]; unset($arFilter["DATE_CANCELED_FROM"]); $arFilter[">=DATE_CANCELED"] = $val; } if (array_key_exists("DATE_CANCELED_TO", $arFilter)) { $val = $arFilter["DATE_CANCELED_TO"]; unset($arFilter["DATE_CANCELED_TO"]); $arFilter["<=DATE_CANCELED"] = $val; } if (array_key_exists("DATE_DEDUCTED_FROM", $arFilter)) { $val = $arFilter["DATE_DEDUCTED_FROM"]; unset($arFilter["DATE_DEDUCTED_FROM"]); $arFilter[">=DATE_DEDUCTED"] = $val; } if (array_key_exists("DATE_DEDUCTED_TO", $arFilter)) { $val = $arFilter["DATE_DEDUCTED_TO"]; unset($arFilter["DATE_DEDUCTED_TO"]); $arFilter["<=DATE_DEDUCTED"] = $val; } if (array_key_exists("DATE_MARKED_FROM", $arFilter)) { $val = $arFilter["DATE_MARKED_FROM"]; unset($arFilter["DATE_MARKED_FROM"]); $arFilter[">=DATE_MARKED"] = $val; } if (array_key_exists("DATE_MARKED_TO", $arFilter)) { $val = $arFilter["DATE_MARKED_TO"]; unset($arFilter["DATE_MARKED_TO"]); $arFilter["<=DATE_MARKED"] = $val; } if (array_key_exists("DATE_PAY_BEFORE_FROM", $arFilter)) { $val = $arFilter["DATE_PAY_BEFORE_FROM"]; unset($arFilter["DATE_PAY_BEFORE_FROM"]); $arFilter[">=DATE_PAY_BEFORE"] = $val; } if (array_key_exists("DATE_PAY_BEFORE_TO", $arFilter)) { $val = $arFilter["DATE_PAY_BEFORE_TO"]; unset($arFilter["DATE_PAY_BEFORE_TO"]); $arFilter["<=DATE_PAY_BEFORE"] = $val; } if (array_key_exists("DELIVERY_REQUEST_SENT", $arFilter)) { if ($arFilter["DELIVERY_REQUEST_SENT"] == "Y") { $arFilter["!DELIVERY_DATE_REQUEST"] = ""; } else { $arFilter["+DELIVERY_DATE_REQUEST"] = ""; } unset($arFilter["DELIVERY_REQUEST_SENT"]); } $callback = false; if (array_key_exists("CUSTOM_SUBQUERY", $arFilter)) { $callback = $arFilter["CUSTOM_SUBQUERY"]; unset($arFilter["CUSTOM_SUBQUERY"]); } if (empty($arSelectFields)) { $arSelectFields = array("ID", "LID", "PERSON_TYPE_ID", "PAYED", "DATE_PAYED", "EMP_PAYED_ID", "CANCELED", "DATE_CANCELED", "EMP_CANCELED_ID", "REASON_CANCELED", "MARKED", "DATE_MARKED", "EMP_MARKED_ID", "REASON_MARKED", "STATUS_ID", "DATE_STATUS", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE", "EMP_STATUS_ID", "PRICE_DELIVERY", "ALLOW_DELIVERY", "DATE_ALLOW_DELIVERY", "EMP_ALLOW_DELIVERY_ID", "DEDUCTED", "DATE_DEDUCTED", "EMP_DEDUCTED_ID", "REASON_UNDO_DEDUCTED", "RESERVED", "PRICE", "CURRENCY", "DISCOUNT_VALUE", "SUM_PAID", "USER_ID", "PAY_SYSTEM_ID", "DELIVERY_ID", "DATE_INSERT", "DATE_INSERT_FORMAT", "DATE_UPDATE", "USER_DESCRIPTION", "ADDITIONAL_INFO", "PS_STATUS", "PS_STATUS_CODE", "PS_STATUS_DESCRIPTION", "PS_STATUS_MESSAGE", "PS_SUM", "PS_CURRENCY", "PS_RESPONSE_DATE", "COMMENTS", "TAX_VALUE", "STAT_GID", "RECURRING_ID", "RECOUNT_FLAG", "USER_LOGIN", "USER_NAME", "USER_LAST_NAME", "USER_EMAIL", "DELIVERY_DOC_NUM", "DELIVERY_DOC_DATE", "DELIVERY_DATE_REQUEST", "STORE_ID", "ORDER_TOPIC", "RESPONSIBLE_ID", "RESPONSIBLE_LOGIN", "RESPONSIBLE_NAME", "RESPONSIBLE_LAST_NAME", "RESPONSIBLE_SECOND_NAME", "RESPONSIBLE_EMAIL", "RESPONSIBLE_WORK_POSITION", "RESPONSIBLE_PERSONAL_PHOTO", "RESPONSIBLE_GROUP_ID", "DATE_PAY_BEFORE", "DATE_BILL", "ACCOUNT_NUMBER", "TRACKING_NUMBER", "XML_ID"); } elseif (in_array("*", $arSelectFields)) { $arSelectFields = array("ID", "LID", "PERSON_TYPE_ID", "PAYED", "DATE_PAYED", "EMP_PAYED_ID", "CANCELED", "DATE_CANCELED", "EMP_CANCELED_ID", "REASON_CANCELED", "MARKED", "DATE_MARKED", "EMP_MARKED_ID", "REASON_MARKED", "STATUS_ID", "DATE_STATUS", "PAY_VOUCHER_NUM", "PAY_VOUCHER_DATE", "EMP_STATUS_ID", "PRICE_DELIVERY", "ALLOW_DELIVERY", "DATE_ALLOW_DELIVERY", "EMP_ALLOW_DELIVERY_ID", "DEDUCTED", "DATE_DEDUCTED", "EMP_DEDUCTED_ID", "REASON_UNDO_DEDUCTED", "RESERVED", "PRICE", "CURRENCY", "DISCOUNT_VALUE", "SUM_PAID", "USER_ID", "PAY_SYSTEM_ID", "DELIVERY_ID", "DATE_INSERT", "DATE_INSERT_FORMAT", "DATE_UPDATE", "USER_DESCRIPTION", "ADDITIONAL_INFO", "PS_STATUS", "PS_STATUS_CODE", "PS_STATUS_DESCRIPTION", "PS_STATUS_MESSAGE", "PS_SUM", "PS_CURRENCY", "PS_RESPONSE_DATE", "COMMENTS", "TAX_VALUE", "STAT_GID", "RECURRING_ID", "RECOUNT_FLAG", "USER_LOGIN", "USER_NAME", "USER_LAST_NAME", "USER_EMAIL", "DELIVERY_DOC_NUM", "DELIVERY_DOC_DATE", "DELIVERY_DATE_REQUEST", "STORE_ID", "ORDER_TOPIC", "RESPONSIBLE_ID", "RESPONSIBLE_LOGIN", "RESPONSIBLE_NAME", "RESPONSIBLE_LAST_NAME", "RESPONSIBLE_SECOND_NAME", "RESPONSIBLE_EMAIL", "RESPONSIBLE_WORK_POSITION", "RESPONSIBLE_PERSONAL_PHOTO", "RESPONSIBLE_GROUP_ID", "DATE_PAY_BEFORE", "DATE_BILL", "ACCOUNT_NUMBER", "TRACKING_NUMBER", "XML_ID"); } $maxLock = IntVal(COption::GetOptionString("sale", "MAX_LOCK_TIME", "60")); if (is_object($GLOBALS["USER"])) { $userID = IntVal($GLOBALS["USER"]->GetID()); } else { $userID = 0; } // FIELDS --> $arFields = array("ID" => array("FIELD" => "O.ID", "TYPE" => "int"), "LID" => array("FIELD" => "O.LID", "TYPE" => "string"), "PERSON_TYPE_ID" => array("FIELD" => "O.PERSON_TYPE_ID", "TYPE" => "int"), "PAYED" => array("FIELD" => "O.PAYED", "TYPE" => "char"), "DATE_PAYED" => array("FIELD" => "O.DATE_PAYED", "TYPE" => "datetime"), "EMP_PAYED_ID" => array("FIELD" => "O.EMP_PAYED_ID", "TYPE" => "int"), "CANCELED" => array("FIELD" => "O.CANCELED", "TYPE" => "char"), "DATE_CANCELED" => array("FIELD" => "O.DATE_CANCELED", "TYPE" => "datetime"), "EMP_CANCELED_ID" => array("FIELD" => "O.EMP_CANCELED_ID", "TYPE" => "int"), "REASON_CANCELED" => array("FIELD" => "O.REASON_CANCELED", "TYPE" => "string"), "STATUS_ID" => array("FIELD" => "O.STATUS_ID", "TYPE" => "char"), "DATE_STATUS" => array("FIELD" => "O.DATE_STATUS", "TYPE" => "datetime"), "PAY_VOUCHER_NUM" => array("FIELD" => "O.PAY_VOUCHER_NUM", "TYPE" => "string"), "PAY_VOUCHER_DATE" => array("FIELD" => "O.PAY_VOUCHER_DATE", "TYPE" => "date"), "EMP_STATUS_ID" => array("FIELD" => "O.EMP_STATUS_ID", "TYPE" => "int"), "PRICE_DELIVERY" => array("FIELD" => "O.PRICE_DELIVERY", "TYPE" => "double"), "ALLOW_DELIVERY" => array("FIELD" => "O.ALLOW_DELIVERY", "TYPE" => "char"), "DATE_ALLOW_DELIVERY" => array("FIELD" => "O.DATE_ALLOW_DELIVERY", "TYPE" => "datetime"), "EMP_ALLOW_DELIVERY_ID" => array("FIELD" => "O.EMP_ALLOW_DELIVERY_ID", "TYPE" => "int"), "DEDUCTED" => array("FIELD" => "O.DEDUCTED", "TYPE" => "char"), "DATE_DEDUCTED" => array("FIELD" => "O.DATE_DEDUCTED", "TYPE" => "datetime"), "EMP_DEDUCTED_ID" => array("FIELD" => "O.EMP_DEDUCTED_ID", "TYPE" => "int"), "REASON_UNDO_DEDUCTED" => array("FIELD" => "O.REASON_UNDO_DEDUCTED", "TYPE" => "string"), "RESERVED" => array("FIELD" => "O.RESERVED", "TYPE" => "char"), "MARKED" => array("FIELD" => "O.MARKED", "TYPE" => "char"), "DATE_MARKED" => array("FIELD" => "O.DATE_MARKED", "TYPE" => "datetime"), "EMP_MARKED_ID" => array("FIELD" => "O.EMP_MARKED_ID", "TYPE" => "int"), "REASON_MARKED" => array("FIELD" => "O.REASON_MARKED", "TYPE" => "string"), "PRICE" => array("FIELD" => "O.PRICE", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "O.CURRENCY", "TYPE" => "string"), "DISCOUNT_VALUE" => array("FIELD" => "O.DISCOUNT_VALUE", "TYPE" => "double"), "SUM_PAID" => array("FIELD" => "O.SUM_PAID", "TYPE" => "double"), "USER_ID" => array("FIELD" => "O.USER_ID", "TYPE" => "int"), "PAY_SYSTEM_ID" => array("FIELD" => "O.PAY_SYSTEM_ID", "TYPE" => "int"), "DELIVERY_ID" => array("FIELD" => "O.DELIVERY_ID", "TYPE" => "string"), "DATE_INSERT" => array("FIELD" => "O.DATE_INSERT", "TYPE" => "datetime"), "DATE_INSERT_FORMAT" => array("FIELD" => "O.DATE_INSERT", "TYPE" => "datetime"), "DATE_UPDATE" => array("FIELD" => "O.DATE_UPDATE", "TYPE" => "datetime"), "USER_DESCRIPTION" => array("FIELD" => "O.USER_DESCRIPTION", "TYPE" => "string"), "ADDITIONAL_INFO" => array("FIELD" => "O.ADDITIONAL_INFO", "TYPE" => "string"), "PS_STATUS" => array("FIELD" => "O.PS_STATUS", "TYPE" => "char"), "PS_STATUS_CODE" => array("FIELD" => "O.PS_STATUS_CODE", "TYPE" => "string"), "PS_STATUS_DESCRIPTION" => array("FIELD" => "O.PS_STATUS_DESCRIPTION", "TYPE" => "string"), "PS_STATUS_MESSAGE" => array("FIELD" => "O.PS_STATUS_MESSAGE", "TYPE" => "string"), "PS_SUM" => array("FIELD" => "O.PS_SUM", "TYPE" => "double"), "PS_CURRENCY" => array("FIELD" => "O.PS_CURRENCY", "TYPE" => "string"), "PS_RESPONSE_DATE" => array("FIELD" => "O.PS_RESPONSE_DATE", "TYPE" => "datetime"), "COMMENTS" => array("FIELD" => "O.COMMENTS", "TYPE" => "string"), "TAX_VALUE" => array("FIELD" => "O.TAX_VALUE", "TYPE" => "double"), "STAT_GID" => array("FIELD" => "O.STAT_GID", "TYPE" => "string"), "RECURRING_ID" => array("FIELD" => "O.RECURRING_ID", "TYPE" => "int"), "RECOUNT_FLAG" => array("FIELD" => "O.RECOUNT_FLAG", "TYPE" => "char"), "AFFILIATE_ID" => array("FIELD" => "O.AFFILIATE_ID", "TYPE" => "int"), "LOCKED_BY" => array("FIELD" => "O.LOCKED_BY", "TYPE" => "int"), "LOCK_STATUS" => array("FIELD" => "if(DATE_LOCK is null, 'green', if(DATE_ADD(DATE_LOCK, interval " . $maxLock . " MINUTE)<now(), 'green', if(LOCKED_BY=" . $userID . ", 'yellow', 'red')))", "TYPE" => "string"), "LOCK_USER_NAME" => array("FIELD" => "concat('(',UL.LOGIN,') ',UL.NAME,' ',UL.LAST_NAME)", "FROM" => "LEFT JOIN b_user UL ON (O.LOCKED_BY = UL.ID)", "TYPE" => "string"), "DELIVERY_DOC_NUM" => array("FIELD" => "O.DELIVERY_DOC_NUM", "TYPE" => "string"), "DELIVERY_DOC_DATE" => array("FIELD" => "O.DELIVERY_DOC_DATE", "TYPE" => "date"), "UPDATED_1C" => array("FIELD" => "O.UPDATED_1C", "TYPE" => "string"), "STORE_ID" => array("FIELD" => "O.STORE_ID", "TYPE" => "int"), "ORDER_TOPIC" => array("FIELD" => "O.ORDER_TOPIC", "TYPE" => "string"), "RESPONSIBLE_ID" => array("FIELD" => "O.RESPONSIBLE_ID", "TYPE" => "int"), "DATE_PAY_BEFORE" => array("FIELD" => "O.DATE_PAY_BEFORE", "TYPE" => "date"), "DATE_BILL" => array("FIELD" => "O.DATE_BILL", "TYPE" => "date"), "ACCOUNT_NUMBER" => array("FIELD" => "O.ACCOUNT_NUMBER", "TYPE" => "string"), "TRACKING_NUMBER" => array("FIELD" => "O.TRACKING_NUMBER", "TYPE" => "string"), "XML_ID" => array("FIELD" => "O.XML_ID", "TYPE" => "string"), "ID_1C" => array("FIELD" => "O.ID_1C", "TYPE" => "string"), "VERSION_1C" => array("FIELD" => "O.VERSION_1C", "TYPE" => "string"), "VERSION" => array("FIELD" => "O.VERSION", "TYPE" => "int"), "EXTERNAL_ORDER" => array("FIELD" => "O.EXTERNAL_ORDER", "TYPE" => "string"), "NAME_SEARCH" => array("FIELD" => "U.NAME, U.LAST_NAME, U.SECOND_NAME, U.EMAIL, U.LOGIN, U.ID", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"), "USER_LOGIN" => array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"), "USER_NAME" => array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"), "USER_LAST_NAME" => array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"), "USER_EMAIL" => array("FIELD" => "U.EMAIL", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"), "USER_GROUP_ID" => array("FIELD" => "UG.GROUP_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_user_group UG ON (UG.USER_ID = O.USER_ID)"), "RESPONSIBLE_LOGIN" => array("FIELD" => "UR.LOGIN", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "RESPONSIBLE_NAME" => array("FIELD" => "UR.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "RESPONSIBLE_LAST_NAME" => array("FIELD" => "UR.LAST_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "RESPONSIBLE_SECOND_NAME" => array("FIELD" => "UR.SECOND_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "RESPONSIBLE_EMAIL" => array("FIELD" => "UR.EMAIL", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "RESPONSIBLE_WORK_POSITION" => array("FIELD" => "UR.WORK_POSITION", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "RESPONSIBLE_PERSONAL_PHOTO" => array("FIELD" => "UR.PERSONAL_PHOTO", "TYPE" => "string", "FROM" => "LEFT JOIN b_user UR ON (O.RESPONSIBLE_ID = UR.ID)"), "BUYER" => array("FIELD" => "U.LOGIN,U.NAME,U.LAST_NAME,U.EMAIL,U.ID", "WHERE_ONLY" => "Y", "TYPE" => "string", "FROM" => "INNER JOIN b_user U ON (O.USER_ID = U.ID)"), "BASKET_ID" => array("FIELD" => "B.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_PRODUCT_ID" => array("FIELD" => "B.PRODUCT_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_PRODUCT_XML_ID" => array("FIELD" => "B.PRODUCT_XML_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_MODULE" => array("FIELD" => "B.MODULE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_NAME" => array("FIELD" => "B.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_QUANTITY" => array("FIELD" => "B.QUANTITY", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_PRICE" => array("FIELD" => "B.PRICE", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_CURRENCY" => array("FIELD" => "B.CURRENCY", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_DISCOUNT_PRICE" => array("FIELD" => "B.DISCOUNT_PRICE", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_DISCOUNT_NAME" => array("FIELD" => "B.DISCOUNT_NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_DISCOUNT_VALUE" => array("FIELD" => "B.DISCOUNT_VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_DISCOUNT_COUPON" => array("FIELD" => "B.DISCOUNT_COUPON", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_VAT_RATE" => array("FIELD" => "B.VAT_RATE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_RECOMMENDATION" => array("FIELD" => "B.RECOMMENDATION", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "BASKET_PRICE_TOTAL" => array("FIELD" => "(B.PRICE * B.QUANTITY)", "TYPE" => "double", "FROM" => "INNER JOIN b_sale_basket B ON (O.ID = B.ORDER_ID)"), "STATUS_PERMS_GROUP_ID" => array("FIELD" => "SS2G.GROUP_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_VIEW" => array("FIELD" => "SS2G.PERM_VIEW", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_CANCEL" => array("FIELD" => "SS2G.PERM_CANCEL", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_MARK" => array("FIELD" => "SS2G.PERM_MARK", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_DELIVERY" => array("FIELD" => "SS2G.PERM_DELIVERY", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_DEDUCTION" => array("FIELD" => "SS2G.PERM_DEDUCTION", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_PAYMENT" => array("FIELD" => "SS2G.PERM_PAYMENT", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_STATUS" => array("FIELD" => "SS2G.PERM_STATUS", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_STATUS_FROM" => array("FIELD" => "SS2G.PERM_STATUS_FROM", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_UPDATE" => array("FIELD" => "SS2G.PERM_UPDATE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "STATUS_PERMS_PERM_DELETE" => array("FIELD" => "SS2G.PERM_DELETE", "TYPE" => "char", "FROM" => "INNER JOIN b_sale_status2group SS2G ON (O.STATUS_ID = SS2G.STATUS_ID)"), "PROPERTY_ID" => array("FIELD" => "SP.ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"), "PROPERTY_ORDER_PROPS_ID" => array("FIELD" => "SP.ORDER_PROPS_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"), "PROPERTY_NAME" => array("FIELD" => "SP.NAME", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"), "PROPERTY_VALUE" => array("FIELD" => "SP.VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"), "PROPERTY_CODE" => array("FIELD" => "SP.CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"), "PROPERTY_VAL_BY_CODE" => array("FIELD" => "SP.VALUE", "TYPE" => "string", "FROM" => "INNER JOIN b_sale_order_props_value SP ON (O.ID = SP.ORDER_ID)"), "COMPLETE_ORDERS" => array("WHERE" => array(self, "ProcessCompleteOrdersParam")), "DELIVERY_DATE_REQUEST" => array("FIELD" => "OD.DATE_REQUEST", "TYPE" => "datetime", "FROM" => "LEFT JOIN b_sale_order_delivery OD ON (O.ID = OD.ORDER_ID)")); // <-- FIELDS $arPropIDsTmp = array(); foreach ($arOrder as $key => $value) { CSaleOrder::PrepareGetListArray($key, $arFields, $arPropIDsTmp); } foreach ($arFilter as $key => $value) { $arKeyTmp = CSaleOrder::GetFilterOperation($key); $key = $arKeyTmp["FIELD"]; CSaleOrder::PrepareGetListArray($key, $arFields, $arPropIDsTmp); } if (is_array($arGroupBy)) { foreach ($arGroupBy as $key => $value) { CSaleOrder::PrepareGetListArray($key, $arFields, $arPropIDsTmp); } } foreach ($arSelectFields as $key => $value) { CSaleOrder::PrepareGetListArray($key, $arFields, $arPropIDsTmp); } $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql, $callback, $arOptions); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]); $r = $obUserFieldsSql->GetFilter(); $strSqlUFFilter = ''; if (strlen($r) > 0) { $strSqlUFFilter = " (" . $r . ") "; } if (is_array($arGroupBy) && count($arGroupBy) == 0) { $strSql = "SELECT " . $arSqls["SELECT"] . " " . $obUserFieldsSql->GetSelect() . " " . "FROM b_sale_order O " . "\t" . $arSqls["FROM"] . " " . $obUserFieldsSql->GetJoin("O.ID") . " "; if (strlen($arSqls["WHERE"]) > 0) { $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 (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("ORDER")); if ($arRes = $dbRes->Fetch()) { return $arRes["CNT"]; } else { return False; } } $strSql = "SELECT " . $arSqls["SELECT"] . " " . $obUserFieldsSql->GetSelect() . " " . "FROM b_sale_order O " . "\t" . $arSqls["FROM"] . " " . $obUserFieldsSql->GetJoin("O.ID") . " "; if (strlen($arSqls["WHERE"]) > 0) { $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 (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_sale_order O " . "\t" . $arSqls["FROM"] . " " . $obUserFieldsSql->GetJoin("O.ID") . " "; if (strlen($arSqls["WHERE"]) > 0) { $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 (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("ORDER")); $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("ORDER")); } return $dbRes; }
/** * <p>Функция возвращает результат выборки записей из служб доставки в соответствии со своими параметрами. </p> * * * * * @param array $arOrder = array() Массив, в соответствии с которым сортируются результирующие * записи. Массив имеет вид: <pre class="syntax">array(<br>"название_поля1" => * "направление_сортировки1",<br>"название_поля2" => * "направление_сортировки2",<br>. . .<br>)</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(<br>"[модификатор1][оператор1]название_поля1" => * "значение1",<br>"[модификатор2][оператор2]название_поля2" => * "значение2",<br>. . .<br>)</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("+<=WEIGHT_FROM" => 1000)</pre> Этот фильтр означает * "выбрать все записи, в которых значение в поле WEIGHT_FROM (вес от) * меньше либо равно 1000 или значение не установлено (null или ноль)". * <br><br> Значение по умолчанию - пустой массив array() - означает, что * результат отфильтрован не будет. * * * * @param array $arGroupBy = false Массив полей, по которым группируются записи служб доставки. * Массив имеет вид: <pre class="syntax">array("название_поля1",<br> * "группирующая_функция2" => "название_поля2", ...)</pre> В качестве * "название_поля<i>N</i>" может стоять любое поле служб доставки. В * качестве группирующей функции могут стоять: <ul> <li> <b> COUNT</b> - * подсчет количества;</li> <li> <b>AVG</b> - вычисление среднего значения;</li> * <li> <b>MIN</b> - вычисление минимального значения;</li> <li> <b> MAX</b> - * вычисление максимального значения;</li> <li> <b>SUM</b> - вычисление * суммы.</li> </ul> Если массив пустой, то функция вернет число записей, * удовлетворяющих фильтру. <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 * width="100%" class="tnormal"><tbody> <tr> <th width="15%">Ключ</th> <th>Описание</th> </tr> <tr> <td>ID</td> * <td>Код службы доставки.</td> </tr> <tr> <td>NAME</td> <td>Название доставки.</td> * </tr> <tr> <td>LID</td> <td>Код сайта, к которому привязана эта доставка.</td> * </tr> <tr> <td>PERIOD_FROM</td> <td>Минимальный срок доставки.</td> </tr> <tr> <td>PERIOD_TO</td> * <td>Максимальный срок доставки.</td> </tr> <tr> <td>PERIOD_TYPE</td> <td>Единица * измерения срока: D - дни, H - часы, M - месяцы.</td> </tr> <tr> <td>WEIGHT_FROM</td> * <td>Минимальный вес заказа, для которого возможна эта доставка * (единица измерения едина на сайте).</td> </tr> <tr> <td>WEIGHT_TO</td> * <td>Максимальный вес заказа, для которого возможна эта доставка * (единица измерения едина на сайте).</td> </tr> <tr> <td>ORDER_PRICE_FROM</td> * <td>Минимальная стоимость заказа, для которой возможна эта * доставка.</td> </tr> <tr> <td>ORDER_PRICE_TO</td> <td>Максимальная стоимость заказа, * для которой возможна эта доставка.</td> </tr> <tr> <td>ORDER_CURRENCY</td> <td>Валюта * ограничений по стоимости.</td> </tr> <tr> <td>ACTIVE</td> <td>Флаг (Y/N) активности * доставки.</td> </tr> <tr> <td>PRICE</td> <td>Стоимость доставки.</td> </tr> <tr> * <td>CURRENCY</td> <td>Валюта стоимости доставки.</td> </tr> <tr> <td>SORT</td> <td>Индекс * сортировки.</td> </tr> <tr> <td>DESCRIPTION</td> <td>Описание доставки.</td> </tr> * </tbody></table><p>Если в качестве параметра <b> arGroupBy</b> передается пустой * массив, то функция вернет число записей, удовлетворяющих * фильтру.</p><a name="examples"></a> * * * <h4>Example</h4> * <pre> * <?<br>// Выберем отсортированные по индексу сортировки, а потом (при равных индексах) по имени<br>// активные службы доставки, доступные для текущего сайта, заказа с весом $ORDER_WEIGHT и <br>// стоимостью $ORDER_PRICE (в базовой валюте текущего сайта), доставки в <br>// местоположение $DELIVERY_LOCATION<br>$db_dtype = CSaleDelivery::GetList(<br> array(<br> "SORT" => "ASC",<br> "NAME" => "ASC"<br> ),<br> array(<br> "LID" => SITE_ID,<br> "+<=WEIGHT_FROM" => $ORDER_WEIGHT,<br> "+>=WEIGHT_TO" => $ORDER_WEIGHT,<br> "+<=ORDER_PRICE_FROM" => $ORDER_PRICE,<br> "+>=ORDER_PRICE_TO" => $ORDER_PRICE,<br> "ACTIVE" => "Y",<br> "LOCATION" => $DELIVERY_LOCATION<br> ),<br> false,<br> false,<br> array()<br>);<br>if ($ar_dtype = $db_dtype->Fetch())<br>{<br> echo "Вам доступны следующие способы доставки:<br>";<br> do<br> {<br> echo $ar_dtype["NAME"]." - стоимость ".CurrencyFormat($ar_dtype["PRICE"], $ar_dtype["CURRENCY"])."<br>";<br> }<br> while ($ar_dtype = $db_dtype->Fetch());<br>}<br>else<br>{<br> echo "Доступных способов доставки не найдено<br>";<br>}<br>?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaledelivery/csaledelivery__getlist.28cc1782.php * @author Bitrix */ public static function GetList($arOrder = array("SORT" => "ASC", "NAME" => "ASC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (isset($arFilter["WEIGHT"]) && DoubleVal($arFilter["WEIGHT"]) > 0) { // changed by Sigurd, 2007-08-16 if (!isset($arFilter["WEIGHT_FROM"]) || DoubleVal($arFilter["WEIGHT"]) > DoubleVal($arFilter["WEIGHT_FROM"])) $arFilter["+<=WEIGHT_FROM"] = $arFilter["WEIGHT"]; if (!isset($arFilter["WEIGHT_TO"]) || DoubleVal($arFilter["WEIGHT"]) < DoubleVal($arFilter["WEIGHT_TO"])) $arFilter["+>=WEIGHT_TO"] = $arFilter["WEIGHT"]; } if (isset($arFilter["ORDER_PRICE"]) && IntVal($arFilter["ORDER_PRICE"]) > 0) { if (!isset($arFilter["ORDER_PRICE_FROM"]) || IntVal($arFilter["ORDER_PRICE"]) > IntVal($arFilter["ORDER_PRICE_FROM"])) $arFilter["+<=ORDER_PRICE_FROM"] = $arFilter["ORDER_PRICE"]; if (!isset($arFilter["ORDER_PRICE_TO"]) || IntVal($arFilter["ORDER_PRICE"]) < IntVal($arFilter["ORDER_PRICE_TO"])) $arFilter["+>=ORDER_PRICE_TO"] = $arFilter["ORDER_PRICE"]; } if (count($arSelectFields) <= 0) $arSelectFields = array("ID", "NAME", "LID", "PERIOD_FROM", "PERIOD_TO", "PERIOD_TYPE", "WEIGHT_FROM", "WEIGHT_TO", "ORDER_PRICE_FROM", "ORDER_PRICE_TO", "ORDER_CURRENCY", "ACTIVE", "PRICE", "CURRENCY", "SORT", "DESCRIPTION", "LOGOTIP", "STORE"); // FIELDS --> $arFields = array( "ID" => array("FIELD" => "D.ID", "TYPE" => "int"), "NAME" => array("FIELD" => "D.NAME", "TYPE" => "string"), "LID" => array("FIELD" => "D.LID", "TYPE" => "string"), "PERIOD_FROM" => array("FIELD" => "D.PERIOD_FROM", "TYPE" => "int"), "PERIOD_TO" => array("FIELD" => "D.PERIOD_TO", "TYPE" => "int"), "PERIOD_TYPE" => array("FIELD" => "D.PERIOD_TYPE", "TYPE" => "char"), "WEIGHT_FROM" => array("FIELD" => "D.WEIGHT_FROM", "TYPE" => "double"), "WEIGHT_TO" => array("FIELD" => "D.WEIGHT_TO", "TYPE" => "double"), "ORDER_PRICE_FROM" => array("FIELD" => "D.ORDER_PRICE_FROM", "TYPE" => "double", "WHERE" => array("CSaleDelivery", "PrepareCurrency4Where")), "ORDER_PRICE_TO" => array("FIELD" => "D.ORDER_PRICE_TO", "TYPE" => "double", "WHERE" => array("CSaleDelivery", "PrepareCurrency4Where")), "ORDER_CURRENCY" => array("FIELD" => "D.ORDER_CURRENCY", "TYPE" => "string"), "ACTIVE" => array("FIELD" => "D.ACTIVE", "TYPE" => "char"), "PRICE" => array("FIELD" => "D.PRICE", "TYPE" => "double"), "CURRENCY" => array("FIELD" => "D.CURRENCY", "TYPE" => "string"), "SORT" => array("FIELD" => "D.SORT", "TYPE" => "int"), "DESCRIPTION" => array("FIELD" => "D.DESCRIPTION", "TYPE" => "string"), "LOCATION" => array("FIELD" => "D.DESCRIPTION", "WHERE_ONLY" => "Y", "TYPE" => "int", "FROM" => "INNER JOIN b_sale_delivery2location D2L ON (D.ID = D2L.DELIVERY_ID) LEFT JOIN b_sale_location2location_group L2LG ON (D2L.LOCATION_TYPE = 'G' AND D2L.LOCATION_ID = L2LG.LOCATION_GROUP_ID)", "WHERE" => array("CSaleDelivery", "PrepareLocation4Where")), "LOGOTIP" => array("FIELD" => "D.LOGOTIP", "TYPE" => "int"), "STORE" => array("FIELD" => "D.STORE", "TYPE" => "string"), ); // <-- FIELDS $arSqls = CSaleOrder::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields); $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "DISTINCT", $arSqls["SELECT"]); if (is_array($arGroupBy) && count($arGroupBy)==0) { $strSql = "SELECT ".$arSqls["SELECT"]." ". "FROM b_sale_delivery D ". " ".$arSqls["FROM"]." "; if (strlen($arSqls["WHERE"]) > 0) $strSql .= "WHERE ".$arSqls["WHERE"]." "; if (strlen($arSqls["GROUPBY"]) > 0) $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." "; //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_delivery D ". " ".$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_sale_delivery D ". " ".$arSqls["FROM"]." "; if (strlen($arSqls["WHERE"]) > 0) $strSql_tmp .= "WHERE ".$arSqls["WHERE"]." "; if (strlen($arSqls["GROUPBY"]) > 0) $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." "; //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"])>0) $strSql .= "LIMIT ".IntVal($arNavStartParams["nTopCount"]); //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } return $dbRes; }
function GetList($arOrder = array("ID" => "DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; if (array_key_exists("DATE_FROM", $arFilter)) { $val = $arFilter["DATE_FROM"]; unset($arFilter["DATE_FROM"]); $arFilter[">=DATE_CREATE"] = $val; } if (array_key_exists("DATE_TO", $arFilter)) { $val = $arFilter["DATE_TO"]; unset($arFilter["DATE_TO"]); $arFilter["<=DATE_CREATE"] = $val; } if (count($arSelectFields) <= 0) { $arSelectFields = array("ID", "BASKET_ID", "BARCODE", "STORE_ID", "QUANTITY", "DATE_CREATE", "DATE_MODIFY", "CREATED_BY", "MODIFIED_BY"); } elseif (in_array("*", $arSelectFields)) { $arSelectFields = array("ID", "BASKET_ID", "BARCODE", "STORE_ID", "QUANTITY", "DATE_CREATE", "DATE_MODIFY", "CREATED_BY", "MODIFIED_BY"); } // FIELDS --> $arFields = array("ID" => array("FIELD" => "SB.ID", "TYPE" => "int"), "BASKET_ID" => array("FIELD" => "SB.BASKET_ID", "TYPE" => "int"), "BARCODE" => array("FIELD" => "SB.BARCODE", "TYPE" => "string"), "STORE_ID" => array("FIELD" => "SB.STORE_ID", "TYPE" => "int"), "QUANTITY" => array("FIELD" => "SB.QUANTITY", "TYPE" => "double"), "DATE_CREATE" => array("FIELD" => "SB.DATE_CREATE", "TYPE" => "datetime"), "CREATED_BY" => array("FIELD" => "SB.CREATED_BY", "TYPE" => "int"), "DATE_MODIFY" => array("FIELD" => "SB.DATE_MODIFY", "TYPE" => "datetime"), "MODIFIED_BY" => array("FIELD" => "SB.MODIFIED_BY", "TYPE" => "int")); // <-- FIELDS $arSqls = CSaleOrder::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_sale_store_barcode SB " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!1!=".htmlspecialcharsbx($strSql)."<br>"; $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_sale_store_barcode SB " . "\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_sale_store_barcode SB " . "\t" . $arSqls["FROM"] . " "; if (strlen($arSqls["WHERE"]) > 0) { $strSql_tmp .= "WHERE " . $arSqls["WHERE"] . " "; } if (strlen($arSqls["GROUPBY"]) > 0) { $strSql_tmp .= "GROUP BY " . $arSqls["GROUPBY"] . " "; } //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>"; $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 { // FOR MYSQL!!! ANOTHER CODE FOR ORACLE $cnt = $dbRes->SelectedRowsCount(); } $dbRes = new CDBResult(); //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes->NavQuery($strSql, $cnt, $arNavStartParams); } else { if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0) { $strSql .= "LIMIT " . IntVal($arNavStartParams["nTopCount"]); } //echo "!3!=".htmlspecialcharsbx($strSql)."<br>"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } return $dbRes; }
function GetDiscountGroupList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array()) { global $DB; $arFields = array("ID" => array("FIELD" => "DG.ID", "TYPE" => "int"), "DISCOUNT_ID" => array("FIELD" => "DG.DISCOUNT_ID", "TYPE" => "int"), "GROUP_ID" => array("FIELD" => "DG.GROUP_ID", "TYPE" => "int")); $arSqls = CSaleOrder::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_sale_discount_group DG " . "\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_sale_discount_group DG " . "\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_sale_discount_group DG " . "\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; }