File: 0.00.1a/core/request/RequestBase.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:  * Abstract Request base class for all request classes
 25: **/
 26: abstract class RequestBase
 27: {
 28: 	/**
 29: 	 * Current FreeDESK instance
 30: 	**/
 31: 	protected $DESK = null;
 32: 	
 33: 	/**
 34: 	 * Current Request ID
 35: 	**/
 36: 	var $ID = 0;
 37: 	
 38: 	/**
 39: 	 * Entity Data
 40: 	**/
 41: 	protected $Entity = null;
 42: 	
 43: 	/**
 44: 	 * Updates
 45: 	**/
 46: 	protected $Updates = null;
 47: 	
 48: 	/**
 49: 	 * Constructor
 50: 	 * @param mixed &$freeDESK Current FreeDESK instance
 51: 	**/
 52: 	function RequestBase(&$freeDESK)
 53: 	{
 54: 		$this->DESK = &$freeDESK;
 55: 	}
 56: 	
 57: 	/**
 58: 	 * Create a request
 59: 	 * @param int $customer Customer ID
 60: 	 * @param string $update Initial Update
 61: 	 * @param int $class Request Class
 62: 	 * @param int $status Request status
 63: 	 * @param int $priority Priority Code (optional, default 0)
 64: 	 * @param int $group Request Group (optional, default 0)
 65: 	 * @param string $assign Assigned user (optional, default "")
 66: 	 * @return string Request ID
 67: 	**/
 68: 	abstract function Create($customer, $update, $class, $status, $priority=0, $group=0, $assign="");
 69: 	
 70: 	/**
 71: 	 * Update a request
 72: 	 * @param string $update Update text
 73: 	 * @param bool $public Public update (optional, default false)
 74: 	**/
 75: 	abstract function Update($update, $public=false);
 76: 	
 77: 	/**
 78: 	 * Change a request status
 79: 	 * @param int $status New status
 80: 	 * @param bool $public Public update (optional, default false)
 81: 	**/
 82: 	abstract function Status($status, $public=false);
 83: 	
 84: 	/**
 85: 	 * Assign a request
 86: 	 * @param int $group Group ID
 87: 	 * @param string $username Username (optional, default "")
 88: 	 * @param bool $public Public update (optional, default false)
 89: 	**/
 90: 	abstract function Assign($group, $username="", $public=false);
 91: 	
 92: 	/**
 93: 	 * Attach a file
 94: 	 * @param int $fileid File ID
 95: 	 * @param bool $public Public update (optional, default false)
 96: 	**/
 97: 	abstract function Attach($fileid, $public=false);
 98: 	
 99: 	/**
100: 	 * Output XML
101: 	 * @return string xml output
102: 	 * @param bool $header Put XML header on output (optional, default false)
103: 	**/
104: 	abstract function XML($header=false);
105: 	
106: 	/**
107: 	 * Set an entity value
108: 	 * @param string $field Field ID
109: 	 * @param string $value Value
110: 	**/
111: 	function Set($field, $value)
112: 	{
113: 		if ($this->Entity == null)
114: 			$this->Entity = new Entity($this->DESK);
115: 		$this->Entity->Set($field, $value);
116: 	}
117: 	
118: 	/**
119: 	 * Get an entity value
120: 	 * @param string $field Field ID
121: 	 * @return mixed Value
122: 	**/
123: 	function Get($field)
124: 	{
125: 		$data = $this->Entity->GetData();
126: 		if (isset($data[$field]))
127: 			return $data[$field];
128: 		else
129: 			return false;
130: 	}
131: 	
132: 	/**
133: 	 * Load updates for our ID
134: 	**/
135: 	function LoadUpdates()
136: 	{
137: 		$q="SELECT * FROM ".$this->DESK->Database->Table("update")." WHERE ";
138: 		$q.=$this->DESK->Database->Field("requestid")."=".$this->DESK->Database->Safe($this->ID)." ";
139: 		$q.="ORDER BY ".$this->DESK->Database->Field("updateid")." DESC";
140: 		
141: 		$this->Updates = array();
142: 		
143: 		$r=$this->DESK->Database->Query($q);
144: 		
145: 		while ($row=$this->DESK->Database->FetchAssoc($r))
146: 			$this->Updates[] = $row;
147: 		
148: 		$this->DESK->Database->Free($r);
149: 	}
150: 	
151: 	/**
152: 	 * Get updates
153: 	 * @return array Updates
154: 	**/
155: 	function GetUpdates()
156: 	{
157: 		if ($this->Updates == null)
158: 			$this->LoadUpdates();
159: 		return $this->Updates;
160: 	}
161: 		
162: }
163: ?>
164: