Версия: 5.x
Класс Api
Граф наследования:Api:
EntityList BaseModel

Подробное описание

Класс содержит 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=array())
 
 getMultiDirCount ()
 
 getNumField ()
 
 setSortOrder ($field, $direction, $in_stock_first=null)
 
 getBaseFilters ()
 
 applyBaseFilters ($bfilters=null)
 
 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(), array $excost)
 
 deleteDuplicateProperties ()
 
 multiUpdate (array $data, $ids=array())
 
 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 ()
 
- Открытые члены унаследованные от EntityList
 __construct (AbstractObject $orm_element, array $options=array())
 
 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=array())
 
 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 ($order= '')
 
 getOneItem ($id)
 
 getById ($id)
 
 getElement ()
 
 setElement ($object)
 
 getElementClass ()
 
 getNewElement ()
 
 save ($id=null, array $user_post=array())
 
 addFilterControl (\RS\Html\Filter\Control $filter_control)
 
 addTableControl (\RS\Html\Table\Control $table_control)
 
 del (array $ids)
 
 multiDelete ($ids)
 
 getSelectList ($first=array())
 
 multieditFormView ($tpl_path, $formfile, array $addparam=array())
 
 multiUpdate (array $data, $ids=array())
 
 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)
 
- Открытые члены унаследованные от 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=array(), $pf=array(), $query="", $additional_params=array())
 
static getCategoryPaginatorRouteParamsForProductsList (Dir $category, $bfilters=array(), $pf=array(), $query="", $additional_params=array())
 
- Открытые статические члены унаследованные от EntityList
static getInstance ($key= 'default')
 
static staticSelectList ($first=array())
 
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
 
- Поля данных унаследованные от EntityList
const WHERE_CONDITION_VAR = 'where_conditions'
 
- Поля данных унаследованные от BaseModel
 $form_fieldname = array()
 
 $errors_by_form = array()
 
 $errors_non_form = array()
 
 $errors = array()
 

Защищенные члены

 isNumFilter ($filter)
 
 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
 
 $work_list
 
 $work_list_ids
 
- Защищенные данные унаследованные от 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 = array()
 
 $parsePrefixes = array('&' => 'AND', '|' => 'OR', '' => '')
 
 $q
 
- Защищенные данные унаследованные от BaseModel
 $default_error_fieldname = 'Информация'
 

Дополнительные унаследованные члены

- Статические защищенные данные унаследованные от EntityList
static $instance = []
 

Конструктор(ы)

__construct ( )

Методы

addCostQuery ( array  $cost_types)

Добавляет к запросу выборки условия для присоединения цен

Аргументы
OrmTypecost[] $cost_types - типы цен
Возвращает
void
addFilterControl ( \RS\Html\Filter\Control  $filter_control)

Устанавливает фильтры, от компонента html_filter

addProductsDirs (   $products)

Загружает товарам свойства xdir, xspec, в которых содержится принадлежность категориям

Аргументы
OrmProduct[] $products - массив товаров
Возвращает
Orm[]
addProductsDynamicNum (   $products,
  $auto_init_affiliate = true 
)

Добавляет для списка товаров поле с динамическим остатком (на некоторых складах) в случае, если соответствующая опция включена. После вызова данной функции addProductOffers также будет добавлять поле dynamic_num для комплектаций.

Аргументы
OrmProduct[] $products
bool$auto_init_affiliate- Вызывает setAffiliateRestrictions при первом вызове
Возвращает
Product[]
addProductsFavorite (   $products)

Загружает списку товаров флаг, находится ли товар в избранном

Аргументы
OrmProduct[] $products массив товаров
Возвращает
Orm[]
addProductsMultiOffers (   $products)

Загружает списку товаров уровни многомерных комплектаций

Аргументы
OrmProduct[] $products массив товаров
Возвращает
Orm[]
addProductsMultiOffersInfo (   $products)

Загружает списку товаров информацию о том используются ли комплектации и многомерные комплектации без загрузки подробных сведений. Данный метод удобно использовать на странице со списком товаров

Аргументы
array$productsсписок товаров
Возвращает
array
addProductsOffers (   $products)

Загружает списку товаров комплектации

Аргументы
OrmProduct[] $products - массив товаров
Возвращает
Orm[]
addProductsPhotos (   $products)

Загружает ссылки на фотографии к группе товаров (в свойство images)

Аргументы
OrmProduct[] - список товаров
Возвращает
Orm[]
addProductsProperty (   $products)

Добавляет ко всем товарам характеристики

Аргументы
array$products
Возвращает
array
Исключения
DbException
OrmException
EventException
addTranslitAliases (   $count_def = 0)

Добавляет символьные идентификаторы товарам, у которых они не установлены

Аргументы
integer$count_def- счетчик по-умолчанию
Возвращает
array|int
Исключения
DbException
RSException
appendOfferDynamicNum (   $q)
protected

