[openmairie-framework-Commits] r4934 - in openmairie_exemple/branches/om5_rad: . app obj

0 views
Skip to first unread message

fray...@users.adullact.net

unread,
Apr 17, 2024, 6:00:21 PMApr 17
to openmairie...@googlegroups.com
Author: fraynaud
Date: 2024-04-18 00:00:18 +0200 (Thu, 18 Apr 2024)
New Revision: 4934

Modified:
openmairie_exemple/branches/om5_rad/HISTORY.txt
openmairie_exemple/branches/om5_rad/TODO.txt
openmairie_exemple/branches/om5_rad/app/om_gen_plus.class.php
openmairie_exemple/branches/om5_rad/obj/om_forms.class.php
Log:
mise au pt gen_plus .inc



Modified: openmairie_exemple/branches/om5_rad/HISTORY.txt
===================================================================
--- openmairie_exemple/branches/om5_rad/HISTORY.txt 2024-04-17 16:09:44 UTC (rev 4933)
+++ openmairie_exemple/branches/om5_rad/HISTORY.txt 2024-04-17 22:00:18 UTC (rev 4934)
@@ -122,7 +122,7 @@
* Evolution : generation : om_tables et om_forms
* Evolution : transfert des méthodes om_champs dans om_forms
* Evolution : ajout dans le menu de la composition om_forms
+* Evolution : om_gen_plus méthode table_sql_inc_gen -> ordre des champs om-forms 17-04-2024

-
4.10.0 (29/11/2022
-------------------

Modified: openmairie_exemple/branches/om5_rad/TODO.txt
===================================================================
--- openmairie_exemple/branches/om5_rad/TODO.txt 2024-04-17 16:09:44 UTC (rev 4933)
+++ openmairie_exemple/branches/om5_rad/TODO.txt 2024-04-17 22:00:18 UTC (rev 4934)
@@ -6,7 +6,6 @@


om_champs/liste et om_tables/ moteur de recherche
-* Evolution om_champs : fait mais reste à régler l'ordre des champs
* à voir un libellé entête de colone om_champs (lib court) ab 16/04/2024
* Evolution om_tables : moteur de recherche si om_champs affiché en liste. ok ?
* a voir manual select pour boolean tous-oui false-true

Modified: openmairie_exemple/branches/om5_rad/app/om_gen_plus.class.php
===================================================================
--- openmairie_exemple/branches/om5_rad/app/om_gen_plus.class.php 2024-04-17 16:09:44 UTC (rev 4933)
+++ openmairie_exemple/branches/om5_rad/app/om_gen_plus.class.php 2024-04-17 22:00:18 UTC (rev 4934)
@@ -648,41 +648,94 @@
return $tableobj;
}

