Ejemplo n.º 1
0
    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();
        }
    }
Ejemplo n.º 2
0
    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);
    }