Convertire estensioni di Joomla 3 a Joomla 4

Il passaggio alla prossima versione di Joomla comporterà un po' di lavoro per gli sviluppatori.

Sono previste 2 fasi di transizione:

  1. la versione 3.8 di Joomla presenta già alcune caratteristiche di Joomla 4, ma richiede lo sviluppo "alla vecchia maniera"
  2. la versione 3.9 di Joomla supporta sia le estensioni valide per Joomla 3 che quelle per Joomla 4

Da ricordare: il doppio supporto nella seconda fase non significa che le estensioni che non hanno alcun problema su Joomla 3 funzioneranno anche su Joomla 4.

Le fasi di passaggio consentono di familiarizzare con le novità in modo da essere pronti per il nuovo Joomla, e se non lo saremo, potremmo ottenere questo risultato...

pagina bianca estensioni non trasformate da joomla3 a joomla4

È necessario quindi sfruttare l'attuale versione 3.9 per imparare e adeguarsi agli standard di Joomla 4.

Conviene modificare estensioni esistenti? Ogni caso va valutato!

Le domande principali da porsi sono:

  • quanto è complessa l'estensione?
  • quanto è approfondita la propria conoscenza del suo codice?
  • per funzionare necessita la presenza di un'altra estensione?
  • sono l'autore?
  • esistono alternative valide già pronte per Joomla 4?

Ovviamente se esistono alternative valide non conviene effettuare modifiche: è sempre valido in programmazione il criterio della "massima resa con la minima spesa" (di tempo ed energie).

Se si tratta di un'estensione molto complessa, di cui si conosce solo il codice relativo alle viste e poco altro (e quindi non si è l'autore), sicuramente non conviene.

Se l'estensione è semplice, ad esempio un plugin, o un modulo composto da pochi file e non legato a un componente, vale la pena modificarla. Se non si conosce bene il codice lo si potrà studiare in poco tempo.

Se si è l'autore bisognerà chiedersi se sia più conveniente (=veloce, =semplice) rifarla o adattarla.

Quali modifiche apportare?

Innanzitutto, è fondamentale ricordare che Joomla 4 utilizza i namespace!
È una delle modifiche più evidenti, riscontrabile in ogni cambiamento avvenuto in Joomla 4.
Joomla 3.8 ha introdotto i namespace in vista delle prossime versioni e chi è abituato a programmare con PHP 7 avrà già una certa dimestichezza con il loro utilizzo. Qualsiasi modifica va quindi effettuata tenendo conto di questa nuova caratteristica.

Joomla 4 richiede PHP 7
Ogni estensione che utilizza funzioni di una versione precedente di PHP dovrà essere modificata in modo da essere compatibile con PHP 7.

Esempio:
in PHP 7 substr($string,$start[, $length]) restituisce una stringa vuota se la lunghezza di $string è pari a $start. Se l'estensione da modificare utilizza questa funzione potrebbe essere necessario considerare il caso specifico indicato e apportare le dovute integrazioni.

Tramite la pagina http://php.net/manual/en/appendices.php è possibile reperire tutte le info sui cambiamenti avvenuti nelle varie versioni di PHP.
Per sapere da quale versione iniziare le modifiche va verificata quale PHP è installato su un server sul quale l'estensione funziona correttamente.

Joomla 4 non supporta ext/mysql
Se non lo si è già fatto bisognerà necessariamente passare a ext/mysqli, anche in considerazione del fatto che ext/mysql su PHP7 non esiste.

Modifiche alle librerie del CMS (quelle in libraries/cms di Joomla 3)

Esempi:
Esempio 1:
JInstallerTemplate ora è JInstallerAdapterTemplate

Esempio 2:
JSubMenuHelper ora è JHtmlSidebar, e a differenza della classe precedente richiede un placeholder nel template

Modifiche alle librerie della piattaforma (quelle in libraries/joomla e in libraries/legacy di Joomla 3)

Inoltre, molte classi sono state modificate, eliminate o deprecate.

Esempio:
JApplicationBase è ora deprecata e in futuro verrà rimossa.Al suo posto è necessario usare Joomla\Application\AbstractApplication

Modifiche alle librerie esterne

Joomla! 4 utilizza le nuove versioni di molte librerie esterne, ad esempio:

  • PhpMailer 6 (pienamente compatibile con PHP 7)
  • jQuery 3
  • Bootstrap 4

Di conseguenza tutte le estensioni che utilizzano queste librerie dovranno adeguarsi alle nuove versioni, in particolare i template dovranno tenere conto degli aggiornamenti.

Ogni aggiornamento è documentato nelle relative pagine, da studiare e consultare durante gli interventi di modifica. Non bisogna dimenticare inoltre che l'attuale versione di Joomla 4 è una Alpha, per cui potrebbero esserci ulteriori cambiamenti di cui tener conto.