File:
0.00.1a/core/request/Request.php (
View as Code)
1: 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.=" > ";
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: