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: