diff --git a/core/dbobjectsearch.class.php b/core/dbobjectsearch.class.php index 82a424834..b6373233f 100644 --- a/core/dbobjectsearch.class.php +++ b/core/dbobjectsearch.class.php @@ -72,11 +72,11 @@ class DBObjectSearch } /** - * Perform a deep clone (as opposed to "clone" which does copy a reference to the underlying objects + * Perform a deep clone (as opposed to "clone" which does copy a reference to the underlying objects) **/ public function DeepClone() { - return unserialize(serialize($this)); + return unserialize(serialize($this)); // Beware this serializes/unserializes the search and its parameters as well } public function AllowAllData() {$this->m_bAllowAllData = true;} diff --git a/core/dbobjectset.class.php b/core/dbobjectset.class.php index ab76309d0..7ea951659 100644 --- a/core/dbobjectset.class.php +++ b/core/dbobjectset.class.php @@ -112,7 +112,17 @@ class DBObjectSet $this->m_oSQLResult = null; } - + /** + * Called when unserializing a DBObjectSet + */ + public function __wakeup() + { + $this->m_iNumTotalDBRows = null; // Total number of rows for the query without LIMIT. null if unknown yet + $this->m_iNumLoadedDBRows = 0; // Total number of rows LOADED in $this->m_oSQLResult via a SQL query. 0 by default + $this->m_bLoaded = false; // true when the filter has been used OR the set is built step by step (AddObject...) + $this->m_iCurrRow = 0; + $this->m_oSQLResult = null; + } /** * Specify the subset of attributes to load (for each class of objects) before performing the SQL query for retrieving the rows from the DB *