From 2b3f6cc1739054975959c928b1e50dad4fe35505 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 20 Sep 2022 21:15:25 +0200 Subject: [PATCH] Fix compatibility with PHP 8.1 and Psotgresql --- ChangeLog | 4 ++-- htdocs/core/lib/functions.lib.php | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 679e28e2803..bc27c016c2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,8 +9,8 @@ English Dolibarr ChangeLog For users: --------------- -NEW: PHP 8.0 compatibility (with mysql): - Warning!! Application works correctly with PHP 8.0 but you will experience a lot of PHP warnings into the PHP server +NEW: PHP 8.0 and 8.1 compatibility (with mysql): + Warning!! Application works correctly with PHP 8.0 and 8.1 but you will experience a lot of PHP warnings into the PHP server log files (depending on your PHP setup). Removal of all PHP warnings on server side is planned for v17. NEW: Support for recurring purchase invoices. NEW: #20292 Include German public holidays diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index e6c69cadc96..d76e23facdc 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1156,7 +1156,17 @@ function dol_buildpath($path, $type = 0, $returnemptyifnotfound = 0) function dol_clone($object, $native = 0) { if (empty($native)) { + $tmpsavdb = null; + if (isset($object->db) && isset($object->db->db) && is_object($object->db->db) && get_class($object->db->db) == 'PgSql\Connection') { + $tmpsavdb = $object->db; + unset($object->db); // Such property can not be serialized when PgSql/Connection + } + $myclone = unserialize(serialize($object)); // serialize then unserialize is hack to be sure to have a new object for all fields + + if ($tmpsavdb) { + $object->db = $tmpsavdb; + } } else { $myclone = clone $object; // PHP clone is a shallow copy only, not a real clone, so properties of references will keep the reference (refering to the same target/variable) }