2. La version 4.6

2.1. Les nouveautés de la version 4.6

  • Ajout du support de la version PHP 7.0.
  • Intégration dans om-tests du serveur de mail local maildump.
  • Mise à jour de la librairie PHPMailer en version 5.2.23.
  • Mise à jour de la librairie DB PEAR en version 1.9.2.
  • Amélioration de l’ajout de widgets de type “file”.
  • Ajout du paramètre tinymce_load dans la méthode app_initialize_content.
  • Suppression des anciens paramètres ‘ico’ et ‘help’.
  • Suppression des anciennes actions de tableau ($href).
  • Suppression des scripts scr/dashboard_composer.php et scr/directory.php.
  • Suppression du répertoire pdf/.

2.2. Mettre à niveau depuis openMairie 4.5 vers 4.6

2.2.1. Mettre à jour la base de données

La structure de la base de données d’openMairie a changée depuis la version 4.5.0. Pour mettre à jour la base de données depuis cette version il faudra exécuter le script SQL data/pgsql/v4.6.0.sql.

2.2.2. Lancer une regénération complète

Cette nouvelle version comprend des modifications du générateur. Une regénération complète est nécessaire pour le bon fonctionnement de la nouvelle version.

2.2.3. Gestion de la suppression des scripts pdf/pdf*.php

Le répertoire pdf/ a été supprimé du framework. Il est nécessaire de vérifier dans l’applicatif à mettre à niveau tous les appels existants aux scripts présents dans ce répertoire. Si des appels existent, deux méthodes sont disponibles pour obtenir un fonctionnement identique au fonctionnement de la version 4.5 :

2.2.3.1. Méthode n°1 (non conseillée)

Plus simple mais ne permet pas de profiter des bénéfices de la suppression du répertoire pdf/.

2.2.3.2. Méthode n°2 (conseillée)

Moins simple mais permet de profiter des bénéfices de la suppression du répertoire pdf/.

  • Identifier les cas d’utilisation qui génèrent des éditions.

  • Intégrer dans une vue/action sur l’objet concerné par l’édition.

    <?php
         ...
    
         function init_class_actions() {
             ...
             $this->class_actions[201] = array(
                 "identifier" => "edition-pdf",
                 "view" => "view_edition",
                 "portlet" => array(
                     "type" => "action-blank",
                     "libelle" => _("Édition PDF"),
                 ),
                 "permission_suffix" => "edition",
             );
             ...
         }
    
         function view_edition() {
             $this->checkAccessibility();
             $pdfedition = $this->compute_pdf_output(
                 "lettretype",
                 "objet_de_ma_lettre_type"
             );
             $this->expose_pdf_output(
                 $pdfedition["pdf_output"],
                 "mon-fichier-".date('YmdHis').".pdf"
             );
         }
    
         ...
     ?>
    

2.2.4. Corriger les prototypes des méthodes surchargées s’ils diffèrent de leurs parents

Afin d’assurer la compatibilité du code avec la version 7 de PHP, il est nécessaire d’effectuer cette modification.

2.2.5. Suppression du script scr/directory.php

Depuis la version 4.5.0 du framework la vue permettant de synchroniser les utilisateurs avec un annuaire a été déplacée dans une vue de la classe om_utilisateur, du coup elle est accessible directement depuis l’URL scr/form.php?obj=om_utilisateur&idx=0&action=11. La mise à niveau consiste au remplacement des appels au script scr/directory.php par cette URL.

2.2.6. Suppression du script scr/dashboard_composer.php

Depuis la version 4.5.0 du framework la vue permettant de composer le tableau de bord de chaque profil a été déplacée dans une vue de la classe om_dashboard, du coup elle est accessible directement depuis l’URL scr/form.php?obj=om_dashboard&idx=0&action=4. La mise à niveau consiste au remplacement des appels au script scr/dashboard_composer.php par cette URL.

2.2.7. Remplacer les anciennes actions de tableau $href par les nouvelles $tab_actions

Supprimer la définition des variables $href en la remplaçant par la définition d’une action selon les paramètres : Actions des tableaux.

2.2.8. Modifier les appels et éventuelles surcharges du prototype du constructeur de la classe om_application

Les paramètres 4 et 5 du constructeur de la classe ont été supprimés dans la version 4.6.0 car dépréciés et plus utilisés depuis la version 4.0.0 du framework.:

- function __construct($flag = NULL, $right = NULL, $title = NULL, $icon = NULL, $help = NULL) {
+ function __construct($flag = NULL, $right = NULL, $title = NULL) {

Il est nécessaire de vérifier les instanciations de la classe utils.:

require_once "../obj/utils.class.php";
- $f = new utils(NULL, "permission", "Mon titre", "icon.png", "objet_de_mon_aide");
+ $f = new utils(NULL, "permission", "Mon titre");

2.2.9. Supprimer les déclarations de la variable $ico

La variable $ico permettant d’afficher une image dédiée dan le titre de la page pour afficher un lien vers une aide contextuelle est dépréciée et plus utilisée depuis la version 4.0.0 du framework. Dans la version 4.6.0, cette variable a été complètement supprimée. Pour une meilleure maintenabilité de l’applicatif, il est préférable de supprimer ces déclarations inutiles.

2.2.10. Vérifier d’éventuelles surcharges de la méthode om_application:sendMail()

La nouvelle version de PHPMailer oblige l’inclusion de la classe smtp en plus de la classe phpmailer. Voici le diff à répliquer dans d’éventuelles surcharges

- @include_once "class.phpmailer.php";
+ @require_once "class.smtp.php";
+ @require_once "class.phpmailer.php";

2.2.11. Vérifier d’eventuelle surcharge de la méthode app_initialize_content dans js/layout_jqueryui_after.js

En effet il a été rajouté le paramètre tinymce_load dans cette méthode.

2.2.12. Vérifier l’utilisation du mot-clé robotframework Submenu In Menu Should Be Selected

Ce mot-clé présent dans le script ressources/core/menu.robot utilise désormais son premier argument ${rubrikclass} si celui-ci est différent de NULL. Cet argument demande la classe CSS du lien de la rubrique cliquée dans le menu.