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 :lol:
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:

Code: Alles auswählen

$recipient = new Recipient;
und in Zeile ~427

Code: Alles auswählen

unset($recipient);
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:

Code: Alles auswählen

[mail name="anrede" type="text"]MAIL_ANREDE[/mail]
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!