Sulphur

Ja. Ich habe das in Version 2 entfernt, aber das sind im aufrufenden Code nur zwei Zeilen ([siehe ersten Punkt im Changelog Version v2.0.0](https://github.com/beheh/sulphur/blob/stable/CHANGELOG.md))

Kann ich Sulphur also alleine nicht mehr benutzen sondern muss mir quasi CMCgames mitinstallieren und an meine Wünsche anpassen?

Nein, du kopierst einfach die zwei Zeilen.

Ich glaube da ist noch etwas Verwirrung was Sulphur genau ist/macht, und was CMCGames ist/macht.

Also, nochmal von vorn:
* Der Masterserver ist die Instanz, bei der sich alle Onlinespiele anmelden, damit andere Spieler sie finden können. Er ist für die Ingame-Spieleliste, die Clonkspot-Liste und die Liga verantwortlich. Im Hintergrund passiert da viel Datenaustausch, aber das Wichtigste: der Masterserver gibt die Ingameliste in einem speziellen Format (das sieht so aus). Da alle Spieler den gleichen Masterserver nutzen, sehen auch alle die gleichen Spiele.
* Sulphur ist eine PHP-Bibliothek (d.h. sie macht alleine erst mal nichts). Sie versteht das Format des Masterservers und kann deiner PHP-Anwendung sagen, welche Spiele gerade laufen (nachdem du Sulphur mit der Antwort des Masterservers gefüttert hast), welche Spieler gerade spielen oder alles was dir mit den Daten einfällt. Im Endeffekt ist Sulphur aber auch “nur” ein Parser.
* CMCGames ist eine Beispiel-Anwendung (in PHP), die Sulphur benutzt (das muss daher mitinstalliert werden). Sie weiß nur, wie man an die Masterserver-Antwort kommt, aber nicht, wie man sie ausliest (dadurch ist das aktuelle CMCGames sehr viel kürzer als vorherige Versionen). Da das aber ja für die Spieleliste irgendwie aus der Masterserver-Antwort herausgelesen muss gibt CMCGames die Antwort an Sulphur ab. CMCGames interagiert dann etwas mit Sulphur, um am Ende die Ausgabe zu zaubern, die die CMC-Spieleliste betreibt. Konkret erzeugt CMCGames dazu CSS, das dann auf der Projektseite eingebunden wird.

Die Frage ist nun, was möchtest du tun? Du kannst:
* CMCGames für andere Projekte abwandeln (& Sulphur im Hintergrund lassen wie es ist) - z.B. alle Runden deines Packs auf einer Projektseite anzeigen
* Sulphur in komplett andere Dinge einbinden - vielleicht auf deiner Homepage eine Anzeige ob du gerade in einem Spiel bist, oder was dein Server gerade hostet.

In allen Fällen brauchst du Composer, um Sulphur zu installieren und zu nutzen. Wie das alles funktioniert siehe PHP: Der richtige Weg (übersetzt PHP: The Right Way)

Ja, okay, ich denke es ist jetzt alles klar. Hab irgendwie gedacht, dass Sulphur jetzt alleine nicht mehr funktioniert. Aber jetzt ist ja alles klar. Vielen Dank. ^^

Gesagt, getan. Aber eine Änderung merke ich nicht wirklich (Umlaute werden falsch angezeigt und du wolltest das ja fixen). Muss ich sonst noch was machen (Server neustarten, etc.)?

Hast du auch wieder composer install ausgefuehrt? Nur die Aenderung in der Datei hat natuerlich keinen Effekt, es muss ja auch der neue Code runtergeladen werden.

Muchas gracias, por favor.

Das Umlaute-dekodieren selbst ist noch nicht drin, aber solange kannst du einfach diese Funktion auf die Ausgabe anwenden (z.B. auf Spielernamen oder Szenariotitel).

$title = self::decodeSpecialChars(strip_tags($reference->Title));

Ist das in der Reihenfolge nicht eine Sicherheitsluecke? Man kann HTML-Tags einbauen, indem man sie als special char codiert.

Du hast Recht, jedoch wird die Ausgabe "nur" für CSS genutzt. Das Strip-Tags ist auch eigentlich nicht als Schutz gedacht, sondern um Titel mit den HTML-Tags für Clonk zu säubern (z.B. nutzt CMC für jeden Titel <c ffff00>CMC - Atlantic Crisis</c>). Ich sollte jedoch zumindest die single Quotes maskieren, damit mir niemand das CSS zerschießt.

Ich hoffe du meintest composer update, bei install hab ich nur Errors zurückbekommen.

Vermutlich. Ich habe composer bisher noch nicht richtig verwendet, kenne das Prinzip aber von npm. Dort sorgt npm install generell dafür, dass alle Abhängigkeiten (unabhängig ob sie schon da sind oder nicht) auf die in der package.json angegebenen Versionen gesetzt werden.

Hab jetzt mal das Update installiert und den Code angepasst.

<?php require("vendor/autoload.php");
// fetch masterserver response
/* $response = Sulphur\ResponseFactory::fromUrl('league.clonkspot.org:80'); */
$parser = new Sulphur\Parser();
$response = $parser->parse(file_get_contents('league.clonkspot.org:80'));
[…]


Hab einfach die alte Zeile auskommentiert und die zwei Zeilen, die du gemeint hast, eingefügt und angepasst, den Rest hab ich so gelassen. Dennoch bekomme ich immer 0 beim Zählen und keine Titel (wie bisher) mehr zurück. Muss ich den restlichen Code noch anpassen oder warum funktioniert das nicht mehr? Ich meine, die Variablen heißen gleich und die Datei hat alle Rechte.

Achso, okay. ^^

Still don't know how to handle.