'synchronizeUsers', 'consultation' => 'updateConsultationsStates', 'instruction' => 'updateDossierTacite', 'import' => 'importDigitalizedDocuments', 'purge' => 'purgeDigitalizedDocuments', 'update_dossier_autorisation' => 'updateDAState', 'contrainte' => 'synchronisationContraintes', 'update_missing_geolocation' => 'update_missing_geolocation', 'maj_metadonnees_documents_numerises' => 'updateDigitalizedDocumentsMetadata' ); /** * 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) { // Si aucune configuration d'annuaire n'est présente, on retourne que // tout est OK et que la configuration 'annuaire n'est pas activée. if ($this->f->is_option_directory_enabled() !== true) { $this->setMessage("L'option 'annuaire' n'est pas configurée."); return $this->OK; } // 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 < CURRENT_DATE 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 < CURRENT_DATE 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(); $instruction = $this->f->get_inst__om_dbform(array( "obj" => "instruction", "idx" => "]", )); // 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) { // Si l'option de numérisation est désactivée if ($this->f->is_option_digitalization_folder_enabled() !== true) { // $this->setMessage(_("L'option de numerisation des dossiers n'est pas activee")); return $this->OK; } //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 ($this->f->getParameter("digitalization_folder_path") === null) { //Message erreur $this->setMessage(_("Le repertoire de numerisation n'est pas configure")); return $this->KO; } $pathSrc = $this->f->getParameter("digitalization_folder_path").'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 ($this->f->getParameter("digitalization_folder_path") === null) { //Message erreur $this->setMessage(_("Le repertoire de numerisation n'est pas configure")); return $this->KO; } $pathDes = $this->f->getParameter("digitalization_folder_path").'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 ($this->f->getParameter("digitalization_folder_path") === null) { //Message erreur $this->setMessage(_("Le repertoire de numerisation n'est pas configure")); return $this->KO; } $pathSrc = $this->f->getParameter("digitalization_folder_path").'Todo/'; $pathDes = $this->f->getParameter("digitalization_folder_path").'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 != '..') { //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) { // Si l'option de numérisation est désactivée if ($this->f->is_option_digitalization_folder_enabled() !== true) { // $this->setMessage(_("L'option de numerisation des dossiers n'est pas activee")); return $this->OK; } //Instance classe DigitalizedDocument require_once("../obj/digitalizedDocument.class.php"); $digitalizedDocument = new DigitalizedDocument($this->f); //Récupération des données $path = $data; //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 ($this->f->getParameter("digitalization_folder_path") === NULL) { //Message erreur $this->setMessage(_("Le repertoire de numerisation n'est pas configure")); return $this->KO; } $path = $this->f->getParameter("digitalization_folder_path").'Done/'; } //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")); 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; } // $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 != '..') { //Importation des documents $purge = $digitalizedDocument->run_purge($path."/".$folder, $nbDay, $this->DEBUG); //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." fichier(s) purgé(s) sur ".$count_purged_folder." dossier(s) traité(s)"); return $this->OK; } //Retourne erreur $this->setMessage("Aucun document a traiter"); 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 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() { // Si l'option du SIG est désactivée if ($this->f->is_option_sig_enabled() !== true) { // $this->setMessage(_("L'option du SIG n'est pas activée")); return $this->OK; } // Si l'option de synchronisation automatique des contraintes est // désactivée if ($this->f->is_option_ws_synchro_contrainte_enabled() !== true) { // $this->setMessage(_("L'option de synchronisation automatique des contraintes n'est pas activée")); return $this->OK; } // Instancie la classe SynchronisationContrainte require_once("../obj/synchronisationContrainte.class.php"); // try { $synchronisationContrainte = new SynchronisationContrainte($this->f); } catch (geoads_exception $e) { // $this->addToLog("synchronisationContraintes(): Traitement webservice SIG: ".$e->getMessage(), DEBUG_MODE); // $this->setMessage("une erreur s'est produite.")." "._("Contactez votre administrateur")."
"; // return $this->KO; } $correct = $synchronisationContrainte->constraint_sync_treatment(); $output_message = $synchronisationContrainte->get_output_message(); $display_message = array(); foreach ($output_message as $key => $value) { $temp = ""; if(isset($value["commune"]) === true) { $temp .= $value["commune"]." : "; } if($value["type"] == 'error') { $temp .= " (erreur) "; } $temp .= strip_tags($value["message"]); $display_message[] = $temp; } $message = $this->setMessage(implode($display_message, ' - ')); // if ($correct == true) { // return $this->OK; } // S'il y a une erreur if ($correct == false) { // $this->addToLog("synchronisationContraintes(): ".$message, DEBUG_MODE); return $this->KO; } } /** * Géolocalisation automatique des dossiers en webservice * * Permet d'effectuer une vérification des parcelles, un calcul d'emprise * puis un calcul du centroide sur les dossiers qui n'en ont pas. * Cela permettra de répertorier les dossiers en question dans le SIG. */ public function update_missing_geolocation() { // Si l'option du SIG est désactivée if ($this->f->is_option_sig_enabled() !== true) { // $this->setMessage(_("L'option du SIG n'est pas activée")); return $this->OK; } try { $dossier_instruction = $this->f->get_inst__om_dbform(array( "obj" => "dossier_instruction", "idx" => 0 )); } catch (geoads_exception $e) { $this->addToLog("update_missing_geolocation(): Traitement webservice SIG: ".$e->getMessage(), DEBUG_MODE); $this->setMessage("une erreur s'est produite.")." "._("Contactez votre administrateur")."
"; return $this->KO; } // On lance le traitement de géocodage $geocodage = $dossier_instruction->treat_dossiers_without_geom(); // Pour chaque collectivité, on compte le nombre d'occurence par // valeur de retour $count_value = array(); foreach ($geocodage as $key => $value) { //$count_value[id de la collectivité][valeur de retour de géocodage][occurence de la valeur de retour] $count_value[$key] = array_count_values($value); } // Initialisation du message de validation $message = ''; // Pour chaque collectivité on affiche le message présentant les // résultats foreach ($count_value as $key => $value) { // $om_collectivite = $this->f->get_inst__om_dbform(array( "obj" => "om_collectivite", "idx" => $key )); // Compteur des DI pour chaque résultats $nb_true = 0; $nb_verif_parcelle_error = 0; $nb_calcul_emprise_error = 0; $nb_calcul_centroide_error = 0; if (isset($value['true']) === true) { $nb_true = $value['true']; } if (isset($value['verif_parcelle_error']) === true) { $nb_verif_parcelle_error = $value['verif_parcelle_error']; } if (isset($value['calcul_emprise_error']) === true) { $nb_calcul_emprise_error = $value['calcul_emprise_error']; } if (isset($value['calcul_centroide_error']) === true) { $nb_calcul_centroide_error = $value['calcul_centroide_error']; } if ($nb_true + $nb_verif_parcelle_error + $nb_calcul_emprise_error + $nb_calcul_centroide_error > 0) { $message .= sprintf("%s ::", $om_collectivite->getVal('libelle')); } if ($nb_true > 0) { $message .= sprintf("%s %s,",$nb_true,_("dossier(s) d'instruction a(ont) été géolocalisé(s)")); } if ($nb_verif_parcelle_error + $nb_calcul_emprise_error + $nb_calcul_centroide_error > 0) { $message .= sprintf("%s %s,",$nb_verif_parcelle_error+ $nb_calcul_emprise_error+$nb_calcul_centroide_error,_("dossier(s) d'instruction n'a(ont) pas pu être géolocalisé(s)")); } if ($nb_verif_parcelle_error > 0) { $message .= sprintf("%s %s,",$nb_verif_parcelle_error,_("dossier(s) d'instruction en erreur à la vérification des parcelles")); } if ($nb_calcul_emprise_error > 0) { $message .= sprintf("%s %s,",$nb_calcul_emprise_error,_("dossier(s) d'instruction en erreur au calcul de l'emprise")); } if ($nb_calcul_centroide_error > 0) { $message .= sprintf("%s %s",$nb_calcul_centroide_error,_("dossier(s) d'instruction en erreur au calcul du centroïde")); } // Séparateur des messages $message .= ';'; // if ($message !== '') { $this->setMessage($message); } } return $this->OK; } /** * Permet de mettre à jour les métadonnées suivantes de tous les documents numérisés, en * fonction du paramétrage des types de documents numérisés dans la BDD : * - "affichage DA" * - "affichage service consulté" */ public function updateDigitalizedDocumentsMetadata() { // Initialisation du retour du traitement $documents_en_erreur = false; // $inst_document_numerise_traitement_metadonnees = $this->f->get_inst__om_dbform(array( "obj" => "document_numerise_traitement_metadonnees", "idx" => 0, )); $documents_en_erreur = $inst_document_numerise_traitement_metadonnees->metadata_treatment(); // Si toutes les métadonnées ont été correctement mises à jour if (is_array($documents_en_erreur) AND count($documents_en_erreur) === 0) { //Tous les documents ont ete traites $this->setMessage(_("Tous les documents ont été traités.")); return $this->OK; } // Si certaines métadonnées n'ont pas pû être mises à jour if (is_array($documents_en_erreur) AND count($documents_en_erreur) !== 0) { $display_message = array(); foreach ($documents_en_erreur as $key => $value) { if(isset($value["dossier"]) === true AND isset($value["nom_fichier"]) === true ) { $display_message[] = sprintf( _("Dossier d'instruction n°%s - le document %s n'a pas pu être mis à jour"), $value['dossier'], $value['nom_fichier'] ); } } $this->setMessage("Liste des fichiers en erreur : ".implode($display_message, ', ')); return $this->OK; } // S'il y a une erreur if ($documents_en_erreur == false) { // $this->setMessage("Une erreur s'est produite lors de la mise à jour des métadonnées.", DEBUG_MODE); return $this->KO; } } } ?>