private function importPrestashopCustomer() { $this->clearCustomerFilters(); $this->checked_groups = Tools::getValue('groups'); $this->checked_langs = Tools::getValue('langs'); $this->checked_categories = Tools::getValue('tree-categories'); $this->checked_products = Tools::getValue('tree-products'); $this->active_address = Tools::getValue('subscriptions_campaign_active'); $inserts = array(); if ($this->checked_groups) { foreach ($this->checked_groups as $group) { $inserts[] = array('campaign_id' => $this->campaign_id, 'group_id' => (int) $group); } } if (!empty($inserts)) { Db::getInstance()->insert('expressmailing_sms_groups', $inserts); } $inserts = array(); if ($this->checked_langs) { foreach ($this->checked_langs as $lang) { $inserts[] = array('campaign_id' => $this->campaign_id, 'lang_id' => (int) $lang); } } if (!empty($inserts)) { Db::getInstance()->insert('expressmailing_sms_langs', $inserts); } $inserts = array(); if ($this->checked_categories) { foreach ($this->checked_categories as $category) { $inserts[] = array('campaign_id' => $this->campaign_id, 'category_id' => (int) $category); } } if (!empty($inserts)) { Db::getInstance()->insert('expressmailing_sms_categories', $inserts); } $inserts = array(); if ($this->checked_products) { foreach ($this->checked_products as $product) { $inserts[] = array('campaign_id' => $this->campaign_id, 'product_id' => (int) $product); } } if (!empty($inserts)) { Db::getInstance()->insert('expressmailing_sms_products', $inserts); } DB::getInstance()->update('expressmailing_sms', array('campaign_active' => (int) $this->active_address), 'campaign_id = ' . $this->campaign_id); // Rebuilt the recipients selection // -------------------------------- $req = 'INSERT IGNORE INTO ' . _DB_PREFIX_ . 'expressmailing_sms_recipients (campaign_id, target, col_0, col_1, col_2, col_3, col_4, source) SELECT campaign_id, target, col_0, col_1, col_2, col_3, col_4, source FROM (' . DBMarketing::getCustomersSmsRequest($this->campaign_id, $this->checked_langs, $this->checked_groups, $this->active_address, $this->checked_products, $this->checked_categories) . ' ) AS recipients'; if (!DB::getInstance()->execute($req)) { $this->errors[] = DB::getInstance()->getMsgError(); } }
private function storeSearchBD() { // Clear the previous search // ------------------------- DB::getInstance()->delete('expressmailing_email_recipients', 'campaign_id = ' . $this->campaign_id, 0, false); // Store shop selection // -------------------- DB::getInstance()->delete('expressmailing_email_shops_groups', 'campaign_id = ' . $this->campaign_id, 0, false); if ($groups_shops_ids = Tools::getValue('groups_shops_ids')) { $db_entries = array(); foreach ($groups_shops_ids as $shop_group_id => $shop_ids) { foreach ($shop_ids as $shop_id => $checked) { if ($checked) { $this->checked_shops[] = $shop_id; $db_entries[] = array('campaign_id' => (int) $this->campaign_id, 'shop_group_id' => (int) $shop_group_id, 'shop_id' => $shop_id); } } } DB::getInstance()->insert('expressmailing_email_shops_groups', $db_entries); } // Store selection's Groups // ------------------------ DB::getInstance()->delete('expressmailing_email_groups', 'campaign_id = ' . $this->campaign_id, 0, false); if ($groups = Tools::getValue('groups')) { $db_entries = array(); foreach (array_keys($groups) as $group) { $this->checked_groups[] = (int) $group; $db_entries[] = array('campaign_id' => (int) $this->campaign_id, 'group_id' => (int) $group); } DB::getInstance()->insert('expressmailing_email_groups', $db_entries); } // Store selection's Languages // --------------------------- DB::getInstance()->delete('expressmailing_email_langs', 'campaign_id = ' . $this->campaign_id, 0, false); if ($langs = Tools::getValue('langs')) { $db_entries = array(); foreach (array_keys($langs) as $lang) { $this->checked_langs[] = (int) $lang; $db_entries[] = array('campaign_id' => (int) $this->campaign_id, 'lang_id' => (int) $lang); } DB::getInstance()->insert('expressmailing_email_langs', $db_entries); } // Store categorie's Products // -------------------------- DB::getInstance()->delete('expressmailing_email_categories', 'campaign_id = ' . $this->campaign_id, 0, false); if ($categories = Tools::getValue('tree-categories')) { $db_entries = array(); foreach ($categories as $category) { $this->selected_categories[] = (int) $category; $db_entries[] = array('campaign_id' => (int) $this->campaign_id, 'category_id' => (int) $category); } DB::getInstance()->insert('expressmailing_email_categories', $db_entries); } // Store Products // -------------- DB::getInstance()->delete('expressmailing_email_products', 'campaign_id = ' . $this->campaign_id, 0, false); if ($products = Tools::getValue('tree-products')) { $db_entries = array(); foreach ($products as $product) { $this->selected_products[] = (int) $product; $db_entries[] = array('campaign_id' => (int) $this->campaign_id, 'product_id' => (int) $product); } DB::getInstance()->insert('expressmailing_email_products', $db_entries); } // Store options Optin/ Newsletter/ Active // --------------------------------------- $this->checked_campaign_optin = (int) Tools::getValue('subscriptions_campaign_optin', '0'); $this->checked_campaign_newsletter = (int) Tools::getValue('subscriptions_campaign_newsletter', '0'); $this->checked_campaign_active = (int) Tools::getValue('subscriptions_campaign_active', '0'); $this->checked_campaign_guest = (int) Tools::getValue('subscriptions_campaign_guest', '0'); Db::getInstance()->update('expressmailing_email', array('campaign_optin' => $this->checked_campaign_optin, 'campaign_newsletter' => $this->checked_campaign_newsletter, 'campaign_active' => $this->checked_campaign_active, 'campaign_guest' => $this->checked_campaign_guest), 'campaign_id = ' . $this->campaign_id); // Store birthday filter // --------------------- DB::getInstance()->delete('expressmailing_email_birthdays', 'campaign_id = ' . $this->campaign_id, 0, false); if ($birthday = (string) Tools::getValue('birthday')) { $values = explode('|', $birthday); Db::getInstance()->insert('expressmailing_email_birthdays', array('campaign_id' => $this->campaign_id, 'birthday_type' => pSQL($values[0]), 'birthday_start' => pSQL($values[1]), 'birthday_end' => pSQL($values[2]))); } // Store civility filter // --------------------- DB::getInstance()->delete('expressmailing_email_civilities', 'campaign_id = ' . $this->campaign_id, 0, false); if ($civilities = Tools::getValue('civility')) { $inserts = array(); foreach ($civilities as $civility_id) { $inserts[] = array('campaign_id' => $this->campaign_id, 'civility_id' => pSQL((int) $civility_id)); } Db::getInstance()->insert('expressmailing_email_civilities', $inserts); } // Store country filter // -------------------- DB::getInstance()->delete('expressmailing_email_countries', 'campaign_id = ' . $this->campaign_id, 0, false); if ($countries = Tools::getValue('selected_countries')) { $inserts = array(); foreach ($countries as $country_id) { $inserts[] = array('campaign_id' => $this->campaign_id, 'country_id' => pSQL((int) $country_id)); } Db::getInstance()->insert('expressmailing_email_countries', $inserts); } // Store postalcode filter // ----------------------- DB::getInstance()->delete('expressmailing_email_postcodes', 'campaign_id = ' . $this->campaign_id, 0, false); if ($post_codes = Tools::getValue('selected_postcodes')) { $inserts = array(); foreach ($post_codes as $value) { $values = explode('|', $value); $country_id = $values[0]; $post_code = $values[1]; $inserts[] = array('campaign_id' => $this->campaign_id, 'country_id' => pSQL($country_id), 'postcode' => pSQL($post_code)); } Db::getInstance()->insert('expressmailing_email_postcodes', $inserts); } // Store buyingdate filter // ----------------------- DB::getInstance()->delete('expressmailing_email_buyingdates', 'campaign_id = ' . $this->campaign_id, 0, false); if (($min_bying_date = (string) Tools::getValue('min_bying_date')) && ($max_bying_date = (string) Tools::getValue('max_bying_date'))) { Db::getInstance()->insert('expressmailing_email_buyingdates', array('campaign_id' => $this->campaign_id, 'min_buyingdate' => pSQL($min_bying_date), 'max_buyingdate' => pSQL($max_bying_date))); } // Store account creation filter // ----------------------------- DB::getInstance()->delete('expressmailing_email_accountdates', 'campaign_id = ' . $this->campaign_id, 0, false); if (($min_account_date = (string) Tools::getValue('min_account_creation_date')) && ($max_account_date = (string) Tools::getValue('max_account_creation_date'))) { Db::getInstance()->insert('expressmailing_email_accountdates', array('campaign_id' => $this->campaign_id, 'min_accountdate' => pSQL($min_account_date), 'max_accountdate' => pSQL($max_account_date))); } // Store promotion code filter // --------------------------- DB::getInstance()->delete('expressmailing_email_promocodes', 'campaign_id = ' . $this->campaign_id, 0, false); if ($promocode_type = (string) Tools::getValue('promocode')) { switch ($promocode_type) { case 'any': case 'never': Db::getInstance()->insert('expressmailing_email_promocodes', array('campaign_id' => $this->campaign_id, 'promocode_type' => pSQL($promocode_type), 'promocode' => null)); break; case 'specific': $promocodes_values = Tools::getValue('promocode_values'); $inserts = array(); foreach ($promocodes_values as $value) { if (!empty($value)) { $inserts[] = array('campaign_id' => $this->campaign_id, 'promocode_type' => pSQL($promocode_type), 'promocode' => pSQL($value)); } } Db::getInstance()->insert('expressmailing_email_promocodes', $inserts); break; default: break; } } // Rebuild the recipients selection // -------------------------------- $extended = true; $paying_filters = DBMarketing::getPayingFiltersEmailDB($this->campaign_id); $req = 'INSERT IGNORE INTO ' . _DB_PREFIX_ . 'expressmailing_email_recipients (campaign_id, lang_iso, target, last_name, first_name, ip_address, last_connexion_date, group_name) SELECT campaign_id, iso_code, email, lastname, firstname, ip_address, last_connexion_date, group_name FROM (' . DBMarketing::getCustomersEmailRequest($this->campaign_id, $this->checked_langs, $this->checked_groups, $this->checked_campaign_optin, $this->checked_campaign_newsletter, $this->checked_campaign_active, $this->checked_campaign_guest, $this->checked_products, $this->checked_categories, $this->checked_shops, $paying_filters, $extended) . ' ) AS recipients'; if (!DB::getInstance()->execute($req)) { $this->errors[] = DB::getInstance()->getMsgError(); } // And informe the step7 that the selection has changed // ---------------------------------------------------- Db::getInstance()->update('expressmailing_email', array('campaign_date_update' => date('Y-m-d H:i:s'), 'recipients_modified' => 1), 'campaign_id = ' . $this->campaign_id); }