Esempio n. 1
0
 /**
  * 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;
         }
     }
 }
Esempio n. 2
0
 /**
  * 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;
 }