/** * 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; }
/** * * @return type */ public function showDatesEcheanceProcessus() { //Variables locales $blocEcheanceLignes = ""; $modelFtaProcessusDelai = new FtaProcessusDelaiModel(); //Parcours et construction de toutes les échéances foreach ($this->getModel()->getArrayDataFieldEcheancesForProcessusCycle() as $modelFtaProcessusDelai) { //Construction des objets HTML de date $recordsetProcessus = new FtaProcessusModel($modelFtaProcessusDelai->getDataField(FtaProcessusDelaiModel::FIELDNAME_ID_FTA_PROCESSUS)->getFieldValue()); $labelEcheance = "Echéance pour " . $recordsetProcessus->getDataField(FtaProcessusModel::FIELDNAME_NOM)->getFieldValue() . ": "; $dataFieldEcheance = $modelFtaProcessusDelai->getDataField(FtaProcessusDelaiModel::FIELDNAME_DATE_ECHEANCE_PROCESSUS); $dataFieldEcheance->setLabelCustom($labelEcheance); $HtmlElementEcheance = new DataFieldToHtmlInputCalendar($dataFieldEcheance); $blocEcheanceLignes .= $HtmlElementEcheance->getHtmlResult(); } return $blocEcheanceLignes; }
/** * Liste des Rôles auxquelles l'utilisateur à accès pour un workflow donnée * @param int $paramIdUser * @param int $paramWorkflow * @param FtaModel $ftaModel * @param string $paramSytheseAction * @param int $paramIdftaChapitreEncours * @return string */ public static function getRolesNavigationBar($paramIdUser, $paramWorkflow, FtaModel $ftaModel, $paramSytheseAction, $paramIdftaChapitreEncours, $paramIdFtaRoleEncours) { //Variable $listeRole = array(); $arrayRoleWorkflow = FtaRoleModel::getArrayIdFtaRoleByIdUserAndWorkflow($paramIdUser, $paramWorkflow); //Calcul du taux $taux_temp = FtaSuiviProjetModel::getArrayFtaTauxValidation($ftaModel, TRUE); if ($taux_temp["1"]) { foreach ($taux_temp["1"] as $id_fta_processus => $taux) { /** * On obtient le rôle pour lequel le processus correspond */ $arrayCheckRole = FtaWorkflowStructureModel::getArrayRoleByProcessusAndWorkflow($id_fta_processus, $paramWorkflow); $checkRole1 = array_intersect($arrayCheckRole, $arrayRoleWorkflow); if ($checkRole1) { $checkRole2 = array_intersect($arrayCheckRole, $listeRole); if (!$checkRole2) { /** * 0 en attente * entre 0 et 1 cours * 1 validé */ $listeRole[] = $arrayCheckRole["0"]; /** * Mise en forme du rôle en cours */ if ($arrayCheckRole["0"] == $paramIdFtaRoleEncours) { $font_size = "size=" . Navigation::FONT_SIZE_ROLE_ENCOURS; $font_flash = "<font " . $font_size . ">"; $image_flash1 = $font_flash . '[ ' . "</font>"; $image_flash2 = $font_flash . ' ]' . "</font>"; } else { $font_size = ""; $image_flash1 = '- '; $image_flash2 = ' -'; } if ($taux == "0") { /** * Vérification que tous les processus précédent soit validé si oui le processus est encours */ $taux_validation_processus = FtaProcessusModel::getFtaProcessusNonValidePrecedent($ftaModel->getKeyValue(), $id_fta_processus, $paramWorkflow); if ($taux_validation_processus == "1" or $taux_validation_processus === NULL) { $ftaRoleModel = new FtaRoleModel($arrayCheckRole["0"]); $roles .= $image_flash1 . ' <a href=' . 'modification_fiche' . '.php?' . 'id_fta=' . $ftaModel->getKeyValue() . '&id_fta_chapitre_encours=' . $paramIdftaChapitreEncours . '&synthese_action=' . $paramSytheseAction . '&id_fta_etat=' . $ftaModel->getDataField(FtaModel::FIELDNAME_ID_FTA_ETAT)->getFieldValue() . '&abreviation_fta_etat=' . $ftaModel->getModelFtaEtat()->getDataField(FtaEtatModel::FIELDNAME_ABREVIATION)->getFieldValue() . '&id_fta_role=' . $arrayCheckRole["0"] . '>' . $ftaRoleModel->getDataField(FtaRoleModel::FIELDNAME_DESCRIPTION_FTA_ROLE)->getFieldValue() . '</a> ' . $image_flash2 . ' '; } else { $ftaRoleModel = new FtaRoleModel($arrayCheckRole["0"]); /** * Liien vers l'historique sans la navigation */ $roles .= $image_flash1 . $ftaRoleModel->getDataField(FtaRoleModel::FIELDNAME_DESCRIPTION_FTA_ROLE)->getFieldValue() . $image_flash2 . ' '; } } elseif ($taux == "1" or $taux != "0" and $taux != "1") { $ftaRoleModel = new FtaRoleModel($arrayCheckRole["0"]); $roles .= $image_flash1 . ' <a href=' . 'modification_fiche' . '.php?' . 'id_fta=' . $ftaModel->getKeyValue() . '&id_fta_chapitre_encours=' . $paramIdftaChapitreEncours . '&synthese_action=' . $paramSytheseAction . '&id_fta_etat=' . $ftaModel->getDataField(FtaModel::FIELDNAME_ID_FTA_ETAT)->getFieldValue() . '&abreviation_fta_etat=' . $ftaModel->getModelFtaEtat()->getDataField(FtaEtatModel::FIELDNAME_ABREVIATION)->getFieldValue() . '&id_fta_role=' . $arrayCheckRole["0"] . '>' . $ftaRoleModel->getDataField(FtaRoleModel::FIELDNAME_DESCRIPTION_FTA_ROLE)->getFieldValue() . '</a> ' . $image_flash2 . ' '; } } } } $RoleNavigation = ' Rôles ' . $roles; } return $RoleNavigation; }
</td> </tr> '; /* //$id_access_arti2; //Clef récupérée précédement $req = 'SELECT id_access_arti2 FROM access_arti2 WHERE id_fta=''.$id_fta.'' '; $result = DatabaseOperation::query($req); $id_access_arti2=mysql_result($result, 0, 'id_access_arti2'); mysql_table_load('access_arti2'); */ $tab = $details[$id_fta]; if ($tab) { foreach ($tab as $id_fta_processus => $taux) { $champChapitre = ""; //Chargement des données $ftaProcessusModel = new FtaProcessusModel($id_fta_processus); /** * 1 en attente * 2 en cours * 3 validé */ if ($taux == "0") { $idFtaProcessusEtat = "1"; /** * Vérification que tous les processus précédent soit validé si oui le processus est encours */ $taux_validation_processus = FtaProcessusModel::getFtaProcessusNonValidePrecedent($id_fta, $id_fta_processus, $idFtaWorkflow); if ($taux_validation_processus == "1" or $taux_validation_processus === NULL) { $idFtaProcessusEtat = "2"; } } elseif ($taux != "0" and $taux != "1") {
/** * Verification de l''état d'avancement. * @return String */ protected static function CheckSyntheseAction() { $nbProcessusPreceValide = "0"; $ProcessusEncoursVisible = array(); $ProcessusPrecedentVisible = array(); $ProcessusValide = array(); $ProcessusEnLecture = array(); $globalConfig = new GlobalConfig(); UserModel::checkUserSessionExpired($globalConfig); $id_user = $globalConfig->getAuthenticatedUser()->getKeyValue(); $idFtaRole = self::$id_fta_role; /** * Cette partie n'est plus utilisé car le but était de récupérer le rôle corespondant à l'utilisateur connecter * mais désormais id_fta_role est récupé dans l'URL */ /* * $modelFta = new FtaModel(self::$id_fta); * $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(); * $id_intranet_actions[] = IntranetActionsModel::getIdIntranetActionsRoleFromIdParentActionNavigation($id_parent_intranet_actions); * $id_actions_role = FtaActionRoleModel::getIdFtaActionRoleFromIdIntranetAtions($id_intranet_actions); * $ftaActionRoleModel = new FtaActionRoleModel($id_actions_role); */ /* * Si une action est donnée, alors construction du menu des chapitres */ if (self::$synthese_action) { /* * Nous récuperons les processus en cours. */ $arrayAllProcessus = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . self::$id_fta_workflow); /** * On récupère tous les processus */ foreach ($arrayAllProcessus as $rowsAllProcessus) { $ProcessusComplet[] = $rowsAllProcessus[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS]; } /* * Etat d'avancement de la FTA et Recherche des processus validés (et donc en lecture-seule) * */ /* * Nous récuperons les processus en cours. */ $req = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ', ' . FtaProcessusCycleModel::TABLENAME . ',' . IntranetActionsModel::TABLENAME . ',' . IntranetDroitsAccesModel::TABLENAME . ',' . IntranetModulesModel::TABLENAME . ',' . FtaActionRoleModel::TABLENAME . ' WHERE ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' AND ' . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . '=\'' . FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION . '\'' . ' AND ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . '=' . self::$id_fta_workflow . ' AND ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_ROLE . '=' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_FTA_ROLE . ' AND ' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ' AND ' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_FTA_ROLE . '=' . $idFtaRole . ' AND ' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . '=' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . ' AND ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_MODULES . '=' . IntranetModulesModel::TABLENAME . '.' . IntranetModulesModel::KEYNAME . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . '=' . $id_user . ' AND ' . IntranetModulesModel::FIELDNAME_NOM_INTRANET_MODULES . '=\'' . FtaModel::TABLENAME . '\' AND ' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . '=' . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE); /** * On ne récuère que les processus d'init validé */ // $arrayProcessusValide = DatabaseOperation::convertSqlStatementWithoutKeyToArray( // 'SELECT DISTINCT ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . ' as ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS // . ' FROM ' . FtaProcessusCycleModel::TABLENAME // . ' WHERE ' . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . '=\'' . FtaEtatModel::ETAT_ABREVIATION_VALUE_MODIFICATION . '\'' // . ' AND ' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW // . '=\'' . self::$id_fta_workflow . '\' ' /** * On récuère les processus validé */ $arrayProcessusValide = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=\'' . self::$id_fta_workflow . '\'' . ' AND ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '<>\'' . FtaProcessusModel::PROCESSUS_PUBLIC . '\''); if ($req and $arrayProcessusValide) { /* * Nous récupérons les processus précédent du processus en cours si ils sont tous validé */ foreach ($req as $rows) { /* * Nous verifions si tous les processus précedents du chapitre que l'utilisateur à les droits d'accès * sont validé ou non et donc visible ou non */ $taux_validation_processus = FtaProcessusModel::getFtaProcessusNonValidePrecedent(self::$id_fta, $rows[FtaProcessusModel::KEYNAME], self::$id_fta_workflow); //Liste des processus visible(lecture-seule) if ($taux_validation_processus == 1 or $taux_validation_processus === NULL) { $ProcessusPrecedentVisible[] = $rows[FtaProcessusModel::KEYNAME]; /* * Il s'agit du controle des processus multisite, * les droits d'accès à cette Fta étatn controlé précédement je désactive la focntion */ // foreach ($ProcessusPrecedentVisible as $rowsProcessusVisible) { // $multisite_fta_processus = FtaProcessusModel::CheckProcessusMultiSite($rowsProcessusVisible); // // if ($multisite_fta_processus) { // //Oui, il s'agit d'un Processus répartie sur les sites d'assemblage // $ProcessusPrecedentVisibleTmp[] = self::CheckMultiSite($rowsProcessusVisible); // $ProcessusPrecedentVisible = $ProcessusPrecedentVisibleTmp; // } // } } } //Fin du balayage // if ($ProcessusPrecedentVisible) { /* * Nous récupérons tous les processus validé pour vérifier plus tard si nous devons les affichers */ foreach ($arrayProcessusValide as $rowsProcessusValide) { $taux_validation_processus = FtaProcessusModel::getValideProcessusEncours(self::$id_fta, $rowsProcessusValide[FtaProcessusModel::KEYNAME], self::$id_fta_workflow); if ($taux_validation_processus == 1) { $ProcessusValide[] = $rowsProcessusValide[FtaProcessusModel::KEYNAME]; } } // } } /* * Nous récuperons la liste des processus non valider qui sont en cours * par la vérification des droits d'accès de l'utilisateur en cours par Workflow par role * et un balayage des cycles des processus */ $arrayNext = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . ' FROM ' . FtaProcessusCycleModel::TABLENAME . ',' . FtaWorkflowStructureModel::TABLENAME . ',' . IntranetActionsModel::TABLENAME . ',' . IntranetDroitsAccesModel::TABLENAME . ',' . IntranetModulesModel::TABLENAME . ',' . FtaActionRoleModel::TABLENAME . ',' . FtaSuiviProjetModel::TABLENAME . ' WHERE ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' AND ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . '=' . self::$id_fta_workflow . ' AND ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_ROLE . '=' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_FTA_ROLE . ' AND ' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ' AND ' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_FTA_ROLE . '=' . $idFtaRole . ' AND ' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . '=' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . ' AND ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_MODULES . '=' . IntranetModulesModel::TABLENAME . '.' . IntranetModulesModel::KEYNAME . ' AND ' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . '=' . $id_user . ' AND ' . IntranetModulesModel::FIELDNAME_NOM_INTRANET_MODULES . '=\'' . FtaModel::TABLENAME . '\' AND ' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . '=' . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . ' AND ' . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . '<>' . FtaSuiviProjetModel::SIGNATURE_VALIDATION_SUIVI_PROJET_FALSE); if ($arrayNext) { foreach ($arrayNext as $rowsNext) { //Pour chaque processus, on vérifie que tous ces précédents sont validés $req = 'SELECT ' . FtaProcessusCycleModel::KEYNAME . ' FROM ' . FtaProcessusCycleModel::TABLENAME . ' WHERE ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . '=' . $rowsNext[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT] . ' AND ( ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . '=0 '; //Ajout de la restriction des processus validé $req .= self::AddValidProcess($ProcessusValide); //Recherche dans le cycle correspondant à l'état en cours de la fiche $req_etat = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaEtatModel::TABLENAME . '.' . FtaEtatModel::FIELDNAME_ABREVIATION . ' FROM ' . FtaEtatModel::TABLENAME . ',' . FtaModel::TABLENAME . ' WHERE ' . FtaEtatModel::TABLENAME . '.' . FtaEtatModel::KEYNAME . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_ID_FTA_ETAT . ' AND ' . FtaModel::TABLENAME . '.' . FtaModel::KEYNAME . '= ' . self::$id_fta); foreach ($req_etat as $rowsEtat) { $abreviation_fta_etat = $rowsEtat[FtaEtatModel::FIELDNAME_ABREVIATION]; } $req .= ') AND ' . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . '=\'' . $abreviation_fta_etat . '\' AND ' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . ' = ' . self::$id_fta_workflow; //Filtrage par catégorie //Finalisation de la requête //Si la requête a un résultat c'est que tous les processus précédents sont validés /* * Nous récupérons tous les processus que l'utilisateur verra en lecture(seule) * afin qu'ils puissent remplir les données des champs de leurs chapitres */ $arrayIdFtaProcessusCyle = DatabaseOperation::convertSqlStatementWithoutKeyToArray($req); if ($arrayIdFtaProcessusCyle) { foreach ($arrayIdFtaProcessusCyle as $rowsIdFtaProcessusCycle) { $idFtaProcessusCyle = $rowsIdFtaProcessusCycle[FtaProcessusCycleModel::KEYNAME]; $ftaProcessusCycleModel = new FtaProcessusCycleModel($idFtaProcessusCyle); $ProcessusEnLecture[] = $ftaProcessusCycleModel->getDataField(FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT)->getFieldValue(); } } /* * Nombres total de processus précedent pour le processus en cours */ $arrayInit = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ',' . FtaProcessusModel::TABLENAME . ',' . FtaProcessusCycleModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '=' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . ' AND ' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . '=' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_ROLE . '=' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::FIELDNAME_ID_FTA_ROLE . ' AND ' . FtaProcessusModel::TABLENAME . '.' . FtaProcessusModel::KEYNAME . '=' . $rowsNext[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT] . ' AND ' . FtaProcessusCycleModel::TABLENAME . '.' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . ' = ' . self::$id_fta_workflow); if ($arrayInit) { /* * Vérifie si tous les processus précédent du processus en cours a des chapitres non validé */ $nbProcessusPrece = count($arrayInit); foreach ($arrayInit as $rowsInit) { $tauxValidationProcessus = FtaProcessusModel::getValideProcessusEncours(self::$id_fta, $rowsInit[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT], self::$id_fta_workflow); if ($tauxValidationProcessus != 0) { $nbProcessusPreceValide = $nbProcessusPreceValide + 1; //Enregistrement du processus en tant que processus en cours if ($tauxValidationProcessus == "1" and $nbProcessusPreceValide == $nbProcessusPrece) { $ProcessusEnLecture[] = $rowsInit[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT]; $ProcessusEncoursVisible[] = $rowsNext[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT]; } // } } } /* * Désactivation des check de multisite voir FtaProcessusmodel::CheckMultisite */ /* //Ce processus en cours, est-il du type repartie ou centralisé ? $reqType = DatabaseOperation::convertSqlQueryWithAutomaticKeyToArray( 'SELECT ' . FtaProcessusModel::FIELDNAME_MULTISITE_FTA_PROCESSUS . ' FROM ' . FtaProcessusModel::TABLENAME . ' WHERE ' . FtaProcessusModel::KEYNAME . '=' . $rows[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT] ); if ($reqType) { foreach ($reqType as $rowsType) { $multisite_fta_processus = $rowsType[FtaProcessusModel::FIELDNAME_MULTISITE_FTA_PROCESSUS]; } if ($multisite_fta_processus) { //Oui, il s'agit d'un Processus répartie sur les sites d'assemblage $ProcessusEncoursVisible[] = self::CheckMultiSite($rows[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT]); } else { */ // } } } //Fin du balayage des processus non-validés } //Recherche des processus valide ayant un lien dans processus cycle foreach ($ProcessusValide as $rowsProcessusValide2) { //Pour chaque processus, on vérifie que tous ces précédents sont validés $req = 'SELECT ' . FtaProcessusCycleModel::KEYNAME . ' FROM ' . FtaProcessusCycleModel::TABLENAME . ' WHERE ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT . '=' . $rowsProcessusValide2 . ' AND ( ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . '=0 '; //Ajout de la restriction des processus validé $req .= self::AddValidProcess($ProcessusValide); //Recherche dans le cycle correspondant à l'état en cours de la fiche $req_etat = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaEtatModel::TABLENAME . '.' . FtaEtatModel::FIELDNAME_ABREVIATION . ' FROM ' . FtaEtatModel::TABLENAME . ',' . FtaModel::TABLENAME . ' WHERE ' . FtaEtatModel::TABLENAME . '.' . FtaEtatModel::KEYNAME . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_ID_FTA_ETAT . ' AND ' . FtaModel::TABLENAME . '.' . FtaModel::KEYNAME . '= ' . self::$id_fta); foreach ($req_etat as $rowsEtat) { $abreviation_fta_etat = $rowsEtat[FtaEtatModel::FIELDNAME_ABREVIATION]; } $req .= ') AND ' . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . '=\'' . $abreviation_fta_etat . '\' AND ' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . ' = ' . self::$id_fta_workflow; //Filtrage par catégorie //Finalisation de la requête //Si la requête a un résultat c'est que tous les processus précédents sont validés /* * Nous récupérons tous les processus que l'utilisateur verra en lecture(seule) * afin qu'ils puissent remplir les données des champs de leurs chapitres */ $arrayIdFtaProcessusCyle = DatabaseOperation::convertSqlStatementWithoutKeyToArray($req); if ($arrayIdFtaProcessusCyle) { foreach ($arrayIdFtaProcessusCyle as $rowsIdFtaProcessusCycle) { $idFtaProcessusCyle = $rowsIdFtaProcessusCycle[FtaProcessusCycleModel::KEYNAME]; $ftaProcessusCycleModel = new FtaProcessusCycleModel($idFtaProcessusCyle); $ProcessusEnLecture[] = $ftaProcessusCycleModel->getDataField(FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT)->getFieldValue(); } } } if (self::$id_fta_etat == '1') { //Création de la liste des processus dans la barre de navigation $t_liste_processus = array_merge($ProcessusEncoursVisible, $ProcessusPrecedentVisible, $ProcessusEnLecture, $ProcessusValide); } else { $arrayProcessusByWorkflow = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . self::$id_fta_workflow); foreach ($arrayProcessusByWorkflow as $rowsProcessusByWorkflow) { $t_liste_processus[] .= $rowsProcessusByWorkflow[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS]; } } self::$id_fta_processus = $t_liste_processus; //Récupération des Chapitres accessible dans le menu de naviguation $menu_navigation = self::RecupChapitre($ProcessusComplet); //Fin du controle de $synthese_action } return $menu_navigation; }
public function getArrayDataFieldEcheancesForProcessusCycle() { $dateEcheanceFta = $this->getDataField(FtaModel::FIELDNAME_DATE_ECHEANCE_FTA)->getFieldValue(); $isEcheanceForThisFtaExist = NULL; //Date par processus $annee_date_echeance_fta = substr($dateEcheanceFta, 0, 4); $mois_date_echeance_fta = substr($dateEcheanceFta, 5, 2); $jour_date_echeance_fta = substr($dateEcheanceFta, 8, 2); $arrayModelFtaProcessusDelaiByIdProcessus = $this->getArrayModelFtaProcessusDelaiByIdProcessus(); //Sélection de tous les processus appartenant au cycle de vie de la FTA $arrayIdProcessusFromFtaCycleDeVie = $this->getArrayIdProcessusFromFtaCycleDeVie(); foreach ($arrayIdProcessusFromFtaCycleDeVie as $rows) { //Extraction des données du tableau PHP $idFtaProcessus = $rows[FtaProcessusModel::KEYNAME]; $WeekSinceFirstProcessus = $rows[FtaProcessusCycleModel::FIELDNAME_DELAI]; //Processus défini pour ce cycle de vie $modelFtaProcessusForCycle = new FtaProcessusModel($idFtaProcessus); //La FTA a-t-elle une échéance de renseignée pour ce processus ? if ($arrayModelFtaProcessusDelaiByIdProcessus != NULL) { $isEcheanceForThisFtaExist = array_key_exists($modelFtaProcessusForCycle->getKeyValue(), $arrayModelFtaProcessusDelaiByIdProcessus); } if ($isEcheanceForThisFtaExist) { //Si il existe, on récupère ce délai $modelFtaProcessusDelai = $arrayModelFtaProcessusDelaiByIdProcessus[$modelFtaProcessusForCycle->getKeyValue()]; } else { //Si il n'existe pas, il faut initialiser l'échéance $modelFtaProcessusDelai = new FtaProcessusDelaiModel(); $modelFtaProcessusDelai->setModelFtaById($this->getKeyValue()); $modelFtaProcessusDelai->setModelFtaProcessusById($modelFtaProcessusForCycle->getKeyValue()); //Mise à jour du tableau $arrayModelFtaProcessusDelaiByIdProcessus[$modelFtaProcessusForCycle->getDataField(FtaProcessusDelaiModel::FIELDNAME_ID_FTA_PROCESSUS)->getFieldValue()] = $modelFtaProcessusDelai; } //Récupération de la date d'échéance de la FTA définie pour ce processus if (($dateEcheanceFta == NULL or $dateEcheanceFta == "0000-00-00") and parent::getIsEditable()) { $modelFtaProcessusDelai->getDataField(FtaProcessusDelaiModel::FIELDNAME_DATE_ECHEANCE_PROCESSUS)->setFieldValue(""); } else { $delai_jour = $WeekSinceFirstProcessus * ModuleConfig::DELAI_ECHEANCE_PROCESSUS_JOUR; $timestamp_date_echeance_fta = mktime(0, 0, 0, $mois_date_echeance_fta, $jour_date_echeance_fta - $delai_jour, $annee_date_echeance_fta); $dateDefaultEcheance = date("d-m-Y", $timestamp_date_echeance_fta); $modelFtaProcessusDelai->getDataField(FtaProcessusDelaiModel::FIELDNAME_DATE_ECHEANCE_PROCESSUS)->setFieldValue($dateDefaultEcheance); } $modelFtaProcessusDelai->saveToDatabase(); // $arrayDataFieldEcheancesForProcessusCycle[] = $modelFtaProcessusDelai->getDataField(FtaProcessusDelaiModel::FIELDNAME_DATE_ECHEANCE_PROCESSUS); $arrayDataFieldEcheancesForProcessusCycle[] = $modelFtaProcessusDelai; //Construction des objets HTML de date // $labelEcheance = "Echéance pour " . $modelFtaProcessusDelai->getModelFtaProcessus()->getDataField(FtaProcessusModel::FIELDNAME_SERVICE)->getFieldValue() . ": "; // $dataFieldEcheance = $modelFtaProcessusDelai->getDataField(FtaProcessusDelaiModel::FIELDNAME_DATE_ECHEANCE_PROCESSUS); // $dataFieldEcheance->setLabelCustom($labelEcheance); // // $HtmlElementEcheance = new DataFieldToHtmlInputCalendar($dataFieldEcheance); // // $blocEcheanceLignes .= $HtmlElementEcheance->getHtmlResult(); } return $arrayDataFieldEcheancesForProcessusCycle; }
protected static function buildTauxValidationProcessus() { //Taux de validation du processus $return = ''; if (self::$id_fta_processus != 0) { $return = FtaProcessusModel::getValideProcessusEncours(self::$id_fta, self::$id_fta_processus, self::$id_fta_workflow); } return $return; }
/** * * @param type $paramFtaModel * @param type $paramTableauProcessus * @return type */ public static function getArrayFtaTauxValidation($paramFtaModel, $paramTableauProcessus) { //Dictionnaire des données $return['0']; //Pourcentage globale de la validation $return['1']; //Tableau de résultat par id_fta_processus des taux de validation $return['2']; //Tableau de résultat par id_fta_processus des état des processus (Terminé, En cours, En attente) /* * Récupération du l'état de la FTA pour connatire le cycle de vie en cours */ $idFta = $paramFtaModel->getDataField(FtaModel::KEYNAME)->getFieldValue(); $idFtaEtat = $paramFtaModel->getDataField(FtaModel::FIELDNAME_ID_FTA_ETAT)->getFieldValue(); /* Corps de la fonction */ /* * Sélection des processus contenu dans le cycle de vie de l'état de la FTA */ $arrayChapitre = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . ' FROM ' . FtaSuiviProjetModel::TABLENAME . ',' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA . '=' . $idFta . ' AND ' . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . '<>0 ' . ' AND ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '<>0 ' . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=\'' . $paramFtaModel->getDataField(FtaModel::FIELDNAME_WORKFLOW)->getFieldValue() . '\' '); $currentChapitre = count($arrayChapitre); /** * Liste complète des chapitres de ce cycle pour cette catégorie */ $arrayChapitreTotal = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=\'' . $paramFtaModel->getDataField(FtaModel::FIELDNAME_WORKFLOW)->getFieldValue() . '\' ' . ' AND ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '<>0 '); $totalChapitre = count($arrayChapitreTotal); if ($currentChapitre) { $return['0'] = $currentChapitre / $totalChapitre; } else { $return['0'] = '0'; } if ($paramTableauProcessus) { $arrayCycle = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . ' FROM ' . FtaProcessusCycleModel::TABLENAME . ', ' . FtaEtatModel::TABLENAME . ',' . FtaProcessusModel::TABLENAME . ' WHERE ' . FtaProcessusCycleModel::FIELDNAME_FTA_ETAT . '=' . FtaEtatModel::FIELDNAME_ABREVIATION . ' AND ' . FtaProcessusCycleModel::FIELDNAME_WORKFLOW . '=' . $paramFtaModel->getDataField(FtaModel::FIELDNAME_WORKFLOW)->getFieldValue() . ' AND ' . FtaEtatModel::KEYNAME . '=\'' . $idFtaEtat . '\'' . ' AND ' . FtaProcessusModel::KEYNAME . '=' . FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT . ' ORDER BY ' . FtaProcessusModel::FIELDNAME_SERVICE); foreach ($arrayCycle as $rowsCycle) { $id_fta_processus = $rowsCycle[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_INIT]; $taux_validation_processus = FtaProcessusModel::getValideProcessusEncours($idFta, $id_fta_processus, $paramFtaModel->getDataField(FtaModel::FIELDNAME_WORKFLOW)->getFieldValue()); //Détail par processus $return[1][$id_fta_processus] = $taux_validation_processus; } //Fin du balayage } return $return; }
/** * Contrôle et corrige l'état de validation de l'échéance fixé à un processus * Si le processus à validé tous ses chapitre, le délai est validé * Sinon, le délai reste en attente de réalisation * Fonction n'est plus utilisé * Retour de la fonction: * 0: Rien n'a été fait car le processus ne dispose pas d'enregistrement d'échéance * 1: Mise à jour effecftuée * @param type $paramIdFta * @param type $paramIdFtaProcessus * @return int */ public static function BuildFtaProcessusValidationDelai($paramIdFta, $paramIdFtaProcessus, $paramIdFtaWorkflow) { $valideFtaProcessusDelai = NULL; //L'échéance est-elle validée ? (Oui=1, Non=0) $return = '0'; $etatEcheance = FtaProcessusModel::getValideProcessusEncours($paramIdFta, $paramIdFtaProcessus, $paramIdFtaWorkflow); switch ($etatEcheance) { case 1: //Le processus à validé tous ses chapitres $valideFtaProcessusDelai = '1'; break; default: //Sinon, il reste encore des chapitres à valider $valideFtaProcessusDelai = '0'; } //Existe-il déjà un enregistrement sur ce délai ? //Recherche d'enregistrement déjà existant pour mise à jour, sinon insertion $arrayProcessusDelai = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaProcessusDelaiModel::KEYNAME . ', ' . FtaProcessusDelaiModel::FIELDNAME_VALIDE . ' FROM ' . FtaProcessusDelaiModel::TABLENAME . ' WHERE ' . FtaProcessusDelaiModel::FIELDNAME_ID_FTA . '=\'' . $paramIdFta . '\' AND ' . FtaProcessusDelaiModel::FIELDNAME_ID_FTA_PROCESSUS . ' = \'' . $paramIdFtaProcessus . '\' '); if ($arrayProcessusDelai) { //Si l'enregistrement existe, alors mise à jour des informations //Si l'état enregistré en différent de celui contrôlé, alors mise à jour foreach ($arrayProcessusDelai as $rowsProcessusDelai) { $valideFtaProcessusDelaiRecorded = $rowsProcessusDelai[FtaProcessusDelaiModel::FIELDNAME_VALIDE]; if ($valideFtaProcessusDelai != $valideFtaProcessusDelaiRecorded) { //Récupération de l'identifiant pour permettre la mise à jour de celui-ci $idFtaProcessusDelai = $rowsProcessusDelai[FtaProcessusDelaiModel::KEYNAME]; $req = 'UPDATE ' . FtaProcessusDelaiModel::TABLENAME . 'SET ' . FtaProcessusDelaiModel::FIELDNAME_VALIDE . ' = \'' . $valideFtaProcessusDelai . '\' ' . 'WHERE ' . FtaProcessusDelaiModel::KEYNAME . ' =\'' . $idFtaProcessusDelai . '\' '; DatabaseOperation::query($req); $return = '1'; } } } return $return; }
/** * On obtient le tableau des id Fta chapitre pour lesquelle l'utilisateur connecté à les droits d'accès * @param array $paramArrayProcessus */ public static function getIdFtaChapitreByArrayProcessusAndWorkflow($paramArrayProcessus, $paramIdFtaWorkflow) { $arrayIdFtaChapitre = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . ' FROM ' . FtaWorkflowStructureModel::TABLENAME . ' WHERE ( 0 ' . FtaProcessusModel::addIdFtaProcessus($paramArrayProcessus) . ')' . ' AND ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . $paramIdFtaWorkflow); foreach ($arrayIdFtaChapitre as $rowsIdFtaChapitre) { $ListeIdFtaChapitre[] = $rowsIdFtaChapitre[self::KEYNAME]; } return $ListeIdFtaChapitre; }
$bloc = ''; /** * On récupèer les Chapitres séléctionnés. */ $arrayChapitre = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaChapitreModel::KEYNAME . ',' . FtaChapitreModel::FIELDNAME_NOM_USUEL_CHAPITRE . ' FROM ' . FtaChapitreModel::TABLENAME . ' ORDER BY ' . FtaChapitreModel::FIELDNAME_NOM_USUEL_CHAPITRE); foreach ($arrayChapitre as $rowsChapitre) { if (Lib::getParameterFromRequest(FtaChapitreModel::FIELDNAME_NOM_CHAPITRE . '_' . $rowsChapitre[FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE]) == 1) { $ListeDesChapitres[] = $rowsChapitre[FtaChapitreModel::KEYNAME]; } } if ($ListeDesChapitres) { foreach ($ListeDesChapitres as $idChapitre) { $idFtaWorkflowStructure = FtaWorkflowStructureModel::getIdFtaWorkflowStructureByIdFtaAndIdChapitre($idFta, $idChapitre); $ftaWorkflowStructureModel = new FtaWorkflowStructureModel($idFtaWorkflowStructure, $idChapitre); $idFtaProcessus = $ftaWorkflowStructureModel->getDataField(FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS)->getFieldValue(); $return = FtaProcessusModel::getProcessusNextFromIdFtaChapitres($idFta, $idFtaProcessus, $idFtaWorkflow, "I", $htmlResult, $idFtaProcessusEffectue); $ListeDesChapitresSuivant[] = FtaChapitreModel::getIdFtaChapitreByArrayProcessusAndWorkflow($return['processus'], $idFtaWorkflow); $redirectionSelectionne .= '&' . FtaChapitreModel::FIELDNAME_NOM_CHAPITRE . '_' . $idChapitre . '=1'; } $ListeDesChapitresSuivant = array_unique($ListeDesChapitresSuivant); if ($ListeDesChapitresSuivant["0"]) { $arrayChapitreDescription = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT DISTINCT ' . FtaChapitreModel::FIELDNAME_NOM_USUEL_CHAPITRE . ',' . FtaChapitreModel::KEYNAME . ' FROM ' . FtaChapitreModel::TABLENAME . ' WHERE ( 0' . FtaChapitreModel::addIdFtaChapitre($ListeDesChapitresSuivant["0"]) . ' )'); foreach ($arrayChapitreDescription as $rowsChapitreDescription) { $bloc .= $rowsChapitreDescription[FtaChapitreModel::FIELDNAME_NOM_USUEL_CHAPITRE] . ' / '; $redirection .= '&' . FtaChapitreModel::FIELDNAME_NOM_CHAPITRE . '_' . $rowsChapitreDescription[FtaChapitreModel::KEYNAME] . '=2'; } } else { $bloc = "<i>Les chapitres sélectionnés sont les seuls à être dévalidé </i>"; } } else { //Averissement
/** * * @param int $paramIdFta * @param int $paramIdProcessus * @param int $paramIdFtaWorkflow * @param string $paramAbreviation_fta_etat * @param HtmlResult2 $htmlResult * @param array $idFtaProcessusEffectue * @param string $paramFirstPass * @return array */ public static function getProcessusNextFromIdFtaChapitres($paramIdFta, $paramIdProcessus, $paramIdFtaWorkflow, $paramAbreviation_fta_etat, HtmlResult2 $htmlResult, $idFtaProcessusEffectue, $paramFirstPass = NULL) { /** * On vérifie si le processus à deja été utilisé. */ $cheackIdFtaProcessus = in_array($paramIdProcessus, $idFtaProcessusEffectue); if (!$cheackIdFtaProcessus) { $idFtaProcessusEffectue[] = $paramIdProcessus; //Recherches des processus suivants $arrayProcessusCycle = FtaProcessusCycleModel::getArrayProccusNextValidateFromIdFta($paramIdFta, $paramIdFtaWorkflow, $paramAbreviation_fta_etat, $paramIdProcessus); //Enregistrement du processus if ($paramFirstPass) { $htmlResult->setProcessus($paramIdProcessus); } if ($htmlResult->getHtmlResult() == NULL) { $array = array('processus' => $htmlResult->getProcessus()); $htmlResult->setHtmlResult($array); } else { $array = $htmlResult->getHtmlResult(); $arrayTmp = array('processus' => $htmlResult->getProcessus()); $array3 = array_merge_recursive($arrayTmp, $array); $htmlResult->setHtmlResult($array3); } if ($arrayProcessusCycle != NULL) { foreach ($arrayProcessusCycle as $rowsProcessusCycle) { $paramIdProcessus = $rowsProcessusCycle[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT]; $paramFirstPass = "******"; //Appel récursif de la fonction pour continuer à dévalider les processus suivants FtaProcessusModel::getProcessusNextFromIdFtaChapitres($paramIdFta, $paramIdProcessus, $paramIdFtaWorkflow, $paramAbreviation_fta_etat, $htmlResult, $idFtaProcessusEffectue, $paramFirstPass); } } //Retour de la fonction return $htmlResult->getHtmlResult(); } }