public function getCartRulesDB() { $req = new DbQuery(); $req->select('cart_rule.id_cart_rule, cart_rule.code, cart_rule.description, cart_cart_rule.id_cart as used_on_id_cart'); $req->from('cart_rule', 'cart_rule'); $req->leftJoin('cart_cart_rule', 'cart_cart_rule', 'cart_cart_rule.id_cart_rule = cart_rule.id_cart_rule'); $req->where('cart_rule.code != ""'); $req->groupby('cart_rule.id_cart_rule'); $req->orderBy('used_on_id_cart DESC'); $cart_rules = Db::getInstance()->executeS($req, true, false); if (_PS_MODE_DEV_) { echo '<!-- OK getCartRulesDB -->'; } return $cart_rules; }
public static function getCustomersSmsRequest($campaign_id, $checked_langs, $checked_groups, $checked_campaign_active, $checked_products, $checked_categories, $limit = 0, &$list_total = null) { $sql_calc_found = is_null($list_total) ? '' : 'SQL_CALC_FOUND_ROWS '; $req = new DbQuery(); $req->select($sql_calc_found . (int) $campaign_id . ' as campaign_id, address.phone_mobile as target, address.phone_mobile as col_0, customer.lastname as col_1, customer.firstname as col_2,address.postcode as col_3, address.city as col_4, \'prestashop\' as source'); $req->from('customer', 'customer'); $req->leftJoin('customer_group', 'customer_group', 'customer_group.id_customer = customer.id_customer'); $req->leftJoin('guest', 'guest', 'guest.id_customer = customer.id_customer'); $req->leftJoin('connections', 'connections', 'connections.id_guest = guest.id_guest'); $req->innerJoin('address', 'address', 'address.id_customer = customer.id_customer AND address.phone_mobile <> \'\''); $req->leftJoin('country', 'country', 'address.id_country = country.id_country'); $where = array(); $where[] = 'address.phone_mobile IS NOT NULL AND address.phone_mobile <> \'\''; if (!empty($checked_langs)) { $where[] = 'customer.id_lang IN(' . implode(', ', array_map('intval', $checked_langs)) . ')'; } if (!empty($checked_groups)) { $where[] = 'customer_group.id_group IN(' . implode(', ', array_map('intval', $checked_groups)) . ')'; } if ($checked_campaign_active) { $where[] = 'customer.active = 1'; } if (!empty($checked_products) || !empty($checked_categories)) { $where_products_categories = array(); $req->leftJoin('cart', 'cart', 'cart.id_customer = customer.id_customer'); $req->leftJoin('cart_product', 'cart_product', 'cart_product.id_cart = cart.id_cart'); if (!empty($checked_products)) { $where_products_categories[] = 'cart_product.id_product IN(' . implode(', ', array_map('intval', $checked_products)) . ')'; } if (!empty($checked_categories)) { $req->leftJoin('category_product', 'category_product', 'category_product.id_product = cart_product.id_product'); $where_products_categories[] = 'category_product.id_category IN(' . implode(', ', array_map('intval', $checked_categories)) . ')'; } $where[] = implode(' OR ', $where_products_categories); } $req->where(implode(' AND ', $where)); $req->orderby('customer.id_customer'); $req->groupby('customer.id_customer'); $limit = (int) $limit; if ($limit) { $req->limit($limit); } return $req; }