/** * Affiche le tableau de récapitulatif des droits d'accès sur le module Fta * @return string */ public static function getHtmlArrayAccesRightUser() { /** * Entête du tableau */ $bloc .= "<" . "table " . "border=1 " . "width=100% " . "class=contenu " . ">" . "<th>" . "Utilisateurs" . "</th><th>" . "Accès général" . "</th><th>" . "Diffusion" . "</th><th>" . "Impression" . "</th><th>" . "Espace de travail <br>(Mettre la souris sur un espace de travail pour voir le détail) " . "</th>"; //lister les utilisateurs concernés $arrayUser = self::getArrayUserWithAccesRightsToFta(); foreach ($arrayUser as $rowsUser) { $lienWorkflow = ""; $listeRole = ""; $virgule = ""; $virgule2 = ""; //Tableau des id intranet actions Fta $arrayAction = self::getArrayIdIntranetActionWithAccesRightsToFtaByUser($rowsUser[UserModel::KEYNAME]); $bloc .= "<tr class=contenu><td>" . $rowsUser[UserModel::FIELDNAME_PRENOM] . " " . $rowsUser[UserModel::FIELDNAME_NOM] . "</td>"; /** * Vérification des droits d'accès généraux */ $checkModification = FtaController::isValueInArray(IntranetNiveauAccesModel::NIVEAU_FTA_MODIFICATION, $arrayAction); $checkConsultation = FtaController::isValueInArray(IntranetNiveauAccesModel::NIVEAU_FTA_CONSULTATION, $arrayAction); $checkDiffusion = FtaController::isValueInArray(IntranetNiveauAccesModel::NIVEAU_FTA_DIFFUSION, $arrayAction); $checkImpression = FtaController::isValueInArray(IntranetNiveauAccesModel::NIVEAU_FTA_IMPRESSION, $arrayAction); /** * Si accès Fta Modif */ if ($checkModification) { $accesGeneralValue = "Modification"; $diffusion = "Voir espaces de Travail"; /** * Identification des Id intranet action workflow */ $arrayIdIntranetParents = DatabaseOperation::convertSqlStatementWithoutKeyToArrayComplete(" SELECT " . IntranetActionsModel::KEYNAME . " FROM " . IntranetActionsModel::TABLENAME . " WHERE " . IntranetActionsModel::FIELDNAME_TAG_INTRANET_ACTIONS . "='" . IntranetActionsModel::VALUE_WORKFLOW . "' "); $arrayIdActionWorkflow = array_intersect($arrayIdIntranetParents, $arrayAction); if ($arrayIdActionWorkflow) { foreach ($arrayIdActionWorkflow as $rowsIdActionWorkflow) { $listeRole = ""; $virgule2 = ""; /** * Identification du workflow */ $arrayIdIntranetParents = DatabaseOperation::convertSqlStatementWithoutKeyToArrayComplete(" SELECT " . FtaWorkflowModel::FIELDNAME_DESCRIPTION_FTA_WORKFLOW . " FROM " . FtaWorkflowModel::TABLENAME . " WHERE " . FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS . "=" . $rowsIdActionWorkflow); /** * Identification des Id intranet action role du workflow */ $arrayIdIntranetRole = DatabaseOperation::convertSqlStatementWithoutKeyToArrayComplete(" SELECT " . IntranetActionsModel::KEYNAME . " FROM " . IntranetActionsModel::TABLENAME . " WHERE " . IntranetActionsModel::FIELDNAME_TAG_INTRANET_ACTIONS . "='" . IntranetActionsModel::VALUE_ROLE . "' " . " AND " . IntranetActionsModel::FIELDNAME_PARENT_INTRANET_ACTIONS . "=" . $rowsIdActionWorkflow); $arrayIdActionRole = array_intersect($arrayIdIntranetRole, $arrayAction); if ($arrayIdActionRole) { foreach ($arrayIdActionRole as $rowsIdActionRole) { /** * Liste des rôles attribué pour le workflow */ $arrayRole = DatabaseOperation::convertSqlStatementWithoutKeyToArrayComplete(" SELECT " . FtaRoleModel::FIELDNAME_DESCRIPTION_FTA_ROLE . " FROM " . FtaRoleModel::TABLENAME . "," . FtaActionRoleModel::TABLENAME . " WHERE " . FtaActionRoleModel::FIELDNAME_ID_INTRANET_ACTIONS . "=" . $rowsIdActionRole . " AND " . FtaRoleModel::TABLENAME . "." . FtaRoleModel::KEYNAME . "=" . FtaActionRoleModel::TABLENAME . "." . FtaActionRoleModel::FIELDNAME_ID_FTA_ROLE); $listeRole .= $virgule2 . $arrayRole["0"]; $virgule2 = ", "; } } $lienWorkflow .= $virgule . "<span title=\" " . $listeRole . " \" >" . $arrayIdIntranetParents["0"] . "</span>"; $virgule = ", "; } } /** * Si accès Fta Consultation */ } elseif ($checkConsultation) { $accesGeneralValue = "Consultation"; /** * Droits de difussion */ if ($checkDiffusion) { $geoModel = new GeoModel($rowsUser[UserModel::FIELDNAME_LIEU_GEO]); $diffusion = $geoModel->getDataField(GeoModel::FIELDNAME_GEO)->getFieldValue(); } else { $diffusion = "Non"; } /** * Droits de difussion */ } else { $accesGeneralValue = "Non"; if ($checkDiffusion) { $geoModel = new GeoModel($rowsUser[UserModel::FIELDNAME_LIEU_GEO]); $diffusion = $geoModel->getDataField(GeoModel::FIELDNAME_GEO)->getFieldValue(); } else { $diffusion = "Non"; } } /** * Droits d'impression */ if ($checkImpression) { $impression = "Oui"; } else { $impression = "Non"; } $bloc .= "<td>" . $accesGeneralValue . "</td>" . "<td>" . $diffusion . "</td>" . "<td>" . $impression . "</td>" . "<td>" . $lienWorkflow . "</td></tr>"; } return $bloc; }
/** * 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; }