- /**
- * Construit le contenu du script [gen/sql/<OM_DB_PHPTYPE>/<TABLE>.inc.php].
- *
- * @param mixed $dyn Fichier de paramétrage.
- *
- * @todo public
- * @return string
- */
+ // paramétrage du moteur de recherche
+ // retour code moteur de recherche pour table_sql_inc_gen
+ function def_moteur_recherche_inc() {
+ // initialisation de variable
+ $moteur = "";
+ // initialisation du tableau options
+ $moteur .= "\nif (!isset(\$options)) {";
+ $moteur .= "\n\t\$options = array();";
+ $moteur .= "\n}";
+ // initialisation champs -> suivant ordre des champs dans le formulaire
+ foreach($this->om_forms as $elem){
+ if($elem['liste']==1){ // uniquement dans la liste affichée
+ if($elem['data_type']=="character varying"){ // text
+ $moteur .= "\n\n\$champs['".$elem['name']."'] = array(";
+ $moteur .= "\n\t'table' => '".$this->table."',";
+ $moteur .= "\n\t'colonne' => array('".$elem['name']."'),";
+ $moteur .= "\n\t'type' => 'text',";
+ $moteur .= "\n\t'taille' => 15,";
+ $moteur .= "\n\t'libelle' => _('".$elem['libelle']."'));";
+ }
+ if($elem['data_type']=="date"){ // date
+ // cas date
+ $moteur .= "\n\n\$champs['".$elem['name']."'] = array(";
+ $moteur .= "\n\t'table' => '".$this->table."',";
+ $moteur .= "\n\t'colonne' => '".$elem['name']."',";
+ //$moteur .= "\n\t'libelle' => _('".$elem['libelle']."'),";
+ $moteur .= "\n\t'type' => 'date',";
+ $moteur .= "\n\t'taille' => 8,";
+ $moteur .= "\n\t'lib1' => _('".$elem['libelle']." de'),";
+ $moteur .= "\n\t'lib2' => _('à'),";
+ $moteur .= "\n\t'where' => 'intervaldate',);";
+ }
+ if (!empty($this->clesecondaire) && in_array($elem["name"], $this->clesecondaire)) {
+ // cas clé secondaire -> cas ou nom de champs = nom de la table
+ $moteur .= "\n\n\$champs['".$elem['name']."'] = array(";
+ $moteur .= "\n\t'table' => '".$elem['name']."',";
+ $moteur .= "\n\t'colonne' => '".$elem['name']."',";
+ $moteur .= "\n\t'libelle' => _('".$elem['libelle']."'),";
+ $moteur .= "\n\t'type' => 'select',);";
+ }
+ if($elem['data_type']=="boolean"){ // boolean
+ $moteur .= "\n\n\$args=array();";
+ $moteur .= "\n\$args[0]=array(true,false);";
+ $moteur .= "\n\$args[1]=array(_('Oui'), _('Tous'));";
+ $moteur .= "\n\$champs['".$elem['name']."'] = array(";
+ $moteur .= "\n\t'table' => '".$this->table."',";
+ $moteur .= "\n\t'colonne' => '".$elem['name']."',";
+ $moteur .= "\n\t'libelle' => _('".$elem['libelle']."'),";
+ $moteur .= "\n\t'type' => 'select',";
+ $moteur .= "\n\t'subtype' => 'manualselect',";
+ $moteur .= "\n\t'args' => \$args,);";
+ }
+ }
+ }
+ // parametrage du tableau options
+ $moteur .= "\n\n\$options[]=array(";
+ $moteur .= "\n\t'type' => 'search',";
+ $moteur .= "\n\t'display' => true,";
+ $moteur .= "\n\t'advanced' => \$champs,";
+ $moteur .= "\n\t'absolute_object' => '".$this->table."',";
+ $moteur .= "\n\t'export' => array(\"csv\")";
+ $moteur .= "\n);";
+ // retour code
+ return $moteur;
+ }
+
+ // construit le contenu du script [gen/sql/<OM_DB_PHPTYPE>/<TABLE>.inc.php]
+ // reprise compléte de la méthode suivant om_forms
+ // return string.
+
function table_sql_inc_gen($dyn = null) {
// Initialisation des variables de travail
- $champaffiche = "";
- $champnonaffiche = "";
- $champrecherche = "";
- //Test si plusieurs cles etrangeres vers la meme table
+ $champaffiche = ""; // tableau des noms des champs affiches dans table.inc
+ $champnonaffiche = ""; // tableau des noms des champs non affiches dans table.inc
+ $champrecherche = ""; // tableau des noms des champs de recherche dans table.inc
+ $tri = "";
+ $libelle_t = '';
+ $libelle_c = '';
+ $alias = '';
+ //Tableau avec nom de table comme cle et nombre d'occurence comme valeurs
$fkLinkedTable=array();
foreach ($this->foreign_tables as $value) {
$fkLinkedTable[]=$value['foreign_table_name'];
}
- //Tableau avec nom de table comme cle et nombre d'occurence comme valeurs
$countLinkedTable=array_count_values($fkLinkedTable);
- //
- $tri = ""; // champ de tri
-
- // table du libelle
- $libelle_t = '';
- // colonne du libelle
- $libelle_c = '';
- // alias de la table du libelle
- $alias = '';
-
// recuperation du libelle
$libelle = $this->get_libelle_of($this->table);
- // $libelle = $this->om_tables_parametre['libelle']; //*** ?
- // si la colonne du libelle est une cle etrangere
- // on utilise le libelle de la table etrangere pour le trier
+ // si la colonne du libelle est une cle etrangere, on utilise le libelle de la table etrangere pour le trier
if (in_array($libelle, $this->clesecondaire)) {
if ($countLinkedTable[$this->foreign_tables[$libelle]['foreign_table_name']] > 1) {
$alias = $this->foreign_tables[$libelle]['foreign_table_name'].
@@ -698,194 +751,96 @@
$libelle_t = $this->table;
$libelle_c = $libelle;
}
-
// creation de la clause ORDER BY
$tri = 'ORDER BY';
$tri .= ' ';
-
- // affichage des valeurs NULL en dernier pour MySQL
- if (OM_DB_PHPTYPE == 'mysql') {
- $tri .= 'ISNULL('.$alias.'.'.$libelle_c.') ASC,';
- $tri .= ' ';
- }
-
// ordre croissant explicite
$tri .= $alias.'.'.$libelle_c.' ASC';
-
- // affichage des valeurs NULL en dernier pour PostgresSQL
- if (OM_DB_PHPTYPE == 'pgsql') {
- $tri .= ' ';
- $tri .= 'NULLS LAST';
- }
-
+ $tri .= ' ';
+ $tri .= 'NULLS LAST';
$serie = 15; // nombre d'enregistrement par page
- //
- if (file_exists ("../gen/dyn/form.inc.php")) {
- include ("../gen/dyn/form.inc.php");
- $this->msg.="<br />".__("Chargement du parametrage")." ../gen/dyn/form.inc.php";
- } elseif (file_exists ("../gen/dyn/form.inc")) {
- include ("../gen/dyn/form.inc");
- $this->msg.="<br />".__("Chargement du parametrage")." ../gen/dyn/form.inc";
- }
-
- // Option globale 'om_validite'
- // Cette option permet de cacher par défaut les colonnes 'om_validite_debut'
- // et 'om_validite_fin' pour ne les faire apparaître que lorsqu'on clique
- // sur le lien 'Afficher les éléments expirés'. Par défaut les colonnes
- // sont visibles. Pour que ce ne soit pas le cas, il faut le déclarer
- // dans le script '../gen/dyn/gen.inc.php' dans le tableau $tables_to_overload
- // en ajoutant l'entrée "om_validite" => "hidden_by_default" dans l'entrée
- // de la table souhaitée.
- $is_om_validite_hidden_by_default = null;
- if (isset($this->_tables_to_overload[$this->table])
- && isset($this->_tables_to_overload[$this->table]["om_validite"])) {
- //
- if ($this->_tables_to_overload[$this->table]["om_validite"] === "hidden_by_default") {
- $is_om_validite_hidden_by_default = true;
- } else {
- $is_om_validite_hidden_by_default = false;
- }
- }
-
- //
$edition=$this->table;
-
- // On ajoute la clé primaire dans le champaffiche et le champrecherche
- // en première position
+ // On ajoute la clé primaire dans le champaffiche et le champrecherche en première position
$champaffiche.= "\n '".$this->table.".".$this->primary_key." as \"'.__(\"".$this->primary_key."\").'\"',";
$champrecherche.= "\n '".$this->table.".".$this->primary_key." as \"'.__(\"".$this->primary_key."\").'\"',";
-
- // variable suivant champs : champaffiche et champrecherche
- // $champaffiche; // tableau des noms des champs affiches dans table.inc
- // $champrecherche; // tableau des noms des champs de recherche dans table.inc
-
- // ne sont pas régl
- foreach ($this->info as $elem) {
-
- if ($elem['name'] == $this->primary_key) {
- continue;
- }
- //
- $is_field_in_overrided_list = null;
- if (isset($this->_tables_to_overload[$this->table])
- && isset($this->_tables_to_overload[$this->table]["displayed_fields_in_tableinc"])) {
- //
- if (in_array($elem["name"], $this->_tables_to_overload[$this->table]["displayed_fields_in_tableinc"])) {
- $is_field_in_overrided_list = true;
- } else {
- $is_field_in_overrided_list = false;
- }
- }
- // pas d affichage de blob en tableinc
- // affichage au format date
- $temp ='def_champaffichedate'.OM_DB_PHPTYPE;
- // On affiche le champ dans le listing sauf si :
- // - cas 'blob' : le champ en question est de type blob
- // - cas 'om_collectivite' : le champ est 'om_collectivite' et nous ne sommes
- // pas sur la table du même nom et la table est de type multi,
- // - cas 'displayed_fields_in_tableinc' : le champ en question n'est pas
- // présent dans la liste des champs surchargé et qu'il existe une surcharge
- // de la liste des champs,
- // - cas 'om_validite' : le champ est 'om_validite_debut' ou 'om_validite_fin'
- // et l'option om_validite qui permet de cacher ces champs par défaut est
- // activée.
-
- // *** libellé des champs dans om_forms en substitution du nom pgsql du champs ***
- if($this->om_forms[$elem["name"]]["libelle"]!="")
- $libelle=$this->om_forms[$elem["name"]]["libelle"];
- else
- $libelle=$elem["name"];
-
- // definition de $champaffiche et de $champnonaffiche
- if ($elem["type"] != "blob"
- && !($this->multi == 2 && $elem["name"] == "om_collectivite" && $this->table != "om_collectivite")
- && $is_field_in_overrided_list !== false
- && !(($elem["name"] === "om_validite_debut"
- || $elem["name"] === "om_validite_fin")
- && $is_om_validite_hidden_by_default === true)
- && $this->om_forms[$elem["name"]]["liste"]==1
- ) { // *** ajout de l om_forms parametre liste -> champaffiche et $champnonaffiche
- //
- $champaffiche.="\n ";
- //
- if ($elem["type"] == "date") {
- //
- $champaffiche .= $this->$temp($this->table.".".$elem["name"], $libelle).",";
-
- } elseif ($elem["type"] == "bool") {
- //
- if (OM_DB_PHPTYPE == "mysql") {
- //
- $champaffiche.= "\"case ".$this->table.".".$elem["name"]." when 1 then 'Oui' else 'Non' end as \\\"\".__(\"".$libelle."\").\"\\\"\",";
- } elseif (OM_DB_PHPTYPE == "pgsql") {
- //
- $champaffiche.= "\"case ".$this->table.".".$elem["name"]." when 't' then 'Oui' else 'Non' end as \\\"\".__(\"".$libelle."\").\"\\\"\",";
- }
- } else {
- // cas cle secondaire et général
- // Si le champ que nous sommes en train d'afficher est une cle secondaire
- if (!empty($this->clesecondaire) && in_array($elem["name"], $this->clesecondaire)) {
- //
- $ftable = $this->foreign_tables[$elem["name"]]['foreign_table_name'];
- // recuperation du libelle
- $flibelle = $this->get_libelle_of($ftable);
- if ($countLinkedTable[$this->foreign_tables[$elem["name"]]['foreign_table_name']] > 1) {
- $champaffiche.= "'$ftable".
- array_search($elem["name"], $this->clesecondaire).
- '.'.$flibelle;
- } else {
- $champaffiche.= "'".$ftable.".".$flibelle;
- }
- } else {
- // cas general
- $champaffiche.= "'".$this->table.".".$elem["name"];
- }
- $champaffiche.= ' ';
- $champaffiche.= "as \"'.__(\"".$libelle."\").'\"',";
- }
- } else {
+ foreach($this->om_forms as $elem){
+ //$this->msg .= $elem['data_type']."<br>";
+ // champ affiche
+ if($elem["liste"]==1 and $elem["data_type"]!='text' and $elem["type"]!='file'){ // sauf blob et upload
+ // initialisation
+ $temp ='def_champaffichedate'.OM_DB_PHPTYPE;
+ $champaffiche.="\n ";
+ // substitution du nom pgsql du champs par le libelle du champ si non vide ***
+ if($this->om_forms[$elem["name"]]["libelle"]!="")
+ $libelle=$this->om_forms[$elem["name"]]["libelle"];
+ else
+ $libelle=$elem["name"];
+ // suivant data type
+ if($elem['data_type']== 'integer'){
+ // gen plus -> clé secondaire numérique
+ if (!empty($this->clesecondaire) && in_array($elem["name"], $this->clesecondaire)) {
+ $ftable = $this->foreign_tables[$elem["name"]]['foreign_table_name'];
+ // recuperation du libelle
+ $flibelle = $this->get_libelle_of($ftable);
+ if ($countLinkedTable[$this->foreign_tables[$elem["name"]]['foreign_table_name']] > 1) {
+ $champaffiche.= "'$ftable".
+ array_search($elem["name"], $this->clesecondaire).
+ '.'.$flibelle;
+ } else {
+ $champaffiche.= "'".$ftable.".".$flibelle;
+ }
+ }else
+ $champaffiche.= "'".$this->table.".".$elem["name"];
+ $champaffiche.= ' ';
+ $champaffiche.= "as \"'.__(\"".$libelle."\").'\"',";
+ }
+ if ($elem["data_type"] == "date") { // format date francaise
+ $champaffiche .= $this->$temp($this->table.".".$elem["name"], $libelle).",";
+ }
+ if($elem['data_type']== 'character varying'){
+ $champaffiche.= "'".$this->table.".".$elem["name"];
+ $champaffiche.= ' ';
+ $champaffiche.= "as \"'.__(\"".$libelle."\").'\"',";
+ }
+ if($elem['data_type']== 'double precision'){ // voir formatage
+ $champaffiche.= "'".$this->table.".".$elem["name"];
+ $champaffiche.= ' ';
+ $champaffiche.= "as \"'.__(\"".$libelle."\").'\"',";
+ }
+ if($elem['data_type']== 'boolean'){ // format oui/non
+ $champaffiche.= "\"case ".$this->table.".".$elem["name"]." when 't' then 'Oui' else 'Non' end as \\\"\".__(\"".$libelle."\").\"\\\"\",";
+ }
+ }else{
// champs non affiche
$champnonaffiche.="\n ";
- $champnonaffiche.= "'".$this->table.".".$elem["name"]." as \"'.__(\"".$elem["name"]."\").'\"',";
+ $champnonaffiche.= "'".$this->table.".".$elem["name"]." as \"'.__(\"".$elem["name"]."\").'\"',";
+ }
+ // les champs recherche ne prennent pas les dates seulement pour les champs affichés
+ if (($elem["data_type"] == "character varying" || $elem["data_type"] == "integer"
+ || $elem["data_type"] == "double precision")
+ && $elem["liste"]==1) {
+ $champrecherche.="\n ";
+ // Si le champ que nous sommes en train d'afficher est une cle secondaire
+ if (!empty($this->clesecondaire) && in_array($elem["name"], $this->clesecondaire)) {
+ $ftable = $this->foreign_tables[$elem["name"]]['foreign_table_name'];
+ // recuperation du libelle
+ $flibelle = $this->get_libelle_of($ftable);
+ if ($countLinkedTable[$this->foreign_tables[$elem["name"]]['foreign_table_name']] > 1) {
+ $champrecherche.= "'".$ftable.array_search($elem["name"], $this->clesecondaire).".".$flibelle." ";
+ } else {
+ $champrecherche.= "'".$ftable.".".$flibelle." ";
+ }
+ } else {
+ $champrecherche.="'".$this->table.".".$elem["name"]." ";
+ }
+ $champrecherche.= "as \"'.__(\"".$libelle."\").'\"',";
}
- // champs recherche
- // les champs recherche ne prennent pas les dates
- if (($elem["type"] == "string" || $elem["type"] == "int" || $elem["type"] == "float")
- && $is_field_in_overrided_list !== false && $this->om_forms[$elem["name"]]["liste"]==1) {
- // *** recherche sur les champs affichés $this->om_forms[$elem["name"]]["liste"]==1
- if ($this->multi == 2 && $elem["name"] == "om_collectivite" && $this->table != "om_collectivite") {
- //
- echo "";
- } else {
- $champrecherche.="\n ";
- // Si le champ que nous sommes en train d'afficher est une cle secondaire
- if (!empty($this->clesecondaire) && in_array($elem["name"], $this->clesecondaire)) {
- $ftable = $this->foreign_tables[$elem["name"]]['foreign_table_name'];
- // recuperation du libelle
- $flibelle = $this->get_libelle_of($ftable);
- if ($countLinkedTable[$this->foreign_tables[$elem["name"]]['foreign_table_name']] > 1) {
- $champrecherche.= "'".$ftable.array_search($elem["name"], $this->clesecondaire).".".$flibelle." ";
- } else {
- $champrecherche.= "'".$ftable.".".$flibelle." ";
- }
- } else {
- $champrecherche.="'".$this->table.".".$elem["name"]." ";
- }
-
- $champrecherche.= "as \"'.__(\"".$libelle."\").'\"',";
- }
- }
- } // fin info system
+ }
// creation de table.inc.php
$tableinc= $this->def_php_script_header();
$tableinc.="\n\$DEBUG=0;";
$tableinc.="\n\$serie=".$serie.";";
$tableinc.=$this->def_ent();
-
- if ($this->is_om_validite() == true) {
- $tableinc.="\n\$om_validite = true;";
- }
-
$tableinc.="\nif(!isset(\$premier)) \$premier='';";
$tableinc.="\nif(!isset(\$tricolsf)) \$tricolsf='';";
$tableinc.="\nif(!isset(\$premiersf)) \$premiersf='';";
@@ -894,15 +849,12 @@
$tableinc.="\nif (!isset(\$idxformulaire)) {\n \$idxformulaire = '';\n}";
$tableinc.="\nif (!isset(\$tricol)) {\n \$tricol = '';\n}";
$tableinc.="\nif (!isset(\$valide)) {\n \$valide = '';\n}";
- // ***
// TABLE
$tableinc .= "\n// FROM ";
$tableinc .= "\n\$table = DB_PREFIXE.\"".$this->table;
- //
+ // cle secondaires -> construction de $table
if (!empty($this->clesecondaire)) {
- //
foreach ($this->clesecondaire as $key => $elem) {
- //
if (isset($this->foreign_tables[$elem])) {
$tableinc .= "\n LEFT JOIN \".DB_PREFIXE.\"".$this->foreign_tables[$elem]["foreign_table_name"]." ";
$ftable=$this->foreign_tables[$elem]['foreign_table_name'];
@@ -922,69 +874,16 @@
$tableinc .= "\n ON ".$this->table.".".$elem."=a".$key.".".$elem." ";
}
}
-
- }
- //
+ }
$tableinc.= "\";";
- // CHAMP AFFICHE ***
+ // CHAMP AFFICHE RECHERCHE Tri Edition
$tableinc .= "\n// SELECT ";
$tableinc.="\n\$champAffiche = array(".$champaffiche."\n );";
- if ($this->multi == 2 && $this->table != 'om_collectivite') {
- if (isset($countLinkedTable["om_collectivite"])
- && $countLinkedTable["om_collectivite"] > 1) {
- $alias = 'om_collectivite'.
- array_search('om_collectivite', $this->clesecondaire).
- '.libelle';
- } else {
- $alias = 'om_collectivite.libelle';
- }
-
- $tableinc .= "\n//\nif (\$_SESSION['niveau'] == '2') {";
- $tableinc .= "\n array_push(\$champAffiche, \"".$alias." as \\\"\".__(\"collectivite\").\"\\\"\");";
- $tableinc .= "\n}";
- }
- // Spécificité des dates de validité uniquement si :
- // - la table contient les champs en question
- // - l'option est activée
- if ($this->is_om_validite() == true
- && $is_om_validite_hidden_by_default === true) {
- //
- $tableinc .= sprintf("
-// Spécificité des dates de validité
-\$displayed_fields_validite = array(
- %s,
- %s,
-);
-// On affiche les champs de date de validité uniquement lorsque le paramètre
-// d'affichage des éléments expirés est activé
-if (isset(\$_GET['valide']) && \$_GET['valide'] === 'false') {
- \$champAffiche = array_merge(\$champAffiche, \$displayed_fields_validite);
-}
-",
- $this->$temp($this->table.".om_validite_debut", "om_validite_debut"),
- $this->$temp($this->table.".om_validite_fin", "om_validite_fin")
- );
- }
$tableinc.="\n//\n\$champNonAffiche = array(".$champnonaffiche."\n );";
$tableinc.="\n//\n\$champRecherche = array(".$champrecherche."\n );";
- if ($this->multi == 2 && $this->table != 'om_collectivite') {
- if (isset($countLinkedTable["om_collectivite"])
- && $countLinkedTable["om_collectivite"] > 1) {
- $alias = 'om_collectivite'.
- array_search('om_collectivite', $this->clesecondaire).
- '.libelle';
- } else {
- $alias = 'om_collectivite.libelle';
- }
-
- $tableinc .= "\n//\nif (\$_SESSION['niveau'] == '2') {";
- $tableinc .= "\n array_push(\$champRecherche, \"".$alias." as \\\"\".__(\"collectivite\").\"\\\"\");";
- $tableinc .= "\n}";
- }
$tableinc.="\n\$tri=\"".$tri."\";";
$tableinc.="\n\$edition=\"".$edition."\";";
- // les sous formulaires
- // href
+ // selection, sous formulaires et moteur
$tableinc.=$this->def_selection_inc();
$tableinc.=$this->def_sousformulaire_inc();
if($this->om_tables_parametre['recherche']==1)
@@ -993,77 +892,5 @@
return $tableinc;
}

- // paramétrage du moteur de recherche
- // retour code moteur de recherche pour table_sql_inc_gen
- function def_moteur_recherche_inc() {
- $this->msg .= "paramétrage du moteur recherche en cours de développement<br>";
- //$this->msg .=$this->foreign_tables[$elem]['foreign_table_name']."<br>";;
- // initialisation de variable
- $moteur = "";
- // initialisation du tableau options
- $moteur .= "\nif (!isset(\$options)) {";
- $moteur .= "\n\t\$options = array();";
- $moteur .= "\n}";
- // initialisation champs -> suivant ordre des champs dans le formulaire
- foreach($this->om_forms as $elem){
- if (!empty($this->clesecondaire) && in_array($elem["name"], $this->clesecondaire)) {
- $this->msg .= $elem['name']."<br>";
- }
- if($elem['liste']==1){ // uniquement dans la liste affichée
- if($elem['data_type']=="character varying"){ // text
- $moteur .= "\n\n\$champs['".$elem['name']."'] = array(";
- $moteur .= "\n\t'table' => '".$this->table."',";
- $moteur .= "\n\t'colonne' => array('".$elem['name']."'),";
- $moteur .= "\n\t'type' => 'text',";
- $moteur .= "\n\t'taille' => 15,";
- $moteur .= "\n\t'libelle' => _('".$elem['libelle']."'));";
- }
- if($elem['data_type']=="date"){ // date
- // cas date
- $moteur .= "\n\n\$champs['".$elem['name']."'] = array(";
- $moteur .= "\n\t'table' => '".$this->table."',";
- $moteur .= "\n\t'colonne' => '".$elem['name']."',";
- //$moteur .= "\n\t'libelle' => _('".$elem['libelle']."'),";
- $moteur .= "\n\t'type' => 'date',";
- $moteur .= "\n\t'taille' => 8,";
- $moteur .= "\n\t'lib1' => _('".$elem['libelle']." de'),";
- $moteur .= "\n\t'lib2' => _('à'),";
- $moteur .= "\n\t'where' => 'intervaldate',);";
- }
- if (!empty($this->clesecondaire) && in_array($elem["name"], $this->clesecondaire)) {
- // cas clé secondaire -> cas ou nom de champs = nom de la table
- $moteur .= "\n\n\$champs['".$elem['name']."'] = array(";
- $moteur .= "\n\t'table' => '".$elem['name']."',";
- $moteur .= "\n\t'colonne' => '".$elem['name']."',";
- $moteur .= "\n\t'libelle' => _('".$elem['libelle']."'),";
- $moteur .= "\n\t'type' => 'select',);";
- }
- if($elem['data_type']=="boolean"){ // boolean
- $moteur .= "\n\n\$args=array();";
- $moteur .= "\n\$args[0]=array(true,false);";
- $moteur .= "\n\$args[1]=array(_('Oui'), _('Tous'));";
- $moteur .= "\n\$champs['".$elem['name']."'] = array(";
- $moteur .= "\n\t'table' => '".$this->table."',";
- $moteur .= "\n\t'colonne' => '".$elem['name']."',";
- $moteur .= "\n\t'libelle' => _('".$elem['libelle']."'),";
- $moteur .= "\n\t'type' => 'select',";
- $moteur .= "\n\t'subtype' => 'manualselect',";
- $moteur .= "\n\t'args' => \$args,);";
- }
- }
- }
- // parametrage du tableau options
- $moteur .= "\n\n\$options[]=array(";
- $moteur .= "\n\t'type' => 'search',";
- $moteur .= "\n\t'display' => true,";
- $moteur .= "\n\t'advanced' => \$champs,";
- $moteur .= "\n\t'absolute_object' => '".$this->table."',";
- $moteur .= "\n\t'export' => array(\"csv\")";
- $moteur .= "\n);";
- // retour code
- return $moteur;
- }

-
-
}

