fray...@users.adullact.net
unread,Apr 17, 2024, 6:00:21 PMApr 17Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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")." ");
- $this->addToMessage("[ ".__($this->clePrimaire)." ]");
- }
- // 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")." "."[ ".__($this->clePrimaire)." ]");
+ }
+ // 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) {