/** * 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; } } } } } } }