public static function getHtmlTable($paramIdFta, $paramChoix, $paramResultLimitByPage = self::DEFAULT_RESULT_LIMIT_BY_PAGE, $paramOrderCommon = NULL) { /* * Déclaration des variables locales */ $largeur_html_C1 = self::HTML_CELL_WIDTH_C1; // largeur cellule type $largeur_html_C3 = self::HTML_CELL_WIDTH_C3; // largeur cellule type $compteur_ligne = 1; $selection_width = self::HTML_CELL_WIDTH_SELECTION; $lien = ""; $tableau_fiches = "<table class=titre width=100% border=0>" . "<tr class=titre_principal><td></td><td>"; $synthese_action = "all"; /* * Initilisation */ $globalConfig = new GlobalConfig(); UserModel::checkUserSessionExpired($globalConfig); $idUser = $globalConfig->getAuthenticatedUser()->getKeyValue(); $idFtaRole = FtaRoleModel::getKeyNameOfFirstRoleByIdUser($idUser); $ftaModel = new FtaModel($paramIdFta); //Chargement manuel des données pour optimiser les performances $abreviation_fta_etat = $ftaModel->getModelFtaEtat()->getDataField(FtaEtatModel::FIELDNAME_ABREVIATION)->getFieldValue(); $LIBELLE = $ftaModel->getDataField(FtaModel::FIELDNAME_LIBELLE)->getFieldValue(); $NB_UNIT_ELEM = $ftaModel->getDataField(FtaModel::FIELDNAME_NOMBRE_UVC_PAR_CARTON)->getFieldValue(); $Poids_ELEM = $ftaModel->getDataField(FtaModel::FIELDNAME_POIDS_ELEMENTAIRE)->getFieldValue(); $suffixe_agrologic_fta = $ftaModel->getModelClassificationRacourcis()->getNameRaccourcisClassif(); $designation_commerciale_fta = $ftaModel->getDataField(FtaModel::FIELDNAME_DESIGNATION_COMMERCIALE)->getFieldValue(); $id_dossier_fta = $ftaModel->getDataField(FtaModel::FIELDNAME_DOSSIER_FTA)->getFieldValue(); $id_version_dossier_fta = $ftaModel->getDataField(FtaModel::FIELDNAME_VERSION_DOSSIER_FTA)->getFieldValue(); $code_article_ldc = $ftaModel->getDataField(FtaModel::FIELDNAME_CODE_ARTICLE_LDC)->getFieldValue(); $dateEcheanceFtatmp = $ftaModel->getDataField(FtaModel::FIELDNAME_DATE_ECHEANCE_FTA)->getFieldValue(); $createur_nom = $ftaModel->getModelCreateur()->getDataField(UserModel::FIELDNAME_NOM)->getFieldValue(); $createur_prenom = $ftaModel->getModelCreateur()->getDataField(UserModel::FIELDNAME_PRENOM)->getFieldValue(); $workflowName = $ftaModel->getModelFtaWorkflow()->getDataField(FtaWorkflowModel::FIELDNAME_DESCRIPTION_FTA_WORKFLOW)->getFieldValue(); $idWorkflowFtaEncours = $ftaModel->getModelFtaWorkflow()->getKeyValue(); $nomSiteProduction = $ftaModel->getModelSiteProduction()->getDataField(GeoModel::FIELDNAME_GEO)->getFieldValue(); $idclassification = $ftaModel->getDataField(FtaModel::FIELDNAME_ID_FTA_CLASSIFICATION2)->getFieldValue(); $listeIdFtaRole = $ftaModel->getDataField(FtaModel::FIELDNAME_LISTE_ID_FTA_ROLE)->getFieldValue(); $idSiteDeProduction = $ftaModel->getDataField(FtaModel::FIELDNAME_SITE_PRODUCTION)->getFieldValue(); $idFtaEtat = $ftaModel->getDataField(FtaModel::FIELDNAME_ID_FTA_ETAT)->getFieldValue(); /** * Changment du format de date en Fr */ $dateEcheanceFta = FtaController::changementDuFormatDeDateFR($dateEcheanceFtatmp); /** * On obtient IdintranetAction du site de production */ $idIntranetActionsSiteDeProduction = FtaActionSiteModel::getArrayIdIntranetActionByWorkflowAndSiteDeProduction($idWorkflowFtaEncours, $idSiteDeProduction); /** * On verifie si selon le workflow et site de production en cours l'utilisateur connecté à les droits d'accès. * Puisqu'un utilisateur ne doit pas avoir accès aux boutons : * historique, transition, retirer, duplication et pourcentage d'avancement * si il n'a pas les accès aux site de production. */ $checkAccesButtonBySiteProd = IntranetActionsModel::isAccessFtaActionByIdUserFtaWorkflowAndSiteDeProduction($idUser, $idWorkflowFtaEncours, $idIntranetActionsSiteDeProduction); /** * Donne accès aux bouton de transition * pour les utilisateur se trouvant en fin de parcours de l'espace de travail */ $accesTransitionButton = FtaTransitionModel::isAccesTransitionButton($idFtaRole, $idWorkflowFtaEncours); /* * Attribution des couleurs de fonds suivant l'état de la FTA */ $bgcolor = self::getHtmlCellBgColor($abreviation_fta_etat); $bgcolorArcadia = self::getHtmlCellBgColorArcadia($paramIdFta, $bgcolor); $tauxRound = FtaSuiviProjetModel::getPourcentageFtaTauxValidation($ftaModel); /** * Lien vers l'historique de la Fta */ $lienHistorique = self::getHtmlLinkHistorique($abreviation_fta_etat, $paramIdFta, FtaRoleModel::ID_FTA_ROLE_COMMUN, $synthese_action, $tauxRound, $checkAccesButtonBySiteProd, $idFtaEtat); /** * Gestion des icones en fonction des délais */ $bgcolor_header = self::getHtmlBgColorIconHeader($abreviation_fta_etat, $paramIdFta); $icon_header = self::getHtmlIconEcheanceByEtatAndFta($abreviation_fta_etat, $paramIdFta); /** * Bouton d'accès au détail de la FTA */ $lien .= self::getHtmlLinkModify($abreviation_fta_etat, $paramIdFta, $synthese_action, $idFtaEtat, $checkAccesButtonBySiteProd); /** * Historique de modification */ $lien .= self::getHtmlLinkHistoriqueModfify($abreviation_fta_etat, $paramIdFta, $synthese_action, $idFtaEtat); /** * Bouton d'accès au rendu PDF de la FTA */ $lien .= self::getHtmlLinkPDF($abreviation_fta_etat, $paramIdFta, $idWorkflowFtaEncours); /** * Bouton d'accès à la transition */ $lien .= self::getHmlLinkTransiter($paramIdFta, $idFtaRole, $abreviation_fta_etat, $checkAccesButtonBySiteProd, $accesTransitionButton, $synthese_action, $tauxRound); /** * Bouton d'accès pour retirer une FTA */ if (FtaRoleModel::isGestionnaire($idFtaRole) and $checkAccesButtonBySiteProd and $abreviation_fta_etat != FtaEtatModel::ETAT_ABREVIATION_VALUE_RETIRE) { $lien .= self::getHtmlLinkRemoveFta($paramIdFta); $javascript .= self::getJavascriptLinkRemoveFta($paramIdFta, $idFtaRole, $synthese_action); } /** * Bouton d'accès pour dupliquer une FTA */ if (FtaRoleModel::isGestionnaire($idFtaRole) and $checkAccesButtonBySiteProd) { $lien .= self::getHtmlLinkDuplicateFta($paramIdFta, $idFtaRole); } //Désignation commerciale $din = self::getStringDINCompacted($designation_commerciale_fta, $LIBELLE, $NB_UNIT_ELEM, $Poids_ELEM); /* * Noms des services dans lequel la Fta se trouve */ $service = FtaRoleModel::getNameServiceEncours($listeIdFtaRole); // switch (TRUE) { // /** // * Si la FTA est en modification et que l'utilisateur n'est pas autorisé à accéder aux boutons. // */ // case ( // $abreviation_fta_etat == FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION AND $checkAccesButton != FALSE // ): // $service = ""; // break; // // /** // * Si la FTA est en modification et que l'utilisateur est autorisé à accéder aux boutons. // */ // case ( // $abreviation_fta_etat == FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION AND $checkAccesButton != TRUE // ): // $service = FtaRoleModel::getNameServiceEncours($listeIdFtaRole); // break; // /** // * Sinon: // */ // default: // $service = FtaRoleModel::getNameServiceEncours($listeIdFtaRole); // } /** * Calssification */ if ($idclassification) { $classification = ClassificationArborescenceArticleCategorieContenuModel::getElementClassificationFta($idclassification, ClassificationFta2Model::FIELDNAME_ID_PROPRIETAIRE_GROUPE); } //Nom de l'assistante de projet responsable: $createur_link = "\"Géré par {$createur_prenom} {$createur_nom}\""; $tableau_fiches .= "<tr class=contenu>\r\n <td {$bgcolor_header} " . $selection_width . " > {$icon_header} {$selection}</td>\r\n "; $tableau_fiches .= '<td ' . $bgcolor . ' width=8%>' . $nomSiteProduction . '<br>(' . $workflowName . ')</td>' . '<td ' . $bgcolor . ' width=3%>' . $classification . '</td>' . '<td ' . $bgcolor . ' width=3%>' . $suffixe_agrologic_fta . '</td>'; // Raccourcie Class. $tableau_fiches .= "<td {$bgcolor} {$largeur_html_C1}><a title={$createur_link} />" . $din . "</a></td>" . "<td {$bgcolor} width=3%>" . $id_dossier_fta . "v" . $id_version_dossier_fta . "</td>"; $tableau_fiches .= "<td {$bgcolorArcadia} width=\"1%\"> <b><font size=\"2\" color=\"#0000FF\">" . $code_article_ldc . "</font></b></td>"; if ($abreviation_fta_etat == FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION) { $tableau_fiches .= '<td ' . $bgcolor . $largeur_html_C3 . ' align=center>' . $dateEcheanceFta . '</td>'; //échance de validation } else { $tableau_fiches .= '<td ' . $bgcolor . $largeur_html_C3 . ' align=center>' . $dateEcheanceFta . '</td>'; //échance de validation } $tableau_fiches .= '<td ' . $bgcolor . ' width=5% align=center >' . $lienHistorique . '</td>' . '<td ' . $bgcolor . $largeur_html_C3 . ' align=center >' . $service . '</td>' . '<td ' . $bgcolor . ' width=8%' . ' align=center >' . $lien . '</td>'; // Actions $tableau_fiches .= "</tr>"; $compteur_ligne++; // }//fin tant que tableau_origine $tableau_fiches = $javascript . $tableau_fiches . "</table>"; //Ajoute de la fonction de traitement de masse if ($traitementDeMasse) { $liste_action_groupe = FtaTransitionModel::getListeFtaGrouper($abreviation_fta_etat); $tableau_fiches .= ' <img src = ../lib/images/fleche_gauche_et_haut.png width = 38 height = 22 border = 0 /> <i>Transitions groupées</i>: ' . $liste_action_groupe . ' <input type = \'text\' name=\'subject\' size=\'20\' /> <input type=image src=images/transiter.png width=20 height=20 /> <input type=hidden name=action value=transition_groupe> '; } return $tableau_fiches; }
/** * Affiche le lien vers les Fta secondaires * @param int $paramIdFtaChapitre * @param string $paramSyntheseAction * @param int $paramComeback * @param int $paramIdFtaRole * @return string */ function getLinkToSecondaryFta($paramIdFtaChapitre, $paramSyntheseAction, $paramComeback, $paramIdFtaRole) { $arraySecondaryFta = $this->getArrayIdFtaFromDossierFtaPrimary(); $separator = " "; $link = "<tr ><td class=\"contenu\"> " . UserInterfaceLabel::FR_FTA_SECONDAIRE . "</td ><td class=\"contenu\" width=75% >"; foreach ($arraySecondaryFta as $rowsSecondaryFta) { $ftaModelSecond = new FtaModel($rowsSecondaryFta[self::KEYNAME]); /** * On vérifie si le code Article Arcadia est renseigné * si oui on l'affiche * sinon on affiche le dossier avec la version */ if ($ftaModelSecond->getDataField(self::FIELDNAME_CODE_ARTICLE_LDC)->getFieldValue()) { $valueLink = $ftaModelSecond->getDataField(self::FIELDNAME_CODE_ARTICLE_LDC)->getFieldValue(); } else { $valueLink = $ftaModelSecond->getDataField(self::FIELDNAME_DOSSIER_FTA)->getFieldValue() . "v" . $ftaModelSecond->getDataField(FtaModel::FIELDNAME_VERSION_DOSSIER_FTA)->getFieldValue(); } $link .= $separator . "<a href=" . "modification_fiche.php?" . "id_fta=" . $ftaModelSecond->getKeyValue() . "&id_fta_chapitre_encours=" . $paramIdFtaChapitre . "&synthese_action=" . $paramSyntheseAction . "&comeback=" . $paramComeback . "&id_fta_etat=" . $ftaModelSecond->getDataField(self::FIELDNAME_ID_FTA_ETAT)->getFieldValue() . "&abreviation_fta_etat=" . $ftaModelSecond->getModelFtaEtat()->getDataField(FtaEtatModel::FIELDNAME_ABREVIATION)->getFieldValue() . "&id_fta_role=" . $paramIdFtaRole . ">" . $valueLink . "</a>"; $separator = " - "; } $link .= "</td></tr>"; return $link; }
if ($selection_saisonnalite) { //Enregistrement du nouvel éléments de classification $idClassification2 = ClassificationFta2Model::getIdFtaClassification2($selection_proprietaire1, $selection_proprietaire2, $selection_marque, $selection_activite, $selection_rayon, $selection_environnement, $selection_reseau, $selection_saisonnalite); } switch ($action) { /* S'il n'y a pas d'actions défini */ case 'valider': $modelFta = new FtaModel($paramIdFta); $modelFta->getDataField(FtaModel::FIELDNAME_ID_FTA_CLASSIFICATION2)->setFieldValue($idClassification2); /** * Vérification que la classification est des données correspondantes Arcadia */ $modelFta->checkArcadiaClassifData($idClassification2); $abreviationFtaEtat = $modelFta->getModelFtaEtat()->getDataField(FtaEtatModel::FIELDNAME_ABREVIATION)->getFieldValue(); $modelFta->saveToDatabase(); //Redirection header('Location: modification_fiche.php?id_fta=' . $paramIdFta . '&id_fta_chapitre_encours=' . $paramIdFtaChapitreEncours . '&synthese_action=' . $paramSyntheseAction . '&id_fta_etat=' . $idFtaEtat . '&abreviation_fta_etat=' . $abreviationFtaEtat . '&id_fta_role=' . $idFtaRole); break; case 'gestionnaire': $validation = DatabaseOperation::execute("UPDATE " . FtaModel::TABLENAME . " SET " . FtaModel::FIELDNAME_ID_FTA_CLASSIFICATION2 . "=" . $idClassification2 . " WHERE " . FtaModel::FIELDNAME_DOSSIER_FTA . "=" . $paramIdFta); //Redirection header('Location: modification_classification.php'); break; case 'gestionnaire1': $validation = DatabaseOperation::execute("UPDATE " . FtaModel::TABLENAME . " SET " . FtaModel::FIELDNAME_ID_FTA_CLASSIFICATION2 . "=" . $idClassification2 . " WHERE " . FtaModel::FIELDNAME_DOSSIER_FTA . "=" . $paramIdFta); //Redirection header('Location: ajout_classification.php'); break; /* * **********
function notification_suivi_projet($id_fta, $paramIdChapitre) { /* Cette fonction notifie les processus en fonction de l'état d'avancement du suivi du projet. Cet état d'avancement est géré par la table fta_suivi_projet Elle ne fait que de l'information, et ne modifie pas l'état de la fiche mais uniquement son suivi */ //Récupération des informations de la FTA $_SESSION["id_fta"] = $id_fta; mysql_table_load("fta"); // mysql_table_load("access_arti2"); mysql_table_load("fta_etat"); //Récupération des Processus $req = "SELECT * FROM fta_processus "; $result = DatabaseOperation::query($req); while ($rows_processus = mysql_fetch_array($result)) { //Si l'utilisateur appartient au processus, il n'est pas necessaire d'informer tous son service par mail $req = "SELECT nom_intranet_actions " . "FROM intranet_actions " . "WHERE id_intranet_actions='" . $rows_processus["id_intranet_actions"] . "' "; $result_action = DatabaseOperation::query($req); $nom_intranet_actions = mysql_result($result_action, 0, "nom_intranet_actions"); //echo "fta_".$nom_intranet_actions.": ".$GLOBALS{"fta_".$nom_intranet_actions}."<br>"; if ($GLOBALS["fta_" . $nom_intranet_actions]) { $no_mail = 1; //Désactivation du mail pour ce processus } else { $no_mail = 0; //Activation du mail } //Ce processus est-il un processus en cours ? if (fta_processus_etat($id_fta, $rows_processus["id_fta_processus"]) == 2) { //Activation du mail //$no_mail=0; //Recherche des Notifications des chapitres $req = "SELECT notification_fta_suivi_projet " . "FROM fta_suivi_projet, fta_chapitre, fta_processus " . "WHERE (fta_suivi_projet.id_fta_chapitre=fta_chapitre.id_fta_chapitre " . "AND `fta_processus`.`id_fta_processus` = `fta_chapitre`.`id_fta_processus` ) " . "AND fta_chapitre.id_fta_processus=" . $rows_processus["id_fta_processus"] . " " . "AND fta_suivi_projet.id_fta=" . $id_fta . " "; $result_2 = mysql_query($req); //L'ensemble des chapitres a-t-il été entièrement notifié ? // -1 = le suivi doit etre créé et le processus doit être informé // 0 = ce processus doit être informé // 1 = ce processus a déjà était informé if (mysql_num_rows($result_2)) { $notification = 1; while ($rows_notification = mysql_fetch_array($result_2)) { $notification = $notification * $rows_notification["notification_fta_suivi_projet"]; } } else { $notification = -1; } //Si au moins un des chapitres n'a pas été notifié ou qu'il n' y a pas encore de suivi if ($notification <= 0 and $rows_processus["id_fta_processus"] != 1) { //Initialisation du tableau des destinataires (mail + identifiant) $liste_mail = ""; $liste_user = ""; //Si le mail reste actif, on construit la listes des utilisateurs à informer if (!$no_mail) { //Recherche de la liste des utilisateurs à informer switch ($rows_processus["multisite_fta_processus"]) { case 0: //1. Cas de processus mono-site //----------------------------- //Est-ce que seul le service du chef de projet doit être informé ? if ($rows_processus["information_service_chef_projet_fta_processus"]) { //Rechercher du service du chef de projet $req = "SELECT `salaries`.`id_service` " . "FROM `fta_suivi_projet`, `salaries` " . "WHERE ( `fta_suivi_projet`.`signature_validation_suivi_projet` = `salaries`.`id_user` ) " . "AND ( ( `fta_suivi_projet`.`id_fta` = " . $id_fta . " AND `fta_suivi_projet`.`id_fta_chapitre` = 1 ) ) "; $result = DatabaseOperation::query($req); $id_service = mysql_result($result, 0, "id_service"); $where = "AND salaries.id_service=" . $id_service . " "; //Désactivation de l'envoi du mail dans ce cas de figure. $no_mail = 1; } $req = "SELECT DISTINCT `salaries`.`id_user`, `salaries`.`mail`, `salaries`.`login`,`salaries`.`nom`,`salaries`.`prenom`, `fta_processus`.`id_fta_processus` " . "FROM `salaries`, `intranet_droits_acces`, `intranet_modules`, `intranet_actions`, `fta_processus` " . "WHERE ( `salaries`.`id_user` = `intranet_droits_acces`.`id_user` " . "AND `salaries`.`actif` = 'oui' " . "AND `intranet_actions`.`id_intranet_actions` = `intranet_droits_acces`.`id_intranet_actions` " . "AND `intranet_actions`.`id_intranet_actions` = `fta_processus`.`id_intranet_actions` ) " . "AND ( ( `intranet_droits_acces`.`niveau_intranet_droits_acces` <> 0 " . "AND `fta_processus`.`id_fta_processus` = " . $rows_processus["id_fta_processus"] . " " . "AND fta_processus.multisite_fta_processus = 0 " . "AND `intranet_modules`.`nom_intranet_modules` = 'fta' ) )" . "AND salaries.id_user<>'" . $_SESSION["id_user"] . "' " . $where; $result_mail = DatabaseOperation::query($req); if (mysql_num_rows($result_mail)) { while ($rows_mail = mysql_fetch_array($result_mail)) { //Remplissage du tableau des destinataires (mail + identifiant) $liste_mail[] = $rows_mail["mail"]; $liste_user[] = "- " . $rows_mail["prenom"] . " " . $rows_mail["nom"]; } } break; case 1: //2. Cas de processus multi-site //------------------------------ //Existe-t-il un processus d'un autre site qui gère ce site d'assemblage ? $req = "SELECT * FROM fta_processus_multisite " . "WHERE id_site_assemblage_fta_processus_multisite = " . $_SESSION["Site_de_production"] . " " . "AND id_processus_fta_processus_multisite = " . $rows_processus["id_fta_processus"] . " "; $result_autre_site = DatabaseOperation::query($req); if (mysql_num_rows($result_autre_site)) { $site_gestionnaire = mysql_result($result_autre_site, 0, "id_site_processus_fta_processus_multisite"); } else { $site_gestionnaire = $_SESSION["Site_de_production"]; } $req = "SELECT DISTINCT `salaries`.`id_user`, `salaries`.`mail`, `salaries`.`login`,`salaries`.`nom`,`salaries`.`prenom`, `fta_processus`.`id_fta_processus` " . "FROM `salaries`, `intranet_droits_acces`, `intranet_modules`, `intranet_actions`, `fta_processus`, geo " . "WHERE ( `salaries`.`id_user` = `intranet_droits_acces`.`id_user` " . "AND `salaries`.`actif` = 'oui' " . "AND `intranet_actions`.`id_intranet_actions` = `intranet_droits_acces`.`id_intranet_actions` " . "AND `intranet_actions`.`id_intranet_actions` = `fta_processus`.`id_intranet_actions` " . "AND `geo`.`id_geo` = `salaries`.`lieu_geo`) " . "AND ( ( `intranet_droits_acces`.`niveau_intranet_droits_acces` <> 0 " . "AND `fta_processus`.`id_fta_processus` = " . $rows_processus["id_fta_processus"] . " " . "AND fta_processus.multisite_fta_processus = 1 " . "AND `geo`.`id_site` ='" . $site_gestionnaire . "' " . "AND `intranet_modules`.`nom_intranet_modules` = 'fta' ) )" . "AND salaries.id_user<>'" . $_SESSION["id_user"] . "' "; //echo $rows_processus["multisite_fta_processus"]."<br>".$req."<br><br>"; $result_mail = DatabaseOperation::query($req); while ($rows_mail = mysql_fetch_array($result_mail)) { //Remplissage du tableau des destinataires (mail + identifiant) $liste_mail[] = $rows_mail["mail"]; $liste_user[] = "- " . $rows_mail["prenom"] . " " . $rows_mail["nom"]; } break; } //Fin de la recherche des utilisateurs à informer } //Fin du controle de désactivation de mail //Envoi du mail de notification $idFtaSuiviProjet = FtaSuiviProjetModel::getIdFtaSuiviProjetByIdFtaAndIdChapitre($id_fta, $paramIdChapitre); $modelFtaSuiviProjet = new FtaSuiviProjetModel($idFtaSuiviProjet); $modelFta = new FtaModel($id_fta); if ($liste_mail and !$no_mail) { foreach ($liste_mail as $adresse_email) { $sujetmail = "FTA/" . $modelFta->getDataField(FtaModel::FIELDNAME_DESIGNATION_COMMERCIALE)->getFieldValue(); $text = "Démarrage du processus: " . $rows_processus["nom_fta_processus"] . "\n" . "Etat de la FTA: " . $modelFta->getModelFtaEtat()->getDataField(FtaEtatModel::FIELDNAME_NOM_FTA_ETAT)->getFieldValue() . "\n\n" . "Vous pouvez consulter l'Etat d'avancenement du dossier directement sur le site http://intranet.agis.fr .\n" . "\n" . "Bonne journée.\n" . "Intranet - Fiche Technique Article."; $destinataire = $adresse_email; $expediteur = $_SESSION["prenom"] . " " . $_SESSION["nom_famille_ses"] . " <" . $_SESSION["mail_user"] . ">"; //if ($_SESSION["notification_fta_suivi_projet"]) { if ($modelFtaSuiviProjet->getDataField(FtaSuiviProjetModel::FIELDNAME_NOTIFICATION_FTA_SUIVI_PROJET)->getFieldValue()) { envoismail($sujetmail, $text, $destinataire, $expediteur); } } } //Fin des envois de mail //Enregistrement de la réalisation de la notification du processus switch ($notification) { case 0: //Mise à jour du suivi $req = "UPDATE fta_chapitre, fta_suivi_projet " . "SET fta_suivi_projet.notification_fta_suivi_projet=1 " . "WHERE fta_suivi_projet.id_fta_chapitre=fta_chapitre.id_fta_chapitre " . "AND fta_chapitre.id_fta_processus=" . $rows_processus["id_fta_processus"] . " " . "AND fta_suivi_projet.id_fta=" . $id_fta . " "; DatabaseOperation::query($req); break; case -1: //Création du suivi //Récupération des chapitres du processus $req = "SELECT id_fta_chapitre FROM fta_chapitre " . "WHERE id_fta_processus = '" . $rows_processus["id_fta_processus"] . "' "; $result_chapitre = DatabaseOperation::query($req); while ($rows_chapitre = mysql_fetch_array($result_chapitre)) { $req = "INSERT fta_suivi_projet " . "SET notification_fta_suivi_projet=1 " . ", id_fta='" . $id_fta . "' " . ", id_fta_chapitre='" . $rows_chapitre["id_fta_chapitre"] . "' "; DatabaseOperation::query($req); } break; } //echo $req; //echo "<br>"; } //Fin de la vérification par chapitre et du traitement de la notification } //Fin de la vérification des processus validés } //Fin du parcours des processsu //Message d'Information if ($liste_user) { $liste_user_html = implode("<br>", $liste_user); $titre = "Information communiquée par Mail"; $message = "Les personnes suivantes viennent d'être informées par mail de la validation de tous vos chapitres." . "<br><br>" . $liste_user_html; afficher_message($titre, $message, $redirection); } //Retour de la fonction return $liste_user; }
public static function getListeUsersAndNotificationSuiviProjet($paramIdFta, $paramIdChapitre) { $idFtaSuiviProjet = FtaSuiviProjetModel::getIdFtaSuiviProjetByIdFtaAndIdChapitre($paramIdFta, $paramIdChapitre); $modelFtaSuiviProjet = new FtaSuiviProjetModel($idFtaSuiviProjet, $paramIdChapitre); $modelFta = new FtaModel($paramIdFta, $paramIdChapitre); $id_fta_workflow = $modelFta->getDataField(FtaModel::FIELDNAME_WORKFLOW)->getFieldValue(); $ftaWorkflowModel = new FtaWorkflowModel($id_fta_workflow); $id_parent_intranet_actions = $ftaWorkflowModel->getDataField(FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS)->getFieldValue(); //Récupération des Processus $arrayProcessus = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . ', ' . FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS . ', ' . FtaProcessusModel::FIELDNAME_MULTISITE_FTA_PROCESSUS . ', ' . FtaProcessusModel::FIELDNAME_INFO_CHEF_PROJET . ', ' . FtaProcessusModel::FIELDNAME_NOM . ' FROM ' . FtaProcessusModel::TABLENAME . ',' . FtaWorkflowStructureModel::TABLENAME . ',' . FtaWorkflowModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . FtaWorkflowModel::TABLENAME . '.' . FtaWorkflowModel::KEYNAME . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '=' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . $id_fta_workflow); foreach ($arrayProcessus as $rowsProcessus) { //Si l'utilisateur appartient au processus, il n'est pas necessaire d'informer tous son service par mail $arrayIntranetActionProcessus = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . IntranetActionsModel::FIELDNAME_NOM_INTRANET_ACTIONS . ' FROM ' . IntranetActionsModel::TABLENAME . ' WHERE ' . IntranetActionsModel::KEYNAME . '=\'' . $rowsProcessus[FtaActionRoleModel::FIELDNAME_ID_INTRANET_ACTIONS] . '\' '); if ($arrayIntranetActionProcessus) { foreach ($arrayIntranetActionProcessus as $rowsIntranetActionProcessus) { $nom_intranet_actions = $rowsIntranetActionProcessus[IntranetActionsModel::FIELDNAME_NOM_INTRANET_ACTIONS]; } } //echo 'fta_'.$nom_intranet_actions.': '.$GLOBALS{'fta_'.$nom_intranet_actions}.'<br>'; if (Acl::getValueAccesRights('fta_' . $nom_intranet_actions)) { $no_mail = 1; //Désactivation du mail pour ce processus } else { $no_mail = 0; //Activation du mail } //Ce processus est-il un processus en cours ? if (FtaProcessusModel::getValideProcessusEncours($paramIdFta, $rowsProcessus[FtaProcessusModel::KEYNAME], $id_fta_workflow) != 0 and FtaProcessusModel::getValideProcessusEncours($paramIdFta, $rowsProcessus[FtaProcessusModel::KEYNAME], $id_fta_workflow) != 1) { //Activation du mail //$no_mail=0; //Recherche des Notifications des chapitres $arraySuiviProjetChapitreProcessus = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaSuiviProjetModel::FIELDNAME_NOTIFICATION_FTA_SUIVI_PROJET . ' FROM ' . FtaSuiviProjetModel::TABLENAME . ', ' . FtaChapitreModel::TABLENAME . ', ' . FtaProcessusModel::TABLENAME . ', ' . FtaWorkflowStructureModel::TABLENAME . ' WHERE (' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . FtaChapitreModel::TABLENAME . '.' . FtaChapitreModel::KEYNAME . ' AND ' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . ' = ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' AND ' . FtaChapitreModel::TABLENAME . '.' . FtaChapitreModel::KEYNAME . ' = ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . ') AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '=' . $rowsProcessus[FtaProcessusModel::KEYNAME] . ' ' . 'AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA . '=' . $paramIdFta . ' '); //L'ensemble des chapitres a-t-il été entièrement notifié ? // -1 = le suivi doit etre créé et le processus doit être informé // 0 = ce processus doit être informé // 1 = ce processus a déjà était informé if ($arraySuiviProjetChapitreProcessus) { foreach ($arraySuiviProjetChapitreProcessus as $rowsSuiviProjetChapitreProcessus) { $notification = 1 * $rowsSuiviProjetChapitreProcessus[FtaSuiviProjetModel::FIELDNAME_NOTIFICATION_FTA_SUIVI_PROJET]; } } else { $notification = -1; } //Si au moins un des chapitres n'a pas été notifié ou qu'il n' y a pas encore de suivi if ($notification <= 0 and $rowsProcessus[FtaProcessusModel::KEYNAME] != 1) { //Initialisation du tableau des destinataires (mail + identifiant) $liste_mail = ''; $liste_user = ''; //Si le mail reste actif, on construit la listes des utilisateurs à informer if (!$no_mail) { //Recherche de la liste des utilisateurs à informer switch ($rowsProcessus[FtaProcessusModel::FIELDNAME_MULTISITE_FTA_PROCESSUS]) { case 0: //1. Cas de processus mono-site //----------------------------- //Est-ce que seul le service du chef de projet doit être informé ? if ($rowsProcessus[FtaProcessusModel::FIELDNAME_INFO_CHEF_PROJET]) { //Rechercher du service du chef de projet /** * Pour cette requête le chapitre clé est test identité le 1 */ $arraySuiviProjetSalaries = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . UserModel::FIELDNAME_ID_SERVICE . ' FROM ' . FtaSuiviProjetModel::TABLENAME . ', ' . UserModel::TABLENAME . ' WHERE (' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . '=' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_ID_SERVICE . ') AND ( (' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA . '= ' . $paramIdFta . 'AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . '= 1 ) ) '); foreach ($arraySuiviProjetSalaries as $rowsSuiviProjetSalaries) { $where = ' AND ' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_ID_SERVICE . '=' . $rowsSuiviProjetSalaries[UserModel::FIELDNAME_ID_SERVICE]; } //Désactivation de l'envoi du mail dans ce cas de figure. $no_mail = 1; } //tableau des utilisateurs selon leur accès aux processus $arraySalarieProcessusMono = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . UserModel::TABLENAME . '.' . UserModel::KEYNAME . ', ' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_MAIL . ', ' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_LOGIN . ', ' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_NOM . ', ' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_PRENOM . ', ' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . ' FROM ' . UserModel::TABLENAME . ',' . IntranetActionsModel::TABLENAME . ', ' . IntranetModulesModel::TABLENAME . ',' . IntranetDroitsAccesModel::TABLENAME . ', ' . FtaProcessusModel::TABLENAME . ', ' . FtaActionRoleModel::TABLENAME . ' WHERE ( ' . UserModel::TABLENAME . '.' . UserModel::KEYNAME . '=' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . ' AND ' . UserModel::FIELDNAME_ACTIF . '= \'oui\' ' . ' AND ' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . '=' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . ' AND ' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . '=' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_INTRANET_ACTIONS . ') ' . ' AND ( ( ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . ' <> ' . IntranetNiveauAccesModel::NIVEAU_GENERIC_FALSE . ' AND ' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . ' = ' . $rowsProcessus[FtaProcessusModel::KEYNAME] . ' AND ' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::FIELDNAME_MULTISITE_FTA_PROCESSUS . ' = 0 ' . ' AND ' . IntranetModulesModel::TABLENAME . '.' . IntranetModulesModel::FIELDNAME_NOM_INTRANET_MODULES . ' = \'fta\' ) )' . ' AND ' . UserModel::TABLENAME . '.' . UserModel::KEYNAME . '<>\'' . $modelFta->getModelCreateur()->getDataField(UserModel::KEYNAME)->getFieldValue() . '\'' . $where); if ($arraySalarieProcessusMono) { foreach ($arraySalarieProcessusMono as $rowsSalarieProcessusMono) { //Remplissage du tableau des destinataires (mail + identifiant) $liste_mail[] = $rowsSalarieProcessusMono[UserModel::FIELDNAME_MAIL]; $liste_user[] = '- ' . $rowsSalarieProcessusMono[UserModel::FIELDNAME_PRENOM] . ' ' . $rowsSalarieProcessusMono[UserModel::FIELDNAME_NOM]; } } break; case 1: //2. Cas de processus multi-site //------------------------------ //Existe-t-il un processus d'un autre site qui gère ce site d'assemblage ? $arrayMultisiteProcessus = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaProcessusMultisiteModel::FIELDNAME_ID_SITE_PROCESSUS_FTA_PROCESSUS_MULTISITE . ' FROM ' . FtaProcessusMultisiteModel::TABLENAME . ' WHERE ' . FtaProcessusMultisiteModel::FIELDNAME_ID_SITE_ASSEMBLAGE_FTA_PROCESSUS_MULTISITE . '=' . $modelFta->getDataField(FtaModel::FIELDNAME_SITE_PRODUCTION)->getFieldValue() . ' AND ' . FtaProcessusMultisiteModel::FIELDNAME_ID_PROCESSUS_FTA_PROCESSUS_MULTISITE . '=' . $rowsProcessus[FtaProcessusModel::KEYNAME]); if ($arrayMultisiteProcessus) { foreach ($arrayMultisiteProcessus as $rowsMultisiteProcessus) { $site_gestionnaire = $rowsMultisiteProcessus[FtaProcessusMultisiteModel::FIELDNAME_ID_SITE_PROCESSUS_FTA_PROCESSUS_MULTISITE]; } } else { $site_gestionnaire = $modelFta->getDataField(FtaModel::FIELDNAME_SITE_PRODUCTION)->getFieldValue(); } $arraySalarieProcessusMulti = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . UserModel::TABLENAME . '.' . UserModel::KEYNAME . ', ' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_MAIL . ', ' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_LOGIN . ', ' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_NOM . ', ' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_PRENOM . ', ' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . ' FROM ' . UserModel::TABLENAME . ',' . IntranetActionsModel::TABLENAME . ', ' . IntranetModulesModel::TABLENAME . ',' . IntranetDroitsAccesModel::TABLENAME . ', ' . FtaProcessusModel::TABLENAME . ', ' . GeoModel::TABLENAME . ' WHERE ( ' . UserModel::TABLENAME . '.' . UserModel::KEYNAME . '=' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . ' AND ' . UserModel::FIELDNAME_ACTIF . '= \'oui\' ' . ' AND ' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . '=' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . ' AND ' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . '=' . IntranetActionsModel::getIdIntranetActionsRoleFromIdParentActionNavigation($id_parent_intranet_actions) . ' AND ' . GeoModel::TABLENAME . '.' . GeoModel::KEYNAME . '=' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_LIEU_GEO . ') ' . ' AND ( ( ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . ' <> ' . IntranetNiveauAccesModel::NIVEAU_GENERIC_FALSE . ' AND ' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . ' = ' . $rowsProcessus[FtaProcessusModel::KEYNAME] . ' AND ' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::FIELDNAME_MULTISITE_FTA_PROCESSUS . ' = 1 ' . ' AND ' . GeoModel::TABLENAME . '.' . GeoModel::KEYNAME . '= \'' . $site_gestionnaire . '\' ' . ' AND ' . IntranetModulesModel::TABLENAME . '.' . IntranetModulesModel::FIELDNAME_NOM_INTRANET_MODULES . ' = \'fta\' ) )' . ' AND ' . UserModel::TABLENAME . '.' . UserModel::KEYNAME . '<>\'' . $modelFta->getModelCreateur()->getDataField(UserModel::KEYNAME)->getFieldValue() . '\''); //echo $rows_processus['multisite_fta_processus'].'<br>'.$req.'<br><br>'; if ($arraySalarieProcessusMulti) { foreach ($arraySalarieProcessusMulti as $rowsSalarieProcessusMulti) { //Remplissage du tableau des destinataires (mail + identifiant) $liste_mail[] = $rowsSalarieProcessusMulti[UserModel::FIELDNAME_MAIL]; $liste_user[] = '- ' . $rowsSalarieProcessusMulti[UserModel::FIELDNAME_PRENOM] . ' ' . $rowsSalarieProcessusMulti[UserModel::FIELDNAME_NOM]; } } break; } //Fin de la recherche des utilisateurs à informer } //Fin du controle de désactivation de mail //Envoi du mail de notification if ($liste_mail and !$no_mail) { foreach ($liste_mail as $adresse_email) { $sujetmail = 'FTA/' . $modelFta->getDataField(FtaModel::FIELDNAME_DESIGNATION_COMMERCIALE)->getFieldValue(); $text = 'Démarrage du processus: ' . $rowsProcessus[FtaProcessusModel::FIELDNAME_NOM] . '\\n' . 'Etat de la FTA: ' . $modelFta->getModelFtaEtat()->getDataField(FtaEtatModel::FIELDNAME_NOM_FTA_ETAT)->getFieldValue() . '\\n\\n' . 'Vous pouvez consulter l\'Etat d\'avancenement du dossier directement sur le site http://intranet.agis.fr .\\n' . '\\n' . 'Bonne journée.\\n' . 'Intranet - Fiche Technique Article.'; $destinataire = $adresse_email; //$expediteur = $_SESSION['prenom'] . ' ' . $_SESSION['nom_famille_ses'] . ' <' . $_SESSION['mail_user'] . '>'; $expediteur = $modelFta->getModelCreateur()->getDataField(UserModel::FIELDNAME_PRENOM)->getFieldValue() . ' ' . $modelFta->getModelCreateur()->getDataField(UserModel::FIELDNAME_NOM)->getFieldValue() . ' <' . $modelFta->getModelCreateur()->getDataField(UserModel::FIELDNAME_MAIL)->getFieldValue() . '>'; $typeMail = 'mail-transactions'; //if ($_SESSION['notification_fta_suivi_projet']) { if ($modelFtaSuiviProjet->getDataField(FtaSuiviProjetModel::FIELDNAME_NOTIFICATION_FTA_SUIVI_PROJET)->getFieldValue()) { envoismail($sujetmail, $text, $destinataire, $expediteur, $typeMail); } } } //Fin des envois de mail //Enregistrement de la réalisation de la notification du processus switch ($notification) { case 0: //Mise à jour du suivi $update = 'UPDATE ' . FtaWorkflowStructureModel::TABLENAME . ',' . FtaSuiviProjetModel::TABLENAME . ' SET ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_NOTIFICATION_FTA_SUIVI_PROJET . '=1' . ' WHERE ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '=' . $rowsProcessus[FtaProcessusModel::KEYNAME] . ' AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA . '=' . $paramIdFta; DatabaseOperation::execute($update); break; case -1: //Création du suivi //Récupération des chapitres du processus $arrayChapitre = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '= \'' . $rowsProcessus[FtaProcessusModel::KEYNAME] . '\' '); foreach ($arrayChapitre as $rowsChapitre) { $insert = 'INSERT ' . FtaSuiviProjetModel::TABLENAME . ' SET ' . FtaSuiviProjetModel::FIELDNAME_NOTIFICATION_FTA_SUIVI_PROJET . '=1' . ', ' . FtaSuiviProjetModel::FIELDNAME_ID_FTA . '=\'' . $paramIdFta . '\'' . ', ' . FtaChapitreModel::KEYNAME . '=' . $rowsChapitre[FtaChapitreModel::KEYNAME]; DatabaseOperation::execute($insert); } break; } } //Fin de la vérification par chapitre et du traitement de la notification } //Fin de la vérification des processus validés } //Fin du parcours des processsu //Retour de la fonction return $liste_user; }