Newsletter-Batch-Import
Verfasst: Fr 10. Sep 2004, 19:40
Hallo,
ich hatte das Problem, eine größere Anzahl von Newsletteradressen importieren zu müssen. Habe schnell ein kleines Modul geschrieben, das die Aufgabe löst. Here it is:
Kann lange Email-Listen importieren und löschen. Ich erzeugte dafür ein neues Template und eine Seite in einem geschützten Bereich.
Hoffe es nützt.
Gruß,
Christian
ich hatte das Problem, eine größere Anzahl von Newsletteradressen importieren zu müssen. Habe schnell ein kleines Modul geschrieben, das die Aufgabe löst. Here it is:
Code: Alles auswählen
<?php
// Newsletter Adressen- Batch Import / Delete
// 10.9.2004 Christian Boulanger
// http://www.panyasan.de
if (strstr($mode,"newsletter_batch")){
// ist überhaupt etwas eingegeben?
if(!trim($emails)) {
$msg = "Keine Adressen eingegeben!";
} else {
$lines = explode("\n",$emails);
$no=0; $dbl = 0; $invalid = array(); $miss=0;
if($mode=="newsletter_batch_import") $import = true;
foreach($lines as $line) {
$parts = explode(";",trim($line));
$email = trim($parts[0]);
$name = trim($parts[1]?$parts[1]:$email);
if($email and preg_match('/^[.\w-]+@([\w-]+\.)+[a-zA-Z]{2,6}$/', $email)){
/* Check if the recipient already exists */
$sql = "SELECT idnewsrcp
FROM ".$cfg["tab"]["news_rcp"]."
WHERE idclient='$client' and idlang='$lang' and email='$email'";
$db->query($sql);
if (!$db->next_record()){
// recipient does not exist
if($import){
// then import recipient
$newsrcpid = $db->nextid($cfg["tab"]["news_rcp"]);
$timestamp = date("Y-m-d H:i:s");
for ($i=0;$i<10;$i++){$r .= rand();}
$hash = md5($r);
$sql = 'INSERT INTO '.$cfg["tab"]["news_rcp"].'
SET
name="'.$name.'",
email="'.$email.'",
deactivated="0",
created="'.$timestamp.'",
lastmodified="'.$timestamp.'",
idclient="'.$client.'",
confirmed="1",
idlang="'.$lang.'",
hash="'.$hash.'",
idnewsrcp = "'.$newsrcpid.'"';
$db->query($sql);
$no++;
} else {
// or count as missing when deleting
$miss++;
}
} else {
// recipient does exist
if(!$import) {
// delete entry
$sql = "DELETE FROM ".$cfg["tab"]["news_rcp"]."
WHERE idclient='$client' and idlang='$lang' and email='$email'";
$db->query($sql);
$del++;
} else {
// or count as already existing
$dbl++;
}
}
} else {
// count as invalid email address
$invalid[] = $email;
}
} // endforeach
// final message
$inv = count($invalid);
if($import){
$msg = "$no Adresse(n) importiert, $dbl Doublette(n) und ".
"$inv ungültige Adresse(n) ignoriert.<br/><br/>";
} else {
$msg = "$del Adresse(n) gelöscht, $miss Adresse(n) war(en) nicht in der ".
"Datenbank vorhanden und $inv war(en) ungültig.";
}
if($inv) {
$msg.="<br/>Die folgenden Emailadressen waren ungültig:<br/>";
foreach($invalid as $email) $msg.= $email.", ";
}
} // endif
} // endif
?>
<h1>Newsletter- Adressenimport</h1>
<p> Bitte geben Sie Email-Adressen ein, eine pro Zeile. Sie können,
mit einem ";" getrennt, auch einen Namen angeben.</p>
<span style="color:red"><?php echo $msg;?></span>
<form action="front_content.php" method="post">
<input type="hidden" name="idcatart" value="<?php echo $idcatart; ?>">
<textarea cols="30" rows="20" name="emails"><?php echo $emails;?></textarea>
<select name="mode">
<option value="newsletter_batch_import" selected>Adressen importieren</option>
<option value="newsletter_batch_delete">Adressen löschen</option>
</select>
<input type="submit">
</form>
Hoffe es nützt.
Gruß,
Christian