Modified: openmairie_exemple/branches/om5_rad/obj/om_forms.class.php
===================================================================
--- openmairie_exemple/branches/om5_rad/obj/om_forms.class.php 2024-04-17 16:09:44 UTC (rev 4933)
+++ openmairie_exemple/branches/om5_rad/obj/om_forms.class.php 2024-04-17 22:00:18 UTC (rev 4934)
@@ -52,8 +52,8 @@
"parametres->>'type' as type",
"parametres->>'bloc' as bloc",
"parametres->>'position' as position",
+ "parametres->>'liste' as liste",
"parametres->>'calcul' as calcul",
- "parametres->>'liste' as liste",

);
}
@@ -63,28 +63,25 @@
if($maj==0){
$form->setVal('liste', 1);
}
- If($maj>0){
-
+ If($maj>0){
// clé secondaire
$temp = explode(".", $this->getParameter("idx"));
$temp = $temp[0]."_".$temp[1]."_fkey";
$sql = "SELECT count(constraint_name) FROM information_schema.table_constraints ";
- $sql .= " where constraint_name = '".$temp."'";
+ $sql .= " where constraint_name = '".$temp."'";
$res = $this->f->db->getOne($sql);
$this->f->addToLog("obj/om_champs_class.php: db->getOne(\"".$sql."\");", DEBUG_MODE);
$this->f->isDatabaseError($res);
- if($res>0){
+ if($res==1){
$form->setVal('data_type',"cle_secondaire");
- //$form->setType('data_type', "hiddenstatic");
- $form->setVal('tables',$temp[1]);
+ $form->setVal('tables',$temp[0]);
$this->cle_secondaire='oui';
}else{
$this->cle_secondaire='non';
$form->setType("type", "select");
}
-
- // initialisation -> bug vue corrigé (manque schéma pour om_forms)
-
+ // echo $this->cle_secondaire;
+ // initialisation des champs om_champs
$sql = "SELECT table_schema, data_type, character_maximum_length ,";
$sql .= " is_nullable, column_default, comment";
$sql .= " from ".DB_PREFIXE."om_champs ";
@@ -141,8 +138,8 @@

$form->setType("comment", "hidden"); // documentation enligne
$form->setType("parametres", "hidden"); // documentation enligne
- //$form->setType("bloc", "hidden"); // utiliser composition
- //$form->setType("position", "hidden");// utiliser composition
+ $form->setType("bloc", "hidden"); // utiliser composition
+ $form->setType("position", "hidden");// utiliser composition
$form->setType("character_maximum_length", "hidden"); // ne sert pas
//$form->setType("table_name", "hidden"); // clé secondaire -> formulaire
$form->setType("column_default", "hidden"); // ne sert pas, si champs hidden renvoie un carctère vide et non un null ?
@@ -151,13 +148,13 @@
function setLib(&$form,$maj) {
parent :: setLib($form,$maj);
$form->setLib('table_name',_("Nom de la table"));
- $form->setLib('column_name',_("Nom du champs"));
+ $form->setLib('column_name',_("Nom du champ"));
$form->setLib('default_value',_("Valeur par défaut"));
$form->setLib('data_type',_("Type de champs"));
- $form->setLib('is_nullable',"");
- $form->setLib('type',"");
+ $form->setLib('is_nullable',_("Obligatoire"));
+ $form->setLib('type',_("Type de champs OM"));
$form->setLib('position',_("Position dans le bloc"));
- $form->setLib('tables',_("clé secondaire"));
+ $form->setLib('tables',_("Clé secondaire de la table"));
$form->setLib('liste',_("Affichage en liste"));
}

@@ -243,35 +240,33 @@

function verifier($val = array(), &$dnu1 = null, $dnu2 = null) {
parent::verifier($val, $dnu1, $dnu2);
- if($this->getParameter('maj')==0){ //ancienne méthode verifierAjout()
- // ===============================================
- // la clé ne doit pas être vide et elle est unique
- // ===============================================
+ if($this->getParameter('maj')==0){ //vérification du nom de champ
+ // la clé ne doit pas être vide
if ($this->valF['column_name'] == $this->valF['table_name'].".") {
$this->correct = false;
- //$this->addToMessage("<br/>");
- $this->addToMessage( __("Le nom du champs est obligatoire")."&nbsp;");
- $this->addToMessage("[&nbsp;".__($this->clePrimaire)."&nbsp;]");
- }
- // la clé doit être différente
- if ($this->typeCle == "A") {
- $sql = "select count(*) from ".DB_PREFIXE.$this->table." ";
- $sql .= "where ".$this->clePrimaire."='".$this->valF[$this->clePrimaire]."' ";
- // Exécution de la requête
- $nb = $this->f->db->getone($sql);
- // Logger
- $this->addToLog(__METHOD__."(): db->getone(\"".$sql."\");", VERBOSE_MODE);
- // Vérification d'une éventuelle erreur de base de données
- $this->f->isDatabaseError($nb);
- //
- if ($nb > 0) {
- $this->correct = false;
- $this->addToMessage($nb." ");
- $this->addToMessage( __("cle primaire existante"));
- $this->addToMessage(" ".$this->table."<br />");
- }
+ $this->addToMessage( __("Le nom du champs est obligatoire")."&nbsp;"."[&nbsp;".__($this->clePrimaire)."&nbsp;]");
+ }
+ // le nom du champs ne doit pas exieter dans la table
+ $sql = "select count(*) from ".DB_PREFIXE."om_forms ";
+ $sql .= "where column_name ='".$this->valF[$this->clePrimaire]."' ";
+ // Exécution de la requête
+ $nb = $this->f->db->getone($sql);
+ // Logger
+ $this->addToLog(__METHOD__."(): db->getone(\"".$sql."\");", VERBOSE_MODE);
+ // Vérification d'une éventuelle erreur de base de données
+ $this->f->isDatabaseError($nb);
+ if ($nb > 0) {
+ $this->correct = false;
+ $this->addToMessage( $this->valF[$this->clePrimaire]." ". __("est déjà utilisé dans la table")." ".$this->valF['table_name']."");
}
+
+ // le nom du champs ne doit pas être le nom de la table (la clé primaire n'est pas dans om_forms)
+ if ($this->valF['column_name'] ==$this->valF['table_name'].".".$this->valF['table_name']) {
+ $this->correct = false;
+ $this->addToMessage( $this->valF[$this->clePrimaire]." ". __("est la clé primaire de la table")." ".$this->valF['table_name']."");
+ }
}
+
// =============================
// Contrôle des types openMairie
// =============================
@@ -367,13 +362,13 @@
//affectation valeur formulaire
parent::setvalF($val);
if($this->getParameter('maj')==0){
- if ($val['data_type'] == 'cle_secondaire'){
+ // data_type : cle_secondaire -> integer
+ if ($val['data_type'] == 'cle_secondaire'){
$val['column_name'] = $val['tables'];
$this->valF['column_name'] = $val['tables'];
$this->addToMessage("nom de champs = ".$val['column_name']);
- }
- // clé primaire
- // traitement du nom de champs
+ }
+ // traitement du nom de champs (column_name)
// le libellé prend la valeur du nom de champs origine
// la sequence \ (echappement) n est pas traitée
// caractères spéciaux
@@ -390,7 +385,6 @@
if(is_numeric(substr($temp,0,1))){
$temp="_".(substr($temp,1,strlen($temp)-1));
}
- // clé primaire = table.champs
// On remet la clé primaire en forme table.champs
// en retour "insert" mettre en forme la clé primaire car sinon erreur suivante :
// class om_champs - dbform::is_action_condition_satisfied(): return false;
@@ -397,26 +391,25 @@
// en effet la clé primaire doit exister pour satisfaire la condition exist()
$this->valF['column_name'] = $val['table_name'].".".$temp;
$this->tab->libelle=$val['column_name'];
- // recherche position pour bloc = C1 en ajout
- // SELECT max(parametres->>'position') FROM om5.om_forms where SPLIT_PART(om_forms.column_name, '.', 1) = 'famille' and parametres->>'bloc' = 'C1'
-
+ // recherche du max position pour bloc = C1 en ajout
$sql = " SELECT ";
$sql .= " max(parametres->>'position') ";
$sql .= " FROM ".DB_PREFIXE."om_forms ";
- $sql .= " where SPLIT_PART(om_forms.column_name, '.', 1) = '".$this->valF["table_name"]."' ";
+ $sql .= " where SPLIT_PART(om_forms.column_name, '.', 1) = '".$this->valF["table_name"]."' "; // table_name ***
$sql .= " and parametres->>'bloc' = 'C1'";
$res = $this->f->db->getOne($sql);
$this->f->addToLog("obj/om_forms_class.php - setvalF: db->getOne(\"".$sql."\");", DEBUG_MODE);
$this->f->isDatabaseError($res);
- $position=intval($res);
- // recherche du max position
+ $position=intval($res);
$position++;
$this->tab->bloc = 'C1';
$this->tab->position = $position;
}
// update
+ // data_type : cle_secondaire -> integer
if($this->getParameter('maj')==1){
if ($this->cle_secondaire == 'oui'){
+ echo "************************";
$val['data_type'] = "integer";
$this->addToMessage("data_type = integer");
}
@@ -423,7 +416,7 @@
}
}

- // ajout = alter nom_table add nom_colonne type
+ // ajout = alter nom_table add nom_colonne type + om_forms
function ajouter($val = array(), &$dnu1 = null, $dnu2 = null) {
// Begin
$this->begin_treatment(__METHOD__);
@@ -431,11 +424,10 @@
$this->setValF($val);
// verifier si existe des champs
$temp = explode(".", $this->valF['column_name']); // valeur du champ
+ // vérification ($this->setValFAjout($val); -> dans verifier())
$this->verifier($val, $this->f->db, null);
- // methode de verification champ lib
$val['calcul']=$this->verifier_calcul($val['calcul']);
$val['libelle']=$this->verifier_libelle($val['libelle']);
- //$this->setValFAjout($val); -> dans verifier()
if ($this->correct) {
// cas cle secondaire
if($this->valF['data_type']== 'cle_secondaire')
@@ -464,12 +456,13 @@
return $this->end_treatment(__METHOD__, false);
}else{
$this->addToMessage("création du champ ".$this->valF['column_name']);
- //*** modification comment -> om_forms/json
+ // comment
+ //$sql = "comment on COLUMN ".DB_PREFIXE.$this->valF['table_name'].".".$temp[1]." IS ";
+ // om_forms/json
$this->tab->type = $val['type'];
$this->tab->calcul = $val['calcul'];
$this->tab->liste = $val['liste']; //***
$insert=json_encode($this->tab);
- //$sql = "comment on COLUMN ".DB_PREFIXE.$this->valF['table_name'].".".$temp[1]." IS ";
$sql = "insert into ".DB_PREFIXE."om_forms ";
$sql .= " VALUES ( '".$this->valF['column_name']."',";
$sql .= "'".$insert."','".$this->valF['table_name']."')"; // ajout de table name
@@ -500,8 +493,7 @@
$this->addToLog(__METHOD__."(): ERROR", DEBUG_MODE);
// Return
return $this->end_treatment(__METHOD__, false);
- }
-
+ }
}
}else {
// Message d'echec (saut d'une ligne supplementaire avant le
@@ -515,9 +507,7 @@
return $this->end_treatment(__METHOD__, true);
}

- // en modifier : alter table nom_table alter column nom_colonne type
- // COMMENT ON COLUMN om5.livre.fichier IS '{"bloc":"1","position":"2","libelle":"mon auteur", "type":"fichier"}';
-
+ // en modifier : alter table + om_forms
function modifier($val = array(), &$dnu1 = null, $dnu2 = null) {
// Begin
$this->begin_treatment(__METHOD__);
@@ -525,8 +515,8 @@
$this->setValF($val);
// verifier si existe des champs
$temp = explode(".", $this->valF['column_name']); // valeur du champ
+ // methode de verification champ lib
$this->verifier($val, $this->f->db, null);
- // methode de verification champ lib
$val['calcul']=$this->verifier_calcul($val['calcul']);
$val['libelle']=$this->verifier_libelle($val['libelle']);
if ($this->correct) {
@@ -607,8 +597,7 @@
// *** column default
// a peu d'intérêt -> utiliser setval car la mise a jour
// se fait sur les enregistrements existants
- // et n'est pas pris en compte même si champs hidden
-
+ // et n'est pas pris en compte même si champs hidden
if($this->valF['column_default'] == ''){
$sql = "alter table ".DB_PREFIXE.$this->valF['table_name']." alter column ";
$sql .= $temp[1]." drop DEFAULT ";
@@ -635,8 +624,7 @@
return $this->end_treatment(__METHOD__, false);
}else
$this->addToMessage("ajout de la valeur par default ".$this->valF['column_name']);
- }
-
+ }
}
}else {
// Message d'echec (saut d'une ligne supplementaire avant le
@@ -650,7 +638,7 @@
return $this->end_treatment(__METHOD__, true);
}

- // en supprimer : alter table nom_table drop nom_colonne
+ // supprimer drop columns + om_forms
function supprimer($val = array(), &$dnu1 = null, $dnu2 = null) {
// Begin
$this->begin_treatment(__METHOD__);
@@ -697,11 +685,9 @@
function triggerajouterapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
if($this->valF['data_type']== 'cle_secondaire'){
$this->cle_secondaire_contrainte($id, $dnu1, $val, $dnu2);
- }
-
+ }
}

-
function triggermodifierapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
if($this->valF['data_type']== 'cle_secondaire' and $this->cle_secondaire=='non'){
$this->cle_secondaire_contrainte($id, $dnu1, $val, $dnu2);
@@ -735,8 +721,7 @@
$this->addToMessage(_("creation cle secondaire sur table ")." ".$temp[1]);
$this->db->commit();
}else
- $this->addToMessage(_("pas de creation cle secondaire sur table inexixtante")." ".$temp[1]);
-
+ $this->addToMessage(_("pas de creation cle secondaire sur table inexixtante")." ".$temp[1]);
}

function triggersupprimerapres($id, &$dnu1 = null, $val = array(), $dnu2 = null) {

Reply all
Reply to author
Forward
0 new messages