User_Level hinzufügen
|
|
GordenM82 |
Geschrieben am 19.06.2017 um 10:56
|
![]() Jung Mitglied ![]() Beiträge: 19 Registriert am: 24.09.16 |
Hallo zusammen, ich möchte gerne bei der v7.02.07 ein neues User-Level hinzufügen, KEINE in der Fusion erstellbare Gruppe. Sinn und Zweck des neuen User_levels steht hier nicht zur Diskussion ;) Leider haben mir google und diverse andere Foren / Threads / Posts nicht wirklich weiter gebracht. Welche Dateien (außer die maincore.php) müssten noch geändert werden, dass ich ein neues User_level hinzufügen kann und auch so dann natürlich in der DB hinterlegt und abgefragt wird, wie es bei den anderen Levels der Fall ist. Aktuell gibts ja 4 User_level: 0 (Gast), 101 (Mitglied), 102 (Admin) und 103 (Super-Admin). Ich habe schon verschiede Sachen NUR in der maincore.php versucht, aber wenn ich mich dann einlogge, erscheint die Admin-PW-Abfrage, obwohl es KEIN Admin ist. Die User_Level Nummer habe ich zum testen in der DB manuell geändert. Soweit scheint es ja zu klappen, wenn nicht diese Admin-PW-Abfrage wäre. Probiert habe ich unter anderem: Überall wo in der maincore "iMEMBER" steht umzuschreiben auf "iXXX" und dementsprechend wo "101" steht die Nummer zu ändern, wie zum Beispiel: --schnipp-- Code define("iMEMBER", $userdata['user_level'] >= 101 ? 1 : 0); --schnapp-- --schnipp-- Code } elseif ($userlevel == 103) { return $locale['user3']; --schnapp-- --schnipp-- Code } elseif (iMEMBER && ($group == "0" || $group == "101" )) { return true; --schnapp-- --schnipp-- Code array("103", $locale['user3']), --schnapp-- --schnipp-- Code } elseif ($group_id == "103" ) { return $locale['user3']; exit; --schnapp-- --schnipp-- Code } elseif (iMEMBER) { $res = "($field='0' OR $field='101'"; --schnapp-- So habe ich - wie bereits erwähnt - NUR die maincore geändert und dann fragt der mich nach nach erfolgreichem Einloggen nach Admin-PW. In der "locale/german.php" habe ich "user4" hinzugefügt, also daran scheitert es nicht. Gibts evtl. jemanden, der mir helfen kann, ein User_Level 100 oder 104 (oder welche Nummer auch immer) hinzuzufügen? Ich hoffe ich habs nicht zu kompliziert geschrieben. Über Hilfe würde ich mich freuen :) Herzlichen Dank schonmal im Voraus. Bitte BB-Codes benutzen Bearbeitet von Dat Tunes am 20.06.2017 um 09:33 |
|
|
John Doe |
Geschrieben am 20.06.2017 um 07:01
|
![]() Veteran Mitglied ![]() Beiträge: 878 Registriert am: 23.10.13 |
Naja, die Nummer des Userlevel ist nicht wirklich egal! Sie sollte schon unter 102 liegen, sonst funktionieren die ganzen Abfragen bezüglich der Admins nicht mehr. Soll z.B. deine XXXXX mehr Rechte haben als ein Mitglied und weniger als ein Admin, so müsste diese Nummer zwischen 101 und 102 liegen, was nicht geht. Also müssten Mitglieder die 100 bekommen und deine XXXXX die 101. Auch sind da mehrere Dateien zu ändern, die ich leider nicht alle weiß und du müsstest eine Menge Infusionen anpassen! Es gibt bereits ein fertiges Installationspaket, welches mit Moderator und Supermoderator erweitert wurde. Das nennt sich Chrome Fusion und ist hier zu finden: http://chrome-fusion.de/downloads.php...nload_id=1 Vielleicht hilft dir das weiter, ich hab es allerdings nie getestet. Und jetzt komme ich zu den Nebenwirkungen und doch auf den Sinn des Ganzen. Nebenwirkungen solch einer Modifikation sind klar: 1. eine Menge Arbeit mit den Anpassungen von Core und Infusionen. 2. dir kann in den meisten Foren nicht mehr geholfen werden, weil dort vom Standart ausgegangen wird! Daher stellt sich schon die Frage, ob es Sinn macht oder man das geplante nicht doch anders umsetzen kann! |
|
|
GordenM82 |
Geschrieben am 20.06.2017 um 10:14
|
![]() Jung Mitglied ![]() Beiträge: 19 Registriert am: 24.09.16 |
Hallo und danke für die Rückmeldung. Sorry, hatte vergessen die BB-Codes zu benutzen, danke fürs editieren. Im Endeffekt soll das neue user_level bei mir die gleichen Rechte haben wie ein Mitglied (101), aber quasi nur anders ausgegeben werden (XXX). Dennoch sollen alle vorhandenen Levels erhalten bleiben, sonst wäre es ja einfach "Mitglied" in "XXX" umzubennenen. Danke für den Link, werde ich mir in Kürze mal anschauen. Im Prinzip gehts mir um das "Advanced Online Panel", wo man den Nutzern (Mitglied Farbe1, Admin Farbe2, Superadmin Farbe3) verschiedene Farben geben kann. Wobei ich solangsam vermute, dass im Panel was zu verändern einfacher ist, als ein komplett neues user_level hinzuzufügen. Das Panel habe ich soweit schon abgeändert, dass XXX die Farbe4 bekommt, klappt auch soweit und wird auch in der db hinterlegt etc. Das Problem was ich habe ist, dass ich dort den user_level 104 hinzugefügt habe und beim Einloggen mit dem entsprechendem User die Admin-PW-Info (Sie haben noch kein Admin-PW festgelegt,... usw.) kommt obwohl es kein Admin ist. Code
Ich kann ja schlecht 2x sagen, dass user_level 101 "usercolor" und "xxxcolor" bekommt. Würde vlt. gehen, wenn man "xxx" sagen kann, nur wenn in User-Gruppe X = xxxcolor, sonst usercolor. Da wäre dann die Frage, wie könnte man das machen? Ich möchte mich für das Vermischen der beiden Themen entschuldigen. Falls es hier nun falsch ist, bitte verschieben. Danke. Herzlichen Dank auch schonmal für die Hilfe :) mfg
GordenM82 |
|
|
John Doe |
Geschrieben am 20.06.2017 um 10:33
|
![]() Veteran Mitglied ![]() Beiträge: 878 Registriert am: 23.10.13 |
Wie Harlekin schon richtig erklärt hat... Die 104, die Du angelegt hast, ist höher als 103 (Superadmin), daher bekommst du da auch diese Admin-Passwort Geschichte angezeigt. Ich finds auch ehrlich gesagt ein bisschen "mit Kanonen auf Spatzen schiessen", einen komplett neuen Userlevel reinzufrickeln als evtl doch lieber dieses Panel statt mit Userleveln arbeiten zu lassen einfach auf Groups umzuschreiben. Dazu brauchst Du auch garnicht viel umzuschreiben, sondern änderst im Grunde nur die Abfragen entsprechend: Code if(iGUEST) { $color = $online['online_XXXcolor']; Bearbeitet von John Doe am 20.06.2017 um 14:01 Dieses Mitglied wurde gelöscht!
|
|
|
GordenM82 |
Geschrieben am 21.06.2017 um 01:56
|
![]() Jung Mitglied ![]() Beiträge: 19 Registriert am: 24.09.16 |
Hallo ;) Zitat: Code
will bei mir nicht funktionieren, hatte daraufhin bisschen google gequält und folgendes gefunden: Code
Das habe ich positiv gestestet, das rote habe ich abgeändert / für meine Bedürfnisse angepasst. Ich habe vor, das "user4" aus der global-Datei (../locale/german/global.php) lesen zu lasseen, weil aktuell klappt es zwar mit der Farbe, aber es steht im Panel immer noch "Mitglied" anstatt "XXX". Ob das, was ich vorhabe klappen wird, weiss ich nicht, aber wenn XXXcolor ist soll der User auch als "user4" angezeigt werden und nicht als Mitglied (was user_level 101 entsprechen würde). Mit Programmierung kenne ich mich soweit leider nicht aus, daher die Bitte, mir nochmal unter die Arme zu greifen. Herzlichen Dank :) Bearbeitet von GordenM82 am 21.06.2017 um 02:23 mfg
GordenM82 |
|
|
John Doe |
Geschrieben am 21.06.2017 um 07:44
|
![]() Veteran Mitglied ![]() Beiträge: 878 Registriert am: 23.10.13 |
Code if(checkgroup(XX)) { $color = $online['online_XXXcolor']; } Das kann auch nicht gehen! 1. Legst du im Adminbereich eine Benutzergruppe an. Die Nummer der Benutzergruppe merkst du dir. 2. Fügst du deine User in diese Benutzergruppe 3. probierst du diesen Code in deinem Online Panel: Code if(checkgroup(2)) { $color = $online['online_XXXcolor']; } Die 2 muss du natürlich gegen die Nummer deiner Gruppe austauschen! |
|
|
GordenM82 |
Geschrieben am 21.06.2017 um 10:09
|
![]() Jung Mitglied ![]() Beiträge: 19 Registriert am: 24.09.16 |
Guten Morgen, Zitat: Code
Hatte vergessen dazu zu schreiben, dass ich die Gruppennummer bei dem Beispiel mit "if(checkgroup(XX))" natürlich geändert hatte, funktionierte aber aus welchen Gründen auch immer trotzdem nicht, die User wurden dadurch nicht farbig, weswegen ich dann google gequält hatte und das in meinem vorherigen Post mit "if ((preg_match("/.2/", $data['user_groups']))...usw" probiert habe und es komischerweise so nun auch funktioniert, mit der Ausnahme, dass die User natürlich im user_level 101 (Mitglied) sind, aber ich eigentlich auch möchte - sofern umsetzbar, dass nur bei dieser Gruppe 2 das user_level zwar auf 101 bleibt, sich aber nur der Name ändert von Mitglied in XXX. Hier am Foto wahrscheinlich besser erklärbar: Oben rechts steht der Name und darunter ja der user_level, im Beispiel durch den "preg_match"-Code klappt es mit der Farbe. Das Thema mit der Farbgebung wäre also bei mir soweit durch. Anstatt dem user_level (im Beispiel "Mitglied" soll da ja nun "XXX" stehen. Ich möchte, dass sich nur der Name des user_levels ändert, wenn jemand in dieser Gruppe ist (wäre hier die Gruppe 2). Daher habe ich in der "locale/german/global.php einen "user4" hinzugefügt. Und genau dieser "user4" soll nun abgefragt werden, so dass halt aus "Mitglied" = "XXX" (user4) wird. Wie gesagt: user_level 101 soll so bleiben, und nur für User in der Gruppe 2 soll sich der Name ändern. Hoffe ich habs nicht zu kompliziert geschrieben und man kann nachvollziehen / erahnen, was ich möchte. Herzlichen Dank schonmal ;) mfg
GordenM82 |
|
|
Krelli |
Geschrieben am 24.06.2017 um 00:25
|
![]() Administrator ![]() Inoffizielles DE Updatepack ![]() Beiträge: 577 Registriert am: 01.07.14 |
Der checkgroup Funktion fehlt der Parameter, womit er die ID 2 prüfen soll. checkgroup(2,xxx) bzw. checkgroup(xxx,2) sollte das sein. Weiß jetzt die Reihenfolge nicht aus dem Kopf, müsste aber ersteres sein. Das xxx steht in diesem Fall für $data['user_groups'] Mit deinem preg_match Beispiel würde ich da nicht beginnen, denn es könnte auch mal Usergruppen im 20er Bereich geben, die dann ebenfalls diese Bedingung erfüllen würden. |
|
|
GordenM82 |
Geschrieben am 24.06.2017 um 01:42
|
![]() Jung Mitglied ![]() Beiträge: 19 Registriert am: 24.09.16 |
Zitat: Systemweb schrieb: Der checkgroup Funktion fehlt der Parameter, womit er die ID 2 prüfen soll. checkgroup(2,xxx) bzw. checkgroup(xxx,2) sollte das sein. Weiß jetzt die Reihenfolge nicht aus dem Kopf, müsste aber ersteres sein. Das xxx steht in diesem Fall für $data['user_groups'] Mit deinem preg_match Beispiel würde ich da nicht beginnen, denn es könnte auch mal Usergruppen im 20er Bereich geben, die dann ebenfalls diese Bedingung erfüllen würden. Hallo und danke. Nunja, ich werde definitv nicht in den 20er-Bereich bei den Gruppen kommen, aber danke für den Hinweis. Das für mich nun eigentliche Problem (mein letzter Post) ist aber leider immer noch nicht gelöst. mfg
GordenM82 |
|
|
Krelli |
Geschrieben am 24.06.2017 um 11:24
|
![]() Administrator ![]() Inoffizielles DE Updatepack ![]() Beiträge: 577 Registriert am: 01.07.14 |
Code if ((preg_match("/.2/", $data['user_groups'])) && ($data['user_level'] != "102") && ($data['user_level'] != "103")) { $locale['user4']; $color = $online['online_XXXcolor']; } Gehe doch noch einmal zu der Stelle, wo du folgendes setzen wolltest: Code } elseif ($userlevel == 103) { return $locale['user3']; VOR der Definition für Userlevel 101 (also zwischen Level GAST und Level Mitglied) musst du abfragen, ob Guppen-ID 2 zutrifft und ein return $locale['user4'] setzen, danach erst mit elseif abfragen ob Userlevel 101 zutrifft usw. Ein Hinweis am Rande: Zitat: Optimiert für "Google Chrome" bei einer Auflösung von "1280x1024". ist ein absolutes No-Go für barrierrefreies Web. Man zwingt den Benutzern weder einen bestimmten Browser auf noch legt man sich auf eine solche Auflösung fest. Niemand installiert sich extra den Chrome oder wechselt vom Netbook auf einen größeren PC-Bildschirm, nur weil eure Seite andernfalls nicht voll zur Geltung kommt.Eine Webseite muss mit allen aktuell gängigen Browsern funktionieren und die Auflösung sollte so gewählt werden, dass zumindest der Großteil der Betrachter ohne horizontales Scrollen auskommt. Bearbeitet von Krelli am 24.06.2017 um 11:36 |
|
|
GordenM82 |
Geschrieben am 24.06.2017 um 12:26
|
![]() Jung Mitglied ![]() Beiträge: 19 Registriert am: 24.09.16 |
Zitat: Systemweb schrieb: Unmittelbar davor müssen die Definitionen für Level 0, 101 und 102 sein, Level 104 hast du sicher inzwischen entfernt.Gehe doch noch einmal zu der Stelle, wo du folgendes setzen wolltest: Code } elseif ($userlevel == 103) { return $locale['user3']; VOR der Definition für Userlevel 101 (also zwischen Level GAST und Level Mitglied) musst du abfragen, ob Guppen-ID 2 zutrifft und ein return $locale['user4'] setzen, danach erst mit elseif abfragen ob Userlevel 101 zutrifft usw. Ok, und daran scheitert es bei mir, weil ich mich mit Abfragen erstellen etc. nicht auskenne bzw. nicht weiss, wie die Abfrage auszusehen hat und was dort alles stehen soll/muss. Daher wäre es mir lieber, wenn ich einen fertigen Code hätte, den ich nur einfügen muss. Für die einen ist es ein Kinderspiel Abfragen zu schreiben / ändern, wie auch immer, für mich leider nicht. Ja, Level 104 habe ich mittlerweile entfernt. Zitat: Ein Hinweis am Rande: Zitat: Optimiert für "Google Chrome" bei einer Auflösung von "1280x1024". ist ein absolutes No-Go für barrierrefreies Web. Man zwingt den Benutzern weder einen bestimmten Browser auf noch legt man sich auf eine solche Auflösung fest. Niemand installiert sich extra den Chrome oder wechselt vom Netbook auf einen größeren PC-Bildschirm, nur weil eure Seite andernfalls nicht voll zur Geltung kommt.Eine Webseite muss mit allen aktuell gängigen Browsern funktionieren und die Auflösung sollte so gewählt werden, dass zumindest der Großteil der Betrachter ohne horizontales Scrollen auskommt. Danke für den Hinweis, habe ich bereits entfernt. mfg
GordenM82 |
|
|
Krelli |
Geschrieben am 24.06.2017 um 22:27
|
![]() Administrator ![]() Inoffizielles DE Updatepack ![]() Beiträge: 577 Registriert am: 01.07.14 |
Habe mir die checkgroup Funktion nun genauer angeschaut. Die hat nur den einen Parameter mit der ID, fragt also immer nur nach der Gruppenzugehörigkeit von demjenigen, der das Script gerade aufruft. In diesem Zusammenhang also nutzlos. In der Originaldatei "advanced_online_panel.php" hast du von Zeile 98 -100 folgendes stehen Code if ($data['user_level'] == 103) { $color = $online['online_superadmincolor']; } Code // Bestimmte Usergruppe in anderer Farbe: Ist zwar nicht getestet, müsste aber rein theoretisch zu dem von dir gewünschten Ergebnis führen. Wichtig ist, dass $online['online_XXXcolor'] irgendwo mit dem entsprechenden Farbwert definiert wurde. |
|
|
GordenM82 |
Geschrieben am 24.06.2017 um 22:42
|
![]() Jung Mitglied ![]() Beiträge: 19 Registriert am: 24.09.16 |
Danke dir für deine Mühe, klappt aber leider nicht. Außer die beiden Panels über "dem Advanced Online Panel" ist sonst gar nichts mehr von der HP zu sehen. Ja, ein Farbwert ist deklariert für XXXcolor. Funktioniert aber leider auch nicht. Habe nun wieder zurückgesetzt wie es vorm Test war, also in: Code
mfg
GordenM82 |
|
|
Krelli |
Geschrieben am 24.06.2017 um 22:58
|
![]() Administrator ![]() Inoffizielles DE Updatepack ![]() Beiträge: 577 Registriert am: 01.07.14 |
Code if ((preg_match("/.2/", $data['user_groups'])) && ($data['user_level'] != "102") && ($data['user_level'] != "103")) { "Moderator / DJ"; $color = $online['online_moderatorcolor']; } Code if (preg_match("/.2/", $data['user_groups']) && $data['user_level'] == "101") { $color = $online['online_moderatorcolor']; } |
|
|
GordenM82 |
Geschrieben am 24.06.2017 um 23:17
|
![]() Jung Mitglied ![]() Beiträge: 19 Registriert am: 24.09.16 |
Zitat: Systemweb schrieb: führt zum gleichen Ergebnis.Code if (preg_match("/.2/", $data['user_groups']) && $data['user_level'] == "101") { $color = $online['online_moderatorcolor']; } Ok, wie gesagt, mit den ganzen Codes habe ich so meine Probleme, habe das lange nun durch die Kurzversion ersetzt. Die lange Version hatte ich auf irgendeiner Seite durch google gefunden. Kann man den Code if (preg_match("/.2/", $data['user_groups']) && $data['user_level'] == "101") { $color = $online['online_moderatorcolor']; } Die Abfrage nach der Gruppe macht er ja (.2), level 101 ist auch da, jetzt müsste der ja nur anstatt "Mitglied (user1)" = "Moderatoren / DJs (user4)" ausgeben. Der Level bleibt ja. mfg
GordenM82 |
|
|
Krelli |
Geschrieben am 25.06.2017 um 00:26
|
![]() Administrator ![]() Inoffizielles DE Updatepack ![]() Beiträge: 577 Registriert am: 01.07.14 |
Zitat: GordenM82 schrieb: Zitat: Systemweb schrieb: führt zum gleichen Ergebnis.Code if (preg_match("/.2/", $data['user_groups']) && $data['user_level'] == "101") { $color = $online['online_moderatorcolor']; } Ok, wie gesagt, mit den ganzen Codes habe ich so meine Probleme, habe das lange nun durch die Kurzversion ersetzt. Die lange Version hatte ich auf irgendeiner Seite durch google gefunden. Kann man den Code if (preg_match("/.2/", $data['user_groups']) && $data['user_level'] == "101") { $color = $online['online_moderatorcolor']; } Die Abfrage nach der Gruppe macht er ja (.2), level 101 ist auch da, jetzt müsste der ja nur anstatt "Mitglied (user1)" = "Moderatoren / DJs (user4)" ausgeben. Der Level bleibt ja. Eine Quick and Dirty Lösung wäre folgendes: Code if (preg_match("/.2/", $data['user_groups']) && $data['user_level'] == "101") { $color = $online['online_moderatorcolor']; $locale['user1'] = 'DJ / Moderator'; } Code if ($data['user_level'] == 103) {....... Code $locale['user1'] = 'Mitglied'; Wie gesagt nicht die sauberste Lösung, aber einfachster Weg. |
|
|
GordenM82 |
Geschrieben am 25.06.2017 um 00:36
|
![]() Jung Mitglied ![]() Beiträge: 19 Registriert am: 24.09.16 |
Zitat: Systemweb schrieb: Wie gesagt nicht die sauberste Lösung, aber einfachster Weg. Solange es klappt, bin ich zufrieden, da ist mir ehrlich gesagt auch erstmal egal obs sauber ist oder "quick and dirty". ![]() Da es nun funktioniert, möchte ich mich soweit erstmal recht herzlich bei dir bedanken für die Hilfe sowie Geduld mit mir ![]() Danke. mfg
GordenM82 |
|
|
Krelli |
Geschrieben am 25.06.2017 um 00:47
|
![]() Administrator ![]() Inoffizielles DE Updatepack ![]() Beiträge: 577 Registriert am: 01.07.14 |
Freut mich, danke für die Rückmeldung und viel Spaß damit. |
|
Springe ins Forum: |