File: 0.00.1a/core/request/Request.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:  * Request class for all standard requests
 25: **/
 26: class Request extends RequestBase
 27: {
 28: 	
 29: 	/**
 30: 	 * Constructor
 31: 	 * @param mixed &$freeDESK Current FreeDESK instance
 32: 	**/
 33: 	function Request(&$freeDESK)
 34: 	{
 35: 		parent::RequestBase($freeDESK);
 36: 	}
 37: 	
 38: 	/**
 39: 	 * Create a request
 40: 	 * @param int $customer Customer ID
 41: 	 * @param string $update Initial Update
 42: 	 * @param int $class Request Class
 43: 	 * @param int $status Initial request status
 44: 	 * @param int $priority Priority code (optional, default 0)
 45: 	 * @param int $group Request Group (optional, default 0)
 46: 	 * @param string $assign Assigned user (optional, default "")
 47: 	 * @return string Request ID
 48: 	**/
 49: 	function Create($customer, $update, $class, $status, $priority=0, $group=0, $assign="")
 50: 	{
 51: 		if (!is_numeric($class))
 52: 			$class=1;
 53: 		$q="INSERT INTO ".$this->DESK->Database->Table("request");
 54: 		$q.="(".$this->DESK->Database->Field("customer").",";
 55: 		$q.=$this->DESK->Database->Field("assignteam").",";
 56: 		$q.=$this->DESK->Database->Field("assignuser").",";
 57: 		$q.=$this->DESK->Database->Field("class").",";
 58: 		$q.=$this->DESK->Database->Field("openeddt").",";
 59: 		$q.=$this->DESK->Database->Field("priority").",";
 60: 		$q.=$this->DESK->Database->Field("status").") ";
 61: 		$q.="VALUES(";
 62: 		$q.=$this->DESK->Database->Safe($customer).",";
 63: 		$q.=$this->DESK->Database->SafeQuote($group).",";
 64: 		$q.=$this->DESK->Database->SafeQuote($assign).",";
 65: 		$q.=$this->DESK->Database->SafeQuote($class).",";
 66: 		$q.="NOW(),";
 67: 		$q.=$this->DESK->Database->Safe($priority).",";
 68: 		$q.=$this->DESK->Database->Safe($status).")";
 69: 		
 70: 		$this->DESK->Database->Query($q);
 71: 		
 72: 		$this->ID = $this->DESK->Database->InsertID();
 73: 		
 74: 		$this->Update($update, true);
 75: 		
 76: 		return $this->ID;
 77: 	}
 78: 	
 79: 	/**
 80: 	 * Update a request
 81: 	 * @param string $update Update text
 82: 	 * @param bool $public Public update (optional, default false)
 83: 	**/
 84: 	function Update($update, $public=false)
 85: 	{
 86: 		if ($this->ID <= 0)
 87: 			return false;
 88: 		if ($this->DESK->ContextManager->Session == null)
 89: 			return false;
 90: 		
 91: 		$q="INSERT INTO ".$this->DESK->Database->Table("update")."(";
 92: 		$q.=$this->DESK->Database->Field("requestid").",";
 93: 		$q.=$this->DESK->Database->Field("update").",";
 94: 		$q.=$this->DESK->Database->Field("public").",";
 95: 		$q.=$this->DESK->Database->Field("updateby").",";
 96: 		$q.=$this->DESK->Database->Field("updatedt").") ";
 97: 		$q.="VALUES(";
 98: 		$q.=$this->DESK->Database->Safe($this->ID).",";
 99: 		$q.=$this->DESK->Database->SafeQuote($update).",";
100: 		if ($public)
101: 			$p=1;
102: 		else
103: 			$p=0;
104: 		$q.=$p.",";
105: 		$q.="\"".$this->DESK->ContextManager->Session->NiceName()."\",";
106: 		$q.="NOW())";
107: 		
108: 		$this->DESK->Database->Query($q);
109: 	}
110: 	
111: 	/**
112: 	 * Change a request status
113: 	 * @param int $status New status
114: 	 * @param bool $public Public update (optional, default false)
115: 	**/
116: 	function Status($status, $public=false)
117: 	{
118: 		$list = $this->DESK->RequestManager->StatusList();
119: 		
120: 		if (isset($list[$status]))
121: 		{
122: 			$q="UPDATE ".$this->DESK->Database->Table("request")." SET ";
123: 			$q.=$this->DESK->Database->Field("status")."=".$this->DESK->Database->Safe($status);
124: 			if ($status == 0)
125: 				$q.=",".$this->DESK->Database->Field("closeddt")."=NOW()";
126: 			$q.=" WHERE ".$this->DESK->Database->Field("requestid")."=".$this->DESK->Database->Safe($this->ID);
127: 			$this->DESK->Database->Query($q);
128: 			
129: 			$update="Status changed to ".$list[$status];
130: 			$this->Update($update, $public);
131: 		}
132: 	}
133: 	
134: 	/**
135: 	 * Assign a request
136: 	 * @param int $group Group ID
137: 	 * @param string $username Username (optional, default "")
138: 	 * @param bool $public Public update (optional, default false)
139: 	**/
140: 	function Assign($group, $username="", $public=false)
141: 	{
142: 		$q="UPDATE ".$this->DESK->Database->Table("request")." SET ";
143: 		$q.=$this->DESK->Database->Field("assignteam")."=".$this->DESK->Database->Safe($group).",";
144: 		$q.=$this->DESK->Database->Field("assignuser")."=".$this->DESK->Database->SafeQuote($username)." WHERE ";
145: 		$q.=$this->DESK->Database->Field("requestid")."=".$this->DESK->Database->Safe($this->ID);
146: 		$this->DESK->Database->Query($q);
147: 		
148: 		$teams = $this->DESK->RequestManager->TeamList();
149: 		$users = $this->DESK->RequestManager->UserList();
150: 		$assign = "";
151: 		
152: 		if (isset($teams[$group]))
153: 			$assign.=$teams[$group];
154: 		else if ($group == 0)
155: 			$assign.=$this->DESK->Lang->Get("unassigned");
156: 		
157: 		if ($username != "" && isset($users[$username]))
158: 		{
159: 			if ($assign != "")
160: 				$assign.=" &gt; ";
161: 			$assign.=$users[$username];
162: 		}
163: 		
164: 		$update = $this->DESK->Lang->Get("assigned_to")." ".$assign;
165: 		
166: 		$this->Update($update, $public);
167: 	}
168: 	
169: 	/**
170: 	 * Attach a file
171: 	 * @param int $fileid File ID
172: 	 * @param bool $public Public update (optional, default false)
173: 	**/
174: 	function Attach($fileid, $public=false)
175: 	{
176: 		//
177: 	}
178: 	
179: 	/**
180: 	 * Output XML
181: 	 * @return string xml output
182: 	 * @param bool $header Put XML header on output (optional, default false)
183: 	**/
184: 	function XML($header=false)
185: 	{
186: 		$data = $this->Entity->GetData();
187: 		$xml = new xmlCreate();
188: 		$xml->startElement("request");
189: 		$xml->xmlArray($data);
190: 		$xml->endElement("request");
191: 		return $xml->getXML($header);
192: 	}
193: 	
194: 	
195: 	
196: }
197: ?>
198: