Newsletter-Funktionalität
Verfasst: Mi 2. Jul 2003, 09:52
Hallo,
die alte news.php-Geschichte sollten wir vergessen - es gibt eine neue Methode.
Kurzbeschreibung:
Die News.php wird ersetzt, ein neues Funktionsmodul kommt ins Spiel und die Newsletter-Versenden-Funktion muß angepasst werden.
Vorgehensweise: Unten gibt's den Code für das Funktionsmodul, für die neue news.php, das Formular und die Datei include.newsletter_send.php
Die Datei news.php muß angepasst werden, dort muß die Variable $targetidcatart geändert werden. Per default steht dort 20, dort ist die Artikelnummer des Artikels einzutragen, welcher das Modul "Newsletterfunktionen" enthält. Die Artikelnummer bekommt man über die Artikeleigenschaften heraus (steht oben rechts neben dem Titel). Dieselbe Artikelnummer muß auch bei dem Modul "Newsletter Subskiption" bei $newsletterIDCatArt eingetragen werden.
news.php:
Modul Newsletter-Funktionen (Muß nur in den Output-Bereich):
Modul Newsletter-Subskription (Muß nur in den Output-Bereich):
Datei include.newsletter_send.php:
die alte news.php-Geschichte sollten wir vergessen - es gibt eine neue Methode.
Kurzbeschreibung:
Die News.php wird ersetzt, ein neues Funktionsmodul kommt ins Spiel und die Newsletter-Versenden-Funktion muß angepasst werden.
Vorgehensweise: Unten gibt's den Code für das Funktionsmodul, für die neue news.php, das Formular und die Datei include.newsletter_send.php
Die Datei news.php muß angepasst werden, dort muß die Variable $targetidcatart geändert werden. Per default steht dort 20, dort ist die Artikelnummer des Artikels einzutragen, welcher das Modul "Newsletterfunktionen" enthält. Die Artikelnummer bekommt man über die Artikeleigenschaften heraus (steht oben rechts neben dem Titel). Dieselbe Artikelnummer muß auch bei dem Modul "Newsletter Subskiption" bei $newsletterIDCatArt eingetragen werden.
news.php:
Code: Alles auswählen
<?
$targetidcatart = 20;
include ("config.php");
include ($contenido_path . "includes/config.php");
include ($cfg["path"]["contenido"].$cfg["path"]["includes"] . "cfg_sql.inc.php");
#include ($cfg["path"]["contenido"].$cfg["path"]["includes"] . "cfg_language_".$language.".inc.php");
include ($cfg["path"]["contenido"].$cfg["path"]["includes"] . "functions.general.php");
$oldpwd = getcwd();
chdir($cfg["path"]["contenido"].$cfg["path"]["cronjobs"]);
include ($cfg["path"]["contenido"].$cfg["path"]["includes"] . "pseudo-cron.inc.php");
chdir($oldpwd);
$db = new DB_Contenido;
if ($cfgClient["set"] != "set")
{
$sql = "SELECT
idclient,
frontendpath,
htmlpath,
errsite_cat,
errsite_art
FROM
".$cfg["tab"]["clients"];
$db->query($sql);
while ($db->next_record())
{
$cfgClient["set"] = "set";
$cfgClient[$db->f("idclient")]["path"]["frontend"] = $db->f("frontendpath");
$cfgClient[$db->f("idclient")]["path"]["htmlpath"] = $db->f("htmlpath");
$errsite_idcat[$db->f("idclient")] = $db->f("errsite_cat");
$errsite_idart[$db->f("idclient")] = $db->f("errsite_art");
$cfgClient[$db->f("idclient")]["images"] = $db->f("htmlpath")."images/";
$cfgClient[$db->f("idclient")]["upload"] = "upload/";
$cfgClient[$db->f("idclient")]["htmlpath"]["frontend"] = $cfgClient[$db->f("idclient")]["path"]["htmlpath"];
$cfgClient[$db->f("idclient")]["upl"]["path"] = $cfgClient[$db->f("idclient")]["path"]["frontend"]."upload/";
$cfgClient[$db->f("idclient")]["upl"]["htmlpath"] = $cfgClient[$db->f("idclient")]["htmlpath"]["frontend"]."upload/";
$cfgClient[$db->f("idclient")]["upl"]["frontendpath"] = "upload/";
$cfgClient[$db->f("idclient")]["css"]["path"] = $cfgClient[$db->f("idclient")]["path"]["frontend"] . "css/";
$cfgClient[$db->f("idclient")]["js"]["path"] = $cfgClient[$db->f("idclient")]["path"]["frontend"] . "js/";
}
}
$sql = "SELECT
idlang,
encoding
FROM
".$cfg["tab"]["lang"];
$db->query($sql);
while ($db->next_record())
{
$encoding[$db->f("idlang")] = $db->f("encoding");
}
// Sprache wechseln
if (isset($changelang)) $lang = $changelang;
// Client wechseln
if (isset($changeclient)){
$client = $changeclient;
unset($lang);
}
// Client initialisieren
if (!isset($client)) {
//load_client defined in frontend/config.php
$client = $load_client;
}
// Initialize language
if (!isset($lang)) {
//if is an entry load_lang in frontend/config.php use it, else use the first language of this client
if(isset($load_lang)){
//load_client is set in frontend/config.php
$lang = $load_lang;
}else{
$sql = "SELECT
A.idlang
FROM
".$cfg["tab"]["clients"]." AS A,
".$cfg["tab"]["lang"]." AS B
WHERE
idclient='$client' AND
A.idlang=B.idlang AND
B.active='1'
LIMIT
0,1";
$db->query($sql);
$db->next_record();
$lang = $db->f("idlang");
}
}
if (strlen($_GET["stop"]) == 32)
{
$loc .= "&stop=".$_GET["stop"];
}
if (strlen($_GET["goon"]) == 32){
$loc .= "&goon=".$_GET["goon"];
}
if (strlen($_GET["unsubscribe"]) == 32)
{
$loc .= "&unsubscribe=".$_GET["unsubscribe"];
}
if (strlen($_GET["confirm"]) == 32)
{
$loc .= "&confirm=".$_GET["confirm"];
}
header ("Location: ".$cfgClient[$client]["path"]["htmlpath"]."front_content.php?idcatart=$targetidcatart".$loc);
?>
Code: Alles auswählen
<?php
$from = "Newsletter <newsletter@IhreDomain.de>";
$confirmText = "Sehr geehrter Interessent,\n um Ihre Teilnahme am Newsletter zu bestätigen, klicken Sie bitte auf untenstehenden Link:";
if ($action == "subscribe")
{
$sql = "SELECT idnewsrcp FROM ".$cfg["tab"]["news_rcp"] ." WHERE email = '$email' AND idclient='$client' AND idlang='$lang'";
$db->query($sql);
if (!$db->next_record())
{
$body = $confirmText."\n".$cfgClient[$client]["path"]["htmlpath"]."news.php?confirm=".md5($email)."\n\n";
$sql = "INSERT INTO ".$cfg["tab"]["news_rcp"] ." SET idnewsrcp = '".$db->nextid($cfg["tab"]["news_rcp"])."', idclient='$client', idlang='$lang', email='$email', name='$email', deactivated='1'";
$db->query($sql);
mail("$email", "Newsletter-Bestätigung", "$body", 'From: '.$from."\n"."X-Mailer: Contenido [PHP/" . phpversion()."]");
echo "Sehr geehrter Interessent,<br><br>es wurde Ihnen eine E-Mail geschickt, um Ihre Teilnahme am Newsletter zu bestätigen.";
} else {
echo "Diese E-Mail-Addresse ist bereits für den Newsletter eingetragen.";
}
}
if (strlen($confirm) == 32)
{
$sql = "SELECT idnewsrcp, email FROM ".$cfg["tab"]["news_rcp"] ." WHERE idclient='$client' AND idlang='$lang' AND deactivated = 1";
$db->query($sql);
while ($db->next_record())
{
if ($confirm == md5($db->f("email")))
{
$sql = "UPDATE " .$cfg["tab"]["news_rcp"] ." SET deactivated = '0' WHERE idnewsrcp = '".$db->f("idnewsrcp")."'";
$db->query($sql);
echo "Sie wurden nun in den Newsletter aufgenommen.";
}
}
}
if (strlen($stop) == 32)
{
$sql = "SELECT idnewsrcp, email FROM ".$cfg["tab"]["news_rcp"] ." WHERE idclient='$client' AND idlang='$lang'";
$db->query($sql);
while ($db->next_record())
{
if ($stop == md5($db->f("email")))
{
$sql = "UPDATE " .$cfg["tab"]["news_rcp"] ." SET deactivated = '1' WHERE idnewsrcp = '".$db->f("idnewsrcp")."'";
$db->query($sql);
echo "Sie wurden von der Newsletterverteilung ausgenommen.";
}
}
}
if (strlen($goon) == 32)
{
$sql = "SELECT idnewsrcp, email FROM ".$cfg["tab"]["news_rcp"] ." WHERE idclient='$client' AND idlang='$lang'";
$db->query($sql);
while ($db->next_record())
{
if ($goon == md5($db->f("email")))
{
$sql = "UPDATE " .$cfg["tab"]["news_rcp"] ." SET deactivated = '0' WHERE idnewsrcp = '".$db->f("idnewsrcp")."'";
$db->query($sql);
echo "Der Newsletter wird nun wieder an Sie verschickt.";
}
}
}
if (strlen($unsubscribe) == 32)
{
$sql = "SELECT idnewsrcp, email FROM ".$cfg["tab"]["news_rcp"] ." WHERE idclient='$client' AND idlang='$lang'";
$db->query($sql);
while ($db->next_record())
{
if ($unsubscribe == md5($db->f("email")))
{
$sql = "DELETE FROM " .$cfg["tab"]["news_rcp"] ." WHERE idnewsrcp = '".$db->f("idnewsrcp")."'";
$db->query($sql);
echo "Sie wurden nun aus unserer Empfängerdatenbank entfernt.";
}
}
}
?>
Code: Alles auswählen
<?php
$newsletterIDCatArt = 20;
?>
<form name="formsearch" method="post" action="front_content.php">
<input type="hidden" name="idcatart" value="<?php echo $newsletterIDCatArt; ?>">
<input name="email" type="text">
<input type="hidden" name="action" value="subscribe">
<input type="submit" value="Anmelden!">
</form>
Code: Alles auswählen
<?
/******************************************
* File : include.newsletter_send.php
* Project : Contenido
* Descr : Newsletter Send Function
*
* Author : Timo A. Hummel
* Created : 10.05.2003
* Modified : 10.05.2003
*
* © four for business AG
*****************************************/
if(!$perm->have_perm_area_action($area))
{
$notification->displayNotification("error", "Keine Berechtigung");
} else {
if ( !isset($newsid))
{
} else {
$sql = "SELECT * FROM ".$cfg["tab"]["news"] ." WHERE idnews='$newsid'";
$db->query($sql);
$db->next_record();
$from = $db->f("newsfrom");
$subject = $db->f("subject");
$message = $db->f("message");
$date = $db->f("newsdate");
$dateday = $date[8].$date[9].".".$date[5].$date[6].".".$date[0].$date[1].$date[2].$date[3];
$time = $date[11].$date[12].":".$date[14].$date[15].":".$date[17].$date[18];
$sql = "SELECT * FROM ". $cfg["tab"]["news_rcp"] ." WHERE deactivated=0 AND idclient='$client'";
$db->query($sql);
$i = 0;
$number = $db->num_rows();
$message = str_replace("MAIL_NUMBER", "$number", $message);
$message = str_replace("MAIL_DATE", "$dateday", $message);
$message = str_replace("MAIL_TIME", "$time", $message);
//$path = $c
$sql = "SELECT
idclient,
frontendpath,
htmlpath,
errsite_cat,
errsite_art
FROM
".$cfg["tab"]["clients"] ." WHERE idclient='$client'";
$db2 = new DB_Contenido;
$db2->query($sql);
$db2->next_record();
$path = $db2->f("htmlpath"). "news.php?";
while ($db->next_record()) {
$to = $db->f("email");
$name = $db->f("name");
$message2 = str_replace("MAIL_NAME", "$name", $message);
$message3 = str_replace("MAIL_UNSUBSCRIBE", $path."unsubscribe=".md5($to), $message2);
$message4 = str_replace("MAIL_STOP", $path."stop=".md5($to), $message3);
$message5 = str_replace("MAIL_GOON", $path."goon=".md5($to), $message4);
if (!mail("$to", "$subject", "$message5\n\n$foot", 'From: '.$from."\n"."X-Mailer: Contenido [PHP/" . phpversion())) {
$notsend .= $lngNews["mailcouldnotbesend1"].$to.$lngNews["mailcouldnotbesend2"] . "<br>";
} else {
$i = $i +1;
}
}
$notification->displayNotification("info", $notsend . $lngNews["newslettersend1"].$i.$lngNews["newslettersend2"]."<br>");
}
}
?>