Seite 2 von 2
Verfasst: Mo 25. Feb 2008, 17:14
von OliverL
Hab was NEUES gefunden!!
Plugin-STORE im User-Import
In allen store-Functions wird $recipient in die Funktion geholt.
Verwendet man aber den User-Importer Existiert dieses Objekt nicht sondern $oRecipient.
Auszeitgründen hab ich das gemacht:
Code: Alles auswählen
global $recipient;
global $oRecipient;
if( is_object( $recipient ) ) { // Edit
$recipient->setProperty( ... );
}
elseif( is_object( $oRecipient ) ) { // Data-Import
$oRecipient->setProperty( ... );
}
"Suche in" ohne Plugin-Felder
beim FEU-Menü werden die 'wantedVariables' als "Suche in"-Felder angezeigt. (Auch hier leider aus Zeitgründen kein Lösungsvorschlag)
mfg
und viel spass
OliL
Verfasst: Sa 15. Mär 2008, 19:44
von HerrB
"Suche in" ohne Plugin-Felder
beim FEU-Menü werden die 'wantedVariables' als "Suche in"-Felder angezeigt. (Auch hier leider aus Zeitgründen kein Lösungsvorschlag)
Also für die FEUser kann man diesen Effekt explizit deaktivieren, da er bei relativ wenigen Usern mit relativ wenigen Plugins zu einem völligen Zusammenbruch des Bereichs führt.
Ich weiß gerade nicht, wie Dein Wunsch aussieht: Dies bei FEUser deaktivieren? Dann siehe docs/techref/backend.
Bei Empfängern ergänzen? Aktuell: No way, das führt zu den gleichen Performance-Problemen... und das grundsätzlich zu beheben, ist deutlich aufwendig.
Gruß
HerrB
Verfasst: Mo 17. Mär 2008, 08:40
von OliverL
Moin,
1. Ja, es wäre mein Wunsch gewesen das zu ergänzen, aber die Begründung reicht mir auch.
2. zum Store-Problem reicht mir die Antwort aus:
http://contenido.org/forum/viewtopic.ph ... 996#114996
THX @ HerrB
Oli
PS.: Ansonsten ist der neue Newsletter der Geiste! Ich freu mich jedes mal wenn ich ihn sehe.
Verfasst: Mi 30. Apr 2008, 11:37
von funomat
Hallo HerrB,
ich habe nun endlich mal Zeit gefunden den von mir im November (!!!!) geposteten Fehler zu suchen. Und siehe da, ich habe den Fehler sogar gefunden.
In der Datei class.newsletter.jobs.php findet man in Zeile ~407 folgende Anweisung:
und in Zeile ~427
Das steht hier aber an der falschen Stelle!!
Hier mal die komplette Schleife ab Zeile ~374:
Code: Alles auswählen
while ($oLog = $oLogs->next())
{
$iCount++;
$oLog->set("status", "sending");
$oLog->store();
$sRcpMsgText = $sMessageText;
$sRcpMsgHTML = $sMessageHTML;
$sKey = $oLog->get("rcphash");
$sEMail = $oLog->get("rcpemail");
$bSendHTML = false;
if ($oLog->get("rcpnewstype") == 1) {
$bSendHTML = true; // Recipient accepts html newsletter
}
if (strlen($sKey) == 30) // Prevents sending without having a key
{
$sRcpMsgText = str_replace("{KEY}", $sKey, $sRcpMsgText);
$sRcpMsgText = str_replace("MAIL_MAIL", $sEMail, $sRcpMsgText);
$sRcpMsgText = str_replace("MAIL_NAME", $oLog->get("rcpname"), $sRcpMsgText);
// Replace message tags (html message)
if ($bIsHTML && $bSendHTML)
{
$sRcpMsgHTML = str_replace("{KEY}", $sKey, $sRcpMsgHTML);
$sRcpMsgHTML = str_replace("MAIL_MAIL", $sEMail, $sRcpMsgHTML);
$sRcpMsgHTML = str_replace("MAIL_NAME", $oLog->get("rcpname"), $sRcpMsgHTML);
}
if ($bPluginEnabled)
{
// Don't change name of $recipient variable as it is used in plugins!
$recipient = new Recipient;
$recipient->loadByPrimaryKey($oLog->get("idnewsrcp"));
foreach ($aPlugins as $sPlugin => $aPluginVar)
{
foreach ($aPluginVar as $sPluginVar)
{
// Replace tags in text message
$sRcpMsgText = str_replace("MAIL_".strtoupper($sPluginVar), call_user_func("recipients_".$sPlugin."_getvalue", $sPluginVar), $sRcpMsgText);
// Replace tags in html message
if ($bIsHTML && $bSendHTML) {
if (function_exists("recipients_".$sPlugin."_getHTMLValue")) {
$sRcpMsgHTML = str_replace("MAIL_".strtoupper($sPluginVar), call_user_func("recipients_".$sPlugin."_getHTMLValue", $sPluginVar), $sRcpMsgHTML);
} else {
$sRcpMsgHTML = str_replace("MAIL_".strtoupper($sPluginVar), call_user_func("recipients_".$sPlugin."_getvalue", $sPluginVar), $sRcpMsgHTML);
}
}
}
}
unset($recipient); }
$oMail = new phpmailer();
$oMail->CharSet = $sEncoding;
$oMail->IsHTML($bIsHTML && $bSendHTML);
$oMail->From = $sFrom;
$oMail->FromName = $sFromName;
$oMail->AddAddress($sEMail);
$oMail->Mailer = "mail";
$oMail->Subject = $sSubject;
if ($bIsHTML && $bSendHTML)
{
$oMail->Body = $sRcpMsgHTML;
$oMail->AltBody = $sRcpMsgText."\n\n";
} else {
$oMail->Body = $sRcpMsgText."\n\n";
}
if ($oMail->Send()) {
$oLog->set("status", "successful");
$oLog->set("sent", date("Y-m-d H:i:s"), false);
} else {
$oLog->set("status", "error (sending)");
}
} else {
$oLog->set("status", "error (key)");
}
$oLog->store();
}
Das ganze müsste man hiermit ersetzen:
Code: Alles auswählen
$recipient = new Recipient; # edit by funomat TG
while ($oLog = $oLogs->next())
{
$iCount++;
$oLog->set("status", "sending");
$oLog->store();
$sRcpMsgText = $sMessageText;
$sRcpMsgHTML = $sMessageHTML;
$sKey = $oLog->get("rcphash");
$sEMail = $oLog->get("rcpemail");
$bSendHTML = false;
if ($oLog->get("rcpnewstype") == 1) {
$bSendHTML = true; // Recipient accepts html newsletter
}
if (strlen($sKey) == 30) // Prevents sending without having a key
{
$sRcpMsgText = str_replace("{KEY}", $sKey, $sRcpMsgText);
$sRcpMsgText = str_replace("MAIL_MAIL", $sEMail, $sRcpMsgText);
$sRcpMsgText = str_replace("MAIL_NAME", $oLog->get("rcpname"), $sRcpMsgText);
// Replace message tags (html message)
if ($bIsHTML && $bSendHTML)
{
$sRcpMsgHTML = str_replace("{KEY}", $sKey, $sRcpMsgHTML);
$sRcpMsgHTML = str_replace("MAIL_MAIL", $sEMail, $sRcpMsgHTML);
$sRcpMsgHTML = str_replace("MAIL_NAME", $oLog->get("rcpname"), $sRcpMsgHTML);
}
if ($bPluginEnabled)
{
// Don't change name of $recipient variable as it is used in plugins!
// $recipient = new Recipient; # edit by funomat TG
$recipient->loadByPrimaryKey($oLog->get("idnewsrcp"));
foreach ($aPlugins as $sPlugin => $aPluginVar)
{
foreach ($aPluginVar as $sPluginVar)
{
// Replace tags in text message
$sRcpMsgText = str_replace("MAIL_".strtoupper($sPluginVar), call_user_func("recipients_".$sPlugin."_getvalue", $sPluginVar), $sRcpMsgText);
// Replace tags in html message
if ($bIsHTML && $bSendHTML) {
if (function_exists("recipients_".$sPlugin."_getHTMLValue")) {
$sRcpMsgHTML = str_replace("MAIL_".strtoupper($sPluginVar), call_user_func("recipients_".$sPlugin."_getHTMLValue", $sPluginVar), $sRcpMsgHTML);
} else {
$sRcpMsgHTML = str_replace("MAIL_".strtoupper($sPluginVar), call_user_func("recipients_".$sPlugin."_getvalue", $sPluginVar), $sRcpMsgHTML);
}
}
}
}
// unset($recipient); # edit by funomat TG
}
$oMail = new phpmailer();
$oMail->CharSet = $sEncoding;
$oMail->IsHTML($bIsHTML && $bSendHTML);
$oMail->From = $sFrom;
$oMail->FromName = $sFromName;
$oMail->AddAddress($sEMail);
$oMail->Mailer = "mail";
$oMail->Subject = $sSubject;
if ($bIsHTML && $bSendHTML)
{
$oMail->Body = $sRcpMsgHTML;
$oMail->AltBody = $sRcpMsgText."\n\n";
} else {
$oMail->Body = $sRcpMsgText."\n\n";
}
if ($oMail->Send()) {
$oLog->set("status", "successful");
$oLog->set("sent", date("Y-m-d H:i:s"), false);
} else {
$oLog->set("status", "error (sending)");
}
} else {
$oLog->set("status", "error (key)");
}
$oLog->store();
}
unset($recipient); # edit by funomat TG
Die Änderungen sind mit
edit by funomat TG gekennzeichnet.
Das selbe Problem dürfte in der 4.8.x auch auftreten, da der Code an der Stelle nicht verändert wurde.
Gruß,
funomat
Verfasst: Fr 9. Mai 2008, 18:39
von HerrB
Ähm, also wenn es bei Dir funktioniert, super. Allerdings ist die Objekterzeugung und -zerstörung innerhalb der Schleife durchaus korrekt, da das Objekt außerhalb nicht verwendet wird.
Ich teste es gerne nochmal bei mir, aber Deine Änderung hat nur zur Folge, dass nicht jedesmal ein neues Objekt erzeugt wird, sondern das erste "recycelt" wird.
Gruß
HerrB
Verfasst: Fr 9. Mai 2008, 18:50
von funomat
Hallo HerrB,
ich weiß ja nicht ob Du Dich noch an den Fehler erinnern kannst. Das Problem war, dass beim Versenden von Newslettern mit Daten aus dem Plugin, immer z.B. die gleiche Anrede für alle Newsletter verwendet wurde. Das heißt, wenn der erste Empfänger eine Frau war, wurden auch alle anderen Empfänger mit Sehr geehrte Frau angesprochen.
Nur mit dieser Änderung hat das ganze funktioniert!
Beim versenden von Testnewslettern an mehrere Empfänger trat das Problem nicht auf.
Gruß,
funomat
Verfasst: Di 26. Aug 2008, 13:02
von malsdgtac
Funktioniert das Plugin auch noch beim Newsletter der im Contenido 4.8.7 dabei ist?
Re: Plugin: Empfänger/Recipients
Verfasst: Mo 5. Okt 2009, 11:55
von newimagine
Hallo Zusammen,
also - habe das Plugin mal für die 4.8.12er Version versucht einzusetztn.
Das Anzeigen und Editieren eines zusätzlichen Feldes (in meinem Fall "Anrede") geht ohne Probleme.
Von daher wird es auch kein Problem sein dies in das Frontend bei der Newsletteranmeldung mit aufzunehmen.
Was allerdings im Moment nicht funktioniert ist die Ausgabe des Wertes im jeweiligen Newsletter.
@HerrB: Hast Du da eine Idee?
Beziehungsweise gerne auch eine Idee von jemandem Anders?
Danke!
Viele Grüße,
Christian
Re: Plugin: Empfänger/Recipients
Verfasst: Mo 5. Okt 2009, 12:02
von newimagine
OK. Manchmal sollte man die Augen auf machen:
Unter Administration > System > Experteneinstellungen
muss der Wert "newsletter-recipients-plugin" auf true gesetzt werden bzw. wie folgt angelegt sein:
Typ: newsletter
Name: newsletter-recipients-plugin
Wert: true
Dann funktioniert es auch...
Viele Grüße,
Christian
Re: Plugin: Empfänger/Recipients
Verfasst: Fr 23. Okt 2009, 09:15
von newimagine
Und doch gibt es Probleme.
Wenn ich den HTML-Newsletter versende und als Tag:
einsetze, bekomme ich in der Ausgabe des Newsletters:
:: anrede: anrede ::
Jemand ne Idee?
Danke & viele Grüße,
Christian
Kleiner Nachtrag: Im Backend wird bei den möglichen Tags angegeben:
- Zusätzliche Tags aus Empfänger-Plugins:
[mail name="anrede" type="text"][/mail]
Da fehlt
MAIL_ANREDE drin. Eventuell hilft das weiter?
Danke!