[openads-Commits] r8343 - in branches/4.9.0-dossiers-parallele: obj sql/pgsql

0 views
Skip to first unread message

sof...@adullact.net

unread,
Nov 19, 2018, 12:23:52 PM11/19/18
to openmairi...@googlegroups.com
Author: softime
Date: 2018-11-19 18:23:49 +0100 (Mon, 19 Nov 2018)
New Revision: 8343

Modified:
branches/4.9.0-dossiers-parallele/obj/demande_type.class.php
branches/4.9.0-dossiers-parallele/obj/om_dbform.class.php
branches/4.9.0-dossiers-parallele/sql/pgsql/demande_type.form.inc.php
Log:
* Nouvelles gestion des enregistrements des tables de liaison

Modified: branches/4.9.0-dossiers-parallele/obj/demande_type.class.php
===================================================================
--- branches/4.9.0-dossiers-parallele/obj/demande_type.class.php 2018-11-19 15:47:00 UTC (rev 8342)
+++ branches/4.9.0-dossiers-parallele/obj/demande_type.class.php 2018-11-19 17:23:49 UTC (rev 8343)
@@ -136,7 +136,12 @@
//Initialisation de la liste des états des dossiers d'instruction
$this->init_select($form, $db, $maj, $debug, "etats_autorises",
$sql_etats_autorises, $sql_etats_autorises_by_id, false, true);
-
+
+ //
+ if ($this->getParameter('maj') == 3 || $this->getParameter('maj') == 2) {
+ $this->init_select($form, $db, $maj, $debug, "dossier_instruction_type_compatible", $sql_dossier_instruction_type_compatible, $sql_dossier_instruction_type_compatible_by_id, false, true);
+ }
+
// Si en ajout ou en modification
if ($maj < 2) {
// Initialise les select en fonction de la valeur d'un autre champ
@@ -167,138 +172,64 @@
//
parent::triggerajouterapres($id,$db,$val,$DEBUG);

- // Ajoute autant de lien_demande_type_etat que d'états séléctionnés
-
- // Récupération des données du select multiple
- $etats_autorises = $this->getPostedValues('etats_autorises');
-
- // Ne traite les données que s'il y en a et qu'elles sont correctes
- if (is_array($etats_autorises)
- && count($etats_autorises) > 0 ){
- // Initialisation
- $nb_liens_etat = 0;
- // Boucle sur la liste des états sélectionnés
- foreach ($etats_autorises as $value) {
- // Test si la valeur par défaut est sélectionnée
- if ($value != "") {
- //
- $donnees = array(
- 'demande_type' => $this->valF['demande_type'],
- 'etat' => $value
- );
- // On ajoute l'enregistrement
- $this->ajouter_etats_autorises($donnees);
- // On compte le nombre d'éléments ajoutés
- $nb_liens_etat++;
- }
+ // Ajoute les liaisons dans lien_demande_type_etat
+ $lien_demande_type_etat = $this->handle_link_table('lien_demande_type_etat', 'etat', 'etats_autorises');
+ if ($lien_demande_type_etat > 0) {
+ if ($lien_demande_type_etat == 1 ) {
+ $this->addToMessage(_("Creation de ").$lien_demande_type_etat._(" nouvelle liaison realisee avec succes."));
+ } else {
+ $this->addToMessage(_("Creation de ").$lien_demande_type_etat._(" nouvelles liaisons realisees avec succes."));
}
- // Message de confirmation
- if ($nb_liens_etat > 0) {
- if ($nb_liens_etat == 1 ){
- $this->addToMessage(_("Creation de ").$nb_liens_etat._(" nouvelle liaison realisee avec succes."));
- } else{
- $this->addToMessage(_("Creation de ").$nb_liens_etat._(" nouvelles liaisons realisees avec succes."));
- }
- }
}
-
- }
-
- //Fonction générique permettant de récupérer les données d'un champ postées
- function getPostedValues($champ) {
-
- // Récupération des demandeurs dans POST
- if ($this->f->get_submitted_post_value($champ) !== null) {
-
- return $this->f->get_submitted_post_value($champ);
+
+ // Ajoute les liaisons dans lien_demande_type_dossier_instruction_type
+ $lien_demande_type_dossier_instruction_type = $this->handle_link_table('lien_demande_type_dossier_instruction_type', 'dossier_instruction_type', 'dossier_instruction_type_compatible');
+ if ($lien_demande_type_dossier_instruction_type > 0) {
+ $message = sprintf(_('Nombre de liaison mise à jour : %s'), $lien_demande_type_dossier_instruction_type);
+ $this->addToMessage($message);
}
+
+ //
+ return true;
}
-
+
function triggermodifierapres($id, &$db = null, $val = array(), $DEBUG = null) {
//
parent::triggermodifierapres($id, $db, $val, $DEBUG);

- // Suppression de tous les liens de la table lien_demande_type_etat
- $this->supprimer_etats_autorises($this->valF['demande_type']);
+ // Ajoute les liaisons dans lien_demande_type_etat
+ $lien_demande_type_etat = $this->handle_link_table('lien_demande_type_etat', 'etat', 'etats_autorises', true);
+ if ($lien_demande_type_etat > 0) {
+ $this->addToMessage(_("Mise a jour des liaisons realisee avec succes."));
+ }

- // Récupération des données du select multiple
- $etats_autorises = $this->getPostedValues('etats_autorises');
-
- // Ne traite les données que s'il y en a et qu'elles sont correctes
- if (is_array($etats_autorises)
- && count($etats_autorises) > 0 ){
- // Initialisation
- $nb_liens_etat = 0;
- // Boucle sur la liste des états sélectionnés
- foreach ($etats_autorises as $value) {
- // Test si la valeur par défaut est sélectionnée
- if ($value != "") {
- //
- $donnees = array(
- 'demande_type' => $this->valF['demande_type'],
- 'etat' => $value
- );
- // On ajoute l'enregistrement
- $this->ajouter_etats_autorises($donnees);
- // On compte le nombre d'éléments ajoutés
- $nb_liens_etat++;
- }
- }
- // Message de confirmation
- if ($nb_liens_etat > 0) {
- $this->addToMessage(_("Mise a jour des liaisons realisee avec succes."));
- }
+ // Ajoute les liaisons dans lien_demande_type_dossier_instruction_type
+ $lien_demande_type_dossier_instruction_type = $this->handle_link_table('lien_demande_type_dossier_instruction_type', 'dossier_instruction_type', 'dossier_instruction_type_compatible', true);
+ if ($lien_demande_type_dossier_instruction_type > 0) {
+ $message = sprintf(_('Nombre de liaison mise à jour : %s'), $lien_demande_type_dossier_instruction_type);
+ $this->addToMessage($message);
}
- }

- /**
- * Ajout d'un lien entre la demande_type et les états de dossiers d'autorisation
- * séléctionné
- * @param mixed[] $data couples demande_type/etat à ajouter
- */
- function ajouter_etats_autorises($data) {
//
- $lien_demande_type_etat = $this->f->get_inst__om_dbform(array(
- "obj" => "lien_demande_type_etat",
- "idx" => "]",
- ));
- // initialisation de la clé primaire
- $val['lien_demande_type_etat'] = "";
- //
- if (is_array($data)) {
- foreach ($data as $key => $value) {
- $val[$key]=$value;
- }
- }
- //
- $lien_demande_type_etat->ajouter($val, $this->db, false);
+ return true;
}

/**
- * Suppression de tous les liens entre la demande_type et les états
- * @param integer $id Identifiant du type de la demande
- */
- function supprimer_etats_autorises($id) {
- // Suppression de tous les enregistrements correspondants à l'id de
- // la demande_type
- $sql = "DELETE
- FROM ".DB_PREFIXE."lien_demande_type_etat
- WHERE demande_type=".$id;
- $res = $this->db->query($sql);
- $this->f->addToLog("supprimer_etats_autorises(): db->query(\"".$sql."\");", VERBOSE_MODE);
- if ( database::isError($res)){
- die();
- }
- }
-
- /**
* Suppression des liens entre demande_type et etat lors de la suppression
* d'un type de demande
*/
function triggersupprimer($id, &$db = null, $val = array(), $DEBUG = null) {
+ //
+ parent::triggersupprimer($id, $db, $val, $DEBUG);

- //Supression des liens entre le type de la demande et les états
- $this->supprimer_etats_autorises($id);
+ //
+ $lien_demande_type_etat = $this->delete_all_links_in_link_table('lien_demande_type_etat');
+
+ //
+ $lien_demande_type_dossier_instruction_type = $this->delete_all_links_in_link_table('lien_demande_type_dossier_instruction_type');
+
+ //
+ return true;
}

/**

Modified: branches/4.9.0-dossiers-parallele/obj/om_dbform.class.php
===================================================================
--- branches/4.9.0-dossiers-parallele/obj/om_dbform.class.php 2018-11-19 15:47:00 UTC (rev 8342)
+++ branches/4.9.0-dossiers-parallele/obj/om_dbform.class.php 2018-11-19 17:23:49 UTC (rev 8343)
@@ -901,7 +901,120 @@
return false;
}

+ /**
+ * [add_all_links_in_link_table description]
+ *
+ * @param [type] $link_table [description]
+ * @param [type] $table_linked [description]
+ * @param array $datas [description]
+ */
+ public function add_all_links_in_link_table($link_table, $table_linked, array $datas) {
+ //
+ $cpt = 0;
+ foreach ($datas as $data) {
+ //
+ if ($data !== "" || $data !== null) {
+ //
+ $val = array(
+ $this->clePrimaire => $this->valF[$this->clePrimaire],
+ $table_linked => $data
+ );
+ //
+ $add = $this->add_in_link_table($link_table, $val);
+ // En cours d'erreur, le traitement est stoppé
+ if ($add === false) {
+ return false;
+ }
+ //
+ $cpt++;
+ }
+ }
+ //
+ return $cpt;
+ }

-}
+ /**
+ * [add_in_link_table description]
+ *
+ * @param [type] $link_table [description]
+ * @param array $data [description]
+ */
+ public function add_in_link_table($link_table, array $data) {
+ //
+ $inst = $this->f->get_inst__om_dbform(array(
+ "obj" => $link_table,
+ "idx" => "]",
+ ));
+ //
+ $val = array();
+ $val[$link_table] = "";
+ if (is_array($data) === true) {
+ foreach ($data as $key => $value) {
+ $val[$key] = $value;
+ }
+ }
+ //
+ $add = $inst->ajouter($val);
+ //
+ return $add;
+ }

+ /**
+ * [delete_all_links_in_link_table description]
+ *
+ * @param [type] $link_table [description]
+ *
+ * @return [type] [description]
+ */
+ public function delete_all_links_in_link_table($link_table) {
+ //
+ $sql = sprintf("DELETE FROM %s%s WHERE %s = %s",
+ DB_PREFIXE,
+ $link_table,
+ $this->clePrimaire,
+ $this->valF[$this->clePrimaire]
+ );
+ $res = $this->db->query($sql);
+ $this->addToLog(__METHODE__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
+ //
+ $this->f->isDatabaseError($res);
+ //
+ return true;
+ }

+ /**
+ * [handle_link_table description]
+ *
+ * @param [type] $link_table [description]
+ * @param [type] $table_linked [description]
+ * @param [type] $link_field [description]
+ * @param boolean $with_delete [description]
+ *
+ * @return [type] [description]
+ */
+ public function handle_link_table($link_table, $table_linked, $link_field, $with_delete = false) {
+ //
+ $this->begin_treatment(__METHOD__);
+
+ // Suppression de toutes les liaisons
+ if ($with_delete !== false) {
+ //
+ $delete = $this->delete_all_links_in_link_table($link_table);
+ }
+
+ // Récupère la valeur postée du champ fictif
+ $datas = $this->f->get_submitted_post_value($link_field);
+
+ //
+ if (is_array($datas) !== true || count($datas) === 0) {
+ //
+ return $this->end_treatment(__METHOD__, false);
+ }
+
+ // Ajout de toutes les liaisons
+ $cpt = $this->add_all_links_in_link_table($link_table, $table_linked, $datas);
+
+ // Retourne le nombre de liaison mise à jour ou ajoutée
+ return $this->end_treatment(__METHOD__, $cpt);
+ }
+}

Modified: branches/4.9.0-dossiers-parallele/sql/pgsql/demande_type.form.inc.php
===================================================================
--- branches/4.9.0-dossiers-parallele/sql/pgsql/demande_type.form.inc.php 2018-11-19 15:47:00 UTC (rev 8342)
+++ branches/4.9.0-dossiers-parallele/sql/pgsql/demande_type.form.inc.php 2018-11-19 17:23:49 UTC (rev 8343)
@@ -103,6 +103,25 @@
WHERE etat.etat IN (<idx>)
ORDER BY lib";

+// Liaison NaN - demande_type/dossier_instruction_type
+$sql_dossier_instruction_type_compatible = "
+SELECT
+ dossier_instruction_type.dossier_instruction_type,
+ CONCAT_WS(' - ', dossier_autorisation_type_detaille.code, dossier_instruction_type.libelle) as lib
+FROM ".DB_PREFIXE."dossier_instruction_type
+LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
+ ON dossier_instruction_type.dossier_autorisation_type_detaille=dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
+ORDER BY lib";
+//
+$sql_dossier_instruction_type_compatible_by_id = "
+SELECT
+ dossier_instruction_type.dossier_instruction_type,
+ CONCAT_WS(' - ', dossier_autorisation_type_detaille.code, dossier_instruction_type.libelle) as lib
+FROM ".DB_PREFIXE."dossier_instruction_type
+LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
+ ON dossier_instruction_type.dossier_autorisation_type_detaille=dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
+ORDER BY lib";
+
// Requête permettant de récupérer les types de dossier d'instruction par rapport
// au type détaillé de dossier d'autorisation
$sql_dossier_instruction_type_by_dossier_autorisation_type_detaille = "

Reply all
Reply to author
Forward
0 new messages