private function getLocalCampaigns($campaign_state = null) { $req = new DbQuery(); $req->select('campaign_id, campaign_state, campaign_date_update, campaign_date_send, campaign_name'); $req->from($this->table); if ($campaign_state) { $req->where('campaign_state = ' . (string) $campaign_state); } $req->orderby('campaign_date_update DESC'); $req->limit(5); $user_list = Db::getInstance()->executeS($req, true, false); return $user_list; }
public function connectFromCredentials($media = 'all') { $req = new DbQuery(); $req->select('*'); $req->from('expressmailing'); $req->orderby('api_media DESC'); switch ($media) { case 'email': $req->where('api_media IN (\'all\', \'email\')'); break; case 'fax': $req->where('api_media IN (\'all\', \'fax\')'); break; case 'sms': $req->where('api_media IN (\'all\', \'sms\')'); break; default: $req->where('api_media = \'all\''); break; } $api_credentials = Db::getInstance()->executeS($req, true, false); if (count($api_credentials) > 0) { // On indique que la base locale contient des credentials // ------------------------------------------------------ $this->credentials = count($api_credentials); // Si on trouve un couple login/password en local, on initie la connexion à l'api // ------------------------------------------------------------------------------ if ($this->openSession()) { // Puis on regarde si ce compte est toujours actif // ----------------------------------------------- foreach ($api_credentials as $account) { $this->error = null; $response_array = array(); $parameters = array('login' => $account['api_login'], 'password' => $account['api_password']); if ($this->connectUser($parameters, $response_array)) { if (isset($response_array['account_id']) && (int) $response_array['account_id'] > 0) { // Le compte est toujours actif ! // ------------------------------ Configuration::updateValue('adminmarketing_session_api', $this->session_id); return true; } } } } } return false; }
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; }