"Gli Jatravartid di Viltvodle VI credono invece che il cosmo sia nato dallo starnuto di un essere chiamato il Grande Ciaparche Verde."

Towel Day - Non fatevi prendere dal Panico

Guida Galattica per gli Autostoppisti

Aggiornamento Joomla 3.8.0

Logo Joomla
Immagine da Joomla

Da qualche giorno è disponibile Joomla! 3.8. Introduce oltre 300 migliorie e due modifiche importanti, riguardo il routing (in breve, è possibile togliere l'ID dall'URL) e l'introduzione di un layer di compatibilità per il futuro Joomla 4.0. Vi sono anche un paio di correzioni relative a bug di sicurezza.

La lezione ormai l'ho imparata, per cui, grazie al fido XAMPP, testo l'aggiornamento in locale. Non pago, faccio pure backup del DB MySQL e della cartella del sito (c'è poco da scherzare comunque, si tratta di procedure che andrebbero sempre seguite...).

Precisazione: non parlo di aggiornamento di questo sito, ma di uno dei siti aziendali, per cui a maggior ragione procedo con i piedi di piombo. Anzi, non fosse per la correzione delle falle di sicurezza, attenderei qualche tempo prima di applicare l'aggiornarmento. La prudenza viene premiata, per così dire: non appena provo il login all'area riservata, un errore campeggia nella pagina: Cannot redeclare get_user_rawdata()....

Dovete sapere che l'area riservata in tale sito ha una decina di pagine, tutte scritte in PHP. Questo errore è un brutto, bruttissimo segno: non c'è ragione alcuna per un errore così grossolano, che sarebbe stato individuato al primo utilizzo della pagina in precedenza.

C'è evidentemente qualche modifica significativa nel core di Joomla, che comporta il malfunzionamento del plugin DirectPHP, che uso per inserire codice PHP in Joomla. Inizio ad indagare, e dopo un po' mi rendo conto che il codice PHP viene inviato due volte al renderer HTML, da cui la doppia dichiarazione di funzione. Se il problema riguardasse solo le funzioni, poco male: potrei usare function_exists per risolverlo. Poco elegante, ma utile in attesa di una correzione definitiva.

Purtroppo, in queste pagine aggiorno e soprattutto inserisco record in alcuni database: in questo caso nessun errore di sintassi, ma, forse peggio, un doppio inserimento nel database causato dalla trasmissione ridondante del codice PHP! Pare quindi che, per forza di cosa, debba indagare sulla causa del bug e tentare di eliminarlo. E qui commetto un grosso errore, che mi farà perdere diverse ore.

Infatti, erroneamente suppongo che il colpevole del problema sia proprio DirectPHP, per cui inizio a studiare diligentemente il suo codice. Fortunatamente è abbastanza semplice e breve; e non vedo assolutamente nulla di strano o sospetto. A questo punto contatto lo sviluppatore del plugin, spiegandogli il problema. È un plugin gratuito, non posso certo pretendere una risposta in tempi rapidi. Per cui continuo la mia analisi, senza cavare un ragno dal buco.

L'unica convinzione che derivo da questa fase di studio è che il codice di DirectPHP non c'entra nulla. E divento altrettanto convinto che sia la funzione onContentPrepare, parte delle API di Joomla, che viene chiamata due volte. Ohibò: se è così, allora il colpevole è chi la chiama, cioè Joomla stesso.

Faccio una breve ricerca ed immediatamente mi imbatto in un bug segnalato su Github, che guarda caso viene segnalato come Article View that was opened via a link from Article Category List: Module loaded twice, che pare proprio simile a quello che riscontro io. Una lettura più attenta lo conferma in pieno.

Adesso è tutto facile: la modifica proposta dagli sviluppatori, e testata con successo da altri, si trova a questa pagina, e coinvolge due file del core Joomla. Apporto le modifiche suggerite e voilà, tutto funziona come un orologio.

Doverosamente, avviso immediatamente lo sviluppatore di DirectPHP e me ne vado a letto (sì la soluzione l'ho trovata in tarda serata... non vi dico quanto tarda).

Chiudo e approfitto per comunicarvi questo problema dovrebbe essere corretto nella versione 3.8.1, quando disponibile.

Tags: Joomla, PHP

Contattami, ma pensaci bene

  • Scrivimi, affinchè possa ignorarti con calma
  • Pubblico questa roba dalla Bassa Modenese. Sì, la zona del terremoto di maggio 2012...

    ... tromba d'aria nel 2013...

    ... alluvione nel 2014...

    ... nuova tromba d'aria nel 2014

Cominciamo ad essere un po' scocciati

E questo Ciaparche, cos'è?

Se ti punge vaghezza di conoscere la risposta e dimostrare così la tua ignoranza, non temere: nessuno dal monitor ti osserva (sicuro? Meglio essere attenti... controlla le impostazioni di privacy della fotocamera), per cui corri ad informarti facendo clic sul link sotto.

Se sei tra quegli eletti che hanno colto la citazione, hai tutta la mia approvazione.

Soddisfa la tua curiosità

Riassunto per pigri

Se i titoli dei menu non ti sono chiari, al tuo posto mi preoccuperei. Vabbè oggi mi sento magnanimo e ammetto che alcuni sono criptici o ambigui, per cui ho deciso di metterti a disposizione un riassunto che ti spiega in breve cosa troverai in questo sito.

Dissipa i tuoi dubbi