Получение списка категорий разного статуса


#1

Где возникла проблема: CS-Cart 4.12 возможно и ранние версии (4.10, 4.11)

Суть проблемы: *В функции fn_get_categories есть такой кусок кода
if (AREA == ‘C’) {
$_statuses = array(‘A’); // Show enabled products/categories
$condition .= fn_get_localizations_condition(’?:categories.localization’, true);
$condition .= " AND (" . fn_find_array_in_set($auth[‘usergroup_ids’], ‘?:categories.usergroup_ids’, true) . “)”;
$condition .= db_quote(" AND ?:categories.status IN (?a)", $_statuses);
}

    if (!empty($params['status'])) {
        $condition .= db_quote(" AND ?:categories.status IN (?a)", $params['status']);
    }

Таким образом если в функцию передать параметр $params[‘status’] = array(‘A’,‘H’) то условие выборки списка категорий будет с условием
AND ?:categories.status IN ('A') AND ?:categories.status IN ('A', 'H')
Как бы должно быть что если параметр status не передается то выбираем только активные категории иначе категории со статусами из массива параметра status
*


#2

наверное, специально сделано, чтобы хитрые пользователи, знакомые с cs-cart ничего лишнего не могли посмотреть на витрине


#3

@ecomlabs все правильно говорит.


#4

А нельзя было почистить params от “опасных” параметров вначале функции и разрешить получение и обработку этих параметров через хуки? Или лучше проверить
if (AREA == ‘C’ && !empty($_REQUEST[‘status’])){
// разрешаем только активные категории
}else{
// разрешаем все статусы из $params[‘status’]
}
Я ведь могу вызывать функцию из модуля. Или для сторонних модулей тоже нельзя получать список категорий со статусами на выбор?