fray...@users.adullact.net
unread,Apr 25, 2024, 12:59:59 PMApr 25Sign 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-25 18:59:56 +0200 (Thu, 25 Apr 2024)
New Revision: 4942
Modified:
openmairie_exemple/branches/om5_rad/HISTORY.txt
openmairie_exemple/branches/om5_rad/TODO.txt
openmairie_exemple/branches/om5_rad/obj/om_vues.class.php
Log:
ajout modif et sup de vues
Modified: openmairie_exemple/branches/om5_rad/HISTORY.txt
===================================================================
--- openmairie_exemple/branches/om5_rad/HISTORY.txt 2024-04-25 16:25:35 UTC (rev 4941)
+++ openmairie_exemple/branches/om5_rad/HISTORY.txt 2024-04-25 16:59:56 UTC (rev 4942)
@@ -131,8 +131,8 @@
* Evolution : om_vues : affichage des vues - a terme suppression, modification, ajout 25/04/2024
* Evolution : om_actions : ajout des actions à terme : édition, ajouter, modifier, supprimer 25/04/2024
* Evolution : om_champs suppression vue et table 25/04/2024
+* Evolution : mise à niveau install et om_setup_config.php
-
* bug : om_tables : si existe vue -> la suppression créé une erreur : a voir
4.10.0 (29/11/2022
Modified: openmairie_exemple/branches/om5_rad/TODO.txt
===================================================================
--- openmairie_exemple/branches/om5_rad/TODO.txt 2024-04-25 16:25:35 UTC (rev 4941)
+++ openmairie_exemple/branches/om5_rad/TODO.txt 2024-04-25 16:59:56 UTC (rev 4942)
@@ -10,20 +10,11 @@
* Evolution om_tables : moteur de recherche si om_champs affiché en liste. ok ?
* a voir manual select pour boolean tous-oui false-true
-Calcul en liste -> champs virtuel -
+om_champs : type (om) sql -> virer le data_type postgres
-- affichage en liste de champs
-- pas de valorisation en setValF
-- type hidden en maj / et hiddenstatic en affichage
-- pas de création de champ
+
-* Evolution : calcul dans une liste de data de sous formulaire avec automatisation d'une vue:
- ex: nombre d'ouvrages empruntés par un emprunteur de bibliothèque
- -> vue ou champs réel ?
- - cumuls en ajouter et modifier après si cumul de sous formulaire
- - vue en agrégat sur un champ calcul-fictif hidden
-
Calcul en triggers om
* si apostrophe alors mettre 2 ' en saisie dans champs calcul pour ne pas avoir d erreur en sql comment -> date(''Y-m-d'')
évolution pb d ordre dans les champs calcul
@@ -61,6 +52,13 @@
*** agregat avec les vues
+* Evolution : calcul dans une liste de data de sous formulaire avec automatisation d'une vue:
+ ex: nombre d'ouvrages empruntés par un emprunteur de bibliothèque
+ -> vue ou champs réel ?
+ - cumuls en ajouter et modifier après si cumul de sous formulaire
+ - vue en agrégat sur un champ calcul-fictif hidden
+
+
CREATE OR REPLACE VIEW AS cumul_champsousform_form
SELECT form.cle_primaire
sum(sousform.champ) AS cumul_champ
@@ -80,13 +78,6 @@
sum article.montant_ht
famille = pk + table
-* information_schema.view
-view_catalog "om5_rad";
-view_schema "om5";
-view_name "article_montant_ht";
-table_catalog "om5_rad";
-table_schema "om5";sv
-table_name"article"
-> pb si creation de vue pour supprimer table -> drop table cascade
Modified: openmairie_exemple/branches/om5_rad/obj/om_vues.class.php
===================================================================
--- openmairie_exemple/branches/om5_rad/obj/om_vues.class.php 2024-04-25 16:25:35 UTC (rev 4941)
+++ openmairie_exemple/branches/om5_rad/obj/om_vues.class.php 2024-04-25 16:59:56 UTC (rev 4942)
@@ -8,17 +8,111 @@
class om_vues extends om_vues_gen {
- /*
- function getFormTitle($ent) {
- //
- $out = ""$ent;
- if ($this->getVal($this->clePrimaire) != "") {
- $out .= "<span class=\"libelle\"> -> ".$this->get_default_libelle()."</span>";
- }
- return $out;
+ function setType(&$form,$maj) {
+ parent::setType($form, $maj);
+ if($maj==0){
+ $form->setType("table_schema", "hiddenstatic");
+ }
+ if($maj==1){
+ $form->setType("table_schema", "hiddenstatic");
+ }
}
- */
+ function ajouter($val = array(), &$dnu1 = null, $dnu2 = null) {
+ // Begin
+ $this->begin_treatment(__METHOD__);
+ // Mutateur de valF
+ $this->setValF($val);
+ // verifier
+ // si le nom de la table n'existe pas
+ $this->verifier($val, $this->f->db, null);
+ //$this->setValFAjout($val); -> ne marche pas et pas de remontée de messages -> mis en verifier()
+ if ($this->correct) {
+ // creation de la table + clé primaire
+ $sql = "create or replace view ".DB_PREFIXE.$this->valF['table_name']." as ";
+ $sql .= $this->valF['view_definition']." ";
+ $res = $this->f->db->query($sql);
+ if ($this->f->isDatabaseError($res, true)) {
+ // Appel de la methode de recuperation des erreurs
+ $this->addToMessage($this->valF['table_name']." ".__("vue non créé")." ".$sql);
+ $this->addToMessage($res->getDebugInfo());
+ $this->correct = false;
+ // Return
+ return $this->end_treatment(__METHOD__, false);
+ }else{
+ $this->addToMessage("creation table ".$this->valF['table_name']);
+ }
+ }else {
+ $this->addToMessage("<br/>".__("vue non créé")."<br/>");
+ $this->addToLog(__METHOD__."(): ".$message, VERBOSE_MODE);
+ // Return
+ return $this->end_treatment(__METHOD__, false);
+ }
+ return $this->end_treatment(__METHOD__, true);
+ }
+ function modifier($val = array(), &$dnu1 = null, $dnu2 = null) {
+ // Begin
+ $this->begin_treatment(__METHOD__);
+ // Mutateur de valF
+ $this->setValF($val);
+ // verifier
+ // si le nom de la table n'existe pas
+ $this->verifier($val, $this->f->db, null);
+ //$this->setValFAjout($val); -> ne marche pas et pas de remontée de messages -> mis en verifier()
+ if ($this->correct) {
+ // creation de la table + clé primaire
+ $sql = "create or replace view ".DB_PREFIXE.$this->valF['table_name']." as ";
+ $sql .= $this->valF['view_definition']." ";
+ $res = $this->f->db->query($sql);
+ if ($this->f->isDatabaseError($res, true)) {
+ // Appel de la methode de recuperation des erreurs
+ $this->addToMessage($this->valF['table_name']." ".__("vue non créé")." ".$sql);
+ $this->addToMessage($res->getDebugInfo());
+ $this->correct = false;
+ // Return
+ return $this->end_treatment(__METHOD__, false);
+ }else{
+ $this->addToMessage("modification vue ".$this->valF['table_name']);
+ }
+ }else {
+ $this->addToMessage("<br/>".__("vue non modifiée")."<br/>");
+ $this->addToLog(__METHOD__."(): ".$message, VERBOSE_MODE);
+ // Return
+ return $this->end_treatment(__METHOD__, false);
+ }
+ return $this->end_treatment(__METHOD__, true);
+ }
+ function supprimer($val = array(), &$dnu1 = null, $dnu2 = null) {
+ // Begin
+ $this->begin_treatment(__METHOD__);
+ // Mutateur de valF
+ $this->setValF($val);
+ if ($this->correct) {
+ // creation de la table + clé primaire
+ $sql = "drop view ".DB_PREFIXE.$this->valF['table_name']." ";
+ $res = $this->f->db->query($sql);
+ if ($this->f->isDatabaseError($res, true)) {
+ // Appel de la methode de recuperation des erreurs
+ $this->addToMessage($this->valF['table_name']." ".__("vue non supprimmée")." ".$sql);
+ $this->addToMessage($res->getDebugInfo());
+ $this->correct = false;
+ // Return
+ return $this->end_treatment(__METHOD__, false);
+ }else{
+ $this->addToMessage("suppression ".$this->valF['table_name']);
+ }
+ }else {
+ $this->addToMessage("<br/>".__("vue non supprimée")."<br/>");
+ $this->addToLog(__METHOD__."(): ".$message, VERBOSE_MODE);
+ // Return
+ return $this->end_treatment(__METHOD__, false);
+ }
+ return $this->end_treatment(__METHOD__, true);
+ }
+
+
+
+
}