Добавляет в запрос условие для выборки динамического остатка, если соответствующая опция включена Актуально только в клиентской части Актуально только если присутствует модуль Филиальная сеть

Аргументы
Request$q
applyBaseFilters (   $bfilters = null)

Применяет "базовые" фильтры, т.е. фильтры, которые не зависят от таблиц характеристик товара.

Аргументы
null | array$bfilters- массив базовых фильтров
Возвращает
bool
Исключения
DbException
RSException
applyFiltersToMeta (   $all_filters_data)

Добавляет к мета тегам Keywords, Description выбранные фильтры

Аргументы
array$all_filters_dataМассив с выбранными значениями фильтров
Возвращает
void
brandFilter (   $filter)
protected

Устанавливает фильтр по бренду

Аргументы
string | array$filter- бренд или массив брендов
cleanUnusedRelatedProducts ( )

Удаляет несвязанные сопутствующие товары Операция необходима для очистки базы от неиспользуемых записей

costFilter (   $filter)
protected

Устанавливает фильтр по цене с учетом цен текущего пользователя

Аргументы
array$filter- массив со сведениями о переданном фильтре по цене (ключи to, from)
static decodeDirFilterParamsFromUrl ( )
static

Парсит часть ЧПУ адреса с фильтрами и возвращает массив из найденных в адресе фильтров

Возвращает
array
Исключения
DbException
RSException
deleteDuplicateProperties ( )

Удаляет дубликаты характеристик в БД

Возвращает
void
Исключения
DbException
RSException
static encodeDirFilterParamsToUrl ( Dir  $category = null,
  $bfilters = array(),
  $pf = array(),
  $query = "",
  $additional_params = array() 
)
static

Переводит переданные фильтры категории в ЧПУ адрес

Аргументы
Dir | null$category- объект категории
array$bfilters- базовые фильтры
array$pf- фильтры по характеристикам
string$query- строковый запрос
array$additional_params- дополнительные параметры
Возвращает
string
Исключения
RSException
filterRequest ( )

Устанавливает фильтры, которые следуют из параметров конфигурации модуля "Каталог"

Возвращает
OrmRequest
generateUniqBarcode ( )

Генерирует уникальный идентификаотр для товара

Возвращает
string
Исключения
DbException
OrmException
RSException
genereteBarcode ( )

Возвращает сгенерированный артикул

Возвращает
string
getAllowableBrandsValues (   $cache_key,
  $cache = true 
)

Получает доступные значения брендов для категорий

Аргументы
string$cache_key- ключ для кэша
boolean$cache- флаг включения кэша
Возвращает
Brand[]|false
getAllowablePropertyValues (   $dir_id,
  $cache_key,
  $cache = true 
)

Возвращает все возможные значения свойств для текущей выборки товаров,

  • диапазоны значений и шаг для характеристик типа int
  • массив возможных значений для характеристик типа list
  • массив возможных значений для характеристик типа bool
Аргументы
integer$dir_idid текущей категории товаров
mixed$cache_key- id кэша
bool$cache- Если true, то будет использоваться кэширование
Возвращает
array
Исключения
DbException
EventException
OrmException
RSException
getBaseFilters ( )

Возвращает массив текущих переданных базовых фильтров из массива $_REQUEST

Возвращает
array
Исключения
DbException
RSException
getBaseFiltersParts (   $base_filters,
  $brands 
)
protected

Возвращает данные по базовым фильтрам

Аргументы
array$base_filtersструктура с выбранными фильтрами
array$brandsАссоциативный массив брендов
Возвращает
array
getBySearchResult (   $list_of_results)

Возвращает именно товары по результатам поиска

Аргументы
array$list_of_results- массив результатов поиска
Возвращает
array
static getCategoryPaginatorRouteParamsForProductsList ( Dir  $category,
  $bfilters = array(),
  $pf = array(),
  $query = "",
  $additional_params = array() 
)
static

Возвращает массив параметров для формирования адреса категории с или без фильтров

Аргументы
Dir$category- объект категории
array$bfilters- базовые фильтры
array$pf- фильтры по характеристикам
string$query- строковый запрос
Возвращает
array
Исключения
RSException
getDirList ( )

Возвращает список категорий в которых состоят товары, возвращаемые функцией getList

Возвращает
Dir[]
getHeterogeneity (   $min,
  $max 
)

Получает риски для цен диапозона цен

Возвращает
string
getLike (   $term,
  $like_fields 
)

Возвращает объекты, выбранные с помощью Like

Аргументы
string$term- слово или фраза для поиска
array$like_fields- поля для like поиска
Возвращает
array
Исключения
RS
getListCount ( )

Возвращает общее количество элементов, согласно условию.

Возвращает
integer
getMinMaxProductsCost ( )

Возвращает информацию о минимальной и максимальной цене товаров, для текущих условий выборки

Возвращает
array
Исключения
DbException
getMultiDirCount ( )

