Rework emarsys unsubscribe script
This commit is contained in:
parent
79221931e4
commit
0ec8703fb9
@ -2,6 +2,7 @@
|
|||||||
/**
|
/**
|
||||||
* Import customer details from Emarsys
|
* Import customer details from Emarsys
|
||||||
* - Set newsletter info on customer
|
* - Set newsletter info on customer
|
||||||
|
* - File format : user_id;newsletter_bebeboutik;E-mail;Opt-in
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
||||||
@ -10,41 +11,134 @@ $_SERVER['HTTP_HOST'] = 'www.bebeboutik.com';
|
|||||||
|
|
||||||
include_once dirname(__FILE__).'/www/config/config.inc.php';
|
include_once dirname(__FILE__).'/www/config/config.inc.php';
|
||||||
|
|
||||||
|
$longopts = array(
|
||||||
|
'verbose',
|
||||||
|
'dry-run',
|
||||||
|
'file:',
|
||||||
|
);
|
||||||
|
$shortopts = "";
|
||||||
|
$options = getopt($shortopts, $longopts);
|
||||||
|
|
||||||
|
// Options
|
||||||
|
$optVerbose = false;
|
||||||
|
if (isset($options['verbose'])) {
|
||||||
|
$optVerbose = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$optTest = false;
|
||||||
|
if (isset($options['dry-run'])) {
|
||||||
|
$optTest = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$optFile = false;
|
||||||
|
if (isset($options['file'])) {
|
||||||
|
$optFile = $options['file'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($optFile === false) {
|
||||||
|
$fileList = glob(dirname(__FILE__).'/emarsys/*.csv');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$fileList = array();
|
||||||
|
$fileList[] = $optFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($fileList === false) {
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
if (count($fileList) == 0) {
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$cols = array(
|
||||||
|
'id_customer',
|
||||||
|
'newsletter',
|
||||||
|
'email',
|
||||||
|
'optin',
|
||||||
|
);
|
||||||
|
|
||||||
$db = Db::getInstance();
|
$db = Db::getInstance();
|
||||||
|
|
||||||
// List all files in dir
|
// List all files in dir
|
||||||
foreach(glob(dirname(__FILE__).'/emarsys/*.csv') as $filename) {
|
foreach($fileList as $filename) {
|
||||||
$f = fopen($filename, 'r');
|
if ($optVerbose) {
|
||||||
// By-pass first line
|
echo $filename."\n";
|
||||||
fgetcsv($f);
|
}
|
||||||
// Parse line
|
|
||||||
while($line = fgetcsv($f, 0, ';', '"')) {
|
$row = 0;
|
||||||
if(in_array((int) $line[1], array(0, 1, 2))
|
if (($handle = fopen($filename, "r")) !== false) {
|
||||||
&& !empty($line[2]) && in_array(strtolower($line[3]), array('vrai', 'faux'))
|
while (($data = fgetcsv($handle, 0, ';', '"')) !== false) {
|
||||||
&& Validate::isEmail($line[2])) {
|
$row++;
|
||||||
|
// By-pass first line
|
||||||
if($customer = $db->getRow('
|
if ($row == 1) {
|
||||||
SELECT `id_customer`
|
continue;
|
||||||
FROM `'._DB_PREFIX_.'customer`
|
}
|
||||||
WHERE `email` = "'.pSQL($line[2]).'"
|
|
||||||
')) {
|
// Get Data
|
||||||
if(strtolower($line[3]) == 'faux') {
|
$num = count($data);
|
||||||
$active = 0;
|
|
||||||
} else {
|
// Check line integrity
|
||||||
$active = (int) $line[1];
|
if ($num != count($cols)) {
|
||||||
}
|
continue;
|
||||||
$db->ExecuteS('
|
}
|
||||||
UPDATE `'._DB_PREFIX_.'customer`
|
// Assign var
|
||||||
SET `newsletter` = '.(int) $active.',
|
$id_customer = null;
|
||||||
`newsletter_date_add` = NOW()
|
$newsletter = null;
|
||||||
WHERE `email` = "'.pSQL($line[2]).'"
|
$email = null;
|
||||||
LIMIT 1
|
$optin = null;
|
||||||
');
|
for ($c=0; $c<$num; $c++) {
|
||||||
}
|
${$cols[$c]} = $data[$c];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
fclose($f);
|
// Business logic - check
|
||||||
|
if (empty($email)) {
|
||||||
// Move file as done
|
continue;
|
||||||
rename($filename, str_replace('/emarsys/', '/emarsys_done/', $filename));
|
}
|
||||||
|
if (!Validate::isEmail($email)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!in_array(strtolower($optin), array('vrai', 'faux'))) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Looks for a customer
|
||||||
|
$customer = $db->getRow('SELECT `id_customer`
|
||||||
|
FROM `'._DB_PREFIX_.'customer`
|
||||||
|
WHERE `email` = "'.pSQL($email).'"
|
||||||
|
');
|
||||||
|
if (!$customer) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Opt-In
|
||||||
|
if(strtolower($optin) == 'faux') {
|
||||||
|
$active = 0;
|
||||||
|
} else {
|
||||||
|
$active = (int) $newsletter;
|
||||||
|
}
|
||||||
|
if ($optTest) {
|
||||||
|
echo "Customer ID: ".$customer['id_customer']." - Active: ".$active."\n";
|
||||||
|
}
|
||||||
|
// Update customer
|
||||||
|
else {
|
||||||
|
$db->ExecuteS('UPDATE `'._DB_PREFIX_.'customer`
|
||||||
|
SET `newsletter` = '.(int) $active.', `newsletter_date_add` = NOW()
|
||||||
|
WHERE `id_customer` = '.$customer['id_customer'].' LIMIT 1
|
||||||
|
');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose($handle);
|
||||||
|
|
||||||
|
if ($optTest) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move file as done
|
||||||
|
rename($filename, str_replace('/emarsys/', '/emarsys_done/', $filename));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ($optVerbose) {
|
||||||
|
echo "File $filename can't be open.\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user