public static function isIdUserHaveRightsOnSiteProdByWorkflow($paramIdUser, $paramIdFtaWorkflow, $paramIdFtaSiteDeProduction)
 {
     $isIdUserHaveRightsOnSiteProd = FALSE;
     /**
      * On obtient IdintranetAction du site de production
      */
     $idIntranetActionsSiteDeProduction = FtaActionSiteModel::getArrayIdIntranetActionByWorkflowAndSiteDeProduction($paramIdFtaWorkflow, $paramIdFtaSiteDeProduction);
     /**
      * 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($paramIdUser, $paramIdFtaWorkflow, $idIntranetActionsSiteDeProduction);
     if ($checkAccesButtonBySiteProd) {
         $isIdUserHaveRightsOnSiteProd = TRUE;
     }
     return $isIdUserHaveRightsOnSiteProd;
 }
$nbMaxParPage = "200";
/**
 *  Calcul des enregistrements à afficher
 */
$debut = ($numeroDePageCourante - '1') * $nbMaxParPage;
$pagination = AccueilFta::paginerClassification($nbMaxParPage, $numeroDePageCourante, '4', '4', '1', '1', $nbDeResulta);
/**
 * On récupère le tableau limité des dossier Fta n'ayant pas de classification
 */
$arrayDossier = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT DISTINCT " . FtaModel::FIELDNAME_DOSSIER_FTA . " FROM " . FtaModel::TABLENAME . " , " . FtaActionSiteModel::TABLENAME . " , " . FtaWorkflowModel::TABLENAME . " , " . IntranetDroitsAccesModel::TABLENAME . " , " . IntranetActionsModel::TABLENAME . " , " . ClassificationFta2Model::TABLENAME . " WHERE " . FtaModel::TABLENAME . "." . FtaModel::FIELDNAME_WORKFLOW . " = " . FtaWorkflowModel::TABLENAME . "." . FtaWorkflowModel::KEYNAME . " AND " . FtaModel::TABLENAME . "." . FtaModel::FIELDNAME_ID_FTA_CLASSIFICATION2 . "=" . ClassificationFta2Model::TABLENAME . "." . ClassificationFta2Model::KEYNAME . " AND " . FtaWorkflowModel::TABLENAME . "." . FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS . "=" . IntranetActionsModel::TABLENAME . "." . IntranetActionsModel::FIELDNAME_PARENT_INTRANET_ACTIONS . " AND " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . "=" . IntranetActionsModel::TABLENAME . "." . IntranetActionsModel::KEYNAME . " AND " . FtaActionSiteModel::TABLENAME . "." . FtaActionSiteModel::FIELDNAME_ID_INTRANET_ACTIONS . " IN (" . IntranetActionsModel::TABLENAME . "." . IntranetActionsModel::KEYNAME . ")" . ' AND ( 0 ' . IntranetActionsModel::addIdIntranetAction($_SESSION[Acl::ACL_INTRANET_ACTIONS_VALIDE]) . ")" . " AND " . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . "=" . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . " AND " . IntranetDroitsAccesModel::FIELDNAME_ID_USER . "=" . $idUser . " GROUP BY " . FtaModel::FIELDNAME_DOSSIER_FTA . " ORDER BY " . FtaWorkflowModel::TABLENAME . "." . FtaWorkflowModel::KEYNAME . "," . ClassificationFta2Model::TABLENAME . "." . ClassificationFta2Model::KEYNAME . "," . FtaModel::FIELDNAME_ID_FTA_ETAT . "," . FtaModel::FIELDNAME_CODE_ARTICLE_LDC . "," . FtaModel::FIELDNAME_DESIGNATION_COMMERCIALE . " LIMIT " . $nbMaxParPage . " OFFSET " . $debut);
/**
 * on récupère la dernière version
 */
