User_Level hinzufügen
|
|
GordenM82 |
Geschrieben am 19. Juni 2017 08:56:17
|
|
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 Download Code define("iMEMBER", $userdata['user_level'] >= 101 ? 1 : 0); --schnapp-- --schnipp-- Code Download Code } elseif ($userlevel == 103) { return $locale['user3']; --schnapp-- --schnipp-- Code Download Code } elseif (iMEMBER && ($group == "0" || $group == "101" )) { return true; --schnapp-- --schnipp-- Code Download Code array("103", $locale['user3']), --schnapp-- --schnipp-- Code Download Code } elseif ($group_id == "103" ) { return $locale['user3']; exit; --schnapp-- --schnipp-- Code Download 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. Juni 2017 07:33:14 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
John Doe |
Geschrieben am 20. Juni 2017 05:01:08
|
|
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! |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
GordenM82 |
Geschrieben am 20. Juni 2017 08:14:33
|
|
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 Download 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 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
John Doe |
Geschrieben am 20. Juni 2017 08:33:21
|
|
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 Download Code if(iGUEST) { $color = $online['online_XXXcolor']; Bearbeitet von John Doe am 20. Juni 2017 12:01:57 Dieses Mitglied wurde gelöscht!
|
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
GordenM82 |
Geschrieben am 20. Juni 2017 23:56:49
|
|
Hallo ;) Zitat will bei mir nicht funktionieren, hatte daraufhin bisschen google gequält und folgendes gefunden: Code Download 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. Juni 2017 00:23:08 mfg
GordenM82 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
John Doe |
Geschrieben am 21. Juni 2017 05:44:32
|
|
Code Download 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 Download Code if(checkgroup(2)) { $color = $online['online_XXXcolor']; } Die 2 muss du natürlich gegen die Nummer deiner Gruppe austauschen! |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
GordenM82 |
Geschrieben am 21. Juni 2017 08:09:53
|
|
Guten Morgen, Zitat 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 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Krelli |
Geschrieben am 23. Juni 2017 22:25:12
|
|
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. |
Information: |
PHP Version: 8.2.x • MySQL Version: Nicht ausgewählt • PHP-Fusion: IPv9-DE-MOD |
|
|
GordenM82 |
Geschrieben am 23. Juni 2017 23:42:53
|
|
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 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Krelli |
Geschrieben am 24. Juni 2017 09:24:56
|
|
Code Download 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 Download 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". 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. Juni 2017 09:36:34 |
Information: |
PHP Version: 8.2.x • MySQL Version: Nicht ausgewählt • PHP-Fusion: IPv9-DE-MOD |
|
|
GordenM82 |
Geschrieben am 24. Juni 2017 10:26:07
|
|
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 Download 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". 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 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Krelli |
Geschrieben am 24. Juni 2017 20:27:01
|
|
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 Download Code if ($data['user_level'] == 103) { $color = $online['online_superadmincolor']; } Code Download 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. |
Information: |
PHP Version: 8.2.x • MySQL Version: Nicht ausgewählt • PHP-Fusion: IPv9-DE-MOD |
|
|
GordenM82 |
Geschrieben am 24. Juni 2017 20:42:41
|
|
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 Download Code
mfg
GordenM82 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Krelli |
Geschrieben am 24. Juni 2017 20:58:20
|
|
Code Download Code if ((preg_match("/.2/", $data['user_groups'])) && ($data['user_level'] != "102") && ($data['user_level'] != "103")) { "Moderator / DJ"; $color = $online['online_moderatorcolor']; } Code Download Code if (preg_match("/.2/", $data['user_groups']) && $data['user_level'] == "101") { $color = $online['online_moderatorcolor']; } |
Information: |
PHP Version: 8.2.x • MySQL Version: Nicht ausgewählt • PHP-Fusion: IPv9-DE-MOD |
|
|
GordenM82 |
Geschrieben am 24. Juni 2017 21:17:59
|
|
Zitat Systemweb schrieb: führt zum gleichen Ergebnis.Code Download 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 Download 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 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Krelli |
Geschrieben am 24. Juni 2017 22:26:10
|
|
Zitat GordenM82 schrieb: Zitat Systemweb schrieb: führt zum gleichen Ergebnis.Code Download 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 Download 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 Download Code if (preg_match("/.2/", $data['user_groups']) && $data['user_level'] == "101") { $color = $online['online_moderatorcolor']; $locale['user1'] = 'DJ / Moderator'; } Code Download Code if ($data['user_level'] == 103) {....... Code Download Code $locale['user1'] = 'Mitglied'; Wie gesagt nicht die sauberste Lösung, aber einfachster Weg. |
Information: |
PHP Version: 8.2.x • MySQL Version: Nicht ausgewählt • PHP-Fusion: IPv9-DE-MOD |
|
|
GordenM82 |
Geschrieben am 24. Juni 2017 22:36:54
|
|
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 |
Information: |
PHP Version: Nicht ausgewählt • MySQL Version: Nicht ausgewählt • PHP-Fusion: Nicht ausgewählt |
|
|
Krelli |
Geschrieben am 24. Juni 2017 22:47:07
|
|
Freut mich, danke für die Rückmeldung und viel Spaß damit. |
Information: |
PHP Version: 8.2.x • MySQL Version: Nicht ausgewählt • PHP-Fusion: IPv9-DE-MOD |
|
Springe ins Forum: |