Closed bastians closed 1 year ago
Wie ich sehe, hat der DFB nun auch mal IDs in die Datei mit übernommen. Damit kann man einen Import ins Auge fassen. Hast du auch mal ein oder zwei Datensätze, damit man die verwendeten Datentypen sieht?
@digedag Anbei eine Datei mit ein paar Daten. spielplan-mit-daten.xlsx
Na dann: bitte mal testen. Ich hab es derzeit nur in 6.2 ausprobiert. Mit der CSV-Datei lässt sich der Spielplan einer Liga anlegen und aktualisieren.
Anleitung:
Wettbewerbsverwaltung
das Tab DFB Synchronisation
aufrufenDie Datei wird sofort verarbeitet. Sofern der Wettbewerb noch keine externe ID gesetzt hat, wird automatisch der Wert aus der Spalte Staffelkennung
des ersten Spiels übernommen. Es werden nun nur noch Spiele mit dieser ID beachtet.
Nicht vorhandene Spiele und Mannschaften werden automatisch angelegt. Da bei Mannschaften keine IDs vorhanden sind, wird die externe ID aus dem Mannschaftsnamen gebildet. Einmal angelegte Teams werden nicht mehr aktualisiert. Sollte sich der Name einer Mannschaft im Laufe der Saison ändern, dann wird ein neues Team angelegt!
Ist für ein Spiel ein verlegtSpieldatum
vorhanden, dann wird dieses als Spieldatum verwendet.
Für die Verarbeitung sind die Namen der Spalte in der Kopfzeile relevant. Die Reihenfolge ist also egal.
Die Neuanlage eines Wettbewerbs dauert beim ersten Upload schon mal ein paar Minuten. Der Server-Timeout sollte also wenigstens auf 5 Minuten eingestellt sein.
Also unter 7.6 funktioniert das noch nicht. Da ist vermutlich ein TCE-Hook noch nicht korrekt umgestellt. Dadurch werden bei den ersten Spielen keine Teams gesetzt. Als Workaround kann man die Datei einfach ein zweites mal hochladen. Dann sind die Teams vorhanden.
Wow! :-) Wird am Wochenende getestet!
Eine Rückfrage bzgl.
Da bei Mannschaften keine IDs vorhanden sind, wird die externe ID aus dem Mannschaftsnamen gebildet. Einmal angelegte Teams werden nicht mehr aktualisiert. Sollte sich der Name einer Mannschaft im Laufe der Saison ändern, dann wird ein neues Team angelegt!
Heißt, dass man im TYPO3 danach den Namen der Mannschaften anpassen kann aber das Feld ID-Feld darf man nicht anpassen. Korrekt?
Ja, das ist korrekt. In der CSV sollte sich der Name nicht ändern.
Ich habe nun getestet und grundsätzlich kann ich sagen, dass der Import funktioniert und die Spiele korrekt (und schnell) angelegt werden. Vielen Dank dafür schon mal, das erleichtert wirklich einiges.
Nachstehend mal meine Test-Fälle inkl. Ergebnis und Optimierungsvorschlägen.
Einfacher Import, d.h. Wettbewerb angelegt und unveränderte CSV-Datei importiert
Erneuter Upload einer angepassten CSV-Datei (Datumsänderungen) in einem existieren Wettbewerb
Import mit vorab manuell zu einem Wettbewerb hinzugefügten Mannschaften
Ich hätte folgende Optimierungsvorschläge:
Was mir noch aufgefallen ist: Nach dem Update der Extension kann ich den Erweiterungsmanager nicht mehr öffnen, Seite bleibt leer.
Das PHP Error-Log zeigt leider keinen Fehler.
Noch nicht getestet:
Das wird eine super Funktion!
Unter 8.7 funktioniert das noch nicht. Drückt man auf den Tab DFB Synchronisation
so lässt sich das Modul T3Sports nicht mehr aufrufen. Es kommt der Fehler im Log
Core: Exception handler (WEB): Uncaught TYPO3 Exception: Call to undefined method TYPO3\CMS\Core\Utility\File\ExtendedFileUtility::init() | Error thrown in file /typo3conf/ext/cfc_league/Classes/Controller/Competition/DfbSync.php in line 116. Requested URL: https://example.de/typo3/index.php?M=web_CfcLeagueM1&moduleToken=--AnonymizedToken--&id=XYZ
Ich konnte die Homepage nur wieder herstellen, indem ich das Backup eingespielt habe.
Die Funktion sollte nun auch unter 8.7 funktionieren! Danke für den Hinweis! :+1:
Funktioniert unter 8.7. Hab eine Staffel angelegt, updates usw. habe ich aber noch nicht getestet.
Auf jeden Fall super Funktion!
Noch eine Frage: Ich bin neu im DFBnet und in der CSV-Datei die ich jetzt gefunden habe sind keine Ergebnisse (Tore) enthalten. Gibt es noch eine andere Datei, eine Option für einen erweiterten Export oder müssen die weiterhin manuell gepflegt werden?
@stemeda
Funktioniert unter 8.7.
Sehr gut. Funktioniert bei der der Erweiterungsmanager noch nach dem Update auf die aktuellste Version der Extension?
Noch eine Frage: Ich bin neu im DFBnet und in der CSV-Datei die ich jetzt gefunden habe sind keine Ergebnisse (Tore) enthalten.
Die Exporte aus dem DFBnet enthalten leider keine Ergebnisse.
Das Problem mit dem Erweiterungsmanager existiert bei mir nicht mehr, lag wohl an etwas anderem.
Ich habe eben festgestellt, dass die Spielkennungen/Spielnummern aus dem DFBnet nicht eindeutig sind. Die Kennung setzt sich zusammen aus der Staffelnummer und einer fortlaufenden Nummer. Ich war bisher der Annahme, dass sich die Nummer einer Staffel je Saison ändert, unabhöngig davon ob das die selbe Staffel aus der Vorsaison ist. Dem ist aber nicht so.
Ist das ein Problem für den Importer? Oder müsste man die externe ID noch um die Saison erweitern? Also Spielkennung
-Saison
, Bsp.: 3500568001-1920
?
Ich hab gerade mal nachgesehen. Der Sync läuft immer im Kontext eines Wettbewerbs. Solange die externe ID für ein Spiel innerhalb des Wettbewerbs eindeutig ist, gibt es kein Problem.
Hi @digedag, ich bin gerade dabei die Spiele für die neue Saison zu importieren. Dabei ist mir aufgefallen, dass offenbar neue Teams nicht mehr automatisch angelegt werden. Oder war das noch nie so? :-D
Ich meine, dass ich die letzten Jahre die Ordner immer aus der Vorsaison kopiert und die Spiele entfernt habe sowie aus dem Wettbewerb die Mannschaften. Dann habe ich die CSV mit den neuen Spielen importiert und es wurden alle Spiele sowie die fehlenden Mannschaften angelegt. Das ist jetzt nicht mehr der Fall.
TYPO3: 8.7.27 cfc_league: 1.8.2 cfc_league_fe: 1.8.2 rn_base: 1.15.4
Ich habe erst vor einigen Wochen auf die cfc_league-Versionen aktualisiert, davor war ich noch auf 1.7.1 (cfc_league) bzw. 1.7.2 (cfc_league_fe) und 1.13.10 bei rn_base.
Die Teams sollten natürlich mit angelegt werden. Ich hab jetzt leider nicht genauer prüfen können. Das wird wohl erst Ende kommender Woche. Vermutlich gibt es ein Problem mit dem TCE-Hook, der die Teams dann anlegt. Aber das ist nur eine Vermutung.
Also zur Klarstellung: das Problem ist in der Version 1.11.3 behoben. Ein Update der Extensions ist auch in T3 8.x problemlos möglich. rn_base muss natürlich auch aktualisiert werden. :slightly_smiling_face:
Danke dir! Ich habe die Versionen gerade alle aktualisiert und den Cache gelöscht. Erhalte Bei Aufruf des Frontends allerdings folgenden Fehler:
Oops, an error occurred!
Call to undefined function Sys25\RnBase\Utility\str_starts_with()
Any idea?
Oh Mist. Das ist ein Problem mit der PHP-Version. Ist mir leider bisher nicht aufgefallen. Hast du von rn_base den master oder die letzte getaggte Version geholt? Ich push den Fix gleich in den master...
Ich habe die aktuellste Version aus dem TER installiert. Danke :)
Okay, dann dauert es noch einen Moment. Ich setz eine Version damit, es ins TER geht.
Also Upload ins TER ist erfolgt. Die neuen Versionen sind jetzt eigentlich immer innerhalb weniger Minuten sichtbar.
Habe das Update installiert. Der Fehler ist nun weg, nun habe ich aber einen anderen Fehler, scheint allerdings nichts mehr mit rn_base zu tun zu haben:
Oops, an error occurred!
Class 'Contrib\Doctrine\Common\Collections\ArrayCollection'
Ergänzend vielleicht noch: Habe versucht via der mklog Extension mehr Logs zu bekommen, allerdings funktioniert die in Version 9.5.2 eventuell nicht mehr mit der aktuellsten rn_base Installation. Erhalte aber nach der Installation im TYPO3 Backend folgenden Fehler:
Oops, an error occurred!
Class '\Sys25\RnBase\Utility\TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend' not found
(Ich muss glaube ich langsam echt mal die TYPO3 Version upgraden :D)
Also die Klasse ArrayCollection wird mit rn_base ausgeliefert. Die sollte aber eigentlich funktionieren.
Oops, an error occurred!
Class 'Contrib\Doctrine\Common\Collections\ArrayCollection'
War da noch ein "not found" mit dran, oder was anderes? Stacktrace wäre schon hilfreich. Hast du eventuell was im PHP-Errorlog? Du kannst auch in den Extension-Einstellungen von rn_base die ausführlichen Fehlermeldungen erlauben.
Wenn die Klasse nicht gefunden wird, dann stimmt das autoloading von TYPO3 nicht. Du kannst mal im Root-Verzeichnis von TYPO3 in der CLI folgenden Befehl ausführen:
./bin/typo3 extensionmanager:extension:dumpclassloadinginformation
Ach und mklog könnte tatsächlich Probleme mit der aktuellen Version von rn_base haben. Das wird vermutlich auch nicht mehr behoben werden. Im Zweifel musst du die Extension deinstallieren...
Sorry, ja, da war noch ein "not found mit dran:
Oops, an error occurred!
Class 'Contrib\Doctrine\Common\Collections\ArrayCollection' not found
Der Befehl
./bin/typo3 extensionmanager:extension:dumpclassloadinginformation
hat nicht geklappt, aber ich hab den folgenden Befehl
php typo3/cli_dispatch.phpsh extbase extension:dumpclassloadinginformation
gefunden und ausgeführt und bekomme folgendes zurück:
PHP Fatal error: Uncaught Error: Call to a member function isPackageActive() on null in /www/htdocs/XXX/www/cms/typo3/testing/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php:116
Stack trace:
#0 /www/htdocs/XXX/www/cms/typo3/testing/typo3/sysext/core/Classes/Utility/GeneralUtility.php(3340): TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('core')
#1 /www/htdocs/XXX/www/cms/typo3/testing/typo3/sysext/core/Classes/Imaging/IconProvider/SvgIconProvider.php(54): TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName('')
#2 /www/htdocs/XXX/www/cms/typo3/testing/typo3/sysext/core/Classes/Imaging/IconProvider/SvgIconProvider.php(35): TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider->generateMarkup(Object(TYPO3\CMS\Core\Imaging\Icon), Array)
#3 /www/htdocs/XXX/www/cms/typo3/testing/typo3/sysext/core/Classes/Imaging/IconFactory.php(122): TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider->prepareIconMarkup(Object(TYPO3\CMS\Core\Imaging\Icon), Array)
#4 /www/htdocs/XXX/www in /www/htdocs/XXX/www/cms/typo3/testing/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php on line 116
Folgende Logs konnte och noch finden:
Core: Exception handler (WEB): Uncaught TYPO3 Exception: Class 'Contrib\Doctrine\Common\Collections\ArrayCollection' not found | Error thrown in file /www/htdocs/XXXwww/cms/typo3/testing/typo3conf/ext/rn_base/Classes/Domain/Collection/BaseCollection.php in line 35. Requested URL: https://xxx/herren/herren-2/kader/
und
Core: Exception handler (WEB): Uncaught TYPO3 Exception: Class '\Sys25\RnBase\Utility\TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend' not found | Error thrown in file /www/htdocs/XXX/www/cms/typo3/testing/typo3/sysext/core/Classes/Cache/CacheManager.php in line 305. Requested URL: https://XXX/typo3/index.php?route=%%2Frecord%%2Fcommit&token=--AnonymizedToken--&cacheCmd=pages
Ich hab mir eine Testversion aufgesetzt und die Ursache für das Problem gefunden. Der interne Autoloader von T3 nutzt in TYPO3 8 immer noch die Angaben aus der ext_emconf.php. Ich hab diese angepasst und konnte nun eine Liga erfolgreich importieren. Bitte auch noch mal cfc_league aktualisieren. Die Version 1.11.3 war noch nicht im TER.
Hab das Update durchgeführt, danke für den Fix, der Fehler ist nun weg, dafür gibt es aber einen neuen :-/
Oops, an error occurred!
Class '\Sys25\RnBase\Utility\TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend' not found
Core: Exception handler (WEB): Uncaught TYPO3 Exception: Class '\Sys25\RnBase\Utility\TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend' not found | Error thrown in file /www/htdocs/XXX/www/cms/typo3/testing/typo3/sysext/core/Classes/Cache/CacheManager.php in line 305
Ich bekomme beim Löschen der Caches aus dem TYPO3 Backend heraus übrigens auch folgende Fehler. Eventuell hängt das damit zusammen?
Falls möglich, öffne mal das Modul "System->Configuration" und schau dir "$GLOBALS['TYPO3_CONF_VARS']" an. Dort dann die konfiguratierten Caches unter ['SYS']['caching']['cacheConfigurations']. In einem der Caches gibt es vermutlich die Klasse \Sys25\RnBase\Utility\TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend
. Am Name des Cache weist hoffentlich auf die problematische Extension hin.
Danke für den Tipp, man lernt ja nie aus :) Ich habe nun mklog
deinstalliert und nun ist der Fehler im Frontend weg und die Seite lädt wieder. Möchte ich den Cache im BAckend löschen, bekomme ich allerdings immernoch einen Fehler, aber damit kann ich erstmal leben.
Vielen, vielen Dank für deine Hilfe und deine Geduld! :)
Oh, noch eine Sache. Ich habe noch eine Extension gefunden, sf_banners
. Aber diese hat keine Abhängigkeit zu rn_base
. Das irritiert mich etwas. Und auf meiner Prod-Umgebung, wo ich rn_base
noch nicht aktualisiert habe, steht bei der Extension sfbanners_cache.backend = TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend
Das ist auch korrekt. Diese Klasse gibt es. Bei mklog war der Namespace falsch, weil da Teile des rn_base-Namespaces vorangestellt waren.
Noch kurz als Feedback: Läuft wieder 1A. DANKE :)
(Mein Problem mit der sf_banners-Extension wurde auch gelöst :) )
Um den Import von Spielen einer Saison zu beschleunigen, wäre eine Import-Funktion von CSV-Dateien aus dem DFBnet hilfreich.
Aus meiner Sicht könnte das wie folgt aussehen:
Im Anhang habe ich exemplarisch den Aufbau einer CSV-Datei angehängt. spielplan.csv.xlsx