/**
  * Synchronise les données verrouillé
  * @param int $paramIdFtaPrimaire
  * @param int $paramIdFtaSecondaire
  * @param int $paramFtaDossierPrimaire
  * @param int $paramState
  */
 public static function dataSynchronizeFtaPrimarySecondary($paramIdFtaPrimaire, $paramIdFtaSecondaire, $paramFtaDossierPrimaire, $paramState = NULL)
 {
     /**
      * Tableau Affichant la liste des champ à traité ordonné par nom de table
      * Ainsi pour chaque table on insert les nouvelles données
      */
     if ($paramState == NULL) {
         $arrayFtaDossierChampsVerrouiller = self::getArrayFtaLockedByPrimaryFolder($paramFtaDossierPrimaire);
     } else {
         $arrayFtaDossierChampsVerrouiller = self::getArrayFtaLockChangeStateByPrimaryFolder($paramFtaDossierPrimaire, $paramState);
     }
     if ($arrayFtaDossierChampsVerrouiller) {
         foreach ($arrayFtaDossierChampsVerrouiller as $rowsFtaDossierChampsVerrouiller) {
             $tableName = $rowsFtaDossierChampsVerrouiller[self::FIELDNAME_TABLE_NAME];
             $columnName = $rowsFtaDossierChampsVerrouiller[self::FIELDNAME_FIELD_NAME];
             $fieldLock = $rowsFtaDossierChampsVerrouiller[self::FIELDNAME_FIELD_LOCK];
             /**
              * On récupère la donnée de la fta primaire
              */
             switch ($tableName) {
                 case FtaModel::TABLENAME:
                     $arrayValue = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT " . $columnName . " FROM " . $tableName . " WHERE " . FtaModel::KEYNAME . "=" . $paramIdFtaPrimaire);
                     break;
                 case FtaComposantModel::TABLENAME:
                     $arrayValue = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT " . FtaComposantModel::KEYNAME . "," . $columnName . " FROM " . $tableName . " WHERE " . FtaModel::KEYNAME . "=" . $paramIdFtaPrimaire);
                     $nbPrimary = count($arrayValue);
                     $arrayIdFtaComposantSecondaire = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT " . FtaComposantModel::KEYNAME . "," . $columnName . " FROM " . $tableName . " WHERE " . FtaModel::KEYNAME . "=" . $paramIdFtaSecondaire);
                     $nbSecondary = count($arrayIdFtaComposantSecondaire);
                     if ($nbPrimary > $nbSecondary) {
                         /**
                          * Si des composants ont été ajouté dans la Fta primaire
                          */
                         $addCompo = $nbSecondary;
                         for ($addCompo; $addCompo < $nbPrimary; $addCompo++) {
                             $idFtaComposantAdd = $arrayValue[$addCompo][FtaComposantModel::KEYNAME];
                             /**
                              * Création d'un composant dans les secondaires car ajouter dans le primaires.
                              */
                             $newIdFtaComposant = FtaComposantModel::duplicationIdFtaComposant($idFtaComposantAdd);
                             /**
                              * On remplace l'id du primaire par le nouveau
                              */
                             DatabaseOperation::execute("UPDATE " . $tableName . " SET " . FtaModel::KEYNAME . "=\"" . $paramIdFtaSecondaire . "\" WHERE " . FtaComposantModel::KEYNAME . "=" . $newIdFtaComposant);
                         }
                     } elseif ($nbPrimary < $nbSecondary) {
                         $titre = UserInterfaceMessage::FR_WARNING_ARTICLE_PRIMAIRE_TITLE;
                         $message = UserInterfaceMessage::FR_WARNING_ARTICLE_PRIMAIRE_CHECK2;
                         Lib::showMessage($titre, $message, $redirection);
                     }
                     /**
                      * Gestionnaire des sous table Ftacomposant
                      */
                     $i = "0";
                     break;
                 default:
                     $arrayValue = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT " . $columnName . " FROM " . $tableName . " WHERE " . FtaModel::KEYNAME . "=" . $paramIdFtaPrimaire);
                     break;
             }
             if ($columnName != FtaComposantModel::KEYNAME) {
                 foreach ($arrayValue as $rowsValue) {
                     $columnValue = $rowsValue[$columnName];
                     /**
                      * On synchronise la donnée de la fta primaire avec la secondaire
                      */
                     if ($fieldLock) {
                         switch ($tableName) {
                             case FtaModel::TABLENAME:
                                 DatabaseOperation::execute("UPDATE " . $tableName . " SET " . $columnName . "=\"" . $columnValue . "\" WHERE " . FtaModel::KEYNAME . "=" . $paramIdFtaSecondaire);
                                 break;
                             case FtaComposantModel::TABLENAME:
                                 /**
                                  * Gestionnaire des sous table Ftacomposant
                                  */
                                 $arrayIdFtaComposantSecondaire = DatabaseOperation::convertSqlStatementWithoutKeyToArray("SELECT " . FtaComposantModel::KEYNAME . "," . $columnName . " FROM " . $tableName . " WHERE " . FtaModel::KEYNAME . "=" . $paramIdFtaSecondaire);
                                 $idFtaComposant = $arrayIdFtaComposantSecondaire[$i][FtaComposantModel::KEYNAME];
                                 DatabaseOperation::execute("UPDATE " . $tableName . " SET " . $columnName . "=\"" . $columnValue . "\" WHERE " . FtaModel::KEYNAME . "=" . $paramIdFtaSecondaire . " AND " . FtaComposantModel::KEYNAME . "=" . $idFtaComposant);
                                 $i++;
                                 break;
                             default:
                                 DatabaseOperation::execute("UPDATE " . $tableName . " SET " . $columnName . "=\"" . $columnValue . "\" WHERE " . FtaModel::KEYNAME . "=" . $paramIdFtaSecondaire);
                                 break;
                         }
                     }
                 }
             }
         }
     }
 }