r1330: - Rewrote the product selection HTML constructors
[bugdar.git] / includes / api_bug.php
1 <?php
2 /*=====================================================================*\
3 || ###################################################################
4 || # Bugdar [#]version[#]
5 || # Copyright ©2002-[#]year[#] Blue Static
6 || #
7 || # This program 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; version [#]gpl[#] of the License.
10 || #
11 || # This program is distributed in the hope that it will be useful, but
12 || # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 || # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 || # more details.
15 || #
16 || # You should have received a copy of the GNU General Public License along
17 || # with this program; if not, write to the Free Software Foundation, Inc.,
18 || # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
19 || ###################################################################
20 \*=====================================================================*/
21
22 $GLOBALS['isso:callback']->load('api', null);
23
24 /**
25 * API: Bug
26 *
27 * Note: When priority, severity, status, and resolution should throw a
28 * verification error, they actually set it to the default value
29 *
30 * @author Blue Static
31 * @copyright Copyright ©2002 - [#]year[#], Blue Static
32 * @version $Revision$
33 * @package Bugdar
34 *
35 */
36 class BugAPI extends API
37 {
38 /**
39 * Database fields
40 * @var array
41 * @access private
42 */
43 var $fields = array(
44 'bugid' => array(TYPE_UINT, REQ_AUTO, 'verify_nozero'),
45 'userid' => array(TYPE_UINT, REQ_NO),
46 'username' => array(TYPE_STR, REQ_NO),
47 'dateline' => array(TYPE_UINT, REQ_SET),
48 'product' => array(TYPE_UINT, REQ_YES, ':self'),
49 'component' => array(TYPE_UINT, REQ_NO, ':self'),
50 'version' => array(TYPE_UINT, REQ_YES, ':self'),
51 'summary' => array(TYPE_STR, REQ_YES, 'verify_noempty'),
52 'priority' => array(TYPE_UINT, REQ_NO, ':self'),
53 'severity' => array(TYPE_UINT, REQ_NO, ':self'),
54 'status' => array(TYPE_UINT, REQ_NO, ':self'),
55 'resolution' => array(TYPE_UINT, REQ_NO, ':self'),
56 'assignedto' => array(TYPE_UINT, REQ_NO, ':self', array('includes/api_user.php', 'UserAPI')),
57 'duplicateof' => array(TYPE_STR, REQ_NO),
58 'dependency' => array(TYPE_STR, REQ_NO),
59 'hidden' => array(TYPE_BOOL, REQ_NO),
60 'initialreport' => array(TYPE_UINT, REQ_NO),
61 'lastposttime' => array(TYPE_UINT, REQ_NO),
62 'lastpostby' => array(TYPE_UINT, REQ_NO),
63 'lastpostbyname' => array(TYPE_STR, REQ_NO),
64 'hiddenlastposttime' => array(TYPE_UINT, REQ_NO),
65 'hiddenlastpostby' => array(TYPE_UINT, REQ_NO),
66 'hiddenlastpostbyname' => array(TYPE_STR, REQ_NO)
67 );
68
69 /**
70 * Database table
71 * @var string
72 * @access private
73 */
74 var $table = 'bug';
75
76 /**
77 * Table prefix
78 * @var string
79 * @access private
80 */
81 var $prefix = TABLE_PREFIX;
82
83 // ###################################################################
84 /**
85 * Set field: dateline
86 *
87 * @access private
88 */
89 function set_dateline()
90 {
91 $this->set('dateline', time());
92 }
93
94 // ###################################################################
95 /**
96 * Post-insert
97 *
98 * @access private
99 */
100 function post_insert()
101 {
102 $this->registry->db->query("INSERT INTO " . TABLE_PREFIX . "vote (bugid, votefor, voteagainst) VALUES (" . $this->insertid . ", 0, 0)");
103 }
104
105 // ###################################################################
106 /**
107 * Post-delete
108 *
109 * @access private
110 */
111 function post_delete()
112 {
113 $this->registry->db->query("DELETE FROM " . TABLE_PREFIX . "bugvaluefill WHERE bugid = " . $this->values['bugid']);
114 $this->registry->db->query("DELETE FROM " . TABLE_PREFIX . "comment WHERE bugid = " . $this->values['bugid']);
115 $this->registry->db->query("DELETE FROM " . TABLE_PREFIX . "favorite WHERE bugid = " . $this->values['bugid']);
116 $this->registry->db->query("DELETE FROM " . TABLE_PREFIX . "history WHERE bugid = " . $this->values['bugid']);
117 $this->registry->db->query("DELETE FROM " . TABLE_PREFIX . "vote WHERE bugid = " . $this->values['bugid']);
118 }
119
120 // ###################################################################
121 /**
122 * Verify: product
123 *
124 * @access private
125 */
126 function verify_product()
127 {
128 if (!($nozero = $this->verify_nozero('product')))
129 {
130 return $nozero;
131 }
132
133 if (!$this->registry->datastore['product'][ $this->values['product'] ])
134 {
135 return false;
136 }
137 return true;
138 }
139
140 // ###################################################################
141 /**
142 * Verify: componentid
143 *
144 * @access private
145 */
146 function verify_component()
147 {
148 if ($this->values['component'] != 0)
149 {
150 $component = $this->registry->datastore['product'][ $this->values['component'] ];
151 $product = $this->registry->datastore['product'][ $this->values['product'] ];
152 $version = $this->registry->datastore['version'][ $this->values['version'] ];
153 if ($component['componentmother'] != $product['productid'])
154 {
155 return false;
156 }
157 if (($version['productid'] != $component['productid'] AND $version['productid'] != $product['productid']) AND $version['productid'] != 0)
158 {
159 return false;
160 }
161 }
162 return true;
163 }
164
165 // ###################################################################
166 /**
167 * Verify: versionid
168 *
169 * @access private
170 */
171 function verify_version()
172 {
173 if (!($nozero = $this->verify_nozero('version')))
174 {
175 return $nozero;
176 }
177
178 if (!$this->registry->datastore['version'][ $this->values['version'] ])
179 {
180 return false;
181 }
182 return true;
183 }
184
185 // ###################################################################
186 /**
187 * Verify: priority
188 *
189 * @access private
190 */
191 function verify_priority()
192 {
193 if (!$this->registry->datastore['priority'][ $this->values['priority'] ])
194 {
195 $this->set('priority', $this->registry->options['defaultpriority']);
196 }
197 return true;
198 }
199
200 // ###################################################################
201 /**
202 * Verify: severity
203 *
204 * @access private
205 */
206 function verify_severity()
207 {
208 if (!$this->registry->datastore['severity'][ $this->values['severity'] ])
209 {
210 $this->set('severity', $this->registry->options['defaultseverity']);
211 }
212 return true;
213 }
214
215 // ###################################################################
216 /**
217 * Verify: status
218 *
219 * @access private
220 */
221 function verify_status()
222 {
223 if (!$this->registry->datastore['status'][ $this->values['status'] ])
224 {
225 $this->set('status', $this->registry->options['defaultstatus']);
226 }
227 return true;
228 }
229
230 // ###################################################################
231 /**
232 * Verify: resolution
233 *
234 * @access private
235 */
236 function verify_resolution()
237 {
238 if (!$this->registry->datastore['resolution'][ $this->values['resolution'] ])
239 {
240 $this->set('resolution', $this->registry->options['defaultresolve']);
241 }
242 return true;
243 }
244
245 // ###################################################################
246 /**
247 * Verify: assignedto
248 *
249 * @access private
250 */
251 function verify_assignedto()
252 {
253 if (!$this->registry->datastore['assignto'][ $this->values['assignedto'] ] AND $this->values['assignedto'] != 0)
254 {
255 $this->set('assignedto', $this->registry->options['defaultassign']);
256 }
257 return true;
258 }
259 }
260
261 /*=====================================================================*\
262 || ###################################################################
263 || # $HeadURL$
264 || # $Id$
265 || ###################################################################
266 \*=====================================================================*/
267 ?>