diff options
| author | Nathan Kinkade <nkinkade@nkinka.de> | 2010-01-19 16:34:34 +0000 | 
|---|---|---|
| committer | Nathan Kinkade <nkinkade@nkinka.de> | 2010-01-19 16:34:34 +0000 | 
| commit | e47505081f2c1017a68f763e1170b44fddd1e722 (patch) | |
| tree | eb511a8d9bae266ed6cf86f789f270642af93e90 /system/libraries/ORM.php | |
| parent | 0a67b836a9b5021c91b9c327d3693991c3248dfc (diff) | |
| parent | 9384f987bb96d0d39787ff9d3d16a70c01cd76e0 (diff) | |
Merge branch 'master' of git://github.com/gallery/gallery3
Diffstat (limited to 'system/libraries/ORM.php')
| -rw-r--r-- | system/libraries/ORM.php | 73 | 
1 files changed, 6 insertions, 67 deletions
| diff --git a/system/libraries/ORM.php b/system/libraries/ORM.php index 60439106..4dd2eaf0 100644 --- a/system/libraries/ORM.php +++ b/system/libraries/ORM.php @@ -443,11 +443,11 @@ class ORM_Core {  				// Data has changed  				$this->changed[$column] = $column; -				// Object is no longer saved -				$this->_saved = FALSE; +				// Object is no longer saved or valid +				$this->_saved = $this->_valid = FALSE;  			} -			$this->object[$column] = $this->load_type($column, $value); +			$this->object[$column] = $value;  		}  		elseif (in_array($column, $this->has_and_belongs_to_many) AND is_array($value))  		{ @@ -904,6 +904,9 @@ class ORM_Core {  		if ($this->saved() === TRUE)  		{ +			// Always force revalidation after saving +			$this->_valid = FALSE; +  			// Clear the per-request database cache  			$this->db->clear_cache(NULL, Database::PER_REQUEST);  		} @@ -1374,12 +1377,6 @@ class ORM_Core {  			{  				if ( ! $ignore_changed OR ! isset($this->changed[$column]))  				{ -					if (isset($this->table_columns[$column])) -					{ -						// The type of the value can be determined, convert the value -						$value = $this->load_type($column, $value); -					} -  					$this->object[$column] = $value;  				}  			} @@ -1403,64 +1400,6 @@ class ORM_Core {  		return $this;  	} - -	/** -	 * Loads a value according to the types defined by the column metadata. -	 * -	 * @param   string  column name -	 * @param   mixed   value to load -	 * @return  mixed -	 */ -	protected function load_type($column, $value) -	{ -		$type = gettype($value); -		if ($type == 'object' OR $type == 'array' OR ! isset($this->table_columns[$column])) -			return $value; - -		// Load column data -		$column = $this->table_columns[$column]; - -		if ($value === NULL AND ! empty($column['nullable'])) -			return $value; - -		if ( ! empty($column['binary']) AND ! empty($column['exact']) AND (int) $column['length'] === 1) -		{ -			// Use boolean for BINARY(1) fields -			$column['type'] = 'boolean'; -		} - -		switch ($column['type']) -		{ -			case 'int': -				if ($value === '' AND ! empty($column['nullable'])) -				{ -					// Forms will only submit strings, so empty integer values must be null -					$value = NULL; -				} -				elseif ((float) $value > PHP_INT_MAX) -				{ -					// This number cannot be represented by a PHP integer, so we convert it to a string -					$value = (string) $value; -				} -				else -				{ -					$value = (int) $value; -				} -			break; -			case 'float': -				$value = (float) $value; -			break; -			case 'boolean': -				$value = (bool) $value; -			break; -			case 'string': -				$value = (string) $value; -			break; -		} - -		return $value; -	} -  	/**  	 * Loads a database result, either as a new object for this model, or as  	 * an iterator for multiple rows. | 
