Ich hab mir mal den Code angesehen.
Soweit ich das analysieren konnte, ist es ein konzeptionelles Problem.
Die Rangliste wird zuerst gelesen, der Rang als letzter Rang gemerkt, die Berechnung durchgeführt, die Differenz zw. gemerktem Rang und neuem Rang gebildet und diese nun angezeigt. Durch die Neuberechnung der Rangliste wird der neue Rang geschrieben. Damit geht der Bezug zum alten Rang verloren.
Wird nun aus dem Admin- Bereich die Rangliste neu berechnet, die Ranglistenberechnung aus irgendeinem anderen Grund (z.B. neue Ergebnisse vom Datenservice) ausgelöst und die Ergebisse haben sich dabei eigentlich nicht verändert, ist die Differenz des Ranges immer 0!!
Das ist ein grundsätzliches Problem.
Die Angabe der Differenz ist eh eine nicht definierte Differenz. Es kommt hier auf die Differenz der Ergebnisse an. Man kann nicht sagen, ob es sich hier um die Differenz des Spieltages oder des letzten Spieles handelt. Hier kommt es auch auf die Zeitplanung der Cronjobs an. Wenn jemand das manuell macht, dann kann es sein (je nachdem wann er das macht), dass es sich um die Differenz des letzten Spieltages handelt. Bei mir läuft der Cronjob für die Ergebnisse viel häufiger. Damit ist es eine Differenz zw. den Bereitstellungen der Ergebnisse des Datenservices.
Ich hoffe, ihr versteht meine Ausführungen.
Es müssten die Ränge der User in einer Tabelle nach jedem beendetem Spiel gespeichert werden. Dann müsste man per Einstellung bestimmen, auf was sich die Differenzangabe beziehen soll: auf letztes Spiel, auf den letzten Spieltag oder andere Möglichkeiten.
Zum Spieltag noch eine Bemerkung: Was ist denn eigentlich der Spieltag eines außerhalb unserer Zeitzone befindlichen Turniers? Unsere Scripte sind alle auf das Datum ausgelegt - und nur auf das Datum! Findet ein Spiel um 0:00Uhr statt, ist es in unserem Tippspiel schon der nächste Spieltag.
Wir müssen also die Scripte für die Zukunft so anpassen, dass wir den Spieltag nich nur an das Datum hängen, sondern an das Datum und die Zeit. In der Konfiguration muss dann natürlich auch bestimmt werden, zu welchem Zeitpunkt des Tages ein Spieltagswechsel stattfindet.
Da wir keine Spiele mehr nach 0:00Uhr ab jetzt mehr haben, ist das Datumsproblem für diese WM nicht mehr relevant - die Ranglistenberechnung in Abhängigkeit von der Bereitstellung neuer Daten und deren Neuberechnung sehr wohl.
Das ist für diese WM meiner Meinung nach nicht mehr umsetzbar, da es zu viele Stellen gibt, wo diese Änderungen gemacht werden müssten - ohne großen Testzeitraum.
Fazit: für zukünftige WM's ist das schon wichtig, für eine EM nur dann, wenn die Spiele immer später angesetzt werden und eventuell nach 0:00Uhr stattfinden könnten...