foreach ($arrayDossier as $rowsDossier) {
    $idDossierFta = $rowsDossier[FtaModel::FIELDNAME_DOSSIER_FTA];
    $arrayContenu = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT " . FtaWorkflowModel::FIELDNAME_DESCRIPTION_FTA_WORKFLOW . "," . FtaModel::FIELDNAME_DOSSIER_FTA . "," . FtaModel::TABLENAME . "." . FtaModel::FIELDNAME_ID_FTA_CLASSIFICATION2 . "," . FtaModel::FIELDNAME_CODE_ARTICLE_LDC . "," . FtaModel::FIELDNAME_DESIGNATION_COMMERCIALE . " FROM " . FtaModel::TABLENAME . " , " . FtaActionSiteModel::TABLENAME . " , " . FtaWorkflowModel::TABLENAME . " , " . IntranetDroitsAccesModel::TABLENAME . " , " . IntranetActionsModel::TABLENAME . " , " . ClassificationFta2Model::TABLENAME . " WHERE " . FtaModel::FIELDNAME_DOSSIER_FTA . "=" . $idDossierFta . " AND " . FtaModel::TABLENAME . "." . FtaModel::FIELDNAME_WORKFLOW . " = " . FtaWorkflowModel::TABLENAME . "." . FtaWorkflowModel::KEYNAME . " AND " . FtaModel::TABLENAME . "." . FtaModel::FIELDNAME_ID_FTA_CLASSIFICATION2 . "=" . ClassificationFta2Model::TABLENAME . "." . ClassificationFta2Model::KEYNAME . " AND " . FtaWorkflowModel::TABLENAME . "." . FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS . "=" . IntranetActionsModel::TABLENAME . "." . IntranetActionsModel::FIELDNAME_PARENT_INTRANET_ACTIONS . " AND " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . "=" . IntranetActionsModel::TABLENAME . "." . IntranetActionsModel::KEYNAME . " AND " . FtaActionSiteModel::TABLENAME . "." . FtaActionSiteModel::FIELDNAME_ID_INTRANET_ACTIONS . " IN (" . IntranetActionsModel::TABLENAME . "." . IntranetActionsModel::KEYNAME . ")" . ' AND ( 0 ' . IntranetActionsModel::addIdIntranetAction($_SESSION[Acl::ACL_INTRANET_ACTIONS_VALIDE]) . ")" . " AND " . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . "=" . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . " AND " . IntranetDroitsAccesModel::FIELDNAME_ID_USER . "=" . $idUser);
    if ($arrayContenu) {
        foreach ($arrayContenu as $rowsContenu) {
            $descriptionFtaWorkflow = $rowsContenu[FtaWorkflowModel::FIELDNAME_DESCRIPTION_FTA_WORKFLOW];
            $idDossier = $rowsContenu[FtaModel::FIELDNAME_DOSSIER_FTA];
            $codeArticleLdc = $rowsContenu[FtaModel::FIELDNAME_CODE_ARTICLE_LDC];
            $designationCommercialeFta = $rowsContenu[FtaModel::FIELDNAME_DESIGNATION_COMMERCIALE];
            $idClassificationFta2 = $rowsContenu[ClassificationFta2Model::KEYNAME];
            $classificationGroupe = ClassificationArborescenceArticleCategorieContenuModel::getElementClassificationFta($idClassificationFta2, ClassificationFta2Model::FIELDNAME_ID_PROPRIETAIRE_GROUPE);
            $classificationEnseigne = ClassificationArborescenceArticleCategorieContenuModel::getElementClassificationFta($idClassificationFta2, ClassificationFta2Model::FIELDNAME_ID_PROPRIETAIRE_ENSEIGNE);
            $classificationMarque = ClassificationArborescenceArticleCategorieContenuModel::getElementClassificationFta($idClassificationFta2, ClassificationFta2Model::FIELDNAME_ID_MARQUE);
            $classificationActivite = ClassificationArborescenceArticleCategorieContenuModel::getElementClassificationFta($idClassificationFta2, ClassificationFta2Model::FIELDNAME_ID_ACTIVITE);
            $classificationRayon = ClassificationArborescenceArticleCategorieContenuModel::getElementClassificationFta($idClassificationFta2, ClassificationFta2Model::FIELDNAME_ID_RAYON);
            $classificationEnvironnement = ClassificationArborescenceArticleCategorieContenuModel::getElementClassificationFta($idClassificationFta2, ClassificationFta2Model::FIELDNAME_ID_ENVIRONNEMENT);
            $classificationReseau = ClassificationArborescenceArticleCategorieContenuModel::getElementClassificationFta($idClassificationFta2, ClassificationFta2Model::FIELDNAME_ID_RESEAU);
            $classificationSaisonalite = ClassificationArborescenceArticleCategorieContenuModel::getElementClassificationFta($idClassificationFta2, ClassificationFta2Model::FIELDNAME_ID_SAISONNALITE);
Esempio n. 3
0
 /**
  * Liste des id Fta selon l'état d'avancement en exécution
  * @param type $paramSyntheseAction
  * @param type $paramRole
  * @param type $paramIdUser
  * @param type $paramIdFtaEtat
  * @param type $paramFtaModification
  * @return type
  */
 public static function getIdFtaByEtatAvancement($paramSyntheseAction, $paramRole, $paramIdUser, $paramIdFtaEtat, $paramFtaModification, $paramLieuGeo)
 {
     $idFtaEffectue = array();
     //        $compteur = "0";
     if ($_SESSION['CheckIdFtaRole'] != $paramRole or $_SESSION[UserModel::KEYNAME] != $paramIdUser) {
         Acl::setRightsAcces($paramIdUser, $paramRole);
     }
     switch ($paramSyntheseAction) {
         case FtaEtatModel::ETAT_AVANCEMENT_VALUE_ATTENTE:
             /*
              * On obtient les fta à vérifié dont tous les chapitres ne sont pas validés
              */
             $arrayTmp = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaModel::TABLENAME . '.' . FtaModel::KEYNAME . ',' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ',' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_WORKFLOW . ' FROM ' . FtaWorkflowModel::TABLENAME . ', ' . FtaWorkflowStructureModel::TABLENAME . ', ' . FtaSuiviProjetModel::TABLENAME . ' , ' . FtaActionSiteModel::TABLENAME . ' , ' . FtaModel::TABLENAME . ' , ' . IntranetDroitsAccesModel::TABLENAME . ' , ' . IntranetActionsModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' IS NOT NULL' . ' AND ' . FtaWorkflowModel::TABLENAME . '.' . FtaWorkflowModel::KEYNAME . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . ' AND ' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_WORKFLOW . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . ' AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . ' AND ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_SITE . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_SITE_PRODUCTION . ' AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA . '=' . FtaModel::TABLENAME . '.' . FtaModel::KEYNAME . ' AND ' . FtaWorkflowModel::TABLENAME . '.' . FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::FIELDNAME_PARENT_INTRANET_ACTIONS . ' AND ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ' AND ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_INTRANET_ACTIONS . ' IN (' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ')' . ' AND ' . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . '=' . FtaSuiviProjetModel::SIGNATURE_VALIDATION_SUIVI_PROJET_FALSE . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . '=' . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . '=' . $paramIdUser . ' AND ' . FtaModel::FIELDNAME_ID_FTA_ETAT . '=' . $paramIdFtaEtat . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_ROLE . '=' . $paramRole . ' AND ( 0 ' . IntranetActionsModel::addIdIntranetAction($_SESSION[Acl::ACL_INTRANET_ACTIONS_VALIDE]) . ')');
             if (FtaRoleModel::isGestionnaire($paramRole)) {
                 $arrayTmp = NULL;
             }
             if ($arrayTmp) {
                 foreach ($arrayTmp as $rows) {
                     $cheackIdFta = in_array($rows[FtaModel::KEYNAME], $idFtaEffectue);
                     if (!$cheackIdFta) {
                         $tauxDeValidadation = FtaProcessusModel::getValideProcessusEncours($rows[FtaModel::KEYNAME], $rows[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS], $rows[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW]);
                         if ($tauxDeValidadation != '1') {
                             $idFtaEffectue[] = $rows[FtaModel::KEYNAME];
                             //                                $compteur++;
                             //                                if ($compteur == ModuleConfig::VALUE_MAX_PAR_PAGE) {
                             //                                    break;
                             //                                }
                         }
                     }
                 }
             }
             $array = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaModel::KEYNAME . ' FROM ' . FtaModel::TABLENAME . ' WHERE ( ' . '0' . ' ' . FtaModel::addIdFta($idFtaEffectue) . ')');
             break;
         case FtaEtatModel::ETAT_AVANCEMENT_VALUE_EN_COURS:
             //Récupération des suivis de projet gérés par l'utilisateur et non validé
             /*
              * On obtient les fta à vérifié dont tous les chapitres ne sont pas validés
              */
             $arrayTmp = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaModel::TABLENAME . '.' . FtaModel::KEYNAME . ',' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ',' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_WORKFLOW . ' FROM ' . FtaWorkflowModel::TABLENAME . ', ' . FtaWorkflowStructureModel::TABLENAME . ', ' . FtaSuiviProjetModel::TABLENAME . ' , ' . FtaActionSiteModel::TABLENAME . ' , ' . FtaModel::TABLENAME . ' , ' . IntranetDroitsAccesModel::TABLENAME . ' , ' . IntranetActionsModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' IS NOT NULL' . ' AND ' . FtaWorkflowModel::TABLENAME . '.' . FtaWorkflowModel::KEYNAME . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . ' AND ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . ' AND ' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_WORKFLOW . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . ' AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . ' AND ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_SITE . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_SITE_PRODUCTION . ' AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA . '=' . FtaModel::TABLENAME . '.' . FtaModel::KEYNAME . ' AND ' . FtaWorkflowModel::TABLENAME . '.' . FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::FIELDNAME_PARENT_INTRANET_ACTIONS . ' AND ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ' AND ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_INTRANET_ACTIONS . ' IN (' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ')' . ' AND ' . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . '=' . FtaSuiviProjetModel::SIGNATURE_VALIDATION_SUIVI_PROJET_FALSE . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . '=' . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . '=' . $paramIdUser . ' AND ' . FtaModel::FIELDNAME_ID_FTA_ETAT . '=' . $paramIdFtaEtat . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_ROLE . '=' . $paramRole . ' AND ( 0 ' . IntranetActionsModel::addIdIntranetAction($_SESSION[Acl::ACL_INTRANET_ACTIONS_VALIDE]) . ')');
             if ($arrayTmp) {
                 foreach ($arrayTmp as $rows) {
                     $cheackIdFta = in_array($rows[FtaModel::KEYNAME], $idFtaEffectue);
                     if (!$cheackIdFta) {
                         $tauxDeValidadation = FtaProcessusModel::getFtaProcessusNonValidePrecedent($rows[FtaModel::KEYNAME], $rows[FtaProcessusModel::KEYNAME], $rows[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW]);
                         /**
                          * En cas d'oublier des chef de projet qui aurait créé une fta sans validé les informations de base
                          */
                         if (FtaRoleModel::isGestionnaire($paramRole)) {
                             $chefProjet = $tauxDeValidadation == '0';
                             if ($tauxDeValidadation != '0' or $chefProjet == TRUE) {
                                 $idFtaEffectue[] = $rows[FtaModel::KEYNAME];
                                 //                                    $compteur++;
                                 //                                    if ($compteur == ModuleConfig::VALUE_MAX_PAR_PAGE) {
                                 //                                        break;
                                 //                                    }
                             }
                         } elseif ($tauxDeValidadation == '1') {
                             $idFtaEffectue[] = $rows[FtaModel::KEYNAME];
                             //                                $compteur++;
                             //                                if ($compteur == ModuleConfig::VALUE_MAX_PAR_PAGE) {
                             //                                    break;
                             //                                }
                         }
                     }
                 }
             }
             $array = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaModel::KEYNAME . ' FROM ' . FtaModel::TABLENAME . ' WHERE ( ' . '0' . ' ' . FtaModel::addIdFta($idFtaEffectue) . ')');
             break;
         case FtaEtatModel::ETAT_AVANCEMENT_VALUE_EFFECTUES:
             //Récupération de la liste fta pour le role concernés
             /*
              * On obtient les fta à vérifié dont tous les chapitres sont validés
              */
             $arrayTmp = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaModel::TABLENAME . '.' . FtaModel::KEYNAME . ',' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ',' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_WORKFLOW . ' FROM ' . FtaWorkflowModel::TABLENAME . ', ' . FtaWorkflowStructureModel::TABLENAME . ', ' . FtaSuiviProjetModel::TABLENAME . ' , ' . FtaActionSiteModel::TABLENAME . ' , ' . FtaModel::TABLENAME . ' , ' . IntranetDroitsAccesModel::TABLENAME . ' , ' . IntranetActionsModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' IS NOT NULL' . ' AND ' . FtaWorkflowModel::TABLENAME . '.' . FtaWorkflowModel::KEYNAME . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . ' AND ' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_WORKFLOW . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . ' AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . ' AND ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_SITE . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_SITE_PRODUCTION . ' AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA . '=' . FtaModel::TABLENAME . '.' . FtaModel::KEYNAME . ' AND ' . FtaWorkflowModel::TABLENAME . '.' . FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::FIELDNAME_PARENT_INTRANET_ACTIONS . ' AND ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ' AND ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_INTRANET_ACTIONS . ' IN (' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ')' . ' AND ' . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . '<>' . FtaSuiviProjetModel::SIGNATURE_VALIDATION_SUIVI_PROJET_FALSE . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . '=' . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . '=' . $paramIdUser . ' AND ' . FtaModel::FIELDNAME_ID_FTA_ETAT . '=' . $paramIdFtaEtat . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_ROLE . '=' . $paramRole . ' AND ( 0 ' . IntranetActionsModel::addIdIntranetAction($_SESSION[Acl::ACL_INTRANET_ACTIONS_VALIDE]) . ')');
             if ($arrayTmp) {
                 foreach ($arrayTmp as $rows) {
                     $cheackIdFta = in_array($rows[FtaModel::KEYNAME], $idFtaEffectue);
                     if (!$cheackIdFta) {
                         $tauxDeValidadation = FtaProcessusModel::getValideIdFtaByRoleWorkflowProcessus($rows[FtaModel::KEYNAME], $paramRole, $rows[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW]);
                         if ($tauxDeValidadation == '1') {
                             $idFtaEffectue[] = $rows[FtaModel::KEYNAME];
                             //                                $compteur++;
                             //                                if ($compteur == ModuleConfig::VALUE_MAX_PAR_PAGE) {
                             //                                    break;
                             //                                }
                         }
                     }
                 }
             }
             $array = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaModel::KEYNAME . ' FROM ' . FtaModel::TABLENAME . ' WHERE ( ' . '0' . ' ' . FtaModel::addIdFta($idFtaEffectue) . ')');
             break;
         case FtaEtatModel::ETAT_AVANCEMENT_VALUE_ALL:
             //Toutes les fiches de l'état sélectionné
             if ($paramFtaModification) {
                 $array = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaModel::KEYNAME . ' FROM ' . FtaModel::TABLENAME . ',' . IntranetDroitsAccesModel::TABLENAME . ',' . FtaWorkflowModel::TABLENAME . ',' . IntranetActionsModel::TABLENAME . ' , ' . FtaActionSiteModel::TABLENAME . ' WHERE ' . FtaModel::FIELDNAME_ID_FTA_ETAT . '=' . $paramIdFtaEtat . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . '=' . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . '=' . $paramIdUser . ' AND ' . FtaWorkflowModel::TABLENAME . '.' . FtaWorkflowModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::FIELDNAME_PARENT_INTRANET_ACTIONS . ' AND ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ' AND ' . FtaWorkflowModel::TABLENAME . '.' . FtaWorkflowModel::KEYNAME . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_WORKFLOW . ' AND ( 0 ' . IntranetActionsModel::addIdIntranetAction($_SESSION[Acl::ACL_INTRANET_ACTIONS_VALIDE]) . ')' . ' AND ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_SITE . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_SITE_PRODUCTION . ' AND ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_WORKFLOW . ' AND ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_INTRANET_ACTIONS . ' IN (' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ')');
             } else {
                 $isSiteDeProd = GeoModel::isLieuGeoSiteDeProduction($paramLieuGeo);
                 if ($isSiteDeProd) {
                     $array = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaModel::KEYNAME . ' FROM ' . FtaModel::TABLENAME . ' WHERE ' . FtaModel::FIELDNAME_ID_FTA_ETAT . '=' . $paramIdFtaEtat . ' AND  ' . FtaModel::FIELDNAME_SITE_PRODUCTION . '=' . $paramLieuGeo);
                 } else {
                     $array = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaModel::KEYNAME . ' FROM ' . FtaModel::TABLENAME . ' WHERE ' . FtaModel::FIELDNAME_ID_FTA_ETAT . '=' . $paramIdFtaEtat);
                 }
             }
             break;
     }
     return $array;
 }
 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 .= '&nbsp;
         <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;
 }
