Класс содержит 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' |