示例#1
0
include_once _PS_ROOT_DIR_ . '/init.php';
$response = false;
/* $token_ok = Tools::getAdminTokenLite('AdminModules'); */
$token_ok = Tools::getAdminToken('AdminModules');
if (!Tools::getValue('token') && Tools::getValue('token') != $token_ok) {
    die('hack attempt');
}
if (Tools::getValue('idfilter') == 0 && Tools::getValue('action') == 'getQuery') {
    die('You have to save the list first.');
}
include_once _PS_MODULE_DIR_ . 'mailjet/mailjet.php';
/* include_once(_PS_MODULE_DIR_.'mailjet/classes/MailjetAPI.php'); */
include_once _PS_MODULE_DIR_ . 'mailjet/classes/MailJetTemplate.php';
include_once _PS_MODULE_DIR_ . 'mailjet/classes/hooks/synchronization/SynchronizationAbstract.php';
include_once _PS_MODULE_DIR_ . 'mailjet/classes/hooks/synchronization/Segment.php';
if (Tools::getValue('action') == 'getQuery') {
    Configuration::updateValue('MJ_PERCENTAGE_SYNC', 0);
    $obj = new Segmentation();
    $res_contacts = Db::getInstance()->executeS($obj->getQuery($_POST, true, false));
    $api = MailjetTemplate::getApi();
    $synchronization = new HooksSynchronizationSegment(MailjetTemplate::getApi());
    $response = $synchronization->sychronize($res_contacts, Tools::getValue('idfilter'), Tools::getValue('name'));
} else {
    if (Tools::getValue('action') == 'getPercentage') {
        $response = Configuration::get('MJ_PERCENTAGE_SYNC');
    }
}
if ($response === false) {
    $response = 'Error';
}
echo $response;
示例#2
0
    public function checkAutoAssignment($id_customer = 0)
    {
        $sql = 'SELECT *
				FROM ' . _DB_PREFIX_ . 'mj_filter f
				LEFT JOIN ' . _DB_PREFIX_ . 'mj_condition c ON c.id_filter = f.id_filter
				WHERE f.assignment_auto = 1';
        $rows = DB::getInstance()->executeS($sql);
        if (!is_array($rows)) {
            return $this;
        }
        $formatRows = array();
        foreach ($rows as $row) {
            $id_filter = (int) $row['id_filter'];
            $formatRows[$id_filter]['mode'] = 0;
            $formatRows[$id_filter]['replace_customer'] = (bool) $row['replace_customer'];
            $formatRows[$id_filter]['name'] = $row['name'];
            $formatRows[$id_filter]['description'] = $row['description'];
            $formatRows[$id_filter]['idfilter'] = $id_filter;
            $formatRows[$id_filter]['idgroup'] = $row['id_group'];
            $formatRows[$id_filter]['rule_a'][] = $row['rule_a'];
            $formatRows[$id_filter]['rule_action'][] = $row['rule_action'];
            $formatRows[$id_filter]['baseSelect'][] = $row['id_basecondition'];
            $formatRows[$id_filter]['sourceSelect'][] = $row['id_sourcecondition'];
            $formatRows[$id_filter]['fieldSelect'][] = $row['id_fieldcondition'];
            $formatRows[$id_filter]['data'][] = $row['data'];
            $formatRows[$id_filter]['value1'][] = $row['value1'];
            $formatRows[$id_filter]['value2'][] = $row['value2'];
        }
        foreach ($formatRows as $filterId => $formatRow) {
            $obj = new Segmentation();
            $sql = $obj->getQuery($formatRow, true) . ' HAVING c.id_customer = ' . (int) $id_customer;
            $result = DB::getInstance()->executeS($sql);
            if ($result && !$obj->belongsToGroup($formatRow['idgroup'], $id_customer)) {
                if ($formatRow['replace_customer']) {
                    $sql = 'DELETE
						FROM ' . _DB_PREFIX_ . 'customer_group
						WHERE id_customer = ' . (int) $id_customer;
                    Db::getInstance()->execute($sql);
                }
                $values = array('id_group' => (int) $formatRow['idgroup'], 'id_customer' => (int) $id_customer);
                DB::getInstance()->autoExecute(_DB_PREFIX_ . 'customer_group', $values, 'INSERT');
                // Mailjet update
                $customer = new Customer($id_customer);
            } else {
                if (!$result && $obj->belongsToGroup($formatRow['idgroup'], $id_customer)) {
                    $sql = 'DELETE FROM ' . _DB_PREFIX_ . 'customer_group
						WHERE id_group = ' . (int) $formatRow['idgroup'] . ' AND id_customer = ' . (int) $id_customer;
                    DB::getInstance()->execute($sql);
                    // Mailjet update
                    $customer = new Customer($id_customer);
                }
            }
            $customer = new Customer($id_customer);
            $initialSynchronization = new HooksSynchronizationSingleUser(MailjetTemplate::getApi());
            $mailjetListID = $obj->_getMailjetContactListId($filterId);
            if ($result) {
                $initialSynchronization->subscribe($customer->email, $mailjetListID);
            } else {
                $initialSynchronization->remove($customer->email, $mailjetListID);
            }
        }
        return $this;
    }
 * @author    PrestaShop SA <*****@*****.**>
 * @copyright 2007-2015 PrestaShop SA
 * @license   http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 * International Registered Trademark & Property of PrestaShop SA
*/
include_once realpath(dirname(__FILE__) . '/../../../../../') . '/config/config.inc.php';
include_once _PS_ROOT_DIR_ . '/init.php';
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="customersegmentation' . time() . '.csv');
$token_ok = Tools::getAdminToken('AdminModules');
if (!Tools::getValue('token') && Tools::getValue('token') != $token_ok) {
    die('hack attempt');
}
include_once _PS_MODULE_DIR_ . 'mailjet/mailjet.php';
$obj = new Segmentation();
$sql = Db::getInstance()->executeS($obj->getQuery($_POST, true, false));
if (empty($sql)) {
    die(utf8_decode($obj->trad[22]));
}
$header = array_keys($sql[0]);
$csv = '';
foreach ($header as $h) {
    $csv .= '"' . preg_replace('/(\\r|\\n)/', '', utf8_decode($h)) . '";';
}
$csv .= "\n";
foreach ($sql as $s) {
    foreach ($s as $field) {
        $csv .= '"' . utf8_decode($field) . '";';
    }
    $csv .= "\n";
}