2. La version 4.7

2.1. Les nouveautés de la version 4.7

  • Amélioration de l’ergonomie : Suppression de l’affichage du formulaire désactivé lors de la validation avec succès d’un formulaire (on revient directement à l’écran du lien retour) [#8957]
  • Ajout d’une classe permettant les appels à des services REST [#8933]
  • Réorganisation du code, nettoyage et suppression de fichiers inutiles
    • [#8894] Suppression du script css/main.css non utilisé
    • [#8895] Suppression du script css/layout_jquerymobile_after.css non utilisé
    • [#8896] Suppression du widget de formulaire comboc non fonctionnel
    • [#8897] Suppression de la fonction adresse_postale non fonctionnelle
    • [#8965] Gestion des snippets de formulaires
    • [#8966] Supprimer les répertoires scr/ et spg/
    • [#8962] Supprimer la fonction genaff
    • [#8959] Rendre optionnelles les surcharges des classes du framework
    • [#8961] Factoriser du code en créant la classe om_base
    • [#8963] Déplacer les web assets vers le répertoire lib/
    • [#8964] Déplacer la fonction direct_link de spg -> core

2.2. Mettre à niveau depuis openMairie 4.6 vers 4.7

2.2.1. Mettre à jour les références externes

Mettre à jour le contenu du fichier EXTERNALS.txt à la racine du projet, et activer ces nouvelles références externes comme indiqué dans le chapitre sur SVN.

2.2.2. Mettre à jour la base de données

La structure de la base de données d’openMairie n’a pas changée depuis la version 4.6.0. Si ça avait été le cas, pour mettre à jour la base de données depuis cette version il aurait fallu exécuter le script SQL data/pgsql/v4.7.0.sql.

2.2.3. Gestion de la suppression des répertoires scr/ et spg/

Pour éviter les multiples points d’entrées, et éviter de récupérer des répertoires inutilement depuis le framework. Nous avons supprimé le répertoire scr/. Il y a désormais un point d’entrée unique que l’on peut créer n’importe où, par défaut : app/index.php.

<?php
/**
 * Ce script permet d'interfacer l'application.
 *
 * @package openmairie_exemple
 * @version SVN : $Id$
 */

require_once "../obj/utils.class.php";
$flag = filter_input(INPUT_GET, 'module');
if (in_array($flag, array("login", "logout", )) === false) {
    $flag = "nohtml";
}
$f = new utils($flag);
$f->view_main();

?>

Ce script permet de remplacer tous les scripts présents dans le répertoire scr/.

Pour suivre le mode fonctionnement par défaut des fichiers index, on conseille donc de:

  • remplacer le contenu du fichier app/index.php par celui indiqué ci-dessus

  • remplacer le contenu du fichier ./index.php par celui indiqué ci-dessous

    <?php
    /**
     * Ce fichier permet de faire une redirection vers la page de login de
     * l'application.
     *
     * @package openmairie_exemple
     * @version SVN : $Id: index.php 38 2018-04-18 14:04:24Z laurent $
     */
    
    //
    $came_from = "";
    if (isset($_GET['came_from'])) {
        $came_from = $_GET['came_from'];
    }
    
    //
    header("Location: **app/index.php?module=login**&came_from=".urlencode($came_from));
    
    ?>
    

Remplacement de tous les liens dans le code PHP , notamment les fichiers dyn/menu.inc.php, dyn/action.inc.php et dyn/shortlinks.inc.php:

  • "../scr/form.php?" par OM_ROUTE_FORM."&",
  • "../scr/sousform.php?" par OM_ROUTE_SOUSFORM."&",
  • "../scr/tab.php?" par OM_ROUTE_TAB."&",
  • "../scr/soustab.php?" par OM_ROUTE_SOUSTAB."&",
  • "../scr/dashboard.php" par OM_ROUTE_DASHBOARD,
  • "../scr/edition.php" par OM_ROUTE_MODULE_EDITION,
  • "../scr/gen.php" par OM_ROUTE_MODULE_GEN,
  • "../scr/reqmo.php" par OM_ROUTE_MODULE_REQMO,
  • "../scr/import.php" par OM_ROUTE_MODULE_IMPORT,
  • "../scr/login.php" par OM_ROUTE_LOGIN,
  • "../scr/logout.php" par OM_ROUTE_LOGOUT,
  • "../scr/password.php" par OM_ROUTE_PASSWORD,

et de façon moins mécanique:

  • "../scr/login.php?mode=password_reset" par OM_ROUTE_PASSWORD_RESET,
  • "../scr/tab_sig.php?" par OM_ROUTE_MAP."&mode=tab_sig&",

Remplacement de tous les liens dans le code javascript :

  • "../scr/form.php?" par "../app/index.php?module=form&"
  • "../scr/tab.php?" par "../app/index.php?module=tab&"

Remplacement de tous les éléments ‘open’ dans dyn/menu.inc.php. Par exemple :

<?php
...
   "open" => array(
       "tab.php|concessionnaire_archive",
       "form.php|concessionnaire_archive",
    ),
...
?>

se remplace par :

<?php
...
   "open" => array(
       "index.php|concessionnaire_archive[module=tab]",
       "index.php|concessionnaire_archive[module=form]",
    ),
...
?>

Remplacement de tous les liens vers les scripts du répertoire spg/ vers le nouveau point d’entrée :

  • "../spg/file.php?" par "".OM_ROUTE_FORM."&snippet=file&" ou "../app/index.php?module=form&snippet=file&"
  • "../spg/voir.php?" par "".OM_ROUTE_FORM."&snippet=voir&" ou "../app/index.php?module=form&snippet=voir&"
  • "../spg/combo.php?" par "".OM_ROUTE_FORM."&snippet=combo&" ou "../app/index.php?module=form&snippet=combo&"
  • "../spg/autocomplete.php?" par "".OM_ROUTE_FORM."&snippet=autocomplete&" ou "../app/index.php?module=form&snippet=autocomplete&"
  • "../spg/localisation.php?" par "".OM_ROUTE_FORM."&snippet=localisation&" ou "../app/index.php?module=form&snippet=localisation&"
  • "../spg/upload.php?" par "".OM_ROUTE_FORM."&snippet=upload&" ou "../app/index.php?module=form&snippet=upload&"
  • "../spg/direct_link.php?" par "".OM_ROUTE_FORM."&direct_link=true&" ou "../app/index.php?module=form&direct_link=true&"
  • "../spg/map_*.php?" par "".OM_ROUTE_MAP."&mode=*&" ou "../app/index.php?module=map&mode=*"

2.2.4. Remettre à jour le fichier obj/utils.class.php

En comparant le fichier obj/utils.class.php présent dans le framework, on voit plusieurs points à mettre à jour si ce n’est déjà fait:

  • Il faut refaire le lien avec les feuilles de style om-theme en surchargeant la classe om_application avec le code suivant:

    <?php
    ...
    /**
     * Surcharge systématique (cf openmairie_exemple) utilisation optionnelle du thème om-theme
     * @return void
     */
    function setDefaultValues() {
        $this->addHTMLHeadCss(
            array(
                "../lib/om-theme/jquery-ui-theme/jquery-ui.custom.css",
                "../lib/om-theme/om.css",
                ),
            21
            );
    }
    ...
    ?>
    
  • On peut aussi acter du caractère optionnel des fichiers dyn/locales.inc.php et dyn/debug.inc.php avec une instruction php : if (file_exists(« ../dyn/*<fichier>*.inc.php ») === true) { …

  • Enfin, si ce n’a pas été fait lors de mise à niveau précédente, on peut définir les propriétés par défaut de la classe application:

  • $_application_name
  • $html_head_title
  • $_session_name
  • $html_head_favicon

2.2.5. 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.6. Utilisation d’une méthode d’instanciation des classes om_*

Remplacer :

require_once « ../core/om_reqmo.class.php »; $inst_reqmo = new reqmo();

par :

$inst_reqmo = $f->get_inst__om_reqmo();