protected function _gifts_filter($params, &$need_join_g2p = false) { $where = ''; if (!empty($params['filter']['min_price']) || !empty($params['filter']['max_price'])) { $min_price = max(0, !empty($params['filter']['min_price']) ? (int) $params['filter']['min_price'] : 0); $max_price = min(1000000, !empty($params['filter']['max_price']) ? (int) $params['filter']['max_price'] : 1000000); $where .= " AND '{$min_price}' <= g.price AND g.price <= '{$max_price}' "; } // Фильтруем магазины по региону if (isset($params['filter']['region_country'])) { $shop = new shop(); $shops_ids = is_array($params['filter']['region_country']) ? $shop->found_shops_ids_by_region($params['filter']['region_country'][0], $params['filter']['region_country'][1], $params['filter']['delivery_type'], $params['filter']['delivery_period']) : $shop->found_shops_ids_by_region(); if (is_array($shops_ids) && count($shops_ids)) { // Если нашли не пустой список магазинов $need_join_g2p = true; $shops_ids = trim(str_replace(',,', ',', implode($shops_ids, ',')), ','); $where .= " AND g2p.shop_id IN ( {$shops_ids} ) "; } } //exclude_ids if (isset($params['filter']['exclude_ids']) && is_array($params['filter']['exclude_ids']) && count($params['filter']['exclude_ids'])) { $ids = trim(str_replace(',,', ',', implode(',', $params['filter']['exclude_ids'])), ','); $where .= " AND g2c.gift_id NOT IN ({$ids}) "; } if (isset($params['filter']['exclude_group_ids']) && is_array($params['filter']['exclude_group_ids']) && count($params['filter']['exclude_group_ids'])) { $ids = trim(str_replace(',,', ',', implode(',', $params['filter']['exclude_group_ids'])), ','); $where .= " AND g.group_general_id NOT IN ({$ids}) "; } if (isset($params['filter']['exclude_links']) && is_array($params['filter']['exclude_links']) && count($params['filter']['exclude_links'])) { $ids = trim(str_replace(',,', ',', implode(',', $params['filter']['exclude_links'])), ','); $where .= " AND (g2c.gift_id*10000+g2c.category_id) NOT IN ({$ids}) "; } if (isset($params['filter']['exclude_shop_ids']) && is_array($params['filter']['exclude_shop_ids']) && count($params['filter']['exclude_shop_ids'])) { $ids = trim(str_replace(',,', ',', implode(',', $params['filter']['exclude_shop_ids'])), ','); $where .= " AND g2p.shop_id NOT IN ({$ids}) "; $need_join_g2p = true; } return $where; }