Mailversand an Rollen: irreführende Help

Hast du einen Fehler in der aktuellen Version gefunden ? Diesen kannst du uns hier mitteilen und uns bei der Fehlersuche helfen.
Antworten
Teton
Beiträge: 7
Registriert: 9. Mär 2007, 17:20

Mailversand an Rollen: irreführende Help

Beitrag von Teton »

Hallo zusammen

Versuche gerade, ein Newsletter mit Admidio einzurichten.

Bei der Rolle, an die Newsletter geschickt werden sollen, kann man auswählen, wer Mails zusenden darf. Sprich: niemand, nur Rollenmitglieder, nur angemeldete Benutzer etc.

Wenn man mit der Maus auf das Blaue Info-Symbol dahiner drüberfährt, erscheint folgender Text:

Das Rollenrecht Emails an alle Rollen schreiben steht allerdings noch über dieser Einstellung.

Und das stimmt eben nachweislich nicht. Wenn ich bei der Rolle niemand einstelle, kann niemand an diese Rolle ein Mail senden. Auch wenn ich das Recht Emails an alle Rollen schreibe besitze. Der entsprechende Code:

Code: Alles auswählen

if ($g_valid_login == true && $role->getValue("rol_mail_this_role") < 1)
    {
        $g_message->show("invalid");
    }

Wäre gut, wenn entweder der Hilfe-Text oder die Funktionsweise korrigiert wird. Eigentlich fände ich es cool, wenn der Hilfe-Text stimmen würde und die Funktionsweise angepasst wird ;-) Oder habe ich da etwas falsch verstanden?

Ach ja, Admidio 2.1.5
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo,

habs mir grade mal angeschaut und den Fall in der Demoversion nachgebaut. Es funktioniert genau so wie es im Hilfetext steht.

Der Demouser bekommt über die Rolle Vorstand das Recht an alle Rollen Mails zu verschicken. Damit kann er im Maimodul auch an die Rolle Mitglieder als Empfänger auswählen, obwohl die bei den Eigenschaften auf niemand darf Mails zusenden steht.

Gruß Jochen
Teton
Beiträge: 7
Registriert: 9. Mär 2007, 17:20

Beitrag von Teton »

Hallo

Vielen Dank für die Antwort. Bei mir funktionierts genauso nicht. Also die Rolle als Empfänger auswählen kann ich auch, das ist nicht das Problem. Und das Mail schreiben geht auch. Aber wenn ich dann auf Abschicken klicke, kommt die Fehlermeldung (Ungültiger Seitenaufruf!).

Wie im Post geschrieben ist für mich das Verhalten auch erklärbar, wenn man in den Quelltext schaut. Vielleicht poste ich noch kurz die dazugehörenden Kommentare:

Code: Alles auswählen

	
        // Prüfung ob und wer man an die Rolle mails schicken darf:
	// rol_mail_this_role = 
	// 0 : niemand
	// 1 : nur Rollenmitglieder
	// 2 : nur eingeloggte User
	// 3 : jeder
		
	// Falls der User eingeloggt ist darf der Wert 1,2 oder 3 sein
	if ($g_valid_login == true && $role->getValue("rol_mail_this_role") < 1)
    {
        $g_message->show("invalid");
    }
Da sieht man ganz genau: wenn 0 (niemand) ausgewählt wurde, kommt eine Fehlermeldung. Die Berechtigung des eingeloggen Users wird gar nicht überprüft. Müsste meines Erachtens hier eingebaut werden.

@Jochen: oder konntest du das Mail wirklich auch versenden an die Rolle? Wenn du den aktuellen Code verwendest (2.1.5) kann ich es mir nicht erklären, wie das gehen soll...
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo,

ok das versenden selbst hatte ich nicht versucht. Werde es erst später schaffen mir das mal genau anzusehen. In der Zwischenzeit noch eine Frage: Funktioniert der Mailversand an Rollen bei dem das Versenden ausdrücklich über die Eigenschaften erlaubst?

Gruß Jochen
Teton
Beiträge: 7
Registriert: 9. Mär 2007, 17:20

Beitrag von Teton »

Hallo

Ja, Mailversand funktioniert ansonsten.

Hab noch nie was an Admidio programmiert. Wenn du mir kurz sagen kannst, wie ich auf die Rollen des Users zugreifen kann, kann ich das korrigieren. Das Objekt $role enthält ja die Rolle, an die ein Mail gesendet werden soll. Im Objekt $user haben wir den aktuellen user. Jetzt sollten wir irgendwie über alle Rollen loopen, in denen der $user Mitglied ist und dort das Flag rol_mail_to_all prüfen. Weisst du gerade, wo es in admidio ein solches Beispiel hat (loop über alle Rollen des eingeloggten Users?). Sonst suche ich mal danach, was aber sicher länger dauert, als wenn es jemand gerade wüsste...

danke und gruss

teton
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo,

hab grade nochmal rein gesehen die Kontrolle in der Datei mail_send.php ist, wie Du richtig geschrieben hast, nicht so wie sie sein sollte. Hier sollte das auf dem Userobjekt des aktuellen Benutzers die Funktion mailRole() ausgeführt werden. Werde das jetzt auf jeden Fall schon mal als Bug erfassen und dann später den Fix posten. In der nächsten BUG-Fix Version ist er dann draußen.

Gruß Jochen
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo nochmal,

wenn ichs auf die Schnelle richtig überblicke muss der Ausdruck in mail_send.php richtig so heißen:

Code: Alles auswählen

if ($g_valid_login == true && $g_current_user->mailRole($_POST['rol_id']))
    {
        $g_message->show("invalid");
    }
Konnte es allerdings noch nicht kontrollieren. Vielleicht hast Du ja Zeit.

Gruß Jochen
Teton
Beiträge: 7
Registriert: 9. Mär 2007, 17:20

Beitrag von Teton »

Hallo Jochen

Vielen Dank, stimmt fast ;-) Nur noch ein Ausrufezeichen vor den zweiten Ausdruck:

Code: Alles auswählen

if ($g_valid_login == true && !$g_current_user->mailRole($_POST['rol_id']))
{
    $g_message->show("invalid");
}
So funktionierts einwandfrei, habs bei meiner Installation getestet.

Was ich nicht getestet habe: ob man keine Mails versenden kann, falls das Flag bei der Rolle nicht gesetzt ist. Ich habs mit der Rolle Webmaster getestet, da kann ich die Berechtigung für das Versenden von Mails an alle Rollen nicht entfernen. Logisch überlegt (gemäss Code) müsste das aber auch korrekt funktionieren.

Gruss

Teton
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo,

prima. Ich habs jetzt so eingecheckt, die nächste Bugfixversion erscheint dann ohne den Fehler.

Gruß Jochen
Antworten