<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use App\Repository\AntibiotiqueRepository;
use App\Repository\CelluleRepository;
use App\Repository\ContenuRepository;
use App\Repository\FamilleAntibiotiqueRepository;
use App\Repository\LangueRepository;
use App\Repository\MicroorganismeRepository;
use App\Repository\ParametreRepository;
use App\Repository\VersionRepository;
use App\Service\ContentHandler;
use App\Controller\ReferencesController;
class SpectresController extends ATBGController
{
/**
* @var ContainerHandler
*/
private $gestionBalises;
public function __construct(
private TranslatorInterface $translator,
private VersionRepository $versionRepo,
private CelluleRepository $celluleRepo,
private ContenuRepository $contenuRepo,
private FamilleAntibiotiqueRepository $familleAntibiotiqueRepo,
private AntibiotiqueRepository $antibiotiqueRepo,
private MicroorganismeRepository $microorganismeRepo,
private LangueRepository $langueRepo,
private ReferencesController $referenceService,
private ParametreRepository $parametreRepo,
ContentHandler $gestionBalises
){
$this->gestionBalises = $gestionBalises;
}
/**
* Require ROLE_AUTHENTICATED only for this action
*
* @IsGranted("ROLE_AUTHENTICATED")
*/
public function index(Request $request)
{
$returned = parent::suppression_parametres_get($request);
if ($returned != null)
{
return $returned;
}
return $this->render('Spectres/index.html.twig');
}
/**
* Require ROLE_AUTHENTICATED only for this action
*
* @IsGranted("ROLE_AUTHENTICATED")
*/
public function displaySommaire(Request $request, $selectedId)
{
if ($request->isXmlHttpRequest())
{
$em = $this->getDoctrine()->getManager();
$session = $request->getSession();
$client_id_adada = $session->get('client_id_adada');
$pays_code = $this->parametreRepo->findParametrePaysCode($client_id_adada);
// Titre
$content = $this->render('Spectres/spectres-sommaire-titre.html.twig', array('type_contenu' => $this->getParameter('categorie_spectres')))->getContent();
// Titre contenu
$menus_cellules = $this->celluleRepo->getSommaire($this->getParameter('categorie_spectres'),$session->get("_locale"),$pays_code);
foreach ($menus_cellules as $cellule) {
$contentSommaire = $this->render('Spectres/spectres-sommaire.html.twig', array('cellule' => $cellule, 'selectedId' => $selectedId));
$content .= $contentSommaire->getContent();
}
return new JsonResponse( array (
'responseCode' => 0,
'content' => $content
));
} else throw $this->createNotFoundException();
}
/**
* Require ROLE_AUTHENTICATED only for this action
*
* @IsGranted("ROLE_AUTHENTICATED")
*/
public function displayNode(Request $request, $nodeId)
{
if ($request->isXmlHttpRequest())
{
$em = $this->getDoctrine()->getManager();
$session = $request->getSession();
$client_id_adada = $session->get('client_id_adada');
$pays_code = $this->parametreRepo->findParametrePaysCode($client_id_adada);
$celluleLangue = $this->celluleRepo->findCelluleLangueWithIdCellule($nodeId,$session->get("_locale"));
// dump($celluleLangue);
$content = '';
$parents = array();
$isTrueNode = true;
// dd($request);
$type_spectre = $celluleLangue->getMotsClefs();
if($celluleLangue->getMotsClefs() != null) {
$session->set('type_spectre_code', $celluleLangue->getMotsClefs());
}
$type_spectre = $session->get('type_spectre_code');
switch ($type_spectre) {
case $this->getParameter('spectres_antibiotiques_code'):
$arbres['code'] = "0";
$arbres['message'] = "";
$arbres['content'] = "";
$arbres['nbAntibiotiques'] = 0;
$arbres['antibiotiques'] = array();
$this->remplirAntibiotiques($arbres, $arbres, $session->get("_locale"));
$atbs = array();
foreach ($arbres['antibiotiques'] as $cle => $famille) {
$suffixe = '(famille)';
$atbs[$famille['libelle'].$suffixe] = array(
'id' => $famille['idFamilleAntibiotique'],
'idParent' => null,
'isFamille' => (!empty($famille['sousFamilles']))?1:0,
'isSousFamille' => (!empty($famille['antibiotiques']))?1:0,
'suffixe' => $suffixe
);
if(!empty($famille['sousFamilles'])) {
foreach ($famille['sousFamilles'] as $cle => $ssFamille) {
$suffixe = '(sous famille)';
$atbs[$ssFamille['libelle'].$suffixe] = array(
'id' => $ssFamille['idFamilleAntibiotique'],
'idParent' => $famille['idFamilleAntibiotique'],
'isFamille' => (!empty($ssFamille['sousFamilles']))?1:0,
'isSousFamille' => (!empty($ssFamille['antibiotiques']))?1:0,
'suffixe' => $suffixe
);
if(!empty($ssFamille['antibiotiques'])) {
foreach ($ssFamille['antibiotiques'] as $cle => $atb) {
$suffixe = '(antibiotique)';
$atbs[$atb['libelle'].$suffixe] = array(
'id' => $atb['idantibiotique'],
'idParent' => $ssFamille['idFamilleAntibiotique'],
'isFamille' => 0,
'isSousFamille' => 0,
'suffixe' => $suffixe
);
}
}
}
}
}
ksort($atbs);
$content = $this->render('Antibiotiques/antibiotique-liste.html.twig', array('titre' => $celluleLangue->getTitrecourt(), 'antibiotiques' => $atbs))->getContent();
$data['responseCode'] = 0;
$data['content'] = $content;
$data['nodeId'] = $nodeId*1;
$data['isTrueNode'] = $isTrueNode;
$data['parentNodes'] = $parents;
return new JsonResponse($data);
break;
case $this->getParameter('spectres_microorganismes_code'):
$arbres['code'] = "0";
$arbres['message'] = "";
$arbres['content'] = "";
$arbres['nbMicroorganismes'] = 0;
$arbres['microorganismes'] = array();
$this->remplirMicroorganismes($arbres, $request->getLocale(), false, $arbres);
$mos = array();
foreach ($arbres['microorganismes'] as $cle => $famille) {
$libelle = str_replace('<i>', '', str_replace('</i>', '', $famille['libelle']));
$suffixe = '(famille)';
$mos[$libelle.$suffixe] = array(
'id' => $famille['idmicroorganisme'],
'idParent' => null,
'isFamille' => (!empty($famille['microorganismesfils']))?1:0,
'suffixe' => $suffixe
);
if(!empty($famille['microorganismesfils'])) {
foreach ($famille['microorganismesfils'] as $cle => $mo) {
$libelle = str_replace('<i>', '', str_replace('</i>', '', $mo['libelle']));
$suffixe = '(microorganisme)';
$mos[$libelle.$suffixe] = array(
'id' => $mo['idmicroorganisme'],
'idParent' => $famille['idmicroorganisme'],
'isFamille' => 0,
'suffixe' => $suffixe
);
}
}
}
ksort($mos);
$content = $this->render('Microorganismes/microorganismes-liste.html.twig', array('titre' => $celluleLangue->getTitrecourt(), 'microorganismes' => $mos))->getContent();
$data['responseCode'] = 0;
$data['content'] = $content;
$data['nodeId'] = $nodeId*1;
$data['isTrueNode'] = $isTrueNode;
$data['parentNodes'] = $parents;
return new JsonResponse($data);
break;
default:
break;
}
return new JsonResponse( array (
'responseCode' => 0,
'nodeId' => $nodeId*1,
'content' => $content,
'isTrueNode' => $isTrueNode,
'parentNodes' => $parents
));
} else throw $this->createNotFoundException();
}
/**
* Require ROLE_AUTHENTICATED only for this action
*
* @IsGranted("ROLE_AUTHENTICATED")
*/
public function detailsSpectres(Request $request, $id, $idParent)
{
if ($request->isXmlHttpRequest())
{
$em = $this->getDoctrine()->getManager();
$session = $request->getSession();
$client_id_adada = $session->get('client_id_adada');
$pays_code = $this->parametreRepo->findParametrePaysCode($client_id_adada);
$ref = $this->contenuRepo->findContenusWithIdCellule($id,null,$pays_code);
$content = '';
if($idParent == $id) {
$param = array( 'references' => (!empty($ref[0])?$ref[0]->getContenuhtml():null) );
$content = $this->render('Spectres/spectres-references.html.twig', $param)->getContent();
}
return new JsonResponse( array (
'responseCode' => 0,
'content' => $content
));
} else throw $this->createNotFoundException();
}
/**
* Require ROLE_AUTHENTICATED only for this action
*
* @IsGranted("ROLE_AUTHENTICATED")
*/
public function references(Request $request)
{
if ($request->isXmlHttpRequest())
{
// Titre
$content = $this->render('Spectres/spectres-references.html.twig', array())->getContent();
return new JsonResponse( array (
'responseCode' => 0,
'content' => $content
));
} else throw $this->createNotFoundException();
}
/**
* Require ROLE_AUTHENTICATED only for this action
*
* @IsGranted("ROLE_AUTHENTICATED")
*/
public function redirectSpectres(String $url)
{
return $this->redirect($this->get('router')->generate('spectres_home') . '#/' . $url);
}
/**
* Require ROLE_AUTHENTICATED only for this action
*
* @IsGranted("ROLE_AUTHENTICATED")
*/
public function filariane(Request $request, $nodes)
{
// exemple #/PARENT/CHILD
if ($request->isXmlHttpRequest())
{
global $nodesid;
$content = '';
$hascontent = preg_match('/^#(\/?[0-9]+)*(?:\/famille)?\/?$/', $nodes);
$content = $this->render('Spectres/spectres-filariane-sommaire.html.twig', array('hascontent' => $hascontent))->getContent();
if ($hascontent)
{
$nodesid = array();
preg_replace_callback('/\/?([0-9]+)/', function($matches){
global $nodesid;
$nodesid[] = $matches[1];
}, $nodes);
$em = $this->getDoctrine()->getManager();
$session = $request->getSession();
$client_id_adada = $session->get('client_id_adada');
$pays_code = $this->parametreRepo->findParametrePaysCode($client_id_adada);
$langue = $this->langueRepo->findOneBy(array("code"=>$request->getLocale()));
if(!empty($nodesid)) {
// Type spectre (antibiotique ou microorganisme)
$nodeTypeSpectre = (isset($nodesid[0]))?$nodesid[0]:NULL;
$nodeSpectre = (isset($nodesid[1]))?$nodesid[1]:NULL;
$type_spectre = "";
$celluleLangue = $this->celluleRepo->findCelluleLangueWithIdCellule($nodeTypeSpectre,$session->get("_locale"));
if($celluleLangue != null) {
if($celluleLangue->getMotsClefs() != null) {
$session->set('type_spectre_code', $celluleLangue->getMotsClefs());
}
}
$type_spectre = $session->get('type_spectre_code');
switch ($type_spectre) {
case $this->getParameter('spectres_antibiotiques_code'):
$content .= $this->render('Spectres/spectres-filariane-famille.html.twig', array('hascontent' => ($nodeSpectre != null)?true:false, 'type_spectre' => $celluleLangue->getTitreCourt($session->get("_locale"))))->getContent();
if($nodeSpectre != null) {
$atb = "";
if(strpos($nodes, 'famille') == false){
$atb = $this->antibiotiqueRepo->findLibById($langue->getIdLangue(), $nodeSpectre)[0]['libelleAntibiotique'];
}
else {
$atb = $this->familleAntibiotiqueRepo->getLibFamilleById($langue->getIdLangue(), $nodeSpectre)['libelleFamilleAntibiotique'];
}
$content .= $this->render('Spectres/spectres-filariane-titre.html.twig', array('hascontent' => false, 'libelle_spectre' => $atb))->getContent();
}
break;
case $this->getParameter('spectres_microorganismes_code'):
$content .= $this->render('Spectres/spectres-filariane-famille.html.twig', array('hascontent' => ($nodeSpectre != null)?true:false, 'type_spectre' => $celluleLangue->getTitreCourt($session->get("_locale"))))->getContent();
if($nodeSpectre != null) {
$mo = $this->microorganismeRepo->findLibById($langue->getIdLangue(), $nodeSpectre);
$content .= $this->render('Spectres/spectres-filariane-titre.html.twig', array('hascontent' => false, 'libelle_spectre' => $mo[0]['libelleMicroorganisme']))->getContent();
}
break;
case $this->getParameter('spectres_references_code'):
$content .= $this->render('Spectres/spectres-filariane-famille.html.twig', array('hascontent' => ($nodeSpectre != null)?true:false, 'type_spectre' => $celluleLangue->getTitreCourt($session->get("_locale"))))->getContent();
}
}
}
return new JsonResponse( array (
'responseCode' => 0,
'content' => $content
));
} else throw $this->createNotFoundException();
}
public function informationsTableau(Request $request, $id, $idParent, $famille) {
if ($request->isXmlHttpRequest())
{
$em = $this->getDoctrine()->getManager();
$session = $request->getSession();
$client_id_adada = $session->get('client_id_adada');
$pays_code = $this->parametreRepo->findParametrePaysCode($client_id_adada);
$idLangue = $this->langueRepo->findOneBy(array("code"=>$request->getLocale()));
$locale = $idLangue->getIdLangue();
$celluleLangue = $this->celluleRepo->findCelluleLangueWithIdCellule($idParent,$session->get("_locale"));
$type = '';
$url = '';
$type_spectre = $celluleLangue->getMotsClefs();
switch ($type_spectre) {
case $this->getParameter('spectres_antibiotiques_code'):
$type = $type_spectre;
$atbs = $this->familleAntibiotiqueRepo->findFamilleAntibiotiqueFromId($id,null,$pays_code);
if($atbs != null && $famille == "famille"){
if($atbs->getFamilleAntibiotiquePere() != null && $atbs->getAntibiotiques() != null) {
$url = 'tableau_sandford_with_famille';
}
else if($atbs->getFamilleAntibiotiquePere() == null && $atbs->getAntibiotiques() != null){
$url = 'tableau_sandford_with_all_one_famille';
}
}
else $url = 'tableau_sandford';
break;
case $this->getParameter('spectres_microorganismes_code'):
$type = $type_spectre;
$mos = $this->microorganismeRepo->findAllMicroorganismeByLocaleAndFamille($locale, $id);
if(empty($mos)) $url = 'tableau_sandford';
else $url = 'tableau_sandford_with_all_one_famille';
break;
default:
break;
}
return new JsonResponse(array (
'type' => $type,
'url' => $url
));
} else throw $this->createNotFoundException();
}
private function remplirAntibiotiques(&$pere, &$arbres, $lang){
ini_set ('set_time_limit',3600);
ini_set ('mysql.connect_timeout',3600);
$link = mysqli_connect($this->getParameter('database_host'), $this->getParameter('database_user'), $this->getParameter('database_password'));
mysqli_select_db($link, $this->getParameter('database_name'));
mysqli_set_charset($link, 'utf8');
$famillesAntibiotique = mysqli_query($link, "SELECT fa_l.id_famille_antibiotique, fa_l.libelle_famille_antibiotique, fa.visible_famille_antibiotique, fa.id_famille_antibiotique_pere, fa_l.mots_clefs
FROM v2_famille_antibiotique fa
INNER JOIN v2_famille_antibiotique_langue fa_l ON fa_l.id_famille_antibiotique = fa.id_famille_antibiotique
INNER JOIN v2_langue lang ON lang.id_langue = fa_l.id_langue AND lang.code_langue = '".$lang."'
INNER JOIN v2_pays_relation pr ON pr.id_famille_antibiotique = fa.id_famille_antibiotique AND pr.id_pays = 1
WHERE fa.id_famille_antibiotique_reference IS NULL
AND fa.id_famille_antibiotique_pere IS NULL");
if (mysqli_num_rows($famillesAntibiotique) > 0)
{
while($resultFamilleAntibiotique = mysqli_fetch_array($famillesAntibiotique))
{
$addfamilleantibiotique = array();
$addfamilleantibiotique['idFamilleAntibiotique'] = $resultFamilleAntibiotique['id_famille_antibiotique'];
$addfamilleantibiotique['libelle'] = $resultFamilleAntibiotique['libelle_famille_antibiotique'];
$addfamilleantibiotique['visible'] = $resultFamilleAntibiotique['visible_famille_antibiotique'];
$addfamilleantibiotique['motsClefs'] = $resultFamilleAntibiotique['mots_clefs'];
$addfamilleantibiotique['antibiotiques'] = array();
$sousFamillesAntibiotique = mysqli_query($link, "SELECT fa_l.id_famille_antibiotique, fa_l.libelle_famille_antibiotique, fa.visible_famille_antibiotique, fa.id_famille_antibiotique_pere, fa_l.mots_clefs
FROM v2_famille_antibiotique fa
INNER JOIN v2_famille_antibiotique_langue fa_l ON fa_l.id_famille_antibiotique = fa.id_famille_antibiotique
INNER JOIN v2_langue lang ON lang.id_langue = fa_l.id_langue AND lang.code_langue = '".$lang."'
INNER JOIN v2_pays_relation pr ON pr.id_famille_antibiotique = fa.id_famille_antibiotique AND pr.id_pays = 1
WHERE fa.id_famille_antibiotique_reference IS NULL
AND fa.id_famille_antibiotique_pere = '".mysqli_real_escape_string($link, $addfamilleantibiotique['idFamilleAntibiotique'])."'");
if (mysqli_num_rows($sousFamillesAntibiotique) > 0)
{
while($resultSousFamilleAntibiotique = mysqli_fetch_array($sousFamillesAntibiotique))
{
$addCell = $this->traitementAntibiotique($link, $resultSousFamilleAntibiotique, $arbres, $lang, $pere);
$addfamilleantibiotique['sousFamilles'][] = $addCell;
}
}
$pere['antibiotiques'][] = $addfamilleantibiotique;
}
}
}
private function traitementAntibiotique($link, $result, &$arbre, $lang, $pere=false){
$addfamilleantibiotique = array();
$addfamilleantibiotique['idFamilleAntibiotique'] = $result['id_famille_antibiotique'];
$addfamilleantibiotique['libelle'] = $result['libelle_famille_antibiotique'];
$addfamilleantibiotique['motsClefs'] = $result['mots_clefs'];
$addfamilleantibiotique['visible'] = $result['visible_famille_antibiotique'];
//$addfamilleantibiotique['idfamilleantibiotiquepere'] = $result['id_famille_antibiotique_pere'];
$addfamilleantibiotique['antibiotiques'] = array();
$addfamilleantibiotique['sousFamilles'] = array();
// Liste antibiotique de la famille
$antibiotiques = mysqli_query($link, "SELECT a_l.id_antibiotique, a_l.libelle_antibiotique, a_l.mots_clefs
FROM v2_antibiotique a
INNER JOIN v2_antibiotique_langue a_l on a_l.id_antibiotique = a.id_antibiotique
INNER JOIN v2_langue lang ON lang.id_langue = a_l.id_langue AND lang.code_langue = '".$lang."'
INNER JOIN v2_pays_relation pr ON pr.id_antibiotique = a_l.id_antibiotique AND pr.id_pays = 1
INNER JOIN v2_antibiotique_famille_antibiotique afa ON afa.id_antibiotique = a_l.id_antibiotique
WHERE afa.id_famille_antibiotique = '".mysqli_real_escape_string($link, $result['id_famille_antibiotique'])."'
AND a.id_antibiotique_reference IS NULL");
if (mysqli_num_rows($antibiotiques) > 0)
{
while($resultAntibiotique = mysqli_fetch_array($antibiotiques))
{
$addAntibiotique = array();
$addAntibiotique['idantibiotique'] = $resultAntibiotique['id_antibiotique'];
$addAntibiotique['libelle'] = $resultAntibiotique['libelle_antibiotique'];
$addAntibiotique['motsClefs'] = $resultAntibiotique['mots_clefs'];
$addAntibiotique['gpr'] = array();
// Liste antibiotique de la famille
$gpr = mysqli_query($link, "SELECT gpr.id_gpr
FROM v2_antibiotique_correspondance_gpr gpr
INNER JOIN v2_pays_relation pr ON pr.id_antibiotique_correspondance_gpr = gpr.id_antibiotique_correspondance_gpr AND pr.id_pays = 1
WHERE gpr.id_antibiotique = '".mysqli_real_escape_string($link, $resultAntibiotique['id_antibiotique'])."'
LIMIT 1");
$resultGpr = mysqli_fetch_array($gpr);
$addAntibiotique['gpr'] = (($resultGpr != NULL)?$resultGpr['id_gpr']:array());
// if (mysqli_num_rows($gpr) > 0)
// {
// while($resultGpr = mysqli_fetch_array($gpr))
// {
// $addAntibiotique['gpr'][] = $resultGpr['id_gpr'];
// }
// }
///// Correspond au spectres : ils font juste mettre les id_spectre correspondant qui ont étaient créés plus avant.
// $addAntibiotique['spectres'] = array();
// $addAntibiotique['spectres'] = $this->rechercheIdSpectreByAntibiotique($pere, $resultAntibiotique['id_antibiotique']);
/////// Fin spectre
///// Correspond aux indications
$addAntibiotique['indications'] = array();
$indications = mysqli_query($link, "SELECT ai.id_indication, ai_l.indication_texte, i.libelle_indication_".$lang."
FROM v2_indication i
INNER JOIN v2_antibiotique_indication ai ON ai.id_indication = i.id_indication
INNER JOIN v2_antibiotique_indication_langue ai_l ON ai_l.id_antibiotique_indication = ai.id_antibiotique_indication
INNER JOIN v2_langue lang ON lang.id_langue = ai_l.id_langue AND lang.code_langue = '".$lang."'
INNER JOIN v2_pays_relation pr ON pr.id_indication = i.id_indication AND pr.id_pays = 1
WHERE ai.id_antibiotique_indication_reference IS NULL
AND i.actif_indication = 1
AND ai.id_antibiotique = '".mysqli_real_escape_string($link, $resultAntibiotique['id_antibiotique'])."'
ORDER BY i.ordre_affichage_indication, i.id_indication");
if (mysqli_num_rows($indications) > 0)
{
while($resultindication = mysqli_fetch_array($indications))
{
$addindication = array();
$addindication['idindication'] = $resultindication['id_indication'];
$addindication['libelle'] = $resultindication['libelle_indication_'.$lang];
$addindication['texte'] = $resultindication['indication_texte'];
$addAntibiotique['indications'][] = $addindication;
}
}
/////// Fin indication
/////// CALCUL DOSAGE
$dosages = mysqli_query($link, "SELECT co.id_antibiotique_calcul,co.situation, co.y_drogue, co_l.algorithme
FROM v2_co_antibiotique_calcul co
INNER JOIN v2_co_antibiotique_calcul_langue co_l ON co_l.id_antibiotique_calcul = co.id_antibiotique_calcul
INNER JOIN v2_langue lang ON lang.id_langue = co_l.id_langue AND lang.code_langue = '".$lang."'
WHERE co.id_famille_antibiotique = '".mysqli_real_escape_string($link, $result['id_famille_antibiotique'])."' AND
co.id_antibiotique = '".mysqli_real_escape_string($link, $resultAntibiotique['id_antibiotique'])."'");
if (mysqli_num_rows($dosages) > 0)
{
while($resultDosage = mysqli_fetch_array($dosages))
{
$addDosage = array();
$addDosage['situation'] = $resultDosage['situation'];
$addDosage['y_drogue'] = $resultDosage['y_drogue'];
$addDosage['algorithme'] = $this->gestionBalises->viderPosologie($link, $resultDosage['algorithme']);
$addDosage['references'] = array();
$referencesDosage = mysqli_query($link, "SELECT ref_l.texte_co_reference,ref_l.document_pdf_reference
FROM v2_co_reference ref
INNER JOIN v2_co_reference_langue ref_l ON ref_l.id_reference = ref.id_co_reference
INNER JOIN v2_langue lang ON lang.id_langue = ref_l.id_langue AND lang.code_langue = '".$lang."'
INNER JOIN v2_co_calcul_reference calref ON calref.id_co_reference = ref.id_co_reference
WHERE calref.id_antibiotique_calcul = '".mysqli_real_escape_string($link, $resultDosage['id_antibiotique_calcul'])."'");
if (mysqli_num_rows($referencesDosage) > 0)
{
while($resultReferenceDosage = mysqli_fetch_array($referencesDosage))
{
$addReferenceDosage = array();
$addReferenceDosage['texte'] = $resultReferenceDosage["texte_co_reference"];
$addReferenceDosage['documentPDF'] = $resultReferenceDosage["document_pdf_reference"];
$addDosage['references'][] = $addReferenceDosage;
}
}
$addAntibiotique['dosage'] = $addDosage;
}
}
///////
$arbre['nbAntibiotiques'] = $arbre['nbAntibiotiques'] + 1;
$addfamilleantibiotique['antibiotiques'][] = $addAntibiotique;
}
}
return $addfamilleantibiotique;
}
private function remplirMicroorganismes(&$pere, $lang, $rechercheFils=false, &$arbre=null){
ini_set ('set_time_limit',3600);
ini_set ('mysql.connect_timeout',3600);
$link = mysqli_connect($this->getParameter('database_host'), $this->getParameter('database_user'), $this->getParameter('database_password'));
mysqli_select_db($link, $this->getParameter('database_name'));
mysqli_set_charset($link, 'utf8');
$finRequete = "";
if($rechercheFils === true)
{
$finRequete = "INNER JOIN v2_microorganisme_relation mor ON mor.id_microorganisme_fils = mo.id_microorganisme and mor.id_microorganisme_pere='".mysqli_real_escape_string($link, $pere['idmicroorganisme'])."' WHERE mo.id_microorganisme_reference IS NULL";
}
else {
$finRequete = " WHERE mo.id_microorganisme_reference IS NULL AND (select count(*) from v2_microorganisme m inner join v2_microorganisme_relation mrel on mrel.id_microorganisme_pere = m.id_microorganisme where mrel.id_microorganisme_fils = mo.id_microorganisme ) = 0 ";
}
$microorganismes = mysqli_query($link, "SELECT mo.id_microorganisme, mo.hidden, mo_l.libelle_microorganisme, mo.afficher_fils, mo_l.mots_clefs
FROM v2_microorganisme mo
INNER JOIN v2_microorganisme_langue mo_l ON mo_l.id_microorganisme = mo.id_microorganisme
INNER JOIN v2_langue lang ON lang.id_langue = mo_l.id_langue AND lang.code_langue = '".$lang."'
INNER JOIN v2_pays_relation pr ON pr.id_microorganisme = mo.id_microorganisme AND pr.id_pays = 1 ".$finRequete);
if (mysqli_num_rows($microorganismes) > 0)
{
while($resultMicroorganismes = mysqli_fetch_array($microorganismes))
{
$addCell = $this->traitementMicroorganisme($link, $resultMicroorganismes, $arbre);
$this->remplirMicroorganismes($addCell, $lang, true, $arbre);
if($rechercheFils === true){
$pere['microorganismesfils'][] = $addCell;
$arbre['nbMicroorganismes'] = $arbre['nbMicroorganismes'] + 1;
}
else{
$pere['microorganismes'][] = $addCell;
$arbre['nbMicroorganismes'] = $arbre['nbMicroorganismes'] + 1;
}
}
}
/* else {
echo "error:0";
exit;
}*/
}
/**
* Retourne toutes les informations d'un microorganisme donnée
**/
private function traitementMicroorganisme($link, $result, $arbre){
$addMicroorganisme = array();
$addMicroorganisme['idmicroorganisme'] = $result['id_microorganisme'];
$addMicroorganisme['hidden'] = $result['hidden'];
$addMicroorganisme['libelle'] = $result['libelle_microorganisme'];
$addMicroorganisme['motsClefs'] = $result['mots_clefs'];
$addMicroorganisme['afficherfils'] = $result['afficher_fils'];
///// Correspond au spectres : ils font juste mettre les id_spectre correspondant qui ont étaient créés plus avant.
// $addMicroorganisme['spectres'] = array();
// $addMicroorganisme['spectres'] = $this->rechercheIdSpectreByMicroorganisme($arbre, $result['id_microorganisme']);
$addMicroorganisme['microorganismesfils'] = array();
/////// Fin spectre
//return $addMicroorganisme
return $addMicroorganisme;
}
}