/**
	 * Saves an instantiated object to its respective table as a record.
	 *
	 * @return boolean Whether or not object could be saved.
	 */
	public function saveObject ()
	{
		try
		{
			# Validation bit
			$validate = new validate(metaclass::$db);
			$validate->exec($this);
			if (! $validate->valid)
			{
				$this->invalid = $validate->invalid;
				return false;
			} else
			{
				if (! metaclass::checkTable($this))
				{
					metaclass::createTable($this->table, $this->definitions);
				}
				if (janitor::notNull($this->id))
				{
					# Updating existing row, editing object.
					foreach ($this->definitions as $k => $v)
					{
						$queryStatements[$k] = janitor::cleanData($this->properties[$k], 'sql');
					}
					$query = new query();
					$query->update($this->table)->set($queryStatements)->where('id', janitor::cleanData($this->id));
					if (! metaclass::$db->query($query))
					{
						return false;
					}
				} else
				{
					# Inserting new row, creating object.
					foreach ($this->properties as $k => $v)
					{
						$queryFields[] = $k;
						$queryData[] = janitor::cleanData($v, 'sql');
					}
					$query = new query();
					$query->insert($this->table, $queryFields)->values($queryData);
					if (! metaclass::$db->query($query))
					{
						return false;
					}
				}
				return true;
			}
		} catch (Exception $e)
		{
			trigger_error($e->getMessage(), E_USER_ERROR);
		}
	}