[openmairie-framework-Commits] r5493 - openmairie_exemple/branches/4.11.0-compatibilite-php8.1_WIP3/core

0 views
Skip to first unread message

ldo...@users.adullact.net

unread,
Feb 27, 2026, 6:11:27 AM (6 days ago) Feb 27
to openmairie...@googlegroups.com
Author: ldorner
Date: 2026-02-27 12:11:24 +0100 (Fri, 27 Feb 2026)
New Revision: 5493

Modified:
openmairie_exemple/branches/4.11.0-compatibilite-php8.1_WIP3/core/om_application_pdo.trait.php
Log:
fix: meilleure gestion du cas ou colonne booleenne avec valeur a null

Modified: openmairie_exemple/branches/4.11.0-compatibilite-php8.1_WIP3/core/om_application_pdo.trait.php
===================================================================
--- openmairie_exemple/branches/4.11.0-compatibilite-php8.1_WIP3/core/om_application_pdo.trait.php 2026-02-26 09:37:41 UTC (rev 5492)
+++ openmairie_exemple/branches/4.11.0-compatibilite-php8.1_WIP3/core/om_application_pdo.trait.php 2026-02-27 11:11:24 UTC (rev 5493)
@@ -1487,29 +1487,36 @@
if (!$get_columns_name && ($value === true || $value === false)) {
$boolean_columns[$key] = true;
} else if (!$get_columns_name && ($value === 1 || $value === "1" || $value === "t" || $value === 0 || $value === "0" || $value === "f" || $value === null)) {
- // Construire la map des métadonnées une seule fois
- // à partir des tables de la requête (get_columns_metadata
- // + get_additional_columns), évite getColumnMeta()
- if (!isset($query_metadata_map)) {
- $query_metadata_map = $this->build_query_columns_metadata_map($query);
+ if ($value !== null) {
+ // Construire la map des métadonnées une seule fois
+ // à partir des tables de la requête (get_columns_metadata
+ // + get_additional_columns), évite getColumnMeta()
+ if (!isset($query_metadata_map)) {
+ $query_metadata_map = $this->build_query_columns_metadata_map($query);
+ }
+ $column_found = false;
+ $lower_key_check = strtolower($key);
+ if (isset($query_metadata_map[$lower_key_check])) {
+ $column_found = true;
+ if ($query_metadata_map[$lower_key_check]['type'] === 'bool') {
+ $boolean_columns[$lower_key_check] = true;
+ $boolean_columns[$i] = true;
+ }
+ }
}
- $lower_key_check = strtolower($key);
- if (isset($query_metadata_map[$lower_key_check])) {
- if ($query_metadata_map[$lower_key_check]['type'] === 'bool') {
- $boolean_columns[$lower_key_check] = true;
- $boolean_columns[$i] = true;
- }
- } else {
- // Fallback : getColumnMeta() pour les colonnes
- // non trouvées dans les métadonnées des classes
+ if ($value === null || !$column_found) {
+ // NULL ne renseigne pas sur le type : on interroge
+ // directement le driver pour éviter que
+ // build_query_columns_metadata_map() ne crée des
+ // instances dbform en cascade via get_inst__om_dbform()
$meta = $stmt->getColumnMeta($i);
- $column_name = strtolower($meta['name']);
$native_type = isset($meta['native_type']) ? $meta['native_type'] : '';
if ($native_type === 'bool') {
+ $column_name = strtolower($meta['name']);
$boolean_columns[$column_name] = true;
$boolean_columns[$i] = true;
}
- }
+ }
}
$i++;


Reply all
Reply to author
Forward
0 new messages