File: 0.00.1a/core/entity/EntityBase.php (View as HTML)

  1: <?php 
  2: /* -------------------------------------------------------------
  3: This file is part of FreeDESK
  4: 
  5: FreeDESK is (C) Copyright 2012 David Cutting
  6: 
  7: FreeDESK is free software: you can redistribute it and/or modify
  8: it under the terms of the GNU General Public License as published by
  9: the Free Software Foundation, either version 3 of the License, or
 10: (at your option) any later version.
 11: 
 12: FreeDESK is distributed in the hope that it will be useful,
 13: but WITHOUT ANY WARRANTY; without even the implied warranty of
 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 15: GNU General Public License for more details.
 16: 
 17: You should have received a copy of the GNU General Public License
 18: along with FreeDESK.  If not, see www.gnu.org/licenses
 19: 
 20: For more information see www.purplepixie.org/freedesk/
 21: -------------------------------------------------------------- */
 22: 
 23: /**
 24:  * Entity base is the entity base class
 25: **/
 26: abstract class EntityBase
 27: {
 28: /**
 29:  * FreeDESK instance
 30: **/
 31: protected $DESK = null;
 32: 
 33: /**
 34:  * Data Elements
 35: **/
 36: protected $data = array();
 37: 
 38: /**
 39:  * Entity (table name)
 40: **/
 41: protected $entity = "";
 42: 
 43: /**
 44:  * Data dictionary entry for entity
 45: **/
 46: protected $table = null;
 47: 
 48: /**
 49:  * Constructor
 50:  * @param mixed $freeDESK FreeDESK instance
 51: **/
 52: function EntityBase(&$freeDESK)
 53: {
 54: 	$this->DESK = &$freeDESK;
 55: }
 56: 
 57: /**
 58:  * Set a data field to a value
 59:  * @param string $field Field ID
 60:  * @param string $data Data
 61: **/
 62: function Set($field, $data)
 63: {
 64: 	$this->data[$field]=$data;
 65: }
 66: 
 67: /**
 68:  * Load from an asociative array
 69:  * @param array &$assoc Array
 70: **/
 71: function LoadAssoc(&$assoc)
 72: {
 73: 	foreach($assoc as $key => $val)
 74: 		$this->Set($key, $val);
 75: }
 76: 
 77: /**
 78:  * Set the entity
 79:  * @param string $entity Entity
 80: **/
 81: function SetEntity($entity)
 82: {
 83: 	$this->entity = $entity;
 84: }
 85: 
 86: /**
 87:  * Get entity
 88:  * @return string Entity
 89: **/
 90: function GetEntity()
 91: {
 92: 	return $this->entity;
 93: }
 94: 
 95: /**
 96:  * Output a data array as XML
 97:  * @param mixed &$xml XML creator
 98:  * @param array &$data Data object
 99:  * @return mixed XML creator
100: **/
101: protected function XMLData(&$xml)
102: {
103: 	//TODO: Deal with entity lists
104: 	
105: 	foreach($this->data as $key=>$item)
106: 	{
107: 		if (is_object($item))
108: 		{
109: 			if (is_subclass_of($item, "EntityBase"))
110: 			{
111: 				$subdata=array("entity"=>$key);
112: 				$xml->startElement("subentity",$subdata);
113: 				$xml->charData($item->XML());
114: 				$xml->endElement("subentity");
115: 			}
116: 			else if (get_class($data) == "EntityList")
117: 			{
118: 				// TODO
119: 			}
120: 		}
121: 		else
122: 		{
123: 			$head=array("field"=>$key);
124: 			$xml->startElement("field",$head);
125: 			$xml->charData($item, true);
126: 			$xml->endElement("field");
127: 		}
128: 	}
129: 	return $xml;
130: }
131: 
132: /**
133:  * Output as XML - can be overriden
134:  * @param bool $header Put an XML header in (optional, default false)
135:  * @return string XML for data
136: **/
137: function XML($header=false)
138: {
139: 	$xml = new xmlCreate();
140: 	$data=array("entity"=>$this->entity);
141: 	$xml->startElement("entity",$data);
142: 	$this->XMLData($xml);
143: 	$xml->endElement("entity");
144: 	
145: 	return $xml->getXML($header);
146: }
147: 
148: 
149: /**
150:  * Get all the raw data
151:  * @return array Data array
152: **/
153: function GetData()
154: {
155: 	return $this->data;
156: }
157: 
158: 
159: }
160: 
161: ?>
162: 
163: