![]() |
Keine PN-Rechte, aber PN an Admin erlauben - Druckversion +- MyBB.de Forum (https://www.mybb.de/forum) +-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html) +--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html) +--- Thema: Keine PN-Rechte, aber PN an Admin erlauben (/thread-36314.html) Seiten: Seiten:
1
2
|
Keine PN-Rechte, aber PN an Admin erlauben - Gerti - 12.03.2019 Hallo Community, im Forum besteht eine/mehrere Gruppe/n, welche/n (aus gutem Grund) keine PNs versenden darf/dürfen. Nun soll es der/den Gruppe/n ohne PN-Recht ermöglicht werden, an die Admins mit Group-ID 4 PNs senden zu können. In der Datei ./private.php iwird die Abfrage der PN-Berechtigung einmal in der Zeile 568 mit PHP-Code: if($mybb->usergroup['cansendpms'] == 0) PHP-Code: if($mybb->input['action'] == "send") Es müsste doch möglich sein, dies zu ergänzen, (ich schreib es jetzt mal Laienhaft) das zusätzli definiert wird: Wenn GID=X and PN=0 dann PN an GUI-4 = OK. Damit Benutzer der Gruppe/n X, welche nicht über PN-Rechte verfügt/en, ausschließlich an die Administratoren (nicht an andere Benutzer) PNs senden. Kann jemand diesen Wunsch nachvollziehen und mitteilen wo was wie anzupassen wäre? Vorab besten Dank für eine Hilfestellung. RE: Keine PN-Rechte, aber PN an Admin erlauben - itsmeJAY - 13.03.2019 Hi, schau mal die Zeilen an: ca. Zeile 2465: PHP-Code: $composelink = ''; ändern zu: PHP-Code: eval("\$composelink = \"".$templates->get("private_composelink")."\";"); ca. Zeile 568 PHP-Code: if($mybb->usergroup['cansendpms'] == 0) ändern zu: PHP-Code: if($mybb->usergroup['cansendpms'] == 0 && $mybb->get_input('to') != "admin") Dann müsste es klappen. Beachte aber, dass du in $mybb->get_input('to') != "admin" die Namen der Admins angeben musst bzw. des Admins, an den es erlaubt ist, Nachrichten zu senden. Ich glaube für Gruppen ist dies komplizierter - müsste ich mir dann nochmal in Ruhe angucken. Dann sollte es eigentlich klappen. Codes ungetestet. Grüße Achja! Und Zeile 683 folgendes auskommentieren: Also ändere PHP-Code: error_no_permission(); zu PHP-Code: //error_no_permission(); RE: Keine PN-Rechte, aber PN an Admin erlauben - itsmeJAY - 14.03.2019 Sorry, ich komm erst jetzt kurz vorm schlafen gehen dazu, folgendes müsste klappen (alles kann so bleiben wie in meinem Beitrag vorher) bis auf: Ersetze Zeile 566 - 571 mit folgendem Code: PHP-Code: if($mybb->input['action'] == "do_send" && $mybb->request_method == "post") Kurze Erklärung: Ich hole mir die ID und die Usergruppe vom eingegeben User aus der Datenbank und speicher diese in $tousergo. Wenn die Usergruppe ungleich 4 ist, wird error_no_permission() aufgerufen - ansonsten nimmt halt alles seinen geregelten Lauf.. Ich weise hier noch einmal (auch für alle anderen Besucher) ausdrücklich darauf hin, dass Bearbeitungen direkt in PHP-Dateien gut überlegt sein sollten! Beim nächsten Update/Upgrade könnten diese überschrieben werden und die Änderungen müssten manuell wieder eingefügt werden. Plugins verhindern dieses!
So, gute Nacht ![]() JAY RE: Keine PN-Rechte, aber PN an Admin erlauben - Gerti - 14.03.2019 Hi, funktioniert leider so nicht. Gebe zu, komme auch etwas durcheinander mit vorstehenden Änderungen. Gegeben ist, das Gruppen, welche mit PHP-Code: $mybb->usergroup['canusepms'] == 0) Code: error_no_permission Vielleicht kannst Du es mir nochmals auflisten und dabei es nur auf eine ID (hier Admin mit ID=2) begrenzen. Dies hat den Vorteil dass man nur die ID (egal aus welcher Gruppe) ändern müsste, wenn ein anderer die PNs, wegen z.B. vorübergehender Zuständigkeit, erhalten soll. Es gilt somit, den Aufruf: Code: https://URL/private.php?action=send&uid=2 Anmerkung: Die Gruppe zu defnieren birgt Probleme, weil in der Gruppe auch mehr User sein können, an wen aus der Gruppe sollte dann die PN gesendet werden. Wenn man dies definiert, sind wir eh wieder beid er "uid" (hier ID 2) Also einfach nur die "uid" (hier die 2) und gut ist. Danke vorab für Dein Engagement. RE: Keine PN-Rechte, aber PN an Admin erlauben - itsmeJAY - 14.03.2019 Hi Gerti, ich habe mir nun die originale private.php runtergeladen und erkläre es anhand dieser Datei nochmals (damit wir keine Zeilennummer unterschiedlich haben). Insgesamt machen wir 3 kleine Schritte. Ich glaube du hast einen Denkfehler. In meiner Änderung wird keine Nachricht direkt an die Gruppe gesendet, sondern es wird überprüft ob der Empfänger der privaten Nachricht in der Usergruppe 4 ist, wenn ja wird sie versendet. Somit kann an jeden Benutzer mit der Usergruppe "4" die PN versendet werden. Fangen wir ganz simpel an: Schritt #1 : Suche in Zeile 2465 nach: PHP-Code: $composelink = ''; und ersetze es mit: PHP-Code: eval("\$composelink = \"".$templates->get("private_composelink")."\";"); Dies ist notwendig, damit User, die keine PN's senden dürfen, trotzdem den Link "Nachricht verfassen" sehen. Schritt #2: Suche in Zeile 683 nach: PHP-Code: if($mybb->usergroup['cansendpms'] == 0) und ersetze es mit: PHP-Code: if($mybb->usergroup['cansendpms'] == 0) Dies ist notwendig, damit User in der Usergruppe mit ['cansendpms'] == 0 nicht sofort eine ERROR-Meldung bekommen sobald diese eine Nachricht verfassen möchten. Schritt #3: Suche in Zeile 566 nach: PHP-Code: if($mybb->input['action'] == "do_send" && $mybb->request_method == "post") und ersetze es mit: PHP-Code: if($mybb->input['action'] == "do_send" && $mybb->request_method == "post") Hier wird nun überprüft, ob der Benutzer (welcher die Nachricht verfasst) die Nachricht versucht abzusenden. Wenn dies der Fall ist, wird der Empfänger in die Variable $touser geschrieben und die Usergruppe des Empfängers wird aus der Datenbank geholt. Wenn die Usergruppe des Empfängers ungleich "4" ist, wird ein ERROR ausgegeben. Ist der Empfänger in Benutzergruppe 4 (und somit Admin) wird die Nachricht normal versendet. Grüße, JAY Zusatzinformation: Wenn du deine Benutzer, welche keine PN versenden dürfen, evtl. darüber informieren möchtest, füge noch folgendes in die private.php ein: PHP-Code: if($mybb->usergroup['cansendpms'] == 0) Folgendes in deine global.css Code: /* Private Nachricht Warnung! - Start */ und dann kannst du in Templates & Styles -> Private Messaging Templates -> private die Variable {$blacklisted} verwenden. Ich würde diese UNTER {$limitwarning} einfügen! Siehe Screenshot. RE: Keine PN-Rechte, aber PN an Admin erlauben - Gerti - 14.03.2019 Habe es nach Anleitung eingebaut. Ergebnis: Sobald der User mit Anwendergruppe welche keine PNs senden darf auf "User eine private Nachricht senden" wird das Template von error_no_permission angezeigt. Erkommt somit gar nicht dazu eine PN zu verfassen. Auch hat der User, da ihm das PN-Recht entzogen wurde, nicht die Möglichekit zu seinem Order "Private Nachrichten (Gesendte und erhaltene) einzusehen" Ich habe es jetzt erst mal so gelöst, das ich das error_no_permission in Zeile 42 auskommentiert und mit PHP-Code: eval("\$templatename = \"".$templates->get("templatename")."\";"); Im aufgerufenem Template wird der User darauf hingeweisen das er keine PN versenden darf und enthält einen Link für eine E-Mail zum Admin. Dies hilft mir insoweit, da ich in einigen Textbausteinen einen direkten PN-Link (https://URL/private.php?action=send&uid=2) eingebaut habe und der User bei Bedarf sein Anliegen zumindest an den Admin kund tun kann. In member_template_profile habe ich für die Usergruppen, welche keine PNs versenden dürfen die Anzeige "User eine private Nachricht senden" mit einer IF-Bedingung auskommentiert. Verstehe ich eh nicht das User, denen die PN-Rechte entzogen wurden beim Ansehen eines Profils die Möglichkeit eine private Nachricht zu senden angezeigt wird, aber korrekterweise nicht in den benutzerdefinierten Bereich der privaten Nachrichten kommen. Für Dein eingebrachtes Engagement einen ganz herzlichen Dank! RE: Keine PN-Rechte, aber PN an Admin erlauben - itsmeJAY - 14.03.2019 Hi, wenn du willst schick mir deine private.php - ich guck mir die mal an. Ich habe mein Code 3x getestet und es funktioniert einwandfrei. Hast du denn überhaupt die private.php aufgerufen und versucht darüber die PN zu versenden oder bist du über das Benutzerprofil gegangen? Wie gesagt, bei mir funktioniert es. Edit: Ich habs jetzt auch über das Profil versucht, klappt auch. Irgendein Fehler muss bei dir vorliegen. RE: Keine PN-Rechte, aber PN an Admin erlauben - doylecc - 14.03.2019 (14.03.2019, 19:59)Gerti schrieb: Auch hat der User, da ihm das PN-Recht entzogen wurde, nicht die Möglichekit zu seinem Order "Private Nachrichten (Gesendte und erhaltene) einzusehen" Dann darf die Usergruppe nicht nur keine PNs senden, sondern das PN System gar nicht erst benutzen. Bei "Kann das Private Nachrichten-System nutzen" muss in den Gruppeneinstellungen der Haken gesetzt sein, sonst gibt es gar keine Chance, dass es funktioniert. ----------- Falls du nicht so viel in der private.php verändern möchtest, kannst du auch mal das angehängte Plugin ausprobieren. Einfach hochladen und aktivieren. Es fügt für User, die sonst keine PNs senden dürfen, einen Link ein: Die User-ID des Empfängers muss im Plugin festgelegt werden (hier ist es die ID 2) PHP-Code: // Lege die Benutzer-ID des Admins fest, an den PN's gesendet werden dürfen RE: Keine PN-Rechte, aber PN an Admin erlauben - itsmeJAY - 14.03.2019 Das stimmt natürlich. Mein Code funktioniert, solltest du die Checkbox "Kann Private Nachrichten senden" deaktiviert haben. Wenn du aber das ganze System deaktivierst, klappts natürlich nicht... RE: Keine PN-Rechte, aber PN an Admin erlauben - Gerti - 15.03.2019 Zunächst einmal besten Dank für Euer Engagement. An das "Kann das Private Nachrichten-System nutzen" habe ich gar nicht gedacht (*michschäm). Die Lösung als Plugin ist natürlich die optimalere Lösung wodurch bei MyBB-Updates das "Denke auch an die Anpassung der ./private.php" erspart bleibt. |