Le framework openMairie :

Le projet om5_RAD est un projet de développement rapide qui permet une prise en main rapide du framework.

Il est composer de 2 modules :

  • un installateur type « wordpress » du framework,
  • un gestionnaire type « phppgadmin » qui permet de créer les tables et de générer des formulaires.

Le but est de créer rapidement une mini application ou une maquette sans écrire une seule ligne de code.

Le public visé est les développeurs peu expérimentés ou débutant, en proposant par la suite une montée en puissance pour maîtriser l’ensemble du framework (formation, assistance technique, forum …). Il s’agit de proposer un développement « no code » accessible avec une connaissance de modèle de données mais aussi un modèle de développement pour les utilisateurs avancés car om5_rad veut être aussi une alternative aux :

  • applications sur tableur qui deviennent souvent complexes avec beaucoup de colonnes et de nombreuses redondances
  • aux gestionnaires de contenu qui comme DRUPAL ou WORDPRESS n’intégre pas les règles du modèle de CODD des bases de données (cle/valeur, redondances)
  • aux systèmes d’information géographique qui n’intégrent pas la dimension relationnelle

Ce projet qui prolonge le module du générateur, veut s’intégrer dans les développements futurs d’openMairie :

  • poc_de_query : pour le passage aux versions php supérieures à 8.0 et faciliter l’installation des composants
  • poc_view_js : pour l’utilisation de librairie d’affichage java script plus moderne.

Le projet ne modifie pas le core :

Le projet utilise le framework version 4.10.0 et ne modifie aucune classe du core.

Le projet modifie seulement 3 fichiers :

  • le fichier index.php à la racine car il appelle l’installateur dans le répertoire install (om_setup_config.php), si le fichier dyn/database.inc.php n’existe pas,

  • le fichier data/pgsql/install.sql avec l’ajout de la création des vues : init_gen.sql,

  • le fichier framework_openmairie.class.php par surcharge de la méthode set_config__menu() en ajoutant 2 options :

    • l’option « application » qui présente la liste des tables générées par l’utilisateur,
    • l’option « pg_admin » qui appelle les formulaires d’administration de la base de données : om_tables, avec les formulaire om_champs et om_contrainte

Les autres ajouts sont uniquement des objets générés et leurs surcharges.

Le projet se base sur des vues sur information_schema :

Il est créé dans le répertoire data/pgsql 3 vues sur information_schema :

  • om_tables : cette vue contient les tables du schéma sauf celles préfixées par om
  • om_champs : cette vue contient les champs des tables ci dessus
  • om_contraintes : cette vue contient les clés secondaires des tables ci dessus

Les répertoires de gen sont rajoutés avec les classes relatives aux vues qui ont été créés par le générateur:

  • dans gen/obj : om_tables.class.php, om_champs.class.php, om_contraintes.class.php,
  • dans gen/sql/psql : om_tables.inc.php, om_champs.inc.php, om_contraintes.inc.php.

Enfin ces classes sont surchargées dans les répertoires obj et sql/pgsql.

Le principe est simple : les classes sont liées aux vues d’information_shéma dans l’affichage.

La mise à jour d’information_schema se fait avec :

  • les commandes de création et suppression de table pour om_table,
  • les commandes de création, modification et suppression de champs pour om_champs
  • la commande de suppression de clé secondaire pour om_contraintes.

Note

Les paramètres particuliers des tables et champs pour gen_plus.class.php sont stockés dans le commentaire (comment) de chaque table et chaque champs créés par om_tables.class.php ou om_champs.class.php Du coup il est possible d’exporter via sql l’ensemble des paramètres d’une table et de regénérer les formulaires via gen_plus.class.php (voir exemple).

La surcharge om_gen_plus.class.php :

Il a été surchargé om_gen.class.php par om_gen_plus.class.php dans le repertoire app.

om_gen_plus prend en compte le paramétrage de om_tables_parametre et de om_forms.

Les méthodes suivantes ont été surchargées :

  • def_obj_meth_setlib : pour le parémétrage des libellés de champs
  • def_obj_meth_settype_by_maj : pour le paramètrage des types de champs
  • def_obj_meth_get_var_sql_forminc pour le paramétrage de l’ordre des champs
  • def_php_script_header : pour la mise a jour du header avec genplus
  • stream_slightly_equals_file : la génération se fait à chaque fois et non quand la base est changée
  • table_obj_class_gen : pour ajouter de la méthode setLayout

Il a été ajouter la méthode suivante :

  • def_obj_meth_setlayout : définition de la méthode setlayout pour regrouper les champs