FrameBeurk File
Fmbk/Module/Beurk/fonctionsBeurkMaj.php
<?php //FrameBeurk V0.65 Copyright ToolOscope 2016. Licence CeCILL-C.
// Fonctions de mise à jour du noyau pour les actions de Maj
function Beurk_nouvelleRelation($IdNoeud, $IdRelation, $IdLie) {
db_QUERY("INSERT IGNORE INTO Beurk_Lien (IdNoeud, IdRelation, IdLie) VALUES ('" . $IdNoeud . "', '" . $IdRelation . "', '" . $IdLie . "')");
}
function Beurk_modifieRelation($IdNoeud, $IdRelation, $ancienIdLie, $nouveauIdLie) {
db_QUERY("UPDATE Beurk_Lien SET IdLie = '" . $nouveauIdLie . "' WHERE IdNoeud = '" . $IdNoeud . "' AND IdRelation = '" . $IdRelation . "' AND IdLie = '" . $ancienIdLie . "'");
}
function Beurk_nouvelleVersionNoeud($IdNoeud, $NoVersion, $IdEtat) {
global $CONFIG, $DIALOG, $TRANSAC;
db_QUERY("INSERT INTO Beurk_Historique
(IdNoeud, NoVersion, IdEtat, IdUser, AdresseIp, IdActMaj, IdMaj, TsAction)
VALUES ('" . $IdNoeud . "', '" . $NoVersion . "', '" . $IdEtat . "', '" . $DIALOG['IdUser'] . "', '" . $_SERVER['REMOTE_ADDR']
. "', '" . $CONFIG['Action'][$GLOBALS['ActMaj']]['Id'] . "', '" . $GLOBALS['IdMaj'] . "', '" . $TRANSAC['Stat']['TsBeurkIni'] . "')");
}
function Beurk_nouveauNoeud($IdNoeud, $IdEntite, $IdCreateur, $IdRef) {
global $CONFIG;
Beurk_nouvelleRelation($IdNoeud, $CONFIG['Relation']['estDeType']['Id'], $IdEntite);
Beurk_nouvelleRelation($IdNoeud, $CONFIG['Relation']['aPourCreateur']['Id'], $IdCreateur);
Beurk_nouvelleRelation($IdNoeud, $CONFIG['Relation']['estElementDe']['Id'], $IdRef);
}
function Beurk_supprimeNoeud($IdNoeud) {
db_QUERY("DELETE FROM Beurk_Lien WHERE IdNoeud = '" . $IdNoeud . "'");
db_QUERY("DELETE FROM Beurk_Lien WHERE IdLie = '" . $IdNoeud . "'");
}
// exécute la requete (obligatoirement INSERT en format tableau d'UN SEUL noeud), alimente les tables du noyau et positionne le message Maj.
// renvoie l'Id si OK
function Beurk_creeEntite($requete, $messageOK, $Etat, $IdRef, $EntMaj = '') {
global $DIALOG, $CONFIG;
if ($IdEtat = Beurk_id($Etat)) { // accepte un IdEtat ou un terminal
if ($EntMaj == '')
$EntMaj = $GLOBALS['EntAct']; // par défaut, l'entité est celle de l'action
$IdNoeud = db_NEW_ID(1); // obtention de l'Id
$requete['VALUES']['Id' . $EntMaj] = $IdNoeud; // complétion de la requête
$requete['VALUES']['IdEtat'] = $IdEtat;
$requete['VALUES']['NoVersion'] = 1;
if (db_QUERY($requete)) { // éxécution de la requête
Beurk_nouveauNoeud($IdNoeud, $CONFIG['Entite'][$EntMaj]['Id'], $DIALOG['IdUser'], $IdRef); // création du noeud et des 3 1ères relations
Beurk_nouvelleVersionNoeud($IdNoeud, 1, $IdEtat); // création de la 1ere version de l'historique
if ($messageOK != '')
Beurk_messageEtape($messageOK, false); // affichage du message de bonne fin
return $IdNoeud;
} else {
Beurk_messageEtape('Création en erreur', true);
return false;
}
} else {
Beurk_messageEtape('Code Etat inconnu', true);
return false;
}
}
// exécute la requete (obligatoirement UPDATE en format tableau d'UN SEUL noeud), met à jour les tables du noyau et positionne le message Maj.
// renvoie true si OK
function Beurk_modifieEntite($requete, $messageOK, $Etat, $NoVersionCourant, $IdNoeud) {
global $DIALOG, $CONFIG;
if ($IdEtat = Beurk_id($Etat)) { // accepte un IdEtat ou un terminal
$requete['SET']['IdEtat'] = $IdEtat; // complétion de la requête
$requete['SET']['NoVersion'] = ($NoVersion = $NoVersionCourant + 1);
if (db_QUERY($requete)) {
Beurk_nouvelleVersionNoeud($IdNoeud, $NoVersion, $IdEtat); // création de la nouvelle version de l'historique
if ($messageOK != '')
Beurk_messageEtape($messageOK, false); // affichage du message de bonne fin
return true;
} else {
Beurk_messageEtape('Modification en erreur', true);
return false;
}
} else {
Beurk_messageEtape('Code Etat inconnu', true);
return false;
}
}
// exécute la requete (obligatoirement DELETE d'UN SEUL noeud), met à jour les tables du noyau et positionne le message Maj.
// renvoie true si OK
function Beurk_supprimeEntite($requete, $messageOK, $NoVersionCourant, $IdNoeud) {
global $DIALOG, $CONFIG;
if (db_QUERY($requete)) {
Beurk_supprimeNoeud($IdNoeud); // delete des relations avec le noeud
Beurk_nouvelleVersionNoeud($IdNoeud, $NoVersionCourant + 1, Beurk_id($CONFIG['Param']['EtatSupprime'])); // selon la config, état 'Z' = noeud supprimé
if ($messageOK != '')
Beurk_messageEtape($messageOK, false); // affichage du message de bonne fin
return true;
} else {
Beurk_messageEtape('Suppression en erreur', true);
return false;
}
}