<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.fogproject.org/wiki/index.php?action=history&amp;feed=atom&amp;title=FOGController</id>
		<title>FOGController - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.fogproject.org/wiki/index.php?action=history&amp;feed=atom&amp;title=FOGController"/>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=FOGController&amp;action=history"/>
		<updated>2026-04-18T12:10:47Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.fogproject.org/wiki/index.php?title=FOGController&amp;diff=4188&amp;oldid=prev</id>
		<title>Chad-bisd: /* Overview */  added Category:Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.fogproject.org/wiki/index.php?title=FOGController&amp;diff=4188&amp;oldid=prev"/>
				<updated>2011-09-30T16:49:09Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Overview: &lt;/span&gt;  added Category:Development&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Overview ==&lt;br /&gt;
FOGController is a new Chainable PHP Class developed for use in FOG web applications.&lt;br /&gt;
This Class acts as an abstraction layer between PHP's data and its database entry.&lt;br /&gt;
&lt;br /&gt;
The Class is an abstract Class, providing a base for FOG Classes to build from.&lt;br /&gt;
All you need to do is describe to the Class the relationship between your Database fields and common names used when accessing the data.&lt;br /&gt;
&lt;br /&gt;
* Please note all of this is developmental and could change at any moment&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
&lt;br /&gt;
== Variables &amp;amp; Methods  ==&lt;br /&gt;
'''Variables and their defaults'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
abstract class FOGController&lt;br /&gt;
{&lt;br /&gt;
	// Table&lt;br /&gt;
	protected $databaseTable = '';&lt;br /&gt;
&lt;br /&gt;
	// Name -&amp;gt; Database field name&lt;br /&gt;
	protected $databaseFields = array();&lt;br /&gt;
&lt;br /&gt;
	// Do not update these database fields&lt;br /&gt;
	protected $databaseFieldsToIgnore = array(&lt;br /&gt;
		'createdBy',&lt;br /&gt;
		'createdTime'&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Allow setting / getting of these additional fields&lt;br /&gt;
	protected $additionalFields = array();&lt;br /&gt;
&lt;br /&gt;
	// Required database fields&lt;br /&gt;
	protected $databaseFieldsRequired = array(&lt;br /&gt;
		'id',&lt;br /&gt;
		'name'&lt;br /&gt;
	);&lt;br /&gt;
&lt;br /&gt;
	// Store data array&lt;br /&gt;
	protected $data = array();&lt;br /&gt;
&lt;br /&gt;
	// Auto save class data on __destruct&lt;br /&gt;
	protected $autoSave = false;&lt;br /&gt;
&lt;br /&gt;
	// DEBUG mode - print all Errors &amp;amp; SQL queries&lt;br /&gt;
	protected $debug = false;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Methods'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$this	public function __construct($data)&lt;br /&gt;
$this	public function __destruct()&lt;br /&gt;
$this	public function set($key, $value)&lt;br /&gt;
$this	public function get($key)&lt;br /&gt;
$this	public function add($key, $value)&lt;br /&gt;
$this	public function remove($key, $object)&lt;br /&gt;
boolean public function save()&lt;br /&gt;
boolean public function load($field = 'id')&lt;br /&gt;
boolean public function destroy($field = 'id')&lt;br /&gt;
void	public function error($txt, $data = array())&lt;br /&gt;
void	public function info($txt, $data = array())&lt;br /&gt;
boolean public function isValid()&lt;br /&gt;
boolean private function isTableDefined()&lt;br /&gt;
string	public function __toString()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
This is an example of FOG's up coming OS Class in v0.33&lt;br /&gt;
&lt;br /&gt;
'''OS.class.php'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class OS extends FOGController&lt;br /&gt;
{&lt;br /&gt;
	// Table&lt;br /&gt;
	protected $databaseTable = 'os';&lt;br /&gt;
	&lt;br /&gt;
	// Name -&amp;gt; Database field name&lt;br /&gt;
	protected $databaseFields = array(&lt;br /&gt;
		'id'		=&amp;gt; 'osID',&lt;br /&gt;
		'name'		=&amp;gt; 'osName',&lt;br /&gt;
		'description'	=&amp;gt; 'osDescription'&lt;br /&gt;
	);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only $databaseFields is required.&lt;br /&gt;
&lt;br /&gt;
Providing $databaseTable gives access to FOGControllers save() and load() functions.&lt;br /&gt;
&lt;br /&gt;
'''Example: Add new OS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// New OS Object&lt;br /&gt;
$OS = new OS();&lt;br /&gt;
&lt;br /&gt;
// Set name -&amp;gt; Set description -&amp;gt; Save to database (returns true on success)&lt;br /&gt;
if ($OS-&amp;gt;set('name', 'Windows 8')-&amp;gt;set('description', 'more junk')-&amp;gt;save())&lt;br /&gt;
{&lt;br /&gt;
	// id property is added after a successful save&lt;br /&gt;
	$FOGCore-&amp;gt;setMessage(sprintf('OS Added: ID: %s, Name: %s', $OS-&amp;gt;get('id'), $OS-&amp;gt;get('name')));&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
	$FOGCore-&amp;gt;setMessage(sprintf('Failed to add: %s', $OS-&amp;gt;get('name')));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Redirect back to self&lt;br /&gt;
$FOGCore-&amp;gt;redirect();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example: Update an Existing OS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// OS ID Variable&lt;br /&gt;
$id = '1';&lt;br /&gt;
// Load OS - auto loads from database when ID is passed&lt;br /&gt;
$OS = new OS($id);&lt;br /&gt;
&lt;br /&gt;
// Is OS valid? (was it loaded from the database correctly)&lt;br /&gt;
if ($OS-&amp;gt;isValid())&lt;br /&gt;
{&lt;br /&gt;
	print_r($OS);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Class ==&lt;br /&gt;
'''FOGController.class.php'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// Blackout - 1:28 PM 23/09/2011&lt;br /&gt;
abstract class FOGController&lt;br /&gt;
{&lt;br /&gt;
	// Table&lt;br /&gt;
	protected $databaseTable = '';&lt;br /&gt;
	&lt;br /&gt;
	// Name -&amp;gt; Database field name&lt;br /&gt;
	protected $databaseFields = array();&lt;br /&gt;
	&lt;br /&gt;
	// Do not update these database fields&lt;br /&gt;
	protected $databaseFieldsToIgnore = array(&lt;br /&gt;
		'createdBy',&lt;br /&gt;
		'createdTime'&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	// Allow setting / getting of these additional fields&lt;br /&gt;
	protected $additionalFields = array();&lt;br /&gt;
	&lt;br /&gt;
	// Required database fields&lt;br /&gt;
	protected $databaseFieldsRequired = array(&lt;br /&gt;
		'id',&lt;br /&gt;
		'name'&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
	// Store data array&lt;br /&gt;
	protected $data = array();&lt;br /&gt;
	&lt;br /&gt;
	// Auto save class data on __destruct&lt;br /&gt;
	protected $autoSave = false;&lt;br /&gt;
	&lt;br /&gt;
	// DEBUG mode - print all Errors &amp;amp; SQL queries&lt;br /&gt;
	protected $debug = true;	&lt;br /&gt;
	&lt;br /&gt;
	// Database Class&lt;br /&gt;
	protected $db;&lt;br /&gt;
	&lt;br /&gt;
	// Construct&lt;br /&gt;
	public function __construct($data)&lt;br /&gt;
	{&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			// Error checking&lt;br /&gt;
			if (!count($this-&amp;gt;databaseFields))&lt;br /&gt;
			{&lt;br /&gt;
				throw new Exception('No database fields defined for this class!');&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Database&lt;br /&gt;
			$this-&amp;gt;db = $GLOBALS['db'];&lt;br /&gt;
			&lt;br /&gt;
			// Add incoming data&lt;br /&gt;
			if (is_array($data))&lt;br /&gt;
			{&lt;br /&gt;
				// Iterate data -&amp;gt; Set data&lt;br /&gt;
				foreach ($data AS $key =&amp;gt; $value)&lt;br /&gt;
				{&lt;br /&gt;
					$this-&amp;gt;set($key, $value);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			// If incoming data is an INT -&amp;gt; Set as ID -&amp;gt; Load from database&lt;br /&gt;
			elseif (is_numeric($data))&lt;br /&gt;
			{&lt;br /&gt;
				if ($data &amp;lt;= 0)&lt;br /&gt;
				{&lt;br /&gt;
					throw new Exception(sprintf('ID less than or equal to 0: Data: %s', $data));&lt;br /&gt;
					//return false;&lt;br /&gt;
				}&lt;br /&gt;
				&lt;br /&gt;
				$this-&amp;gt;set('id', $data)-&amp;gt;load();&lt;br /&gt;
			}&lt;br /&gt;
			// Unknown data format&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				throw new Exception('No data array or ID passed!');&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		catch (Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			$this-&amp;gt;error('Create Class Failed: Class: %s, Error: %s', array(get_class($this), $e-&amp;gt;getMessage()));&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		return $this;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Destruct&lt;br /&gt;
	public function __destruct()&lt;br /&gt;
	{&lt;br /&gt;
		// Auto save&lt;br /&gt;
		if ($this-&amp;gt;autoSave)&lt;br /&gt;
		{&lt;br /&gt;
			$this-&amp;gt;save();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Set&lt;br /&gt;
	public function set($key, $value)&lt;br /&gt;
	{&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			$databaseFieldsRev = array_flip($this-&amp;gt;databaseFields);&lt;br /&gt;
			&lt;br /&gt;
			if (!array_key_exists($key, $this-&amp;gt;databaseFields) &amp;amp;&amp;amp; !in_array($key, $this-&amp;gt;additionalFields) &amp;amp;&amp;amp; !array_key_exists($key, $databaseFieldsRev))&lt;br /&gt;
			{&lt;br /&gt;
				throw new Exception('Invalid data being set');&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			if (array_key_exists($key, $databaseFieldsRev))&lt;br /&gt;
			{&lt;br /&gt;
				$key = $databaseFieldsRev[$key];&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			$this-&amp;gt;data[$key] = $value;&lt;br /&gt;
		}&lt;br /&gt;
		catch (Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			$this-&amp;gt;error('Set Failed: Class: %s, Key: %s, Value: %s, Error: %s', array(get_class($this), $key, $value, $e-&amp;gt;getMessage()));&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		return $this;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Get&lt;br /&gt;
	public function get($key)&lt;br /&gt;
	{&lt;br /&gt;
		return (isset($this-&amp;gt;data[$key]) ? $this-&amp;gt;data[$key] : '');&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	/*&lt;br /&gt;
	public function __set($key, $value)&lt;br /&gt;
	{&lt;br /&gt;
		return $this-&amp;gt;set($key, $value);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public function __get($key)&lt;br /&gt;
	{&lt;br /&gt;
		return $this-&amp;gt;get($key);&lt;br /&gt;
	}&lt;br /&gt;
	*/&lt;br /&gt;
	&lt;br /&gt;
	// Add&lt;br /&gt;
	public function add($key, $value)&lt;br /&gt;
	{&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			$databaseFieldsRev = array_flip($this-&amp;gt;databaseFields);&lt;br /&gt;
			&lt;br /&gt;
			if (!array_key_exists($key, $this-&amp;gt;databaseFields) &amp;amp;&amp;amp; !in_array($key, $this-&amp;gt;additionalFields) &amp;amp;&amp;amp; !array_key_exists($key, $databaseFieldsRev))&lt;br /&gt;
			{&lt;br /&gt;
				throw new Exception('Invalid data being set');&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			if (array_key_exists($key, $databaseFieldsRev))&lt;br /&gt;
			{&lt;br /&gt;
				$key = $databaseFieldsRev[$key];&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			$this-&amp;gt;data[$key][] = $value;&lt;br /&gt;
		}&lt;br /&gt;
		catch (Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			$this-&amp;gt;error('Add Failed: Class: %s, Key: %s, Value: %s, Error: %s', array(get_class($this), $key, $value, $e-&amp;gt;getMessage()));&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		return $this;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Remove&lt;br /&gt;
	public function remove($key, $object)&lt;br /&gt;
	{&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			$databaseFieldsRev = array_flip($this-&amp;gt;databaseFields);&lt;br /&gt;
			&lt;br /&gt;
			if (!array_key_exists($key, $this-&amp;gt;databaseFields) &amp;amp;&amp;amp; !in_array($key, $this-&amp;gt;additionalFields) &amp;amp;&amp;amp; !array_key_exists($key, $databaseFieldsRev))&lt;br /&gt;
			{&lt;br /&gt;
				throw new Exception('Invalid data being set');&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			if (array_key_exists($key, $databaseFieldsRev))&lt;br /&gt;
			{&lt;br /&gt;
				$key = $databaseFieldsRev[$key];&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			foreach ((array)$this-&amp;gt;data[$key] AS $i =&amp;gt; $data)&lt;br /&gt;
			{&lt;br /&gt;
				if ($data-&amp;gt;get('id') != $object-&amp;gt;get('id'))&lt;br /&gt;
				{&lt;br /&gt;
					$newDataArray[] = $data;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			$this-&amp;gt;data[$key] = (array)$newDataArray;&lt;br /&gt;
		}&lt;br /&gt;
		catch (Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			$this-&amp;gt;error('Remove Failed: Class: %s, Key: %s, Object: %s, Error: %s', array(get_class($this), $key, $object, $e-&amp;gt;getMessage()));&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		return $this;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Save&lt;br /&gt;
	public function save()&lt;br /&gt;
	{&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			// Error checking&lt;br /&gt;
			if (!$this-&amp;gt;isTableDefined())&lt;br /&gt;
			{&lt;br /&gt;
				throw new Exception('No Table defined for this class');&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Variables&lt;br /&gt;
			$fieldData = array();&lt;br /&gt;
			$fieldsToUpdate = $this-&amp;gt;databaseFields;&lt;br /&gt;
			$fieldToName = array_flip($this-&amp;gt;databaseFields);&lt;br /&gt;
			&lt;br /&gt;
			// Remove unwanted fields for update query&lt;br /&gt;
			foreach ($this-&amp;gt;databaseFields AS $name =&amp;gt; $fieldName)&lt;br /&gt;
			{&lt;br /&gt;
				if (in_array($name, $this-&amp;gt;databaseFieldsToIgnore))&lt;br /&gt;
				{&lt;br /&gt;
					unset($fieldsToUpdate[$name]);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Build insert key and value arrays&lt;br /&gt;
			foreach ($this-&amp;gt;databaseFields AS $name =&amp;gt; $fieldName)&lt;br /&gt;
			{&lt;br /&gt;
				$insertKeys[] = $this-&amp;gt;db-&amp;gt;sanitize($fieldName);&lt;br /&gt;
				$insertValues[] = $this-&amp;gt;db-&amp;gt;sanitize($this-&amp;gt;get($name));&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Build update field array using filtered data&lt;br /&gt;
			foreach ($fieldsToUpdate AS $name =&amp;gt; $fieldName)&lt;br /&gt;
			{&lt;br /&gt;
				$updateData[] = sprintf(&amp;quot;`%s`='%s'&amp;quot;, $this-&amp;gt;db-&amp;gt;sanitize($fieldName), $this-&amp;gt;db-&amp;gt;sanitize($this-&amp;gt;get($name)));&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Insert &amp;amp; Update query all-in-one&lt;br /&gt;
			$query = sprintf(&amp;quot;INSERT INTO `%s` (`%s`) VALUES ('%s') ON DUPLICATE KEY UPDATE %s&amp;quot;,&lt;br /&gt;
				$this-&amp;gt;db-&amp;gt;sanitize($this-&amp;gt;databaseTable),&lt;br /&gt;
				implode(&amp;quot;`, `&amp;quot;, $insertKeys),&lt;br /&gt;
				implode(&amp;quot;', '&amp;quot;, $insertValues),&lt;br /&gt;
				implode(', ', $updateData)&lt;br /&gt;
			);&lt;br /&gt;
			&lt;br /&gt;
			// INFO&lt;br /&gt;
			$this-&amp;gt;info($query);&lt;br /&gt;
&lt;br /&gt;
			if (!$this-&amp;gt;db-&amp;gt;query($query))&lt;br /&gt;
			{&lt;br /&gt;
				// Query failed&lt;br /&gt;
				throw new Exception($this-&amp;gt;db-&amp;gt;error());&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Database query was successful - set ID if ID was not set&lt;br /&gt;
			if (!$this-&amp;gt;get('id'))&lt;br /&gt;
			{&lt;br /&gt;
				$this-&amp;gt;set('id', $this-&amp;gt;db-&amp;gt;insert_id());&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Success&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
		catch (Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			$this-&amp;gt;error('Database Save Failed: Class: %s, ID: %s, Error: %s', array(get_class($this), $this-&amp;gt;get('id'), $e-&amp;gt;getMessage()));&lt;br /&gt;
		}&lt;br /&gt;
	&lt;br /&gt;
		// Fail&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Load&lt;br /&gt;
	public function load($field = 'id')&lt;br /&gt;
	{&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			// Error checking&lt;br /&gt;
			if (!$this-&amp;gt;isTableDefined())&lt;br /&gt;
			{&lt;br /&gt;
				throw new Exception('No Table defined for this class');&lt;br /&gt;
			}&lt;br /&gt;
			if (!$this-&amp;gt;get($field))&lt;br /&gt;
			{&lt;br /&gt;
				throw new Exception(sprintf('Operation field not set: %s', strtoupper($field)));&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Variables&lt;br /&gt;
			$fieldToName = array_flip($this-&amp;gt;databaseFields);&lt;br /&gt;
			&lt;br /&gt;
			// Build query&lt;br /&gt;
			if (is_array($this-&amp;gt;get($field)))&lt;br /&gt;
			{&lt;br /&gt;
				// Multiple values&lt;br /&gt;
				foreach ($this-&amp;gt;get($field) AS $fieldValue)&lt;br /&gt;
				{&lt;br /&gt;
					$fieldData[] = sprintf(&amp;quot;`%s`='%s'&amp;quot;, $this-&amp;gt;db-&amp;gt;sanitize($this-&amp;gt;databaseFields[$field]), $this-&amp;gt;db-&amp;gt;sanitize($fieldValue));&lt;br /&gt;
				}&lt;br /&gt;
				&lt;br /&gt;
				$query = sprintf(&amp;quot;SELECT * FROM `%s` WHERE %s&amp;quot;,&lt;br /&gt;
					$this-&amp;gt;db-&amp;gt;sanitize($this-&amp;gt;databaseTable),&lt;br /&gt;
					implode(' OR ', $fieldData)&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				// Single value&lt;br /&gt;
				$query = sprintf(&amp;quot;SELECT * FROM `%s` WHERE `%s`='%s'&amp;quot;,&lt;br /&gt;
					$this-&amp;gt;db-&amp;gt;sanitize($this-&amp;gt;databaseTable),&lt;br /&gt;
					$this-&amp;gt;db-&amp;gt;sanitize($this-&amp;gt;databaseFields[$field]),&lt;br /&gt;
					$this-&amp;gt;db-&amp;gt;sanitize($this-&amp;gt;get($field))&lt;br /&gt;
				);&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// INFO&lt;br /&gt;
			$this-&amp;gt;info($query);&lt;br /&gt;
			&lt;br /&gt;
			// Did we find a row in the database?&lt;br /&gt;
			if (!$queryData = $this-&amp;gt;db-&amp;gt;query($query)-&amp;gt;fetch()-&amp;gt;get())&lt;br /&gt;
			{&lt;br /&gt;
				throw new Exception($this-&amp;gt;db-&amp;gt;error());&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Loop returned rows -&amp;gt; Set new data&lt;br /&gt;
			foreach ($queryData AS $key =&amp;gt; $value)&lt;br /&gt;
			{&lt;br /&gt;
				$this-&amp;gt;set($fieldToName[$key], (string)$value);&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Success&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
		catch (Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			$this-&amp;gt;error('Database Load Failed: Class: %s, ID: %s, Error: %s', array(get_class($this), $this-&amp;gt;get('id'), $e-&amp;gt;getMessage()));&lt;br /&gt;
		}&lt;br /&gt;
	&lt;br /&gt;
		// Fail&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Destroy&lt;br /&gt;
	public function destroy($field = 'id')&lt;br /&gt;
	{&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			// Error checking&lt;br /&gt;
			if (!$this-&amp;gt;isTableDefined())&lt;br /&gt;
			{&lt;br /&gt;
				throw new Exception('No Table defined for this class');&lt;br /&gt;
			}&lt;br /&gt;
			if (!$this-&amp;gt;get($field))&lt;br /&gt;
			{&lt;br /&gt;
				throw new Exception(sprintf('Operation field not set: %s', strtoupper($field)));&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Variables&lt;br /&gt;
			$fieldToName = array_flip($this-&amp;gt;databaseFields);&lt;br /&gt;
			&lt;br /&gt;
			// Query row data&lt;br /&gt;
			$query = sprintf(&amp;quot;DELETE FROM `%s` WHERE `%s`='%s'&amp;quot;,&lt;br /&gt;
				$this-&amp;gt;db-&amp;gt;sanitize($this-&amp;gt;databaseTable),&lt;br /&gt;
				$this-&amp;gt;db-&amp;gt;sanitize($this-&amp;gt;databaseFields[$field]),&lt;br /&gt;
				$this-&amp;gt;db-&amp;gt;sanitize($this-&amp;gt;get($field))&lt;br /&gt;
			);&lt;br /&gt;
			&lt;br /&gt;
			// INFO&lt;br /&gt;
			$this-&amp;gt;info($query);&lt;br /&gt;
			&lt;br /&gt;
			// Did we find a row in the database?&lt;br /&gt;
			if (!$queryData = $this-&amp;gt;db-&amp;gt;query($query)-&amp;gt;fetch()-&amp;gt;get())&lt;br /&gt;
			{&lt;br /&gt;
				throw new Exception('Failed to delete');&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Success&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
		catch (Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			$this-&amp;gt;error('Database Destroy Failed: Class: %s, ID: %s, Error: %s', array(get_class($this), $this-&amp;gt;get('id'), $e-&amp;gt;getMessage()));&lt;br /&gt;
		}&lt;br /&gt;
	&lt;br /&gt;
		// Fail&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Error&lt;br /&gt;
	public function error($txt, $data = array())&lt;br /&gt;
	{&lt;br /&gt;
		if ($this-&amp;gt;debug)&lt;br /&gt;
		{&lt;br /&gt;
			$txt = (is_array($data) &amp;amp;&amp;amp; count($data) ? vsprintf($txt, $data) : $txt);&lt;br /&gt;
		&lt;br /&gt;
			$GLOBALS['FOGCore']-&amp;gt;error(sprintf('Class: %s, Error: %s', get_class($this), $txt));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Info&lt;br /&gt;
	public function info($txt, $data = array())&lt;br /&gt;
	{&lt;br /&gt;
		if ($this-&amp;gt;debug)&lt;br /&gt;
		{&lt;br /&gt;
			$txt = (is_array($data) &amp;amp;&amp;amp; count($data) ? vsprintf($txt, $data) : $txt);&lt;br /&gt;
		&lt;br /&gt;
			$GLOBALS['FOGCore']-&amp;gt;info(sprintf('Class: %s, Info: %s', get_class($this), $txt));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// isValid&lt;br /&gt;
	public function isValid()&lt;br /&gt;
	{&lt;br /&gt;
		// TODO: Add $this-&amp;gt;databaseFieldsRequired checks&lt;br /&gt;
		&lt;br /&gt;
		if ($this-&amp;gt;get('id') || $this-&amp;gt;get('name'))&lt;br /&gt;
		{&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// isTableDefined &lt;br /&gt;
	private function isTableDefined()&lt;br /&gt;
	{&lt;br /&gt;
		return (!empty($this-&amp;gt;databaseTable) ? true : false);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Name is returned if class is printed&lt;br /&gt;
	public function __toString()&lt;br /&gt;
	{&lt;br /&gt;
		return $this-&amp;gt;get('name');&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Chad-bisd</name></author>	</entry>

	</feed>