Возвращает верное количество товаров, которое вернет getList если выбираются товары из нескольких директорий одновременно

Возвращает
integer
Исключения
DbException
getNumField ( )

Возвращает имя поля БД, в котором будет актуальный общий остаток товара с учетом опций. В мегамаркете есть опция, которая включает динамические остатки

Возвращает
string (num или dynamic_num)
static getOfferByMultiofferValues (   $product_id,
  $multioffers_values 
)
static

Возвращает номер комплектации по значениям многомерной комплектации

Аргументы
integer$product_id- id товара
array$multioffers_values- массив характеристик многомерной комплектации (title => value)
Возвращает
int
getProductsDirs (   $products_id,
  $add_root = false,
  $is_products = true 
)

Возвращает группы, в которых состоят товары (включая родителей групп)

Аргументы
int[]|Product[]$products_id - массив товаров
bool$add_root- добавлять корневую категорию
bool$is_products- добавлять в запрос идентификаторы из переданных товаров
Возвращает
array|false
getPropertyFiltersParts (   $prop_filters)
protected

Возвращает данные по установленным фильтрам по характеристикам

Аргументы
array$prop_filtersмассив, полученный от Catalog->last_filtered_props
Возвращает
array
getSameByCostProducts (   $product,
  $delta,
  $page_size,
  $only_in_stock = false 
)

Возвращает список товаров с заданным отклонением цены

Аргументы
$product
$delta
$page_size
bool$only_in_stock
Возвращает
[]
getSelectedFiltersAsString (   $base_filters,
  $brands,
  $prop_filters 
)

Возвращает установленные фильтры в структурированном виде

Возвращает
array
getTableList (   $page = null,
  $page_size = null,
  $order = null 
)

Возвращает список товаров для таблицы в административной части

Аргументы
integer$page- номер страницы
integer$page_size- количество элементов на страницу
string$order- сортировка
Возвращает
array
static getWeightUnits ( )
static

Возвращает список доступных единиц измерения веса

Возвращает
array
static getWeightUnitsTitles ( )
static

Возвращает список наименований доступных единиц измерения веса

Возвращает
array
isExistBarcode (   $barcode)

Проверяет существует ли переданный артикул в системе

Аргументы
string$barcode- артикул
Возвращает
bool
isNumFilter (   $filter)
protected

Устанавливает фильтр по наличию

Аргументы
string$filter- строка с типом фильтра ("", "1", "0")
Исключения
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
Возвращает
bool
Исключения
DbException
OrmException
moveProductInDir (   $dir_id,
  $product_id,
  $flag 
)

Перемещает объект товара в сортировке в самый верх для заданной директории

Аргументы
integer$dir_id- id директории
integer$product_id- id товара
string$flag- up или down - флаг выше или ниже элемента $to должен располагаться элемент $from
Возвращает
bool
Исключения
DbException
OrmException
multiDelete (   $ids,
  $dir = 0 
)

Функция быстрого группового удаления товаров по их идентификаторам

Аргументы
array$ids- массив id товаров
integer$dir- если >0, то будет удалено только из категории $dir
Возвращает
bool
Исключения
DbException
EventException
DbException
EventException
multiUpdate ( array  $data,
  $ids = array() 
)

Функция быстрого группового редактирования товаров

Аргументы
array$data- массив данных для обновления
array$ids- идентификаторы товаров на обновление
Возвращает
int
Исключения
DbException
EventException
OrmException
RSException
multiUpdateProductsAndOffersPrices (   $ids = array(),
array  $excost 
)

Мульти обновление цены у товаров и комплектаций

Аргументы
array$ids- массив id товаров
array$excost- массив сведений об именении цены или с полями изменения цен
Исключения
DbException
EventException
OrmException
setAffiliateRestrictions (   $set_filter_by_warehouse = false)

Если включены опции в настройках модуля Каталог: "Ограничить остатки товара только остатками на складах выбранного филиала" и "Скрывать товары с нулевым остатком", то добавляем условие для подсчета остатка товаров именно на связанных филиалах и скрываем по данном остатку

Аргументы
bool$set_filter_by_warehouse
Возвращает
void
setFilter (   $key,
  $value = null,
  $type = '=',
  $prefix = 'AND',
array  $options = array() 
)

Устанавливает фильтр для последующей выборки элементов

Аргументы
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
Возвращает
Api|
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, то условие для скрытия не будет отображаться
Возвращает
void
setWarehousesForDynamicNum ( array  $warehouses)

Устанавливает склады для формирования динамической цены

Аргументы
array$warehouses

Поля

$dynamic_num_warehouses_id
protected
$work_list
protected
$work_list_ids
protected
const REQUESTED_PRODUCTS = 1000
const WEIGHT_UNIT_G = 'g'
const WEIGHT_UNIT_KG = 'kg'
const WEIGHT_UNIT_LB = 'lb'
const WEIGHT_UNIT_T = 't'