Newsletter erzeugen -> nichts passiert(bei Redakteuren)

Gesperrt
n0Fear
Beiträge: 12
Registriert: Fr 29. Apr 2005, 13:42
Kontaktdaten:

Newsletter erzeugen -> nichts passiert(bei Redakteuren)

Beitrag von n0Fear » Di 27. Sep 2005, 08:53

Hallo,

ich habe gerade die CSV von vorletzte Woche installiert und wollte dessen Newsletter-Funktionalität nutzen. Funktioniert soweit auch super nur können benutzer die keine Admin-Rechte haben keinen "Newsletter erzeugen", obwohl Sie dieses Recht im Rechtemanagement zugewiesen bekommen haben.

In welcher Datei müsste man gucken um, das zu beheben oder ist das nur bei mir so ?

MFG

emergence
Beiträge: 10600
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 27. Sep 2005, 09:17

hmm...

mal kurz angesehen -> include.newsletter_edit.php

da findet sich reihenweise (? 3x)
$perm->have_perm_area_action("newsletters", "...

die area ist aber sicher nicht newsletters sondern eher news
ob es andere positionen gibt wo das falsch ist kann ich momentan nicht sagen...., da muss HerrB noch was dazu sagen...

ich verschieb das mal nach bugs...
*** make your own tools (wishlist :: thx)

n0Fear
Beiträge: 12
Registriert: Fr 29. Apr 2005, 13:42
Kontaktdaten:

Beitrag von n0Fear » Di 27. Sep 2005, 09:37

jop liegt daran.

Hier der komplette Fix:

include.newsletter_edit.php Zeile 27-39

Code: Alles auswählen

if ($action == "news_create" && $perm->have_perm_area_action("news", "news_create")) {
	$newsletter = $newsletters->create(i18n("-- new newsletter --"));
	$idnewsletter = $newsletter->get("idnews");
	$page->setReload();		
} else if ($action == "news_duplicate" && $perm->have_perm_area_action("news", "news_create")) {
	$newsletter = $newsletters->duplicate($idnewsletter);
	$idnewsletter = $newsletter->get("idnews");
	$page->setReload();		
} else if ($action == "news_delete" && $perm->have_perm_area_action("news", "news_delete")) {
	$newsletters->delete($idnewsletter);
	$idnewsletter = 0;
	$page->setReload();
}

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Di 27. Sep 2005, 17:41

Cool, der Fehler ist da schon seid biblischen Zeiten drin. Danke, korrigiert.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

n0Fear
Beiträge: 12
Registriert: Fr 29. Apr 2005, 13:42
Kontaktdaten:

Beitrag von n0Fear » Mo 10. Okt 2005, 09:40

so hab nochn Fehler gefunden. Der Messagetext des Newsletters wird escaped in die DB geschrieben aber beim auslesen bzw versenden nicht wieder deescaped.

Hier der Fix:

include.newsletter_edit.php @ 109

Code: Alles auswählen

	$message	= new cHTMLTextarea("message", stripslashes($newsletter->get("message")),80,20);
class.newsletter.php @ 224

Code: Alles auswählen

	$message = stripslashes($this->get("message"));
MFG

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mo 10. Okt 2005, 10:05

Mmmh? Das weist aber IMHO mehr auf einen Mangel in der verwendeten Klasse hin. Die Message wird über $newsletter->set("message", $message); gespeichert und über $newsletter->get("message") zurückgeholt.

Eigentlich sollte sich die Klasse, die set und get zur Verfügung stellt, darum kümmern. Gucke ich mir nochmal an. Danke.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Di 25. Okt 2005, 11:26

ähm ein kommentar dazu:

set speichert den Wert genauso wie er übergeben wird, also bei einer Übergabe von \"test wird auch \"test in die DB geschriebene und genauso wieder zurückgegeben

grundsätzlich müssen alle werte, die von extern kommen mit stripslashes bearbeitet werden.

früher war es so, daß man (aus der faulheit heraus) einfach den externen Wert in das SQL-Statement gepumpt hat, und es hat eben "zufällig" funktioniert ;)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Di 25. Okt 2005, 11:39

Ähm, so ganz habe ich das noch nicht. Das Problem ist, dass wenn ich "Macs' Weinladen" eingebe, aufgrund des urlencode "Macs\' Weinladen" in der DB steht. urldecode wiederum belässt \', d.h. es kommt "Macs\' Weinladen" raus.

So war auch meine Frage gemeint: get und set sollten IMHO so gestrickt sein, dass das, was reingeht, auch wieder rauskommt (und das ist nicht der Fall).

Deine Aussage bedeutet, dass ich zwar Daten über set einfach so speichern kann, aber alles, was mit get aus der DB kommt, wieder mit stripslashes putzen muss - das soll so sein? Da fummele ich mir ja den Wolf...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Di 25. Okt 2005, 12:38

ähm das kann ich nicht bestätigen...

ich bin zu 99.999% sicher, daß das, was über set eingegeben wird, auch über get so zurückgeliefert wird

wäre das nicht der Fall hätte ich das bei meinen 230932094 Projekten, die die GenericDB auch einsetzen, gemerkt ;)



vielleicht reden wir auch aneinander vorbei: ich meinte, daß wenn du folgendes hast:

Code: Alles auswählen

$objekt->set("feld", $_GET["wert"]);
es nicht funktionieren wird, da PHP über die magic_quotes ein $_GET["wert"] mit slashes versieht

d.h. wenn du externe Daten in die DB speichern willst, mußt du es immer mit

Code: Alles auswählen

$objekt->set("feld", stripslashes($_GET["wert"]));
machen
Deine Aussage bedeutet, dass ich zwar Daten über set einfach so speichern kann, aber alles, was mit get aus der DB kommt, wieder mit stripslashes putzen muss - das soll so sein? Da fummele ich mir ja den Wolf...
Nein eben nicht ;) Ich meinte das gerade andersrum.

Gesperrt