'synchronizeUsers',
'consultation' => 'updateConsultationsStates',
'instruction' => 'updateDossierTacite',
'import' => 'importDigitalizedDocuments',
'purge' => 'purgeDigitalizedDocuments',
'update_dossier_autorisation' => 'updateDAState',
'maj_da_reprise' => 'majDAReprise',
'maj_dt_reprise' => 'majDTReprise',
'contrainte' => 'synchronisationContraintes',
);
/**
* Cette méthode permet de gérer l'appel aux différentes méthodes
* correspondantes au module appelé.
*
* @param string $module Le module à exécuter reçu dans la requête
* @param mixed $data Les données reçues dans la requête
* @return string Le résultat du traitement
*/
public function performMaintenance($module, $data) {
// Si le module n'existe pas dans la liste des modules disponibles
// alors on ajoute un message d'informations et on retourne un
// un résultat d'erreur
if (!in_array($module, array_keys($this->fptrs))) {
$this->setMessage("Le module demandé n'existe pas");
return $this->BAD_DATA;
}
// Si le module existe dans la liste des modules disponibles
// alors on appelle la méthode en question et on retourne son résultat
return call_user_func(array($this, $this->fptrs[$module]), $data);
}
/**
* Cette méthode permet d'effectuer la synchronisation des utilisateurs
* de l'application avec l'annuaire LDAP paramétré dans l'application.
*
* @param mixed $data Les données reçues dans la requête
* @return string Le résultat du traitement
*
* @todo XXX Faire une getsion des erreurs dans om_application pour
* permettre d'avoir un retour sur le nombre d'utilisateurs synchronisés
*/
public function synchronizeUsers($data) {
// Initialisation de la synchronisation des utilisateurs LDAP
$results = $this->f->initSynchronization();
// Si l'initialisation ne se déroule pas correctement alors on retourne
// un résultat d'erreur
if (is_null($results) || $results == false) {
$this->setMessage("Erreur interne");
return $this->KO;
}
// Application du traitement de synchronisation
$ret = $this->f->synchronizeUsers($results);
// Si l'a synchronisation ne se déroule pas correctement alors on
// retourne un résultat d'erreur
if ($ret == false) {
$this->setMessage("Erreur interne");
return $this->KO;
}
// Si l'a synchronisation ne se déroule correctement alors on
// retourne un résultat OK
$this->setMessage("Synchronisation terminée.");
return $this->OK;
}
/**
* Cette méthode permet d'effectuer le traitement de gestion des avis
* tacites sur les consultations qui ont atteint leur date limite de
* retour.
*
* @param mixed $data Les données reçues dans la requête
* @return string Le résultat du traitement
*
* @todo Vérifier si il est possible de déplacer la méthode dans
* l'application
*/
public function updateConsultationsStates($data) {
// Nom de la table
$table_name = 'consultation';
// Récupération de la référence vers un avis_consultation correspondant
// au libellé 'Tacite'
$sql = "SELECT avis_consultation FROM ".DB_PREFIXE."avis_consultation ";
$sql .= " WHERE libelle = 'Tacite' ";
$sql .= " AND ((avis_consultation.om_validite_debut IS NULL ";
$sql .= " AND (avis_consultation.om_validite_fin IS NULL ";
$sql .= " OR avis_consultation.om_validite_fin > CURRENT_DATE)) ";
$sql .= " OR (avis_consultation.om_validite_debut <= CURRENT_DATE ";
$sql .= " AND (avis_consultation.om_validite_fin IS NULL ";
$sql .= " OR avis_consultation.om_validite_fin > CURRENT_DATE))) ";
$res = $this->db->query($sql);
// Logger
$this->addToLog("updateConsultationsStates(): db->query(\"".$sql."\"", VERBOSE_MODE);
// Si une erreur de base de données se produit sur cette requête
// alors on retourne un résultat d'erreur
if ($this->f->isDatabaseError($res, true)) {
$this->setMessage("Erreur de base de données.");
return $this->KO;
}
// Récupération de la référence vers un avis_consultation correspondant
// au libellé 'Tacite'
$tacite = NULL;
while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
$tacite = $row["avis_consultation"];
}
$res->free();
// Si la décision n'existe pas dans la base de données alors on ajoute
// un message d'informations et on retourne un résultat d'erreur
if (is_null($tacite)) {
$this->setMessage("L'avis n'existe pas.");
return $this->KO;
}
// Récupération de la liste des consultations correspondantes aux
// critères du traitement
$sql = "SELECT consultation, date_limite FROM ".DB_PREFIXE."$table_name ";
$sql .= " WHERE date_limite < CURRENT_DATE" ;
$sql .= " AND date_retour IS NULL AND avis_consultation IS NULL ";
$res = $this->db->query($sql);
// Logger
$this->addToLog("updateConsultationsStates(): db->query(\"".$sql."\"", VERBOSE_MODE);
// Si une erreur de base de données se produit sur cette requête
// alors on retourne un résultat d'erreur
if ($this->f->isDatabaseError($res, true)) {
$this->setMessage("Erreur de base de données.");
return $this->KO;
}
// Si aucune consultation n'est concernée par le traitement alors on
// ajoute un message d'informations et on retourne un résultat 'OK'
if ($res->numrows() == 0) {
$this->setMessage("Aucune mise a jour.");
return $this->OK;
}
$nb_consultations_maj = 0;
//Pour chaque consultation correspondantes aux critères
while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
//
$fields = array(
'avis_consultation' => $tacite,
'date_retour' => $row["date_limite"],
'lu' => false
);
//
$res_update = $this->db->autoExecute(DB_PREFIXE.$table_name,
$fields,
DB_AUTOQUERY_UPDATE,
'consultation = \''.$row["consultation"].'\'');
// Logger
$this->addToLog("updateConsultationsStates(): db->autoExecute(\"".DB_PREFIXE.$table_name."\", ".print_r($fields, true).", DB_AUTOQUERY_UPDATE, \"consultation = \"".$row["consultation"]."\"", VERBOSE_MODE);
// Si une erreur de base de données se produit sur cette requête
// alors on retourne un résultat d'erreur
if ($this->f->isDatabaseError($res_update, true)) {
$this->setMessage("Erreur de base de données.");
return $this->KO;
}
//
$nb_consultations_maj++;
}
// Tout s'est déroulé correctement alors on ajoute un message
// d'informations et on retourne le résultat 'OK'
$this->setMessage($nb_consultations_maj." consultations mise(s) à jour.");
return $this->OK;
}
/**
* Cette méthode permet d'ajouter une instruction sur les dossiers tacites :
* - soit les tacites normaux
* - soit les incomplets ayant un événement tacites
*/
public function updateDossierTacite() {
// Liste les dossiers tacites
// UNION
// liste des dossiers incomplets tacites
$sql_dossier_tacite =
"SELECT dossier.dossier, dossier.evenement_suivant_tacite
FROM ".DB_PREFIXE."dossier
LEFT JOIN ".DB_PREFIXE."instruction ON
instruction.dossier=dossier.dossier AND instruction.evenement = dossier.evenement_suivant_tacite
WHERE dossier.date_limite < now()
AND dossier.accord_tacite = 'Oui'
AND dossier.evenement_suivant_tacite IS NOT NULL
AND dossier.incomplet_notifie = FALSE
AND instruction.instruction IS NULL
AND dossier.avis_decision IS NULL
UNION
SELECT dossier.dossier, dossier.evenement_suivant_tacite_incompletude as evenement_suivant_tacite
FROM ".DB_PREFIXE."dossier
LEFT JOIN ".DB_PREFIXE."instruction ON
instruction.dossier=dossier.dossier AND instruction.evenement = dossier.evenement_suivant_tacite
WHERE dossier.date_limite_incompletude < now()
AND dossier.accord_tacite = 'Oui'
AND dossier.evenement_suivant_tacite_incompletude IS NOT NULL
AND dossier.incomplet_notifie = TRUE
AND dossier.incompletude = TRUE
AND instruction.instruction IS NULL
AND dossier.avis_decision IS NULL";
$res_dossier_tacite = $this->db->query($sql_dossier_tacite);
if ($this->f->isDatabaseError($res_dossier_tacite, true)) {
$this->setMessage("Erreur de base de données.");
return $this->KO;
}// Inclusion de la classe de base MetierManager
$nb_maj = 0;
while ($row_dossier_tacite =& $res_dossier_tacite->fetchRow(DB_FETCHMODE_ASSOC)) {
// essai d'ajout des donnees dans la base de donnees
$this->db->autoCommit(false);
// Si un evenement est configuré suivant tacite
$valNewInstr = array();
require_once("../obj/instruction.class.php");
$instruction = new instruction("]", $this->db, 0);
// Création d'un tableau avec la liste des champs de l'instruction
foreach($instruction->champs as $champ) {
if($champ != "bible_auto") {
$valNewInstr[$champ] = "";
}
}
// Définition des valeurs de la nouvelle instruction
$valNewInstr["evenement"] = $row_dossier_tacite["evenement_suivant_tacite"];
$valNewInstr["dossier"] = $row_dossier_tacite['dossier'];
$valNewInstr["date_evenement"] = date("d/m/Y");
$instruction->valF = array();
$res_ajout = $instruction->ajouter($valNewInstr, $this->db, $this->DEBUG);
if ($res_ajout === false) {
$instruction->undoValidation();
$this->setMessage("Erreur de base de données.");
return $this->KO;
} else {
$this->db->commit();
$nb_maj++;
}
}
// Si aucune instruction n'est concernée par le traitement alors on
// ajoute un message d'informations et on retourne un résultat 'OK'
if ($nb_maj == 0) {
$this->setMessage("Aucune mise a jour.");
return $this->OK;
}
// Tout s'est déroulé correctement alors on ajoute un message
// d'informations et on retourne le résultat 'OK'
$this->setMessage($nb_maj." dossier(s) mis à jour.");
return $this->OK;
}
/**
* Cette méthode permet de faire l'importation des documents scannés
* @param string $data données envoyé en paramètre
*/
public function importDigitalizedDocuments($data) {
//Instance classe DigitalizedDocument
require_once("../obj/digitalizedDocument.class.php");
$digitalizedDocument = new DigitalizedDocument($this->f);
//Chemin des dossiers source et destination
$path = $data;
//Si deux données sont présentes dans $data
if (!empty($path)) {
//Dossier source
$pathSrc = isset($path["Todo"])?$path["Todo"]:"";
//Aucun chemin n'est fourni pour le dossier source, on utilise la
//configuration
if($pathSrc===""){
//Si le répertoire de numérisation n'est pas configuré
if (!isset($this->f->config["path_scan"])) {
//Message erreur
$this->setMessage(_("Le repertoire de numerisation n'est pas configure"));
return $this->KO;
}
$pathSrc = $this->f->config['path_scan'].'Todo/';
}
//Si le dossier n'existe pas, on retourne une erreur
elseif (!is_dir($pathSrc)) {
//Message erreur
$this->setMessage(_("Le repertoire de numerisation fourni n'existe pas"));
return $this->KO;
}
//Dossier de destination
$pathDes = isset($path["Done"])?$path["Done"]:"";
//Aucun chemin n'est fourni pour le dossier de destination, on utilise la
//configuration
if($pathDes===""){
//Si le répertoire de numérisation n'est pas configuré
if (!isset($this->f->config["path_scan"])) {
//Message erreur
$this->setMessage(_("Le repertoire de numerisation n'est pas configure"));
return $this->KO;
}
$pathDes = $this->f->config['path_scan'].'Done/';
}
//Si le dossier n'existe pas, on retourne une erreur
elseif (!is_dir($pathDes)) {
//Message erreur
$this->setMessage(_("Le repertoire de numerisation fourni n'existe pas"));
return $this->KO;
}
} else {
//Si le répertoire de numérisation n'est pas configuré
if (!isset($this->f->config["path_scan"])) {
//Message erreur
$this->setMessage(_("Le repertoire de numerisation n'est pas configure"));
return $this->KO;
}
$pathSrc = $this->f->config['path_scan'].'Todo/';
$pathDes = $this->f->config['path_scan'].'Done/';
}
//
$repo = scandir($pathSrc);
$importDone = FALSE;
$importErrorFilename = array();
//Si le dossier est ouvert
if ($repo) {
//
foreach ($repo as $key => $folder) {
//Vérifie qu'il s'agit de dossier correct
if ($folder != '.' && $folder != '..' && $folder != '.svn') {
//Importation des documents
$import = $digitalizedDocument->run_import($pathSrc.'/'.$folder, $pathDes.'/'.$folder, $this->DEBUG);
//Si une importation a été faite
if ($import) {
$importDone = TRUE;
}
//Si certain des fichiers ne se sont pas importés
if (count($digitalizedDocument->filenameError) > 0){
//
$importErrorFilename = array_merge($importErrorFilename, $digitalizedDocument->filenameError);
unset($digitalizedDocument->filenameError);
$digitalizedDocument->filenameError = array();
}
}
}
}
//Si des fichiers ne se sont pas importés à cause d'une erreur
if (count($importErrorFilename)>0){
$importErrorFilename = sprintf(_("Liste des fichiers en erreur : %s"),implode(',',$importErrorFilename));
}
//Message de retour
($importDone) ?
//Il y avait des documents à traiter
$this->setMessage(_("Tous les documents ont ete traites").
((!is_array($importErrorFilename) && $importErrorFilename!= '')?
"\n".$importErrorFilename:
"")) :
//Il n'y avait aucun document à traiter
$this->setMessage(_("Aucun document a traiter")) ;
return $this->OK;
}
/**
* Cette méthode permet de faire la purge des documents scannés
* @param string $data données envoyé en paramètre
*/
public function purgeDigitalizedDocuments($data) {
//Instance classe DigitalizedDocument
require_once("../obj/digitalizedDocument.class.php");
$digitalizedDocument = new DigitalizedDocument($this->f);
// Récupère l'option "dossier_vide_uniquement"
$dossier_vide_uniquement = isset($data["dossier_vide_uniquement"])?$data["dossier_vide_uniquement"]:false;
//Dossier à purger
$path = isset($data["dossier"])?$data["dossier"]:"";
//Si aucun dossier n'est fourni, on utilise le dossier de configuration
if($path==""){
//Si le répertoire de numérisation n'est pas configuré
if (!isset($this->f->config["path_scan"])) {
//Message erreur
$this->setMessage(_("Le repertoire de numerisation n'est pas configure"));
$this->addToLog($this->msg, DEBUG_MODE);
return $this->KO;
}
// Définit le chemin par défaut sur Done/
$path = $this->f->config['path_scan'].'Done/';
// Si l'option de purge des répertoires uniquement est activé
if ($dossier_vide_uniquement === true
|| $dossier_vide_uniquement === "true") {
// Définit le chemin par défaut sur Todo/
$path = $this->f->config['path_scan'].'Todo/';
}
}
//Si le dossier n'existe pas, on retourne une erreur
elseif (!is_dir($path)) {
//Message erreur
$this->setMessage(_("Le repertoire de numerisation fourni n'existe pas"));
$this->addToLog($this->msg, DEBUG_MODE);
return $this->KO;
}
//Nombre de jour à soustraite à la date du jour
$nbDay = isset($data["nombre_de_jour"])?$data["nombre_de_jour"]:"";
//Vérifie que $nbDay soit un entier
if (!is_numeric($nbDay)) {
$nbDay = null;
}
// Nom des éléments traités
$item = "fichier";
if ($dossier_vide_uniquement === true
|| $dossier_vide_uniquement === 'true') {
//
$item = "dossier";
}
//
$repo = scandir($path);
//Si le dossier est ouvert
if ($repo) {
$count_purged_folder = 0;
$count_purged_files = 0;
//
foreach ($repo as $key => $folder) {
//Vérifie qu'il s'agit de dossier correct
if ($folder != '.' && $folder != '..' && $folder != '.svn') {
//Importation des documents
$purge = $digitalizedDocument->run_purge($path."/".$folder, $nbDay, $dossier_vide_uniquement);
//Si la purge n'a pas était faite
if ($purge != false) {
$count_purged_files += $purge;
}
$count_purged_folder++;
}
}
//Retourne erreur
$this->setMessage($count_purged_files." ".$item."(s) purgé(s) sur ".$count_purged_folder." dossier(s) traité(s)");
$this->addToLog($this->msg, DEBUG_MODE);
return $this->OK;
}
//Retourne erreur
$this->setMessage("Aucun ".$item." à traiter");
$this->addToLog($this->msg, DEBUG_MODE);
return $this->OK;
}
/**
* Cette fonction permet de mettre à jour les données des dossiers d'autorisation
* pour la reprise des données.
*/
public function majDAReprise($data) {
$msg ="";
$sql_dossier = "SELECT dossier_autorisation FROM ".DB_PREFIXE."dossier_autorisation
LIMIT 1000 OFFSET ".intval($data["offset"]);
$res_da = $this->db->query($sql_dossier);
if ($this->f->isDatabaseError($res_da, true)) {
$this->setMessage(_("Erreur de base de donnees."));
return $this->KO;
}
require_once("../obj/dossier_autorisation.class.php");
$i = 0;
while($row = $res_da->fetchRow(DB_FETCHMODE_ASSOC)) {
$da = new dossier_autorisation($row["dossier_autorisation"], $this->db, 0);
if($da->majDossierAutorisation() !== true) {
$msg .= "Erreur sur le dossier ".$row["dossier_autorisation"]."
";
} else {
$i++;
}
}
//Retourne message valid
$this->setMessage(
$i."|".$msg
);
return $this->OK;
}
/**
* Cette fonction permet de mettre à jour les données techniques des dossiers
* d'instruction.
*/
public function majDTReprise($data) {
$msg ="";
$sql_di_sans_dt = "SELECT dossier, dossier.dossier_autorisation
FROM ".DB_PREFIXE."dossier
LEFT OUTER JOIN ".DB_PREFIXE."donnees_techniques
ON dossier.dossier=donnees_techniques.dossier_instruction
WHERE donnees_techniques.donnees_techniques IS NULL AND
dossier.dossier_autorisation NOT IN (".rtrim($data, ", ").")
LIMIT 1000 ";//OFFSET ".$data;
$res_di_sans_dt = $this->db->query($sql_di_sans_dt);
if ($this->f->isDatabaseError($res_di_sans_dt, true)) {
$this->setMessage(_("Erreur de base de donnees."));
return $this->KO;
}
$i = 0;
while ( $row_di_sans_dt = $res_di_sans_dt->fetchrow(DB_FETCHMODE_ASSOC)) {
$sql_dt = "SELECT donnees_techniques.donnees_techniques
FROM ".DB_PREFIXE."donnees_techniques
INNER JOIN ".DB_PREFIXE."dossier ON
dossier.dossier=donnees_techniques.dossier_instruction
WHERE dossier.dossier = (
SELECT dossier.dossier
FROM ".DB_PREFIXE."dossier
JOIN ".DB_PREFIXE."avis_decision
ON dossier.avis_decision = avis_decision.avis_decision
JOIN ".DB_PREFIXE."donnees_techniques
ON donnees_techniques.dossier_instruction = dossier.dossier
WHERE dossier.dossier_autorisation = '".$row_di_sans_dt['dossier_autorisation']."'
AND (date_decision IS NOT NULL
AND (avis_decision.typeavis='F'
OR avis_decision.typeavis='A')
OR version=0)
ORDER BY version DESC
LIMIT 1)";
$res_dt = $this->f->db->getone($sql_dt);
$this->f->addToLog("app/update_DA.php: db->query(\"".$sql_dt."\");", DEBUG_MODE);
if ($this->f->isDatabaseError($res_dt, true)) {
$this->setMessage(_("Erreur de base de donnees."));
return $this->KO;
}
if(!empty($res_dt)) {
$sql_data_dt = "SELECT *
FROM ".DB_PREFIXE."donnees_techniques
WHERE donnees_techniques.donnees_techniques = ".$res_dt;
$res_data_dt = $this->f->db->query($sql_data_dt);
$this->f->addToLog("app/update_DA.php: db->query(\"".$sql_data_dt."\");", DEBUG_MODE);
if ($this->f->isDatabaseError($res_data_dt, true)) {
$this->setMessage(_("Erreur de base de donnees."));
return $this->KO;
}
$row_data_dt = $res_data_dt->fetchrow(DB_FETCHMODE_ASSOC);
$row_data_dt['dossier_autorisation'] = null;
$row_data_dt['dossier_instruction'] = $row_di_sans_dt['dossier'];
foreach ($row_data_dt as $key => $value) {
if($value === '') {
unset($row_data_dt[$key]);
}
}
$row_data_dt['donnees_techniques'] = $this->f->db->nextId(DB_PREFIXE.'donnees_techniques');
$res_ajout = $this->f->db->autoexecute(DB_PREFIXE."donnees_techniques", $row_data_dt, DB_AUTOQUERY_INSERT);
$this->f->addToLog("app/update_DA.php : db->autoexecute(\"".DB_PREFIXE."donnees_techniques\", ".print_r($row_data_dt, true).", DB_AUTOQUERY_INSERT);", DEBUG_MODE);
$this->f->isDatabaseError($res_ajout);
$i++;
} else {
$msg .= "'".$row_di_sans_dt['dossier_autorisation']."', ";
}
}
//Retourne message valid
$this->setMessage(
$i."|".$msg
);
return $this->OK;
}
/**
* Cette fonction permet de mettre à jour l'état des dossiers d'autorisation
*/
public function updateDAState() {
// Récupération des DA dont l'état doit passer à "Périmé"
$sql_da = "SELECT dossier_autorisation.dossier_autorisation
FROM ".DB_PREFIXE."dossier_autorisation
LEFT OUTER JOIN (
SELECT dossier_autorisation
FROM ".DB_PREFIXE."dossier
LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type
LEFT JOIN ".DB_PREFIXE."avis_decision
ON avis_decision.avis_decision = dossier.avis_decision
WHERE code IN ('DOC', 'DAACT') and
avis_decision.typeavis = 'F')
AS dossier_2 on dossier_2.dossier_autorisation = dossier_autorisation.dossier_autorisation
LEFT JOIN ".DB_PREFIXE."dossier
ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
LEFT JOIN ".DB_PREFIXE."dossier_instruction_type
ON dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
LEFT JOIN ".DB_PREFIXE."etat_dossier_autorisation
ON dossier_autorisation.etat_dossier_autorisation = etat_dossier_autorisation.etat_dossier_autorisation
LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille = dossier_autorisation.dossier_autorisation_type_detaille
WHERE etat_dossier_autorisation.libelle = 'Accordé'
AND dossier_autorisation.date_decision IS NOT NULL
AND etat_dossier_autorisation.libelle = 'Accordé'
AND dossier_autorisation.date_validite < current_date
AND dossier_2.dossier_autorisation IS NULL
GROUP BY dossier_autorisation.dossier_autorisation";
$res_da = $this->db->query($sql_da);
if ($this->f->isDatabaseError($res_da, true)) {
$this->setMessage(_("Erreur de base de donnees."));
return $this->KO;
}
// Récupération de l'identifiant de l'état "Périmé"
$sql_etat_perime = "SELECT etat_dossier_autorisation
FROM ".DB_PREFIXE."etat_dossier_autorisation
WHERE libelle = 'Périmé'";
$res_etat_perime = $this->db->getOne($sql_etat_perime);
if ($this->f->isDatabaseError($res_etat_perime, true)) {
$this->setMessage(_("Erreur de base de donnees."));
return $this->KO;
}
// Liste des dossiers d'autorisation
$ids = array();
while ($row_da =& $res_da->fetchRow(DB_FETCHMODE_ASSOC)) {
$ids[] = "'".$row_da['dossier_autorisation']."'";
}
// Si aucun dossier d'autorisation n'est concerné par le traitement alors on
// ajoute un message d'informations et on retourne un résultat 'OK'
if (count($ids) == 0) {
$this->setMessage(_("Aucune mise a jour."));
return $this->OK;
}
// Exécution du traitement
// On met à jour tous les dossiers d'autorisations
$fields = array(
'etat_dossier_autorisation' => $res_etat_perime,
'etat_dernier_dossier_instruction_accepte' => $res_etat_perime,
);
$res = $this->db->autoExecute(DB_PREFIXE."dossier_autorisation",
$fields,
DB_AUTOQUERY_UPDATE,
'dossier_autorisation IN ('.implode(',', $ids).')');
// Logger
$this->addToLog("updateDAState(): db->autoExecute(\"".DB_PREFIXE."dossier_autorisation"."\", ".print_r($fields, true).", DB_AUTOQUERY_UPDATE, \"dossier_autorisation IN (\"".implode(',', $ids)."\")", VERBOSE_MODE);
// Si une erreur de base de données se produit sur cette requête
// alors on retourne un résultat d'erreur
if ($this->f->isDatabaseError($res, true)) {
$this->setMessage("Erreur de base de données.");
return $this->KO;
}
// Tout s'est déroulé correctement alors on ajoute un message
// d'informations et on retourne le résultat 'OK'
$this->setMessage(count($ids)." "._("dossier(s) d'autorisation(s) mis a jour."));
return $this->OK;
}
/**
* Synchronisation des contraintes depuis le SIG
* Permet d'ajouter de nouvelle contrainte, de modifier les contraintes
* existantes et d'archiver les contraintes qui ne sont plus utilisées.
*/
public function synchronisationContraintes() {
// Instancie la classe SynchronisationContrainte
require_once("../obj/synchronisationContrainte.class.php");
$synchronisationContrainte = new SynchronisationContrainte($this->f);
// Si la récupération des contraintes à fonctionnée
if ($synchronisationContrainte->getResponseHTTP() == '200') {
// Met à jour toutes les listes des contraintes
$synchronisationContrainte->setAllListContraintes();
// Initilisation des variables
$error = false;
$message = "";
// Nombre de contrainte "à ajouter"
$nb_contrainte_add = count(
$synchronisationContrainte->getListContraintesAdd());
// S'il y a des contraintes "à ajouter"
if ($nb_contrainte_add > 0) {
// Ajoute les contraintes "à ajouter"
$ajouter = $synchronisationContrainte->addContraintes();
// Si une erreur s'est produite
if ($ajouter == false) {
//
$error = true;
$message .= _("une erreur s'est produite lors de l'ajout des nouvelles contraintes.")." "._("Contactez votre administrateur")."
";
}
// S'il n'y a pas d'erreur
if ($ajouter == true) {
//
$message .= $nb_contrainte_add." "._("contrainte(s) ajoutee(s).");
}
// Sinon
} else {
//
$message .= _("Aucune contraintes a ajouter.")."
";
}
// Nombre de contraintes "à modifier"
$nb_contrainte_edit = count(
$synchronisationContrainte->getListContraintesEdit());
// S'il y a des contraintes "à modifier"
if ($nb_contrainte_edit > 0) {
// Modifie les contraintes "à modifier"
$modifier = $synchronisationContrainte->editContraintes();
// Si une erreur s'est produite
if ($modifier == false) {
//
$error = true;
$message .= _("une erreur s'est produite lors de la modification des contraintes.")." "._("Contactez votre administrateur")."
";
}
// S'il n'y a pas d'erreur
if ($modifier == true) {
//
$message .= $nb_contrainte_edit." "._("contrainte(s) modifiee(s).");
}
// Sinon
} else {
//
$message .= _("Aucune contraintes a modifier.")."
";
}
// Nombre de contraintes "à archiver"
$nb_contrainte_archive = count(
$synchronisationContrainte->getListContraintesArchive());
// S'il y a des contraintes "à archiver"
if ($nb_contrainte_archive > 0) {
// Archive les contraintes "à archiver"
$archiver = $synchronisationContrainte->archiveContraintes();
// Si une erreur s'est produite
if ($archiver == false) {
//
$error = true;
$message .= _("une erreur s'est produite lors de l'archivage des contraintes.")." "._("Contactez votre administrateur")."
";
}
// S'il n'y a pas d'erreur
if ($archiver == true) {
//
$message .= $nb_contrainte_archive." "._("contrainte(s) archivee(s).");
}
// Sinon
} else {
//
$message .= _("Aucune contraintes a archiver.")."
";
}
//
if ($error == false) {
//
$this->setMessage($message);
return $this->OK;
}
// S'il y a une erreur
if ($error == true) {
//
$this->setMessage($message);
$this->addToLog("synchronisationContraintes(): ".$message, DEBUG_MODE);
return $this->KO;
}
}
// Si la récupération des contraintes n'a pas fonctionnée
if ($synchronisationContrainte->getResponseHTTP() != '200') {
//
$this->addToLog("synchronisationContraintes(): Traitement webservice SIG: ".$soap->getErrorMessage(), DEBUG_MODE);
//
$this->setMessage("une erreur s'est produite.")." "._("Contactez votre administrateur")."
";
//
return $this->KO;
}
}
}
?>