/** * Correction d'une FTA * Pour une FTA données, correction d'un chapitre et dévalidation des processus suivants * @param type $paramIdFta * @param type $paramIdChapitre * @param type $option * @return int */ public static function buildCorrectionChapitre($paramIdFta, $paramIdChapitre, $option) { $option['no_message_ecran']; //0=affichage à l'ecran, 1=rien $option['correction_fta_suivi_projet']; //Commentaire justifiant la correction du chapitre $option['mail_gestionnaire']; //Informe le gestionnaire de la Fta de la mise en correction de sa Fta $HtmlResult = new HtmlResult2(); $globalConfig = new GlobalConfig(); UserModel::checkUserSessionExpired($globalConfig); //Récupération des informations préalables //Nom de l'assistante de projet responsable: $idUser = $globalConfig->getAuthenticatedUser()->getKeyValue(); $mailExpediteur = $globalConfig->getAuthenticatedUser()->getDataField(UserModel::FIELDNAME_MAIL)->getFieldValue(); $nomPrenom = $globalConfig->getAuthenticatedUser()->getPrenomNom(); $idFtaWorkflowStructure = FtaWorkflowStructureModel::getIdFtaWorkflowStructureByIdFtaAndIdChapitre($paramIdFta, $paramIdChapitre); $ftaWorkflowStructureModel = new FtaWorkflowStructureModel($idFtaWorkflowStructure, $paramIdChapitre); $idFtaProcessus = $ftaWorkflowStructureModel->getDataField(FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS)->getFieldValue(); $idFtaWorkflow = $ftaWorkflowStructureModel->getDataField(FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW)->getFieldValue(); $arrayFtaSuiviCorrection = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET . ',' . FtaSuiviProjetModel::FIELDNAME_NOTIFICATION_FTA_SUIVI_PROJET . ' FROM ' . FtaSuiviProjetModel::TABLENAME . ' WHERE ' . FtaModel::KEYNAME . '=' . $paramIdFta . ' AND ' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . $paramIdChapitre . ' '); if ($arrayFtaSuiviCorrection) { foreach ($arrayFtaSuiviCorrection as $rowsFtaSuiviCorrection) { $current_correction_fta_suivi_projet = $rowsFtaSuiviCorrection[FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET]; $notificationFtaSuiviProjet = $rowsFtaSuiviCorrection[FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET]; } } //Intégration du commentaire de la correction if ($current_correction_fta_suivi_projet and $option[FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET]) { $fullComment = $option[FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET] . '\\n\\n' . $current_correction_fta_suivi_projet; $newCorrectionFtaSuiviProjet = FtaController::getComment("Correction d'une Fta", $nomPrenom, $fullComment); } // $newCorrectionFtaSuiviProjet = mysql_real_escape_string($newCorrectionFtaSuiviProjet); $newCorrectionFtaSuiviProjet = str_replace("<br/>", "\n", $newCorrectionFtaSuiviProjet); //Dévalidation du chapitre en cours $reqDevelidationChapitre = " UPDATE " . FtaSuiviProjetModel::TABLENAME . " SET " . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . "=0, " . FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET . "=\"" . $newCorrectionFtaSuiviProjet . "\" " . " WHERE " . FtaModel::KEYNAME . "=" . $paramIdFta . " AND " . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . "=" . $paramIdChapitre; DatabaseOperation::execute($reqDevelidationChapitre); /* * Mise à jour de la validation de l'échéance du processus * fonction non utilisé */ // FtaProcessusDelaiModel::BuildFtaProcessusValidationDelai($paramIdFta, $idFtaProcessus, $idFtaWorkflow); //Dévalidation des processus suivants $return = FtaChapitreModel::buildDevalidationChapitre($paramIdFta, $idFtaProcessus, $HtmlResult); /** * Actualisation du pourcentage de validation de la Fta */ $idFtaSuiviProjet = FtaSuiviProjetModel::getIdFtaSuiviProjetByIdFtaAndIdChapitre($paramIdFta, $paramIdChapitre); $modelFtaSuiviProjet = new FtaSuiviProjetModel($idFtaSuiviProjet); $modelFtaSuiviProjet->unsetSigned(); $modelFtaSuiviProjet->saveToDatabase(); //print_r($return['mail']); //Tableau contenant les adresses emails des personnes concernées par la dévalidation if (count($return) > 1) { $return['processus'] = array_unique($return['processus']); //Tableau contenant les identifiants des processus dévalidés unique } if (is_string($return['processus'])) { $return['processus'] = array('processus' => $return['processus']); } //Informations if ($return['processus']) { foreach ($return['processus'] as $id_Fta_Processus) { $idFtaProcessus = $id_Fta_Processus; $arrayFtaProcessus = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaProcessusModel::FIELDNAME_NOM . ' FROM ' . FtaProcessusModel::TABLENAME . ', ' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '=' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '=' . $idFtaProcessus . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . $idFtaWorkflow); if ($arrayFtaProcessus) { foreach ($arrayFtaProcessus as $rowsFtaProcessus) { $message .= $rowsFtaProcessus[FtaProcessusModel::FIELDNAME_NOM] . '<br>'; } } } if (!$message) { $message = 'Aucun processus n\'a été dévalidé.'; } $titre = 'Liste des Processus dévalidés'; if (!$option['no_message_ecran']) { Lib::showMessage($titre, $message, $redirection); } //Envoi des mails $show_din = FtaModel::showDin($paramIdFta); $sujetElements = $show_din; if ($return['mail']) { $return['mail'] = array_unique($return['mail']); foreach ($return['mail'] as $mail) { $sujetmail = 'FTA/Correction: ' . $sujetElements; $destinataire = $mail; $expediteur = $nomPrenom . ' <' . $mailExpediteur . '>'; $text = 'Vos chapitres viennent d\'être dévalidés suite à une correction apportée par ' . $nomPrenom . '.\\n\\n' . 'OBJET DE LA CORRECTION:\\n' . '\\t' . stripslashes($option[FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET]); $typeMail = 'Correction'; if ($notificationFtaSuiviProjet) { envoismail($sujetmail, $text, $destinataire, $expediteur, $typeMail); } } } /** * Génération d'un mail informant le gestionnaire de la Fta */ if ($option['mail_gestionnaire']) { $ftaModel = new FtaModel($paramIdFta); $idGestionnaire = $ftaModel->getModelCreateur()->getKeyValue(); //Tableau des id intranet actions Fta $arrayAction = IntranetDroitsAccesModel::getArrayIdIntranetActionWithAccesRightsToFtaByUser($idGestionnaire); $checkDiffusion = FtaController::isValueInArray(IntranetNiveauAccesModel::NIVEAU_FTA_DIFFUSION, $arrayAction); if ($idGestionnaire != $idUser and $checkDiffusion) { $mailGestionnaire = $ftaModel->getModelCreateur()->getDataField(UserModel::FIELDNAME_MAIL)->getFieldValue(); $sujetmail = 'FTA/Mise en Correction: ' . $sujetElements . ' par ' . $nomPrenom; $destinataire = $mailGestionnaire; $expediteur = $nomPrenom . ' <' . $mailExpediteur . '>'; $text = 'Une nouvelle version vient d\'être crée, la correction apportée par ' . $nomPrenom . ' est au sujet de :\\n' . '\\t' . stripslashes($option[FtaSuiviProjetModel::FIELDNAME_CORRECTION_FTA_SUIVI_PROJET]); $typeMail = 'CorrectionValidation2Modification'; envoismail($sujetmail, $text, $destinataire, $expediteur, $typeMail); } } } //Fin du traitement des processus suivants return 1; }