/** * Populates the ShoppDatabaseObject properties from a db query result object * * Uses the available data model built from the table schema to * automatically set the object properties, taking care to convert * special data such as dates and serialized structures. * * @author Jonathan Davis * @since 1.0 * * @param object $data The query results * @return void **/ public function populate($data) { if (empty($data)) { return false; } $properties = get_object_vars($data); foreach ((array) $properties as $var => $value) { $mapping = empty($this->_map) ? array() : array_flip($this->_map); if (!isset($this->_addmap) && !empty($mapping) && !isset($mapping[$var])) { continue; } $property = isset($mapping[$var]) ? $mapping[$var] : $var; if (empty($this->_datatypes[$var])) { continue; } // Process the data switch ($this->_datatypes[$var]) { case 'date': $this->{$property} = sDB::mktime($value); break; case 'float': $this->{$property} = (double) $value; break; case 'int': $this->{$property} = (int) $value; break; case 'string': // If string has been serialized, unserialize it if (sDB::serialized($value)) { $value = @unserialize($value); } default: // Anything not needing processing // passes through into the object $this->{$property} = $value; } } }
/** * Restores a serialized value to a runtime object/structure * * @since 1.0 * * @param string $value A value to restore if necessary * @return mixed **/ public function restore($value) { if (!is_string($value)) { return $value; } // Return unserialized, if serialized value if (sDB::serialized($value)) { $restored = @unserialize($value); if (empty($restored)) { $restored = @unserialize(stripslashes($value)); } if (false !== $restored) { return $restored; } } return $value; }