Beiträge von ichbinonline

    Nochmal Danke an euch beide
    und hier der ganze code, evtl braucht es ja noch jemand:
    Mfg. Chris

    Okay
    ich glaub da muss ich mich entschuldigen. Das habe ich mit meiner eigenen Klasse verwechselt.


    So, jetzt bin ich auch wieder chilliger :whistling:
    Darauf,warum ich so angepisst war gehe ich jetzt nicht weiter ein, ich bin nur der meinung, wenn jemand höfflich fragt, sollte man ihm helfen indem man entweder genau sagt wie etwas geht oder nicht geht, bzw. ihn in die richtige Richtung schubsen.

    Das wird aber auch nicht funktionieren. Denn $clientinfo['data']['client_servergroups'] gibt ein Array mit den Servergruppen zurück welche der User besitzt. Und du kannst ein Array nicht mit einem String vergleichen.


    Genau davon war ich auch ausgegangen und hatte dann versucht mittels in_array etwas zu erreichen.
    Als du aber in deinem letzten post richtiggestellt hast, dass es sich um $trings handelt hat mich das zum Ziel gebracht. Wie du schon angemerkt hast wäre es quatsch nochmal ein array zu erstellen (zumindest in meinem Fall), denn mit preq_match klappte es sofort wunderbar.( :evil: Kleiner böser Seitenhieb: JA ich weiß was Reguläre Ausdrücke sind und JA ich wußte auch vorher schon was Vergleisoperatoren sind :P:D )(Nicht wirklich böse gemeint)
    Ansätze die Funktioneren:

    Code
    if (preg_match("/243, 244/i", $clientinfo['data']['client_servergroups'])    //wobei hier genaustens auf die reihenfolge der gruppen geachtet werden muss(stehen diese nicht nebeneinander geht es nicht)


    Man kann auch die Suche nach der zweiten "niederen" Gruppe komplett weglassen:

    Code
    if (preg_match("/\b244\b/i", $clientinfo['data']['client_servergroups']))


    Wenn er also die höhere Gruppe findet löscht er automatisch die niedere mit:

    Code
    $tsAdmin->serverGroupDeleteClient(243,$clientinfo["data"]["client_database_id"]);


    Ich bevorzuge aber:

    Code
    if (preg_match("/\b244\b/i", $clientinfo['data']['client_servergroups']) and preg_match("/\b243\b/i", $clientinfo['data']['client_servergroups']))


    da ich hiermit später ohne weiteres auch noch schnell eine eventuelle dritte Gruppe hinzufügen kann.


    Ich danke euch beiden.

    Oder einfacher gesagt,
    1. du erstellst einen channel der eine höhere "needed join power" hat als normale user sie haben.
    2. erstellst du eine channelgruppe mit der gleichen "join power"
    3. du gibst dem/den usern die in den channel dürfen, für diesen channel die channelgruppe


    Die Channelgruppe brauchst du auch nur einmal zu erstellen und kannst sie dann für verschiedene channel benutzen.


    Reinmoven wird dabei nicht gehn, da der user seine Rechte nur in diesem Channel hat.
    Rausmoven / kicken aus diesem channel ist möglich


    Ich lade dich auch gerne auf meinen Server ein um es dir zu zeigen und zu erklären.

    Sorry, aber das hat mich nicht wirklich weitergebracht.

    = ist in PHP kein Vergleichsoperator


    Wusste ich aber in meiner verzweiflung habe ich alles ausprobiert.

    if ($clientinfo['data']['client_servergroups'] == 243 AND $clientinfo['data']['client_servergroups'] == 244)


    hatte ich zuvor auch schon probiert.

    Das wird aber auch nicht funktionieren. Denn $clientinfo['data']['client_servergroups'] gibt ein Array mit den Servergruppen zurück welche der User besitzt. Und du kannst ein Array nicht mit einem String vergleichen.
    Da solltest du jetzt aber nochmal alleine gucken.


    Habe jetzt versucht mit in_array etwas zu erreichen, aber ohne Erfolg.
    Wenn ihr wisst wie es funktioniert, sagt es mir bitte, sehr gerne auch mit erklärung. Ansonsten kann man hier closen (bin frustriert).

    Nein, damit geht es eben nicht!
    Folgendes:
    Nennen wir die Gruppen mal 1,2 und 3
    Gr.1 hat keine Rechte (Standard Gastgruppe)
    Gr.2 kann in andere Channel wechseln etc.
    Gr3. kann user der Gr.1, die Gr.2 geben, damit diese in andere Channel können.
    Also hat Gr.2 hat "i_group_needed_member_add_power = 4" und Gr.3 hat "i_group_member_add_power =5"
    Das geht ja alles! Problem ist ja, dass ein user aus Gr.3 einem anderen user aus Gr.3 zusätzlich Gr.2 setzen kann.
    Kein user der in Gr.3 ist, soll zusätzlich Gr.2 haben.

    Hallo Leute,


    die Rechtehierarchie auf meinem Server ist so aufgebaut, dass eine bestimmte "nichtAdmin"-Gruppe den Gästen eine ServerGruppe zuteilen kann, mit der diese dann in andere Channel können.
    Läuft ansich alles Wunderbar. Allerdings gibt es einen Schöheitsfehler. Besagte "nichtAdmin"-Gruppenmitglieder können sich untereinander ebenfalls diese Grupe zuteilen. Das ist kein Sicherheitsproblem sondern eher ein optisches Problem.
    Ich möchte nun ein Skript erstellen, welches die Gruppem eines benutzers vergleicht und gegebenenfalls eine Gruppe entfernt.


    Kurzform: Gehört ein user einer oder keiner von beiden Gruppen an ist alles super, gehört er beiden an, soll eine Gruppe entfernt werden!


    Anhand dieses threads ts3 Auto change group server und dem darin geposteten Skript habe ich es auch soweit geschafft, dass es mir die gruppen ausliest/ ausgibt.


    In Zeile 14 habe ich auch schon versucht die Gruppen die verglichen werden sollen zu definieren.
    Probleme:
    Hat ein user keine der beiden Gruppen, wird ihm die höhere hinzugefügt.
    Hat ein user die geringere Gruppe, wird diese entfernt und die höhere hinzugefügt.


    Ich schaffe es einfach nicht das "and" zu definieren.


    Ich hoffe ihr könnt mir helfen.
    Gruß Chris