Esempio n. 5
0
 /**
  * On obtient id_user, le nom et prénom associé pour l'espace de travail et le site en paramètres
  * @param int $paramIdSiteDeProduction
  * @param int $paramIdWorkflow
  * @return array
  */
 public static function getArrayIdUserBySiteProdAndWorkflow($paramIdSiteDeProduction, $paramIdWorkflow)
 {
     $arrayIdIntranetActionsBySiteProdAndWorkflowAndGestion = IntranetActionsModel::getArrayIdIntranetActionByWorkflowAndSiteDeProdAndGestionnaire($paramIdWorkflow, $paramIdSiteDeProduction);
     $sql = self::getSqlGestionnaireByWorkflowAndSiteProd($arrayIdIntranetActionsBySiteProdAndWorkflowAndGestion);
     $arrayIdUser = DatabaseOperation::convertSqlStatementWithKeyAndOneFieldToArray($sql);
     return $arrayIdUser;
 }
Esempio n. 6
0
 /**
  * Barre de naviagtion de la Fta
  * @param type $paramActivationComplete
  * @return string
  */
 protected static function buildNavigationBar($paramActivationComplete)
 {
     //Variables
     $globalConfig = new GlobalConfig();
     UserModel::checkUserSessionExpired($globalConfig);
     $idUser = $globalConfig->getAuthenticatedUser()->getKeyValue();
     $html_table = 'table ' . 'border=1 ' . 'width=100% ' . 'class=contenu ';
     if (self::$id_fta) {
         $checkIdFta = self::$ftaModel->getDataField(FtaModel::KEYNAME)->getFieldValue();
         if (!$checkIdFta) {
             $titre = UserInterfaceMessage::FR_WARNING_PARAM_ID_FTA_TITLE;
             $message = UserInterfaceMessage::FR_WARNING_PARAM_ID_FTA_NOT_EXISTANT;
             $redirection = "index.php";
             Lib::showMessage($titre, $message, $redirection);
         }
     } else {
         $titre = UserInterfaceMessage::FR_WARNING_PARAM_ID_FTA_TITLE;
         $message = UserInterfaceMessage::FR_WARNING_PARAM_ID_FTA;
         $redirection = "index.php";
         Lib::showMessage($titre, $message, $redirection);
     }
     //Récupère la page en cours
     $arrayFtaEtatAndFta = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaModel::KEYNAME . ', ' . FtaModel::FIELDNAME_CREATEUR . ', ' . FtaModel::FIELDNAME_ARTICLE_AGROLOGIC . ', ' . FtaModel::FIELDNAME_DOSSIER_FTA . ', ' . FtaModel::FIELDNAME_VERSION_DOSSIER_FTA . ', ' . FtaModel::FIELDNAME_LIBELLE . ', ' . FtaModel::FIELDNAME_DESIGNATION_COMMERCIALE . ', ' . FtaModel::FIELDNAME_CODE_ARTICLE_LDC . ', ' . FtaWorkflowModel::FIELDNAME_DESCRIPTION_FTA_WORKFLOW . ', ' . FtaModel::FIELDNAME_COMMENTAIRE . ' FROM ' . FtaModel::TABLENAME . ',' . FtaEtatModel::TABLENAME . ',' . FtaWorkflowModel::TABLENAME . ' WHERE ' . FtaModel::KEYNAME . '=' . self::$id_fta . ' AND ' . FtaEtatModel::TABLENAME . '.' . FtaEtatModel::KEYNAME . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_ID_FTA_ETAT . ' AND ' . FtaWorkflowModel::TABLENAME . '.' . FtaWorkflowModel::KEYNAME . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_WORKFLOW);
     /**
      * Liste des Rôles auxquelles l'utilisateur à accès pour un workflow donnée
      */
     $arrayRoleWorkflow = FtaRoleModel::getArrayIdFtaRoleByIdUserAndWorkflow($idUser, self::$id_fta_workflow);
     if (count($arrayRoleWorkflow) > "1") {
         $RoleNavigation = FtaRoleModel::getRolesNavigationBar($idUser, self::$id_fta_workflow, self::$ftaModel, self::$synthese_action, self::$id_fta_chapitre_encours, self::$id_fta_role);
     } else {
         $ftaRoleModel = new FtaRoleModel(self::$id_fta_role);
     }
     $siteDeProduction = self::$ftaModel->getDataField(FtaModel::FIELDNAME_SITE_PRODUCTION)->getFieldValue();
     $geoModel = new GeoModel($siteDeProduction);
     foreach ($arrayFtaEtatAndFta as $rowsFtaEtatAndFta) {
         //Récupération des informations préalables
         //Nom de l'assistante de projet responsable:
         $userModel = new UserModel($rowsFtaEtatAndFta[FtaModel::FIELDNAME_CREATEUR]);
         $createur = $userModel->getPrenomNom();
         //Construction du Menu
         $menu_navigation = self::buildMenu($arrayRoleWorkflow, $rowsFtaEtatAndFta, $html_table, $RoleNavigation, $geoModel, $createur, $ftaRoleModel);
     }
     if ($paramActivationComplete) {
         //Si une action est donnée, alors construction du menu des chapitres
         $menu_navigation .= self::CheckSyntheseAction();
     }
     //Lien de retour rapide
     /**
      * Version avec le rewrite
      */
     //        self::$comeback_url = 'index-' . self::$id_fta_etat . '-' . self::$abreviation_etat . '-' . self::$id_fta_role . '-' . self::$synthese_action . '.html';
     if (self::$comeback == "1") {
         //                   self::$comeback_url = 'index.php?id_fta_etat=' . self::$id_fta_etat . '&nom_fta_etat=' . self::$abreviation_etat . '&id_fta_role=' . self::$id_fta_role . '&synthese_action=' . self::$synthese_action;
         $_SESSION["comeback_url"] = $_SERVER["HTTP_REFERER"];
     } elseif ($_SESSION["comeback_url"] == "") {
         $_SESSION["comeback_url"] = 'index.php?id_fta_etat=' . self::$id_fta_etat . '&nom_fta_etat=' . self::$abreviation_etat . '&id_fta_role=' . self::$id_fta_role . '&synthese_action=' . self::$synthese_action;
     }
     $menu_navigation .= '</tr><tr><td colspan=6 >
 <a href=' . $_SESSION["comeback_url"] . '><img src=../lib/images/bouton_retour.png alt=\'\' title=\'Retour\' width=\'18\' height=\'15\' border=\'0\' /> Retour</a> |
 ';
     if ($paramActivationComplete) {
         //Corps du menu
         $accesTransitionButton = FtaTransitionModel::isAccesTransitionButton(self::$id_fta_role, self::$id_fta_workflow);
         $idIntranetActionsSiteDeProduction = FtaActionSiteModel::getArrayIdIntranetActionByWorkflowAndSiteDeProduction(self::$id_fta_workflow, $siteDeProduction);
         $checkAccesButtonBySiteProd = IntranetActionsModel::isAccessFtaActionByIdUserFtaWorkflowAndSiteDeProduction($idUser, self::$id_fta_workflow, $idIntranetActionsSiteDeProduction);
         $tauxRound = FtaSuiviProjetModel::getPourcentageFtaTauxValidation(self::$ftaModel);
         /**
          * Bouton de trasition
          */
         $transition = TableauFicheView::getHmlLinkTransiter(self::$id_fta, self::$id_fta_role, self::$abreviation_etat, $checkAccesButtonBySiteProd, $accesTransitionButton, self::$synthese_action, $tauxRound, "18", " Transiter");
         /**
          * Bouton d'accès au rendu PDF de la FTA
          */
         $pdf = TableauFicheView::getHtmlLinkPDF(self::$abreviation_etat, self::$id_fta, self::$id_fta_workflow, "18", "Export PDF");
         if ($transition) {
             $transition = " | " . $transition;
         }
         if ($pdf) {
             $pdf = " | " . $pdf;
         }
         $historique = " | " . TableauFicheView::getHtmlLinkHistoriqueModfify(self::$abreviation_etat, self::$id_fta, self::$synthese_action, self::$id_fta_etat, self::$id_fta_role, "18", "Historique de modification");
         $menu_navigation .= '
                 <a href=historique-' . self::$id_fta . '-' . self::$id_fta_chapitre_encours . '-' . self::$id_fta_etat . '-' . self::$abreviation_etat . '-' . self::$id_fta_role . '-' . self::$synthese_action . '.html ><img src=./images/graphique.png alt=\'\' title=\'Etat d\'avancement\' width=\'18\' height=\'15\' border=\'0\' /> Etat d\'avancement</a>' . $historique . ' | <a href=fta2arcadia_summary.php?' . FtaModel::KEYNAME . '=' . self::$id_fta . '&id_fta_chapitre_encours=' . self::$id_fta_chapitre_encours . '&' . FtaEtatModel::KEYNAME . '=' . self::$id_fta_etat . '&' . FtaEtatModel::FIELDNAME_ABREVIATION . '=' . self::$abreviation_etat . '&' . FtaRoleModel::KEYNAME . '=' . self::$id_fta_role . '&synthese_action=' . self::$synthese_action . ' ><img src=./images/icone_information.png alt=\'\' title=\'Fta2Arcadia width=\'18\' height=\'15\' border=\'0\' /> Fta2Arcadia</a>' . $transition . $pdf . ' 
                    </td></tr>                       
                    </table>
                    ';
     }
     return $menu_navigation;
     //return $return raplacera menu_navigation;
 }
