/** * 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; }
/** * * @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(); } }
/** * Devalidation d'un chapitre * @param type $paramIdFta * @param type $paramIdProcessus * @param type $htmlResult * @return type */ public static function buildDevalidationChapitre($paramIdFta, $paramIdProcessus, $htmlResult) { //Déclarion des variables $modelFta = new FtaModel($paramIdFta); $id_fta_workflow = $modelFta->getDataField(FtaModel::FIELDNAME_WORKFLOW)->getFieldValue(); $return[UserModel::FIELDNAME_MAIL]; //Tableau contenant les adresses email des utilisateurs concerné par la dévalidation. $return['processus']; //Tableau contenant la liste des identifiants des processus dévalidés //Récupération des données $arrayFtaEtatAndFta = DatabaseOperation::convertSqlStatementWithoutKeyToArray('SELECT ' . FtaEtatModel::FIELDNAME_ABREVIATION . ' FROM ' . FtaModel::TABLENAME . ',' . FtaEtatModel::TABLENAME . ' WHERE ' . FtaModel::KEYNAME . '=' . $paramIdFta . ' AND ' . FtaEtatModel::TABLENAME . '.' . FtaEtatModel::KEYNAME . '=' . FtaModel::TABLENAME . '.' . FtaModel::FIELDNAME_ID_FTA_ETAT); foreach ($arrayFtaEtatAndFta as $rowsFtaEtatAndFta) { $abreviation_fta_etat = $rowsFtaEtatAndFta[FtaEtatModel::FIELDNAME_ABREVIATION]; } //Dénotification des chapitres en cours $reqDenotification = 'UPDATE ' . FtaWorkflowStructureModel::TABLENAME . ',' . FtaSuiviProjetModel::TABLENAME . ' SET ' . FtaSuiviProjetModel::FIELDNAME_NOTIFICATION_FTA_SUIVI_PROJET . '=0 ' . ' WHERE ( ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . ' ) ' . ' AND ( ( ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' = \'' . $paramIdProcessus . '\' ' . ' AND ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . $id_fta_workflow . ' AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA . ' = \'' . $paramIdFta . '\' ) )'; DatabaseOperation::execute($reqDenotification); //Recherches des processus suivants $arrayProcessusCycle = FtaProcessusCycleModel::getArrayProccusNextValidateFromIdFta($paramIdFta, $id_fta_workflow, $abreviation_fta_etat, $paramIdProcessus); //Enregistrement du processus $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); } //Parcour des processus suivants if ($arrayProcessusCycle != NULL) { foreach ($arrayProcessusCycle as $rowsProcessusCycle) { //Recherche et Dévalidation des chapitres dans le suivi de projet $paramIdProcessus = $rowsProcessusCycle[FtaProcessusCycleModel::FIELDNAME_PROCESSUS_NEXT]; $multisite_fta_processus = $rowsProcessusCycle[FtaProcessusModel::FIELDNAME_MULTISITE_FTA_PROCESSUS]; $reqDevalidation = 'UPDATE ' . FtaWorkflowStructureModel::TABLENAME . ',' . FtaSuiviProjetModel::TABLENAME . ' SET ' . FtaSuiviProjetModel::FIELDNAME_SIGNATURE_VALIDATION_SUIVI_PROJET . '=0 ' . ' WHERE ( ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . ' ) ' . ' AND ( ( ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' = \'' . $paramIdProcessus . '\' ' . ' AND ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . $id_fta_workflow . ' AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA . ' = \'' . $paramIdFta . '\' ) )'; DatabaseOperation::execute($reqDevalidation); if ($reqDevalidation) { //Si le processus a été dévalidé, alors on informe //Dénotification $reqDenotification = 'UPDATE ' . FtaWorkflowStructureModel::TABLENAME . ',' . FtaSuiviProjetModel::TABLENAME . ' SET ' . FtaSuiviProjetModel::FIELDNAME_NOTIFICATION_FTA_SUIVI_PROJET . '=0 ' . ' WHERE ( ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . ' ) ' . ' AND ( ( ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . ' = \'' . $paramIdProcessus . '\' ' . ' AND ' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . $id_fta_workflow . ' AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA . ' = \'' . $paramIdFta . '\' ) )'; DatabaseOperation::execute($reqDenotification); /** * Récuparation des adresses emails */ $req = 'SELECT ' . UserModel::FIELDNAME_MAIL . ' FROM ' . IntranetActionsModel::TABLENAME . ',' . IntranetDroitsAccesModel::TABLENAME . ',' . UserModel::TABLENAME . ',' . FtaWorkflowStructureModel::TABLENAME . ',' . FtaSuiviProjetModel::TABLENAME . ',' . FtaActionRoleModel::TABLENAME . ' WHERE ( ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_ROLE . '=' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_FTA_ROLE . ' AND ' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_FTA_WORKFLOW . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_WORKFLOW . ' AND ' . FtaActionRoleModel::TABLENAME . '.' . FtaActionRoleModel::FIELDNAME_ID_INTRANET_ACTIONS . '=' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . ' AND ' . IntranetActionsModel::TABLENAME . '.' . IntranetActionsModel::KEYNAME . '=' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_INTRANET_ACTIONS . ' AND ' . UserModel::TABLENAME . '.' . UserModel::KEYNAME . '=' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_ID_USER . ' AND ' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_PROCESSUS . '= \'' . $paramIdProcessus . '\' ' . ' AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA_CHAPITRE . '=' . FtaWorkflowStructureModel::TABLENAME . '.' . FtaWorkflowStructureModel::FIELDNAME_ID_FTA_CHAPITRE . ') ' . ' AND ' . IntranetDroitsAccesModel::TABLENAME . '.' . IntranetDroitsAccesModel::FIELDNAME_NIVEAU_INTRANET_DROITS_ACCES . ' = ' . IntranetNiveauAccesModel::NIVEAU_GENERIC_TRUE . ' AND ' . FtaSuiviProjetModel::TABLENAME . '.' . FtaSuiviProjetModel::FIELDNAME_ID_FTA . ' = \'' . $paramIdFta . '\' ' . ' AND ' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_ACTIF . ' = \'' . UserModel::USER_ACTIF . '\' ' . ' GROUP BY ' . UserModel::TABLENAME . '.' . UserModel::FIELDNAME_MAIL; /** * Enregistrement de la liste des utilisateur à informer */ $arrayMail = DatabaseOperation::convertSqlStatementWithoutKeyToArray($req); if ($arrayMail) { foreach ($arrayMail as $rowsMail) { if ($rowsMail[UserModel::FIELDNAME_MAIL]) { $return[UserModel::FIELDNAME_MAIL][] = $rowsMail[UserModel::FIELDNAME_MAIL]; } } $htmlResult->setMail($return[UserModel::FIELDNAME_MAIL]); $array = $htmlResult->getHtmlResult(); $arrayTmp[UserModel::FIELDNAME_MAIL] = $htmlResult->getMail(); $array3 = array_merge_recursive($arrayTmp, $array); $htmlResult->setHtmlResult($array3); } } //Fin de l'information de la dévalidation //Mise à jour de la validation de l'échéance du processus BuildFtaProcessusValidationDelai($paramIdFta, $paramIdProcessus); //Appel récursif de la fonction pour continuer à dévalider les processus suivants FtaChapitreModel::buildDevalidationChapitre($paramIdFta, $paramIdProcessus, $htmlResult); } } //Retour de la fonction return $htmlResult->getHtmlResult(); }
/** * Donne accès aux bouton de transition * pour les utilisateur se trouvant en fin de parcours de l'espace de travail * @param int $paramIdFtaRole * @param int $paramIdFtaWorkflow * @return boolean */ public static function isAccesTransitionButton($paramIdFtaRole, $paramIdFtaWorkflow) { $isAccesTransition = FALSE; /** * Liste des processus pouvant être validé */ $arrayProcessusValidation = FtaProcessusCycleModel::getArrayProcessusValidationFTA($paramIdFtaWorkflow); /** * Listes des processus auxquel l'utilisateur connecté à les droits d'accès */ $arrayProcessusAcces = FtaWorkflowStructureModel::getArrayProcessusByRoleAndWorkflow($paramIdFtaRole, $paramIdFtaWorkflow); $accesTransitionButton = array_intersect($arrayProcessusValidation, $arrayProcessusAcces); if ($accesTransitionButton) { $isAccesTransition = TRUE; } return $isAccesTransition; }