Класс содержит API функции для работы с товарами
Открытые члены | |
| __construct () | |
| addCostQuery (array $cost_types) | |
| getTableList ($page=null, $page_size=null, $order=null) | |
| addProductsProperty ($products) | |
| addProductsPhotos ($products) | |
| genereteBarcode () | |
| setFilter ($key, $value=null, $type= '=', $prefix= 'AND', array $options=[]) | |
| getMultiDirCount () | |
| getNumField () | |
| setSortOrder ($field, $direction, $in_stock_first=null) | |
| getBaseFilters () | |
| applyBaseFilters ($bfilters=null) | |
| applyAlreadyBuyFilter () | |
| addProductsDirs ($products) | |
| addProductsOffers ($products) | |
| setWarehousesForDynamicNum (array $warehouses) | |
| addProductsDynamicNum ($products, $auto_init_affiliate=true) | |
| addProductsMultiOffers ($products) | |
| addProductsFavorite ($products) | |
| addProductsMultiOffersInfo ($products) | |
| getProductsDirs ($products_id, $add_root=false, $is_products=true) | |
| multiDelete ($ids, $dir=0) | |
| multiUpdateProductsAndOffersPrices ($ids, array $excost) | |
| deleteDuplicateProperties () | |
| multiUpdate (array $data, $ids=[]) | |
| getBySearchResult ($list_of_results) | |
| filterRequest () | |
| addFilterControl (\RS\Html\Filter\Control $filter_control) | |
| getDirList () | |
| getSameByCostProducts ($product, $delta, $page_size, $only_in_stock=false) | |
| getAllowableBrandsValues ($cache_key, $cache=true) | |
| getAllowablePropertyValues ($dir_id, $cache_key, $cache=true) | |
| addTranslitAliases ($count_def=0) | |
| getHeterogeneity ($min, $max) | |
| moveProduct ($dir_id, $from, $to, $flag) | |
| moveProductInDir ($dir_id, $product_id, $flag) | |
| getMinMaxProductsCost () | |
| getListCount () | |
| getSelectedFiltersAsString ($base_filters, $brands, $prop_filters) | |
| applyFiltersToMeta ($all_filters_data) | |
| getLike ($term, $like_fields) | |
| generateUniqBarcode () | |
| isExistBarcode ($barcode) | |
| setAffiliateRestrictions ($set_filter_by_warehouse=false) | |
| setWarehouseFilter ($warehouses, $only_join_dynamic_num=false) | |
| cleanUnusedRelatedProducts () | |
| getHavingCountSelect () | |
| setHavingCountSelect ($select) | |
Открытые члены унаследованные от EntityList | |
| __construct (AbstractObject $orm_element, array $options=[]) | |
| setDefaultOrder ($order) | |
| getNameField () | |
| setNameField ($field) | |
| setAliasField ($field) | |
| setSortField ($field) | |
| setIdField ($field) | |
| getIdField () | |
| getSiteIdField () | |
| setLoadOnDelete ($bool) | |
| setSiteContext ($site_id=null) | |
| getSiteContext () | |
| setMultisite ($bool) | |
| isMultisite () | |
| resetQueryObject () | |
| getCleanQueryObject () | |
| queryObj () | |
| setQueryObj (\RS\Orm\Request $q) | |
| defAlias () | |
| setFilter ($key, $value=null, $type= '=', $prefix= 'AND', array $options=[]) | |
| clearFilter () | |
| getList ($page=null, $page_size=null, $order=null) | |
| getListAsArray ($page=0, $page_size=0, $order= '') | |
| getListAsResource ($page=0, $page_size=0, $order= '') | |
| getPagedList ($page_size) | |
| loadAssocList ($key_field, $value=null) | |
| getAssocList ($key_field, $value=null) | |
| setOrder ($order=null, array $values=null) | |
| setGroup ($group=null) | |
| getListCount () | |
| getFirst () | |
| getOneItem ($id) | |
| getById ($id, $request=null) | |
| getElement () | |
| setElement ($object) | |
| getElementClass () | |
| getNewElement () | |
| save ($id=null, array $user_post=[]) | |
| addFilterControl (\RS\Html\Filter\Control $filter_control) | |
| addTableControl (\RS\Html\Table\Control $table_control) | |
| del (array $ids) | |
| multiDelete ($ids) | |
| getSelectList ($first=[]) | |
| multieditFormView ($tpl_path, $formfile, array $addparam=[]) | |
| multiUpdate (array $data, $ids=[]) | |
| moveElement ($from, $to, $flag,\RS\Orm\Request $extra_expr=null) | |
| noWriteRights ($right=DefaultModuleRights::RIGHT_UPDATE) | |
| getIdByAlias ($alias_or_id, $alias_field=null) | |
| saveRequest ($key) | |
| getIdsByRequest (\RS\Orm\Request $request) | |
| __set ($name, $value) | |
| __get ($name) | |
| __isset ($name) | |
| __unset ($name) | |
Открытые члены унаследованные от BaseModel | |
| addError ($message, $fieldname=null, $form=null) | |
| hasError () | |
| getErrors () | |
| cleanErrors () | |
| getDisplayErrors () | |
| getErrorsStr () | |
| getFormErrors ($form, $separator= ', ') | |
| getNonFormErrors ($separator= ', ') | |
| exportErrors () | |
| importErrors ($data) | |
Открытые статические члены | |
| static | getOfferByMultiofferValues ($product_id, $multioffers_values) |
| static | getWeightUnits () |
| static | getWeightUnitsTitles () |
| static | decodeDirFilterParamsFromUrl () |
| static | encodeDirFilterParamsToUrl (Dir $category=null, $bfilters=[], $pf=[], $query="", $additional_params=[]) |
| static | getCategoryPaginatorRouteParamsForProductsList (Dir $category, $bfilters=[], $pf=[], $query="", $additional_params=[]) |
| static | cleanAllOffersJsonCache () |
Открытые статические члены унаследованные от EntityList | |
| static | getInstance ($key= 'default') |
| static | staticSelectList ($first=[]) |
| static | getSavedRequest ($key, $default=null) |
Поля данных | |
| const | WEIGHT_UNIT_G = 'g' |
| const | WEIGHT_UNIT_KG = 'kg' |
| const | WEIGHT_UNIT_T = 't' |
| const | WEIGHT_UNIT_LB = 'lb' |
| const | REQUESTED_PRODUCTS = 1000 |
| const | FILTER_STOCK_EMPTY = 0 |
| const | FILTER_STOCK_AVAILABLE = 1 |
| const | FILTER_STOCK_BY_WAREHOUSES = 2 |
| const | SHORT_FILTER_STOCK_VALUES |
Поля данных унаследованные от EntityList | |
| const | WHERE_CONDITION_VAR = 'where_conditions' |
Поля данных унаследованные от BaseModel | |
| $form_fieldname = [] | |
| $errors_by_form = [] | |
| $errors_non_form = [] | |
| $errors = [] | |
Защищенные члены | |
| isNumFilter ($filter, $base_filters) | |
| brandFilter ($filter) | |
| costFilter ($filter) | |
| appendOfferDynamicNum ($q) | |
| getBaseFiltersParts ($base_filters, $brands) | |
| getPropertyFiltersParts ($prop_filters) | |
Защищенные члены унаследованные от EntityList | |
| parseArrayFilter ($filters) | |
| filterLike ($key, $value, $type, $prefix, $options) | |
| filterIs ($key, $value, $type, $prefix, $options) | |
| filterFullText ($key, $value, $type, $prefix, $options) | |
| filterIn ($key, $value, $type, $prefix, $options) | |
| filterNotin ($key, $value, $type, $prefix, $options) | |
| filterDefault ($key, $value, $type, $prefix, $options) | |
| setPage ($page, $pageSize) | |
| moveArrayUp ($arr) | |
| moveArrayDown ($arr) | |
Защищенные данные | |
| $dynamic_num_warehouses_id | |
| $having_count_select | |
Защищенные данные унаследованные от EntityList | |
| $default_order | |
| $load_on_delete = false | |
| $id_field = 'id' | |
| $alias_field | |
| $sort_field | |
| $name_field | |
| $site_id_field = 'site_id' | |
| $is_multisite = false | |
| $site_context | |
| $def_table_alias = 'A' | |
| $obj | |
| $obj_instance | |
| $filter_active = false | |
| $multiedit_template = '%system%/coreobject/multiedit_form.tpl' | |
| $assocPlainList = [] | |
| $parsePrefixes = ['&' => 'AND' | |
| $cache_alias = [] | |
| $options = [] | |
| $q | |
Защищенные данные унаследованные от BaseModel | |
| $default_error_fieldname = 'Информация' | |
Дополнительные унаследованные члены | |
Статические защищенные данные унаследованные от EntityList | |
| static | $instance = [] |
| __construct | ( | ) |
| addCostQuery | ( | array | $cost_types | ) |
Добавляет к запросу выборки условия для присоединения цен
| Orm\Typecost[] | $cost_types - типы цен |
| addFilterControl | ( | \RS\Html\Filter\Control | $filter_control | ) |
Устанавливает фильтры, от компонента html_filter
| addProductsDirs | ( | $products | ) |
Загружает товарам свойства xdir, xspec, в которых содержится принадлежность категориям
| Orm\Product[] | $products - массив товаров |
| addProductsDynamicNum | ( | $products, | |
$auto_init_affiliate = true |
|||
| ) |
Добавляет для списка товаров поле с динамическим остатком (на некоторых складах) в случае, если соответствующая опция включена. После вызова данной функции addProductOffers также будет добавлять поле dynamic_num для комплектаций.
| Orm\Product[] | $products | |
| bool | $auto_init_affiliate | - Вызывает setAffiliateRestrictions при первом вызове |
| addProductsFavorite | ( | $products | ) |
Загружает списку товаров флаг, находится ли товар в избранном
| Orm\Product[] | $products массив товаров |
| addProductsMultiOffers | ( | $products | ) |
Загружает списку товаров уровни многомерных комплектаций
| Orm\Product[] | $products массив товаров |
| addProductsMultiOffersInfo | ( | $products | ) |
Загружает списку товаров информацию о том используются ли комплектации и многомерные комплектации без загрузки подробных сведений. Данный метод удобно использовать на странице со списком товаров
| array | $products | список товаров |
| addProductsOffers | ( | $products | ) |
Загружает списку товаров комплектации
| Orm\Product[] | $products - массив товаров |
| addProductsPhotos | ( | $products | ) |
Загружает ссылки на фотографии к группе товаров (в свойство images)
| Orm\Product[] | - список товаров |
| addProductsProperty | ( | $products | ) |
Добавляет ко всем товарам характеристики
| array | $products |
| addTranslitAliases | ( | $count_def = 0 | ) |
Добавляет символьные идентификаторы товарам, у которых они не установлены
| integer | $count_def | - счетчик по-умолчанию |
| DbException | |
| RSException |
|
protected |
Добавляет в запрос условие для выборки динамического остатка, если соответствующая опция включена Актуально только в клиентской части Актуально только если присутствует модуль Филиальная сеть
| Request | $q |
| applyAlreadyBuyFilter | ( | ) |
Устанавливает фильтр по уже купленным товарам пользователя
| applyBaseFilters | ( | $bfilters = null | ) |
Применяет "базовые" фильтры, т.е. фильтры, которые не зависят от таблиц характеристик товара.
| null | array | $bfilters | - массив базовых фильтров |
| DbException | |
| RSException |
| applyFiltersToMeta | ( | $all_filters_data | ) |
Добавляет к мета тегам Keywords, Description выбранные фильтры
| array | $all_filters_data | Массив с выбранными значениями фильтров |
|
protected |
Устанавливает фильтр по бренду
| string | array | $filter | - бренд или массив брендов |
|
static |
Очищает у всех твоаров поле offers_json. Тем самым заставляя пересчитать при следующем обращении все параметры комплектаций у товара.
| cleanUnusedRelatedProducts | ( | ) |
Удаляет несвязанные сопутствующие товары Операция необходима для очистки базы от неиспользуемых записей
|
protected |
Устанавливает фильтр по цене с учетом цен текущего пользователя
| array | $filter | - массив со сведениями о переданном фильтре по цене (ключи to, from) |
|
static |
Парсит часть ЧПУ адреса с фильтрами и возвращает массив из найденных в адресе фильтров
| DbException | |
| RSException |
| deleteDuplicateProperties | ( | ) |
Удаляет дубликаты характеристик в БД
| DbException | |
| RSException |
|
static |
Переводит переданные фильтры категории в ЧПУ адрес
| Dir | null | $category | - объект категории |
| array | $bfilters | - базовые фильтры |
| array | $pf | - фильтры по характеристикам |
| string | $query | - строковый запрос |
| array | $additional_params | - дополнительные параметры |
| RSException |
| filterRequest | ( | ) |
Устанавливает фильтры, которые следуют из параметров конфигурации модуля "Каталог"
| generateUniqBarcode | ( | ) |
Генерирует уникальный идентификаотр для товара
| DbException | |
| OrmException | |
| RSException |
| genereteBarcode | ( | ) |
Возвращает сгенерированный артикул
| getAllowableBrandsValues | ( | $cache_key, | |
$cache = true |
|||
| ) |
Получает доступные значения брендов для категорий
| string | $cache_key | - ключ для кэша |
| boolean | $cache | - флаг включения кэша |
| getAllowablePropertyValues | ( | $dir_id, | |
| $cache_key, | |||
$cache = true |
|||
| ) |
Возвращает все возможные значения свойств для текущей выборки товаров,
| integer | $dir_id | id текущей категории товаров |
| mixed | $cache_key | - id кэша |
| bool | $cache | - Если true, то будет использоваться кэширование |
| DbException | |
| EventException | |
| OrmException | |
| RSException |
| getBaseFilters | ( | ) |
Возвращает массив текущих переданных базовых фильтров из массива $_REQUEST
| DbException | |
| RSException |
|
protected |
Возвращает данные по базовым фильтрам
| array | $base_filters | структура с выбранными фильтрами |
| array | $brands | Ассоциативный массив брендов |
| getBySearchResult | ( | $list_of_results | ) |
Возвращает именно товары по результатам поиска
| array | $list_of_results | - массив результатов поиска |
|
static |
Возвращает массив параметров для формирования адреса категории с или без фильтров
| Dir | $category | - объект категории |
| array | $bfilters | - базовые фильтры |
| array | $pf | - фильтры по характеристикам |
| string | $query | - строковый запрос |
| RSException |
| getDirList | ( | ) |
Возвращает список категорий в которых состоят товары, возвращаемые функцией getList
| getHavingCountSelect | ( | ) |
Возвращает условие для SELECT для запросов на подсчет элементов, в случае если в запросе присутствует having
| getHeterogeneity | ( | $min, | |
| $max | |||
| ) |
Получает риски для цен диапозона цен
| getLike | ( | $term, | |
| $like_fields | |||
| ) |
Возвращает объекты, выбранные с помощью Like
| string | $term | - слово или фраза для поиска |
| array | $like_fields | - поля для like поиска |
| \RS\Orm\Exception |
| getListCount | ( | ) |
Возвращает общее количество элементов, согласно условию.
| getMinMaxProductsCost | ( | ) |
Возвращает информацию о минимальной и максимальной цене товаров, для текущих условий выборки
| DbException |
| getMultiDirCount | ( | ) |
Возвращает верное количество товаров, которое вернет getList если выбираются товары из нескольких директорий одновременно
| DbException |
| getNumField | ( | ) |
Возвращает имя поля БД, в котором будет актуальный общий остаток товара с учетом опций. В мегамаркете есть опция, которая включает динамические остатки
|
static |
Возвращает номер комплектации по значениям многомерной комплектации
| integer | $product_id | - id товара |
| array | $multioffers_values | - массив характеристик многомерной комплектации (title => value) |
| getProductsDirs | ( | $products_id, | |
$add_root = false, |
|||
$is_products = true |
|||
| ) |
Возвращает группы, в которых состоят товары (включая родителей групп)
| int[]|Product[] | $products_id - массив товаров | |
| bool | $add_root | - добавлять корневую категорию |
| bool | $is_products | - добавлять в запрос идентификаторы из переданных товаров |
|
protected |
Возвращает данные по установленным фильтрам по характеристикам
| array | $prop_filters | массив, полученный от Catalog->last_filtered_props |
| getSameByCostProducts | ( | $product, | |
| $delta, | |||
| $page_size, | |||
$only_in_stock = false |
|||
| ) |
Возвращает список товаров с заданным отклонением цены
| $product | ||
| $delta | ||
| $page_size | ||
| bool | $only_in_stock |
| getSelectedFiltersAsString | ( | $base_filters, | |
| $brands, | |||
| $prop_filters | |||
| ) |
Возвращает установленные фильтры в структурированном виде
| getTableList | ( | $page = null, |
|
$page_size = null, |
|||
$order = null |
|||
| ) |
Возвращает список товаров для таблицы в административной части
| integer | $page | - номер страницы |
| integer | $page_size | - количество элементов на страницу |
| string | $order | - сортировка |
|
static |
Возвращает список доступных единиц измерения веса
|
static |
Возвращает список наименований доступных единиц измерения веса
| isExistBarcode | ( | $barcode | ) |
Проверяет существует ли переданный артикул в системе
| string | $barcode | - артикул |
|
protected |
Устанавливает фильтр по наличию
| string | $filter | - строка с типом фильтра ("", "1", "0") |
| array | $base_filters | - массив базовых фильтров |
| RSException |
| moveProduct | ( | $dir_id, | |
| $from, | |||
| $to, | |||
| $flag | |||
| ) |
Перемещает элемент from на место элемента to. Если flag = 'up', то до элемента to, иначе после
| int | $dir_id | - id категории в которой происходит перемещение |
| int | $from | - id элемента, который переносится |
| int | $to | - id ближайшего элемента, возле которого должен располагаться элемент |
| string | $flag | - up или down - флаг выше или ниже элемента $to должен располагаться элемент $from |
| DbException | |
| OrmException |
| moveProductInDir | ( | $dir_id, | |
| $product_id, | |||
| $flag | |||
| ) |
Перемещает объект товара в сортировке в самый верх для заданной директории
| integer | $dir_id | - id директории |
| integer | $product_id | - id товара |
| string | $flag | - up или down - флаг выше или ниже элемента $to должен располагаться элемент $from |
| DbException | |
| OrmException |
| multiDelete | ( | $ids, | |
$dir = 0 |
|||
| ) |
Функция быстрого группового удаления товаров по их идентификаторам
| array | $ids | - массив id товаров |
| integer | $dir | - если >0, то будет удалено только из категории $dir |
| DbException | |
| EventException | |
| DbException | |
| EventException |
| multiUpdate | ( | array | $data, |
$ids = [] |
|||
| ) |
Функция быстрого группового редактирования товаров
| array | $data | - массив данных для обновления |
| array | $ids | - идентификаторы товаров на обновление |
| DbException | |
| EventException | |
| OrmException | |
| RSException |
| multiUpdateProductsAndOffersPrices | ( | $ids, | |
| array | $excost | ||
| ) |
Мульти обновление цены у товаров и комплектаций
| array | $ids | - массив id товаров |
| array | $excost | - массив сведений об именении цены или с полями изменения цен |
| DbException | |
| EventException | |
| OrmException |
| setAffiliateRestrictions | ( | $set_filter_by_warehouse = false | ) |
Если включены опции в настройках модуля Каталог: "Ограничить остатки товара только остатками на складах выбранного филиала" и "Скрывать товары с нулевым остатком", то добавляем условие для подсчета остатка товаров именно на связанных филиалах и скрываем по данном остатку
| bool | $set_filter_by_warehouse |
| setFilter | ( | $key, | |
$value = null, |
|||
$type = '=', |
|||
$prefix = 'AND', |
|||
| array | $options = [] |
||
| ) |
Устанавливает фильтр для последующей выборки элементов
| string | array | $key | - имя поля (соответствует имени поля в БД) или массив для установки группового фильтра |
Пример применения группового фильтра: array( 'title' => 'Название', // AND title = 'Название' '|title:like' => 'Текст' // OR title LIKE 'Текст' '&title:like' => 'Текст' // AND title LIKE 'Текст' 'years:>' => 18, // AND years > 18 'years:<' => 21, // AND years < 21 ' years:>' => 30, // AND years > 30 #пробелы по краям вырезаются ' years:<' => 40, // AND years < 40 #пробелы по краям вырезаются 'id:in' => '12,23,45,67,34', // AND id IN (12,23,45,67,34) '|id:notin' => '44,33,23' // OR id NOT IN (44,33,23)
array( // AND ( 'name' => 'Артем', // name = 'Артем' '|name' => 'Олег' // OR name = 'Олег' ), // )
'|' => array( // OR ( 'surname' => 'Петров' // surname = 'Петров' '|surname' => 'Иванов' // OR surname = 'Иванов' ) // ) ) Общая маска ключей массива: [пробелы][&|]ИМЯ ПОЛЯ[:ТИП ФИЛЬТРА]
| mixed | $value | - значение |
| string | $type | - =,<,>, in, notin, fulltext, like%, like%, like тип соответствия поля значению. |
| string | $prefix | условие связки с предыдущими условиями (AND/OR/...) |
| array | $options |
| setHavingCountSelect | ( | $select | ) |
Устанавливает условие для SELECT в запросах на подсчет элементов, в случае если в запросе присутствует having
| string | $select |
| setSortOrder | ( | $field, | |
| $direction, | |||
$in_stock_first = null |
|||
| ) |
Устанавливает сортировку товаров
| string | $field | поле сортировки |
| string | $direction | направление сортировки asc или desc |
| bool | null | $in_stock_first |
| setWarehouseFilter | ( | $warehouses, | |
$only_join_dynamic_num = false |
|||
| ) |
Добавляет к условиям выборки, условие фильтрации по наличию на выбранных складах Предполагается, что GROUP BY product.id - уже присутствует в запросе
| [] | $warehouses | |
| bool | $only_join_dynamic_num | - Если true, то условие для скрытия не будет отображаться |
| setWarehousesForDynamicNum | ( | array | $warehouses | ) |
Устанавливает склады для формирования динамической цены
| array | $warehouses |
|
protected |
|
protected |
| const FILTER_STOCK_AVAILABLE = 1 |
| const FILTER_STOCK_BY_WAREHOUSES = 2 |
| const FILTER_STOCK_EMPTY = 0 |
| const REQUESTED_PRODUCTS = 1000 |
| const SHORT_FILTER_STOCK_VALUES |
| const WEIGHT_UNIT_G = 'g' |
| const WEIGHT_UNIT_KG = 'kg' |
| const WEIGHT_UNIT_LB = 'lb' |
| const WEIGHT_UNIT_T = 't' |