Agefoddx/classe/Controleur/ControleurLigne.php
2025-03-26 10:22:20 +01:00

208 lines
13 KiB
PHP

<?php
namespace Module\Agefoddx\Classe\Controleur;
use Module\Agefoddx\Classe\Classe\GestionTexte;
use Module\Agefoddx\Classe\GestionBD\bdExterneLigneGestion;
use Module\Agefoddx\Classe\GestionBD\bdGestion;
use Module\Agefoddx\Classe\GestionBD\ligneGestion;
use Module\Agefoddx\Classe\GestionBD\tableGestion;
use Module\Agefoddx\Classe\GestionBD\bdExterneInteraction;
class ControleurLigne extends ControleurGenerique {
/**
* @var string $lien represent le chemin relatif vers la vue
*/
protected static string $lien = "../view/gestionLigne";
/**
* @param $message string message passable en parameter pour les interactions utilisateur
* @return void affichage de la liste des lignes
*/
public static function afficherListe ($message = "") {
global $langs;
$idBD = $_POST["idBD"];
$nomBD = $_POST["nomBD"];
$idTable = $_POST["idTable"];
$infoTable = (new tableGestion())->getTableByPk($idTable);
$nomTableAgefodd = $infoTable["nomTableAgefodd"];
$nomTableExterne = $infoTable["nomTableExterne"];
$titre = GestionTexte::tronquerParentheses($langs->trans("AgefoddxTitreAfficherListeColonne"), "$nomTableExterne ".$langs->trans("AgefoddxEt")." $nomTableAgefodd");
$liste = (new ligneGestion())->getListeLigneCorreler($idTable);
$addresse = "afficherListe";
self::afficherVue(["titre" => $titre, "cheminCorpsVue"=>self::$lien."/".$addresse.".php","message"=>$message,
"idBD"=>$idBD,"nomBD"=>$nomBD,
"idTable"=>$idTable, "nomTableA"=>$nomTableAgefodd, "nomTableE"=>$nomTableExterne,
"liste"=>$liste, "mdp"=>$_POST["mdp"]]);
}
/**
* @param string $titre titre de la page
* @param string $actionApres action a réalisé
* @param string $titreAction label de l'action
* @param $message string message passable en parameter pour les interactions utilisateur
* @return void permet la connection avec la base de donnée extérieur
*/
public static function getMdp ($titre, $actionApres, $titreAction, $message = "") {
$idBD = $_POST["idBD"];
$nomBD = $_POST["nomBD"];
$idTable = $_POST["idTable"];
$valeurBase = $_POST["valeurBase"] ?? $_POST["nomTableAgefodd"] ?? "";
$infoTable = (new tableGestion())->getTableByPk($idTable);
$nomTableAgefodd = $infoTable["nomTableAgefodd"];
$nomTableExterne = $infoTable["nomTableExterne"];
$addresse = "transition";
self::afficherVue(["titre" => $titre, "cheminCorpsVue"=>self::$lien."/".$addresse.".php","message"=>$message,
"idBD"=>$idBD,"nomBD"=>$nomBD, "valeurBase"=>$valeurBase,
"idTable"=>$idTable, "nomTableA"=>$nomTableAgefodd, "nomTableE"=>$nomTableExterne,
"actionApres"=>$actionApres, "titreAction"=>$titreAction]);
}
/**
* @param $message string message passable en parameter pour les interactions utilisateur
* @return void affichage de la page d'ajout de lien entre les lignes
*/
public static function ajouter ($message = "") {
global $langs;
$idBD = $_POST["idBD"];
$nomBD = $_POST["nomBD"];
$idTable = $_POST["idTable"];
$valeurBase = $_POST["valeurBase"] ?? $_POST["nomTableAgefodd"] ?? $_POST["agefoddLigneFk"] ?? "";
$infoTable = (new tableGestion())->getTableByPk($idTable);
$nomTableAgefodd = $infoTable["nomTableAgefodd"];
$nomTableExterne = $infoTable["nomTableExterne"];
$titre = $langs->trans("AgefoddxAjouterLien")." $nomTableAgefodd ".$langs->trans("AgefoddxEt")." $nomTableExterne";
$tab = $_POST["tab"] ?? "tab1";
$addresse = "ajouter";
$mdp = $_POST["mdp"];
if ($mdp != "" && isset($mdp)){
$bdE_connexion = bdExterneInteraction::construireDepuisSQL((new bdGestion())->getBdByPk($idBD), $mdp);
if ($bdE_connexion->connectionBD()){
$listeE = bdExterneLigneGestion::getListeLigne($bdE_connexion, $nomTableExterne);
$listeA = (new ligneGestion())->getListeLigneAgefodd($nomTableAgefodd, $idTable);
$listeEFK = bdExterneLigneGestion::getListeFK($bdE_connexion, $nomTableExterne);
$listeAFK = (new ligneGestion())->getListeFK($nomTableAgefodd, $idTable);
if (in_array($valeurBase, $listeAFK[0])) $tab = "tab3";
self::afficherVue(["titre" => $titre, "cheminCorpsVue"=>self::$lien."/".$addresse.".php","message"=>$message,
"idBD"=>$idBD,"nomBD"=>$nomBD,
"idTable"=>$idTable, "nomTableA"=>$nomTableAgefodd, "nomTableE"=>$nomTableExterne,
"listeE"=>$listeE, "listeA"=>$listeA,"valeurBase"=>$valeurBase, "listeEFK"=>$listeEFK, "listeAFK"=>$listeAFK,"mdp"=>$mdp, "tab"=>$tab]);
} else {
self::getMdp($titre, 'ajouter', $langs->trans("AgefoddxAjouter"), $langs->trans("AgefoddxMDPInc"));
}
} else {
self::getMdp($titre, 'ajouter', $langs->trans("AgefoddxAjouter"));
}
}
/**
* @return void insertion de lien entre diver lignes
*/
public static function insertion() {
global $langs;
$idBD = $_POST["idBD"];
$nomBD = $_POST["nomBD"];
$idTable = $_POST["idTable"];
$infoTable = (new tableGestion())->getTableByPk($idTable);
$nomTableAgefodd = $infoTable["nomTableAgefodd"];
$nomTableExterne = $infoTable["nomTableExterne"];
$agefoddLigne = $_POST["agefoddLigne"];
$bdExterneLigne = $_POST["bdExterneLigne"];
$valeurFixe = $_POST["valeurFixe"];
$valeurBase = $_POST["valeurBase"] ?? $_POST["nomTableAgefodd"] ?? "";
$agefoddFk = $_POST["agefoddLigneFk"];
$externeFk = $_POST["bdExterneLigneFk"];
$mdp = $_POST["mdp"];
$tab = $_POST["tab"];
$gestionLigne = new ligneGestion();
if (isset($idBD) && isset($nomBD) && isset($idTable) && isset($agefoddLigne) && isset($bdExterneLigne)){
if ($bdExterneLigne != '' && $agefoddLigne != ''){
if (!$gestionLigne->correlationEstDansTable($idTable, $agefoddLigne)){
$bdE_connexion = bdExterneInteraction::construireDepuisSQL((new bdGestion())->getBdByPk($idBD), $mdp);
$typeE = (new GestionTexte())->tronquerParentheses(bdExterneLigneGestion::getTypeLigne($bdE_connexion, $nomTableExterne, $bdExterneLigne));
$typeA = (new GestionTexte())->tronquerParentheses($gestionLigne->getTypeLigne($nomTableAgefodd, $agefoddLigne));
if ($gestionLigne->sontCompatible($typeA, $typeE)){
$value = $gestionLigne->insertion($idTable, $idBD, $agefoddLigne, $bdExterneLigne);
if ($value) self::afficherListe(GestionTexte::tronquerParentheses($langs->trans("AgefoddxMessageLigneInsertionTrue"), "$agefoddLigne ".$langs->trans("AgefoddxEt")." $bdExterneLigne"));
else self::afficherListe(GestionTexte::tronquerParentheses($langs->trans("AgefoddxMessageLigneInsertionFalse"), "$agefoddLigne ".$langs->trans("AgefoddxEt")." $bdExterneLigne"));
}else self::ajouter(GestionTexte::tronquerParentheses($langs->trans("AgefoddxMessageLigneInsertionInc"), "$agefoddLigne($typeA) ".$langs->trans("AgefoddxEtDe")." $bdExterneLigne($typeE) "));
}else self::ajouter(GestionTexte::tronquerParentheses($langs->trans("AgefoddxMessageLigneInsertionDejaLiee"), $agefoddLigne));
}else self::ajouter($langs->trans("AgefoddxMessageLigneInsertionDoitChoisirVal"));
}elseif (isset($idBD) && isset($nomBD) && isset($idTable) && isset($agefoddLigne) && $valeurFixe) {
if ($agefoddLigne != '') {
if (!$gestionLigne->correlationEstDansTable($idTable, $agefoddLigne)) {
$value = $gestionLigne->insertionValue($idTable, $idBD, $agefoddLigne, $valeurFixe);
if ($value) self::afficherListe(GestionTexte::tronquerParentheses($langs->trans("AgefoddxMessageLigneInsertionTrue"), "$agefoddLigne " . $langs->trans("AgefoddxEtLaVal") . " $valeurFixe"));
else self::afficherListe(GestionTexte::tronquerParentheses($langs->trans("AgefoddxMessageLigneInsertionTrue"), "$agefoddLigne " . $langs->trans("AgefoddxEtLaVal") . " $valeurFixe"));
} else self::ajouter(GestionTexte::tronquerParentheses($langs->trans("AgefoddxMessageLigneInsertionDejaLiee"), $agefoddLigne));
} else self::ajouter($langs->trans("AgefoddxMessageLigneInsertionDoitChoisirVal"));
}elseif (isset($idBD) && isset($nomBD) && isset($idTable) && isset($agefoddFk) && isset($externeFk)) {
list($agefoddFk, $tableReferenceA) = explode('|', $agefoddFk);
list($externeFk, $tableReferenceE) = explode('|', $externeFk);
if ((new tableGestion())->tablesDejaEnregistrer($tableReferenceA, $tableReferenceE)) {
$bdE_connexion = bdExterneInteraction::construireDepuisSQL((new bdGestion())->getBdByPk($idBD), $mdp);
$typeE = (new GestionTexte())->tronquerParentheses(bdExterneLigneGestion::getTypeLigne($bdE_connexion, $nomTableExterne, $externeFk));
$typeA = (new GestionTexte())->tronquerParentheses($gestionLigne->getTypeLigne($nomTableAgefodd, $agefoddFk));
if ($gestionLigne->sontCompatible($typeA, $typeE)){
$value = $gestionLigne->insertion($idTable, $idBD, $agefoddFk, $externeFk);
if ($value) self::afficherListe(GestionTexte::tronquerParentheses($langs->trans("AgefoddxMessageLigneInsertionTrue"), "$agefoddFk " . $langs->trans("AgefoddxEt") . " $externeFk"));
else self::afficherListe(GestionTexte::tronquerParentheses($langs->trans("AgefoddxMessageLigneInsertionTrue"), "$agefoddFk " . $langs->trans("AgefoddxEt") . " $externeFk"));
}
} else ControleurTable::ajouter(GestionTexte::tronquerParentheses($langs->trans("AgefoddxTableFkLierFalse"), "$tableReferenceA ".$langs->trans("AgefoddxEt")." $tableReferenceE"));
}else self::ajouter($langs->trans("AgefoddxMessageErreurSaisie"));
}
/**
* @param $message string message passable en parameter pour les interactions utilisateur
* @return void affichage de la page de suppression de lien entre les lignes
*/
public static function supprimer ($message = "") {
global $langs;
$idBD = $_POST["idBD"];
$nomBD = $_POST["nomBD"];
$idTable = $_POST["idTable"];
$idLigne = $_POST["idLigne"];
$infoTable = (new tableGestion())->getTableByPk($idTable);
$nomTableAgefodd = $infoTable["nomTableAgefodd"];
$nomTableExterne = $infoTable["nomTableExterne"];
$infoLigne = (new ligneGestion())->getLigneByPk($idLigne);
$nomLigneExterne = $infoLigne["nomLigneE"];
$nomLigneAgefodd = $infoLigne["nomLigneA"];
$titre = $langs->trans("AgefoddxSupprimerLienTable")." $nomLigneExterne ".$langs->trans("AgefoddxEt")." $nomLigneAgefodd";
$addresse = "supprimer";
self::afficherVue(["titre" => $titre, "cheminCorpsVue"=>self::$lien."/".$addresse.".php","message"=>$message,
"idBD"=>$idBD,"nomBD"=>$nomBD,"mdp"=>$_POST["mdp"],
"idTable"=>$idTable, "nomTableA"=>$nomTableAgefodd, "nomTablE"=>$nomTableExterne,
"nomLigneE"=>$nomLigneExterne, "nomLigneA"=>$nomLigneAgefodd, "idLigne"=>$idLigne]);
}
/**
* @param $message string message passable en parameter pour les interactions utilisateur
* @return void suppression des liens dans entre les lignes dans la bd
*/
public static function suppression ($message = "") {
global $langs;
$idBD = intval($_POST["idBD"]);
$nomBD = $_POST["nomBD"];
$idTable = intval($_POST["idTable"]);
$idLigne = intval($_POST['idLigne']);
$mdp=$_POST["mdp"];
$infoTable = (new tableGestion())->getTableByPk($idTable);
$nomTableAgefodd = $infoTable["nomTableAgefodd"];
$nomTableExterne = $infoTable["nomTableExterne"];
$infoLigne = (new ligneGestion())->getLigneByPk($idLigne);
$nomLigneExterne = $infoLigne["nomLigneE"];
$nomLigneAgefodd = $infoLigne["nomLigneA"];
$value = $_POST["ouiNon"];
$et = " $nomLigneExterne ".$langs->trans("AgefoddxEt")." $nomLigneAgefodd ";
if ($value == "true" && $idLigne && isset($nomBD)){
$connexion_ligne = new ligneGestion();
$value = $connexion_ligne->suppression($idLigne);
if ($value)self::afficherListe(GestionTexte::tronquerParentheses($langs->trans("AgefoddxSuppressionLienTrue"), $et));
else self::afficherListe(GestionTexte::tronquerParentheses($langs->trans("AgefoddxSuppressionLienFalse"), $et));
} else self::afficherListe(GestionTexte::tronquerParentheses($langs->trans("AgefoddxSuppressionLienAnnuler"), $et));
}
}