Index: kernel/db/dbitem.php =================================================================== --- kernel/db/dbitem.php (revision 13438) +++ kernel/db/dbitem.php (working copy) @@ -426,6 +426,42 @@ } /** + * Loads object from hash (not db) + * + * @param Array $fields_hash + * @param string $id_field + */ + function LoadFromHash($fields_hash, $id_field = null) + { + if (!isset($id_field)) { + $id_field = $this->IDField; + } + + $this->Clear(); + + if (!$fields_hash || !array_key_exists($id_field, $fields_hash)) { + // no data OR id field missing + return false; + } + + $id = $fields_hash[$id_field]; + + if ( !$this->raiseEvent('OnBeforeItemLoad', $id) ) { + return false; + } + + $this->FieldValues = array_merge_recursive2($this->FieldValues, $fields_hash); + $this->OriginalFieldValues = $this->FieldValues; + + $this->setID($id); + $this->raiseEvent('OnAfterItemLoad', $id); + + $this->Loaded = true; + + return true; + } + + /** * Builds select sql, SELECT ... FROM parts only * * @access public