Esempio n. 7
0
 /**
  * On obtient le tableau des id intranet actions parent
  * @return array
  */
 private static function getArrayIdParentActionByIntranetModule()
 {
     return IntranetActionsModel::getArrayIdIntranetActionParentWithIdModule();
 }
Esempio n. 8
0
 protected static function buildIsOwner()
 {
     //Recherche du droit d'accès correspondant
     $module = self::$moduleIntranetActionsModel->getDataField(IntranetActionsModel::FIELDNAME_NOM_INTRANET_ACTIONS)->getFieldValue();
     if (Acl::getValueAccesRights('fta_' . $module)) {
         $return = true;
     } else {
         $return = false;
     }
     //        /**
     //         * Recherche du droit d'accès correspondant
     //         */
     //        $ftaModification = IntranetDroitsAccesModel::getFtaModification(self::$idUser);
     //        if (
     //                $ftaModification
     //        ) {
     //            $return = true;
     //        } else {
     //            $return = false;
     //        }
     IntranetColumnInfoModel::setOwner($return);
     return $return;
 }
 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;
 }
 /**
  * Définit la liste de diffusion après la transition de "I" vers "V" d'une FTA données
  * 
  * Cette fonction retourne une liste d'adresse email distinctes sous la
  * forme du tableau suivant:
  * $return[mail]:       adresse email
  * $return[prenom_nom]: prénom et nom du destinataire
  * @param int $id_fta
  * @return array
  */
 public static function buildListeDiffusionTransition($id_fta)
 {
     $logTransition = "";
     //Déclaration des variables
     //Chargement des données Articles
     $req = "SELECT " . FtaModel::FIELDNAME_LISTE_CHAPITRE_MAJ_FTA . ", " . FtaModel::FIELDNAME_WORKFLOW . ", " . FtaModel::FIELDNAME_VERSION_DOSSIER_FTA . ", " . FtaModel::KEYNAME . ", " . FtaModel::FIELDNAME_SITE_PRODUCTION . " FROM " . FtaModel::TABLENAME . ",  " . FtaEtatModel::TABLENAME . " WHERE " . FtaModel::TABLENAME . "." . FtaModel::KEYNAME . "='" . $id_fta . "' " . " AND " . FtaEtatModel::TABLENAME . "." . FtaEtatModel::KEYNAME . "=" . FtaModel::TABLENAME . "." . FtaModel::FIELDNAME_ID_FTA_ETAT;
     $logTransition .= "\n\nLISTE DIFFUSION\n" . $req . "\n";
     $arrayFta = DatabaseOperation::convertSqlStatementWithoutKeyToArray($req);
     foreach ($arrayFta as $rowsFta) {
         $rowsFta["liste_chapitre_maj_fta"];
         //Liste des chapitres ayant été coché pour effectuer la mise à jour de la fta
         $ok = 0;
         if ($rowsFta[FtaModel::FIELDNAME_LISTE_CHAPITRE_MAJ_FTA]) {
             //Détermination des chapitres du processus Initiateur du cycle de vie "I"
             $req = "SELECT DISTINCT " . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . " FROM " . FtaProcessusCycleModel::TABLENAME . " LEFT JOIN " . FtaProcessusCycleModel::TABLENAME . " as precedent " . " ON precedent." . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . "=" . FtaProcessusCycleModel::TABLENAME . "." . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . ", " . FtaWorkflowStructureModel::TABLENAME . " WHERE precedent." . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . " IS NULL " . " AND " . FtaProcessusCycleModel::TABLENAME . "." . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . "='I' " . " AND " . FtaWorkflowStructureModel::TABLENAME . "." . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . "=" . $rowsFta[FtaModel::FIELDNAME_WORKFLOW] . " AND " . FtaWorkflowStructureModel::TABLENAME . "." . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . "=" . FtaProcessusCycleModel::TABLENAME . "." . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . " AND " . FtaWorkflowStructureModel::TABLENAME . "." . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . "=" . FtaProcessusCycleModel::TABLENAME . "." . FtaProcessusCycleModel::FIELDNAME_WORKFLOW;
             $logTransition .= "\n\n" . $req . "\n";
             $arrayIdChapitreInitiateur = DatabaseOperation::convertSqlStatementWithoutKeyToArray($req);
             //L'un des chapitres initiateurs est-il dans la liste des chapitres mis à jour sur la fta ?
             foreach ($arrayIdChapitreInitiateur as $rowsInitiateur) {
                 if (strstr($rowsFta[FtaModel::FIELDNAME_LISTE_CHAPITRE_MAJ_FTA], $rowsInitiateur[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE] . ";")) {
                     $ok = 1;
                 }
             }
         } else {
             $ok = 1;
             //Diffusion globale
         }
         if ($rowsFta[FtaModel::FIELDNAME_VERSION_DOSSIER_FTA] == 0 or $ok == 1) {
             //Log de la diffusion globale
             $logTransition .= "\n\nDiffusion Globale Activée";
         } else {
             //Log de la diffusion globale
             $logTransition .= "\n\nDiffusion Globale Désactivée";
         }
         $arrayIdIntranetActions = DatabaseOperation::convertSqlStatementWithoutKeyToArray(' SELECT ' . FtaActionSiteModel::TABLENAME . '.' . FtaActionSiteModel::FIELDNAME_ID_INTRANET_ACTIONS . ' FROM ' . FtaActionSiteModel::TABLENAME . ' WHERE ' . FtaActionSiteModel::FIELDNAME_ID_SITE . '=' . $rowsFta[FtaModel::FIELDNAME_SITE_PRODUCTION] . ' AND ' . FtaActionSiteModel::FIELDNAME_ID_FTA_WORKFLOW . ' =' . $rowsFta[FtaModel::FIELDNAME_WORKFLOW]);
         if ($arrayIdIntranetActions) {
             foreach ($arrayIdIntranetActions as $rowsIdIntranetActions) {
                 $IdIntranetActions[] = $rowsIdIntranetActions[IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS];
             }
         }
         /**
          * Il est impératif d'avoir une condition Where dans le requête de diffusion
          * Si ce n'est pas le cas, la diffusion s'étend à l'ensemble des utiisateurs du système Intranet !
          * Il est necessaire d'interdire celà.
          */
         if ($IdIntranetActions) {
             /**
              * Liste des utilisateurs ayant le droits de diffusion sur le module Fta
              */
             $arrayListeDiffusion = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT DISTINCT " . UserModel::TABLENAME . "." . UserModel::KEYNAME . " FROM " . UserModel::TABLENAME . ", " . IntranetDroitsAccesModel::TABLENAME . " WHERE " . UserModel::TABLENAME . "." . UserModel::KEYNAME . " = " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_USER . " AND " . UserModel::TABLENAME . "." . UserModel::FIELDNAME_ACTIF . " ='" . UserModel::USER_ACTIF . "' " . " AND " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_MODULES . " = " . IntranetModulesModel::ID_MODULES_FTA . " AND " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . " = " . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetNiveauAccesModel::NIVEAU_FTA_DIFFUSION);
             foreach ($arrayListeDiffusion as $value) {
                 $idUser[] = $value[UserModel::KEYNAME];
             }
             //Création de la liste des destinataires
             $req = "SELECT DISTINCT " . UserModel::TABLENAME . "." . UserModel::KEYNAME . ", " . UserModel::FIELDNAME_NOM . ", " . UserModel::FIELDNAME_PRENOM . ", " . UserModel::FIELDNAME_MAIL . " FROM " . UserModel::TABLENAME . ", " . IntranetDroitsAccesModel::TABLENAME . ", " . IntranetActionsModel::TABLENAME . " WHERE " . UserModel::TABLENAME . "." . UserModel::KEYNAME . " = " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_USER . " AND " . UserModel::TABLENAME . "." . UserModel::FIELDNAME_ACTIF . " ='" . UserModel::USER_ACTIF . "' " . " AND ( 0 " . UserModel::AddIdUser($idUser) . ')' . " AND " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . " = " . IntranetActionsModel::TABLENAME . "." . IntranetActionsModel::KEYNAME . " AND " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . " = " . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . ' AND ( 0 ' . IntranetActionsModel::addIdIntranetAction($IdIntranetActions) . ')';
             $logTransition .= "\n\n" . $req . "\nFIN DIFFUSION\n";
             $r_liste_destinataire = DatabaseOperation::convertSqlStatementWithoutKeyToArray($req);
             foreach ($r_liste_destinataire as $rows_destinataire) {
                 $return[$rows_destinataire[UserModel::KEYNAME]]["mail"] = $rows_destinataire[UserModel::FIELDNAME_MAIL];
                 $return[$rows_destinataire[UserModel::KEYNAME]]["prenom_nom"] = $rows_destinataire[UserModel::FIELDNAME_NOM] . " " . $rows_destinataire[UserModel::FIELDNAME_PRENOM];
             }
             $reqConsultation = "SELECT DISTINCT " . UserModel::TABLENAME . "." . UserModel::KEYNAME . ", " . UserModel::FIELDNAME_NOM . ", " . UserModel::FIELDNAME_PRENOM . ", " . UserModel::FIELDNAME_MAIL . " FROM " . UserModel::TABLENAME . ", " . IntranetDroitsAccesModel::TABLENAME . ", " . IntranetActionsModel::TABLENAME . ", " . IntranetNiveauAccesModel::TABLENAME . " WHERE " . UserModel::TABLENAME . "." . UserModel::KEYNAME . " = " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_USER . " AND " . UserModel::TABLENAME . "." . UserModel::FIELDNAME_ACTIF . " ='" . UserModel::USER_ACTIF . "' " . " AND " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . " = " . IntranetActionsModel::TABLENAME . "." . IntranetActionsModel::KEYNAME . " AND " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_MODULES . " = " . IntranetActionsModel::TABLENAME . "." . IntranetActionsModel::FIELDNAME_MODULE_INTRANET_ACTIONS . " AND " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . " = " . IntranetNiveauAccesModel::TABLENAME . "." . IntranetNiveauAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . " AND " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_MODULES . " = " . IntranetNiveauAccesModel::TABLENAME . "." . IntranetNiveauAccesModel::FIELDNAME_ID_INTRANET_MODULES . " AND ((" . UserModel::FIELDNAME_LIEU_GEO . "=" . $rowsFta[FtaModel::FIELDNAME_SITE_PRODUCTION] . " AND " . IntranetActionsModel::FIELDNAME_NOM_INTRANET_ACTIONS . "='" . IntranetActionsModel::NAME_DIFFUSION_FTA . "' AND " . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . "=" . IntranetNiveauAccesModel::DIFFUSION_FTA_OUI_LIEU_RATTACHEMENT_VALUE . ") OR (" . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . "=" . IntranetNiveauAccesModel::DIFFUSION_FTA_OUI_TOUT_VALUE . " AND " . IntranetActionsModel::FIELDNAME_NOM_INTRANET_ACTIONS . "='" . IntranetActionsModel::NAME_DIFFUSION_FTA . "'))" . " AND " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_USER . " NOT IN (" . " SELECT DISTINCT " . UserModel::TABLENAME . "." . UserModel::KEYNAME . " FROM " . UserModel::TABLENAME . ", " . IntranetDroitsAccesModel::TABLENAME . " WHERE " . UserModel::TABLENAME . "." . UserModel::KEYNAME . " = " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_USER . " AND " . UserModel::TABLENAME . "." . UserModel::FIELDNAME_ACTIF . " ='" . UserModel::USER_ACTIF . "' " . " AND " . IntranetDroitsAccesModel::TABLENAME . "." . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . " = " . IntranetNiveauAccesModel::NIVEAU_FTA_MODIFICATION . " AND " . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . "=" . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . ")";
             $r_liste_destinataire_consultation = DatabaseOperation::convertSqlStatementWithoutKeyToArray($reqConsultation);
             if ($r_liste_destinataire_consultation) {
                 foreach ($r_liste_destinataire_consultation as $rows_destinataire_consultation) {
                     $return[$rows_destinataire_consultation[UserModel::KEYNAME]]["mail"] = $rows_destinataire_consultation[UserModel::FIELDNAME_MAIL];
                     $return[$rows_destinataire_consultation[UserModel::KEYNAME]]["prenom_nom"] = $rows_destinataire_consultation[UserModel::FIELDNAME_NOM] . " " . $rows_destinataire_consultation[UserModel::FIELDNAME_PRENOM];
                 }
             }
         } else {
             //Erreur critique, risque de diffusion généralisée à l'ensemble de l'Intranet
             $titre = "Erreur critique dans la liste de diffusion";
             $message = "L'ensemble des utilisateurs de l'Intranet était visé par cette diffusion.<br>" . "L'envoi des mails d'information vient d'être avorté mais" . "Le reste du traitement continue.<br><br>" . "<pre>" . $logTransition . "</pre>";
             $redirection = "";
             Lib::showMessage($titre, $message, $redirection);
             $return = 0;
         }
         $return["log"] = $logTransition;
     }
     return $return;
 }