Fix compatibility with PHP 8.1 and Psotgresql

This commit is contained in:
Laurent Destailleur 2022-09-20 21:15:25 +02:00
parent 03bce8d3eb
commit 2b3f6cc173
2 changed files with 12 additions and 2 deletions

View File

@ -9,8 +9,8 @@ English Dolibarr ChangeLog
For users: For users:
--------------- ---------------
NEW: PHP 8.0 compatibility (with mysql): NEW: PHP 8.0 and 8.1 compatibility (with mysql):
Warning!! Application works correctly with PHP 8.0 but you will experience a lot of PHP warnings into the PHP server 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. 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: Support for recurring purchase invoices.
NEW: #20292 Include German public holidays NEW: #20292 Include German public holidays

View File

@ -1156,7 +1156,17 @@ function dol_buildpath($path, $type = 0, $returnemptyifnotfound = 0)
function dol_clone($object, $native = 0) function dol_clone($object, $native = 0)
{ {
if (empty($native)) { 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 $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 { } 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) $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)
} }