definiert (welche Abschnitt ist für mein Anliegen zuständig?)
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.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen! Tools◀ [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner] ♦ [PlugIns]
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:
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!
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)
definiert sind, problemlos an den Admin mit ID: 2 PNs senden dürfen. In allen anderen Fällen soll wie gehabt
Code:
error_no_permission
greifen
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
in der ./prvate.php pauschal zu erlauben.
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.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen! Tools◀ [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner] ♦ [PlugIns]
14.03.2019, 15:08 (Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2019, 15:55 von itsmeJAY.)
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.
Dies ist notwendig, damit User in der Usergruppe mit ['cansendpms'] == 0 nicht sofort eine ERROR-Meldung bekommen sobald diese eine Nachricht verfassen möchten.
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,
JAYZusatzinformation:
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) { $blacklisted = "<div class=\"alert\"> <span class=\"closebtn\" onclick=\"this.parentElement.style.display='none';\">×</span> <strong>Achtung!</strong> Du wurdest für private Nachrichten gesperrt und kannst private Nachrichten nur an einen Administrator versenden. </div>"; }
und dann kannst du in Templates & Styles -> Private Messaging Templates -> private
die Variable {$blacklisted} verwenden. Ich würde diese UNTER {$limitwarning} einfügen!
14.03.2019, 18:59 (Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2019, 19:45 von Gerti.)
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
ersetzte habe. Es funktioniert zumindest fehlerfrei.
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!
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen! Tools◀ [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner] ♦ [PlugIns]
14.03.2019, 19:16 (Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2019, 19:17 von itsmeJAY.)
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.
(14.03.2019, 18: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 define('PM_ADMIN_ID', 2);
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...
15.03.2019, 08:26 (Dieser Beitrag wurde zuletzt bearbeitet: 15.03.2019, 08:35 von Gerti.)
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.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen! Tools◀ [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner] ♦ [PlugIns]