Newsletter für Entwickler / Entwickler-Newsletter-Archiv / Entwickler-Newsletter August 2023

Entwickler-Newsletter August 2023

PHP 8.2, Verschärfung der CSP, Abkündigungen: Glyphicons, Konfiguration PortalBasePath, veraltete PHP-Klassen/-Methoden und Services sowie nicht zu nutzende Assets

Team IServ 29. August 2023 5 Minuten Lesezeit

Um die IServ Schulplattform effektiv und wirtschaftlich weiterentwickeln zu können, ist es uns im Rahmen von Modernisierungsmaßnahmen nur für begrenzte Zeit möglich, eine Abwärtskompatibilität von abgekündigten Komponenten bereitzustellen. Für einen reibungslosen Ablauf beachten Sie deshalb bitte die folgenden Änderungen, die Sie für Ihre Entwicklungen und Konfigurationen adaptieren müssen.

Abkündigung Glyphicons

In den letzten Jahren haben wir die sogenannten Glyphicons als Icon-Set für die IServ Schulplattform verwendet. Im Zuge von Designanpassungen wurde ein neues Icon-Set ausgewählt, um der Plattform ein moderneres Erscheinungsbild zu verleihen. Die Wahl ist dabei auf Font Awesome gefallen.

Font Awesome wird in der Variante Classic Light zur Verfügung gestellt. Eine Liste der Icons kann auf der Herstellerwebseite eingesehen werden: fontawesome.com/search?o=r&s=light&f=classic

Bestehende Icons wurden für einen schnellen Übergang, soweit möglich, automatisch per CSS-Regel ausgetauscht. Damit alle Icons auch zukünftig reibungslos funktionieren, müssen die Aufrufe dennoch überarbeitet werden.

Per Icon-Funktion:

icon('wrench') → icon('fa-wrench')

Hinweis: Die Icon-Funktion steht über die Bibliotheken @iserv/icon (NPM, JS) und iserv/icon (Composer, PHP) zur Verfügung.

Per HTML-Element:

<span class="glyphicon glyphicon-wrench"></span>
<span class="fal fa-wrench"></span>

Bitte verwenden Sie, wenn möglich, die Icon-Funktion. Die Auslieferung der Glyphicons wird zu einem später angekündigten Zeitpunkt entfernt.

PHP 8.2

Der aktive Support von PHP 8.1 läuft im November dieses Jahres aus. Die neue Debian-Version Bookworm wird PHP 8.2 mit sich bringen. Wir werden daher kurzfristig die Aktualisierung auf PHP 8.2 durchführen.

Da es sich um ein Minor Update handelt, erwarten wir keine größeren Komplikationen. Das Update wird innerhalb der nächsten Wochen automatisch verteilt.

Verschärfung der CSP

In einem der nächsten Updates werden wir die Content-Security-Policy (CSP) für Module, die noch nicht die neue Architektur nutzen (früher bekannt als IServ 3), verschärfen. Neu hinzu kommt der Wert form-action 'self'.
Wir erwarten durch die Änderung wenig praxisrelevante Probleme, da IServ-Module in der Regel nur Formulare an Ziele innerhalb der IServ-Umgebung senden.

Sollte Ihr Modul dennoch Formulare an externe Seiten senden, können Sie den Wert mittels eines Hilfswerkzeugs aus iserv/module-bundle überschreiben.

Abkündigung Konfiguration PortalBasePath

Der Konfigurationswert PortalBasePath gilt ab sofort als veraltet. Es ist anzunehmen, dass dieser permanent den Wert /iserv hat.

Abkündigung veralteter PHP-Klassen

Die folgenden PHP-Klassen gelten ab sofort als veraltet und werden in Zukunft entfernt:

  • IServ\CoreBundle\HttpFoundation\Csp\BinaryFileResponse
  • IServ\CoreBundle\HttpFoundation\Csp\CspHeaderTrait
  • IServ\CoreBundle\HttpFoundation\Csp\Response
  • IServ\CoreBundle\HttpFoundation\Csp\StreamedResponse
  • IServ\CoreBundle\Util\Http

An jeder Klasse ist eine zu nutzende Alternative vermerkt.

Die folgenden PHP-Klassen gelten bereits länger als veraltet. Sie werden daher entfernt und stehen nicht mehr zur Verfügung:

  • IServ\AppKernel
  • IServ\CoreBundle\Controller\PageController
  • IServ\CoreBundle\DependencyInjection\FeatureInterface
  • IServ\CoreBundle\Model\Flash\FlashMessage
  • IServ\CoreBundle\Model\Flash\FlashMessageBag
  • IServ\CoreBundle\Model\Notification\Parts\Route
  • IServ\CoreBundle\Model\UserAgent
  • IServ\CoreBundle\Traits\PrivateConstructorTrait
  • IServ\CoreBundle\Twig\BootstrapSettings
  • IServ\CoreBundle\Util\Clock\Clock
  • IServ\CoreBundle\Util\Clock\FixedClock
  • IServ\CoreBundle\Util\Clock\SystemClock
  • IServ\CoreBundle\Util\Collection\OrderedCollection

Abkündigung veralteter PHP-Methoden

Die folgenden PHP-Methoden gelten bereits länger als veraltet. Sie werden daher entfernt und stehen nicht mehr zur Verfügung:

  • IServ\CoreBundle\Controller\AbstractPageController
    • addFlash
  • IServ\CoreBundle\Util\File
    • streamPutContents
    • quote
  • IServ\CoreBundle\Util\Format
    • date
    • dateWTF
    • getDefaultDateFormat
    • localizeDate
    • localizeTime
    • localizeDateTime
    • smartDate
    • appendOrdSuffix
    • linkify

Abkündigung veralteter Services

Die folgenden deklarierten Services gelten bereits länger als veraltet. Sie werden daher entfernt und stehen nicht mehr zur Verfügung:

  • iserv.flash
  • Braincrafted\Bundle\BootstrapBundle\Session\FlashMessage
  • braincrafted_bootstrap.twig.badge_extension
  • braincrafted_bootstrap.twig.button_extension
  • braincrafted_bootstrap.twig.form_extension
  • braincrafted_bootstrap.twig.icon_extension
  • braincrafted_bootstrap.twig.label_extension
  • Doctrine\Common\Persistence\ManagerRegistry
  • Doctrine\Common\Persistence\ObjectManager
  • Symfony\Bridge\Doctrine\RegistryInterface
  • IServ\TranslationBundle\Translation\GettextTranslator
  • IServ\TranslationBundle\Translation\Locale

Nicht mehr zu nutzende Assets

DataTables.JS

Aktuell stellt Core eine DateTables-Integration bereit: asset('js/datatables.js', 'base'). Diese ist in v3-Modulen nicht mehr zu nutzen. Stattdessen kann das gleiche Asset aus dem Paket iserv-js genutzt werden. Für eine zukunftssichere Lösung verwenden Sie das npm-Paket @iserv/datatables.

Alt:

<link rel="stylesheet" href="{{ asset('css/datatables.css', 'base') }}" />
<script type="text/javascript" src="{{ asset('js/datatables.js', 'base') }}"></script>

Neu:

<link rel="stylesheet" href="{{ asset('js/datatables.css', 'iserv-js') }}" />
<script type="text/javascript" src="{{ asset('js/datatables.js', 'iserv-js') }}"></script>

Zudem gilt die Standalone-DataTables-Integration aus CRUD als überholt. Die Nutzung von IServ.DataTables aus CRUD (mit s) ist durch IServ.DataTable (ohne s) zu ersetzen.