1 |
<?php |
2 |
/********************************************************** |
3 |
Function Library: subject_builder.php |
4 |
Original Author: Paul Bramscher <brams006@tc.umn.edu> |
5 |
Last Modified: 11.04.2003 |
6 |
*********************************************************** |
7 |
Comments: |
8 |
This small library brings together basic functionality to |
9 |
delete, insert, and update RQS subject pages. Note that all |
10 |
of the function involve a header redirect back to the |
11 |
authoring environment of RQS. |
12 |
*********************************************************** |
13 |
Table of Contents: |
14 |
assignSubOtherSub |
15 |
assignSubPage |
16 |
deleteSubjectBuilder |
17 |
deleteSubOtherSub |
18 |
deleteSubPage |
19 |
insertSubjectBuilder |
20 |
rqsPublish |
21 |
rqsUnpublish |
22 |
updateRQSUpdate |
23 |
updateSubjectBuilder |
24 |
**********************************************************/ |
25 |
|
26 |
|
27 |
/********************************************************** |
28 |
Function: assignSubOtherSub |
29 |
Author: Paul Bramscher |
30 |
Last Modified: 11.04.2003 |
31 |
*********************************************************** |
32 |
Purpose: |
33 |
Assigns other RQS pages (possibly multiple) to a given |
34 |
subject and calls formSubject back again. |
35 |
**********************************************************/ |
36 |
function assignSubOtherSub($con, $subject_id_array, $subject_id) { |
37 |
|
38 |
// For every subject, assign it to the selected subject |
39 |
for ($subscript = 0; $subscript < sizeof($subject_id_array); $subscript++ ) { |
40 |
|
41 |
// Check to make sure that the page isn't already assigned |
42 |
$sql = "SELECT * FROM sub_othersub WHERE subject_id = " |
43 |
. $subject_id |
44 |
. " AND othersub_id = " |
45 |
. $subject_id_array[$subscript]; |
46 |
|
47 |
$rs = xx_query($sql); |
48 |
if (xx_num_rows($rs) == 0) { |
49 |
|
50 |
$sql = "INSERT INTO sub_othersub (subject_id, othersub_id) VALUES (" |
51 |
. $subject_id |
52 |
. ", " |
53 |
. $subject_id_array[$subscript] |
54 |
. ")"; |
55 |
|
56 |
if (!xx_query($sql, $con)){ |
57 |
sql_err($con); |
58 |
xx_query ("UNLOCK TABLES", $con); |
59 |
bailout(); |
60 |
} // bad write |
61 |
else { |
62 |
xx_query("UNLOCK TABLES", $con); |
63 |
|
64 |
} // good write of sub_othersub |
65 |
|
66 |
} // other subject not already assigned |
67 |
|
68 |
} // array of subject id's |
69 |
|
70 |
header("Location: subject_builder.phtml?subject_id=" . $subject_id); |
71 |
|
72 |
} // function |
73 |
|
74 |
|
75 |
/********************************************************** |
76 |
Function: assignSubPage |
77 |
Author: Paul Bramscher |
78 |
Last Modified: 06.17.2003 |
79 |
*********************************************************** |
80 |
Purpose: |
81 |
Assigns PageScribe pages (possibly multiple) to a given |
82 |
subject and calls formSubject back again. |
83 |
**********************************************************/ |
84 |
function assignSubPage($con, $page_id_array, $subject_id) { |
85 |
|
86 |
// For every page, assign it to the selected subject |
87 |
for ($subscript = 0; $subscript < sizeof($page_id_array); $subscript++ ) { |
88 |
|
89 |
// Check to make sure that the page isn't already assigned |
90 |
$sql = "SELECT * FROM sub_page WHERE subject_id = " |
91 |
. $subject_id |
92 |
. " AND page_id = " |
93 |
. $page_id_array[$subscript]; |
94 |
|
95 |
$rs = xx_query($sql); |
96 |
if (xx_num_rows($rs) == 0) { |
97 |
|
98 |
$sql = "INSERT INTO sub_page (subject_id, page_id) VALUES (" |
99 |
. $subject_id |
100 |
. ", " |
101 |
. $page_id_array[$subscript] |
102 |
. ")"; |
103 |
|
104 |
if (!xx_query($sql, $con)){ |
105 |
sql_err($con); |
106 |
xx_query ("UNLOCK TABLES", $con); |
107 |
bailout(); |
108 |
} // bad write |
109 |
else { |
110 |
xx_query("UNLOCK TABLES", $con); |
111 |
|
112 |
} // good write of sub_page |
113 |
|
114 |
} // page not already assigned |
115 |
|
116 |
} // array of page id's |
117 |
|
118 |
header("Location: subject_builder.phtml?subject_id=" . $subject_id); |
119 |
|
120 |
} // function |
121 |
|
122 |
|
123 |
|
124 |
/********************************************************** |
125 |
Function: deleteSubjectBuilder |
126 |
Author: Paul Bramscher |
127 |
Last Modified: 04.21.2003 |
128 |
*********************************************************** |
129 |
Purpose: |
130 |
Deletes an entry on an RQS page, based on a triple |
131 |
composite primary key of resource, subject and information |
132 |
type. |
133 |
**********************************************************/ |
134 |
function deleteSubjectBuilder($con, $infotype_id, $resource_id, $subject_id) { |
135 |
|
136 |
// Find the default information type for this resource |
137 |
$sql = "DELETE FROM res_sub_infotype WHERE resource_id = " |
138 |
. $resource_id . " AND subject_id = " |
139 |
. $subject_id . " AND infotype_id = " |
140 |
. $infotype_id; |
141 |
|
142 |
if (!xx_query ($sql, $con)){ |
143 |
sql_err($sql); |
144 |
xx_query ("UNLOCK TABLES", $con); |
145 |
bailout(); |
146 |
} |
147 |
else { |
148 |
xx_query ("UNLOCK TABLES", $con); |
149 |
} |
150 |
|
151 |
header("Location: subject_builder.phtml?subject_id=" . $subject_id); |
152 |
|
153 |
} |
154 |
|
155 |
|
156 |
/********************************************************** |
157 |
Function: deleteSubOtherSub |
158 |
Author: Paul Bramscher |
159 |
Last Modified: 11.04.2003 |
160 |
*********************************************************** |
161 |
Purpose: |
162 |
Deletes subject-othersubject associations based on the |
163 |
supplied subject id (possibly multiple) and calls |
164 |
formSubject back again. |
165 |
**********************************************************/ |
166 |
function deleteSubOtherSub($con, $key_list_array, $subject_id){ |
167 |
|
168 |
// For every page in the array, delete it from the bridging table |
169 |
for ($element = 0; $element < sizeof($key_list_array); $element++) { |
170 |
|
171 |
$sql = "DELETE FROM sub_othersub WHERE subject_id = " |
172 |
. $subject_id |
173 |
. " AND othersub_id = " |
174 |
. $key_list_array[$element]; |
175 |
|
176 |
// Failed |
177 |
if (!xx_query ($sql, $con)){ |
178 |
sql_err($sql); |
179 |
xx_query ("UNLOCK TABLES", $con); |
180 |
bailout(); |
181 |
} |
182 |
|
183 |
// Succeeded |
184 |
else { |
185 |
xx_query ("UNLOCK TABLES", $con); |
186 |
} |
187 |
} |
188 |
|
189 |
header("Location: subject_builder.phtml?subject_id=" . $subject_id); |
190 |
} |
191 |
|
192 |
|
193 |
/********************************************************** |
194 |
Function: deleteSubPage |
195 |
Author: Paul Bramscher |
196 |
Last Modified: 06.17.2003 |
197 |
*********************************************************** |
198 |
Purpose: |
199 |
Deletes subject-page associations based on the |
200 |
supplied subject id (possibly multiple) and calls |
201 |
formSubject back again. |
202 |
**********************************************************/ |
203 |
function deleteSubPage($con, $key_list_array, $subject_id){ |
204 |
|
205 |
// For every page in the array, delete it from the bridging table |
206 |
for ($element = 0; $element < sizeof($key_list_array); $element++) { |
207 |
|
208 |
$sql = "DELETE FROM sub_page WHERE subject_id = " |
209 |
. $subject_id |
210 |
. " AND page_id = " |
211 |
. $key_list_array[$element]; |
212 |
|
213 |
// Failed |
214 |
if (!xx_query ($sql, $con)){ |
215 |
sql_err($sql); |
216 |
xx_query ("UNLOCK TABLES", $con); |
217 |
bailout(); |
218 |
} |
219 |
|
220 |
// Succeeded |
221 |
else { |
222 |
xx_query ("UNLOCK TABLES", $con); |
223 |
} |
224 |
} |
225 |
|
226 |
header("Location: subject_builder.phtml?subject_id=" . $subject_id); |
227 |
} |
228 |
|
229 |
|
230 |
/********************************************************** |
231 |
Function: insertSubjectBuilder |
232 |
Author: Paul Bramscher |
233 |
Last Modified: 04.21.2003 |
234 |
*********************************************************** |
235 |
Purpose: |
236 |
Inserts a resource onto an RQS page. Note that the incoming |
237 |
parameters include a flag for whether this is a highlighted |
238 |
or "core" resource, the resource id itself, and the subject |
239 |
id. The third key in the primary composite key for the |
240 |
resource-subject-infotype is supplied by looking up the |
241 |
resource's default information type. Unless specified, |
242 |
it'll be NULL and appear initially on RQS pages under |
243 |
the (N/A) and (N/A) masterinfotype and infotype headings. |
244 |
**********************************************************/ |
245 |
function insertSubjectBuilder($con, $highlighted, $resource_id, $subject_id) { |
246 |
|
247 |
// Continue only if a resource was selected |
248 |
if ($resource_id > 0) { |
249 |
|
250 |
// Flag to allow adding to this RQS+ page |
251 |
$allow = 1; |
252 |
|
253 |
// Find the default information type for this resource |
254 |
$sql = "SELECT infotype_id FROM resource WHERE resource_id = " . $resource_id; |
255 |
$rs = xx_query($sql, $con); |
256 |
$row = xx_fetch_array ($rs); |
257 |
$infotype_id = $row["infotype_id"]; |
258 |
|
259 |
// Check to see if it's already there. |
260 |
$exists = existsResSub($con, $resource_id, $subject_id); |
261 |
|
262 |
// If already there, check to see whether the (N/A) infotype exists |
263 |
if ($exists > 0) $existsNA = existsResSubNA($con, $resource_id, $subject_id); |
264 |
|
265 |
// If (N/A) exists, disallow adding |
266 |
if ($existsNA > 0) $allow = 0; |
267 |
|
268 |
// Else allow the adding, but force into (N/A) infotype. |
269 |
if ($exists > 0 && $existsNA < 1) $infotype_id = 1; |
270 |
|
271 |
if ($allow == 1) { |
272 |
|
273 |
// Determine if highlighted/core |
274 |
if ($highlighted == "Add Core") $highlighted = 1; |
275 |
else $highlighted = 0; |
276 |
|
277 |
// Fetch the master information type |
278 |
$masterinfotype_id = lookupField($con, "infotype", "infotype_id", $infotype_id, "masterinfotype_id"); |
279 |
|
280 |
// Build the SQL |
281 |
$sql = "INSERT INTO res_sub_infotype (resource_id, subject_id, infotype_id, masterinfotype_id, highlighted) VALUES (" |
282 |
. $resource_id |
283 |
. ", " |
284 |
. $subject_id |
285 |
. ", " |
286 |
. $infotype_id |
287 |
. ", " |
288 |
. $masterinfotype_id |
289 |
. ", " |
290 |
. $highlighted |
291 |
. ")"; |
292 |
|
293 |
// Debugging |
294 |
// printf("sql was: %s<BR>", $sql); |
295 |
|
296 |
if (!xx_query ($sql, $con)){ |
297 |
sql_err($sql); |
298 |
xx_query ("UNLOCK TABLES", $con); |
299 |
bailout(); |
300 |
} |
301 |
else { |
302 |
xx_query ("UNLOCK TABLES", $con); |
303 |
} |
304 |
|
305 |
} |
306 |
|
307 |
} |
308 |
|
309 |
header("Location: subject_builder.phtml?subject_id=" . $subject_id . "&recent=" . $resource_id . "#select"); |
310 |
|
311 |
} |
312 |
|
313 |
|
314 |
/********************************************************** |
315 |
Function: rqsPublish |
316 |
Author: Paul Bramscher |
317 |
Last Modified: 08.27.2003 |
318 |
*********************************************************** |
319 |
Purpose: |
320 |
Toggles the RQS published flag to 1 (true). |
321 |
**********************************************************/ |
322 |
function rqsPublish($con, $subject_id){ |
323 |
|
324 |
$sql = "UPDATE subject SET rqs_published = '1' WHERE subject_id = " |
325 |
. $subject_id; |
326 |
|
327 |
// Failed |
328 |
if (!xx_query ($sql, $con)){ |
329 |
sql_err($sql); |
330 |
xx_query ("UNLOCK TABLES", $con); |
331 |
bailout(); |
332 |
} |
333 |
|
334 |
// Succeeded |
335 |
else { |
336 |
xx_query ("UNLOCK TABLES", $con); |
337 |
} |
338 |
|
339 |
header("Location: subject_builder.phtml?subject_id=" . $subject_id); |
340 |
} |
341 |
|
342 |
|
343 |
/********************************************************** |
344 |
Function: rqsUnpublish |
345 |
Author: Paul Bramscher |
346 |
Last Modified: 08.27.2003 |
347 |
*********************************************************** |
348 |
Purpose: |
349 |
Toggles the RQS published flag to 0 (false). |
350 |
**********************************************************/ |
351 |
function rqsUnpublish($con, $subject_id){ |
352 |
|
353 |
$sql = "UPDATE subject SET rqs_published = '0' WHERE subject_id = " |
354 |
. $subject_id; |
355 |
|
356 |
// Failed |
357 |
if (!xx_query ($sql, $con)){ |
358 |
sql_err($sql); |
359 |
xx_query ("UNLOCK TABLES", $con); |
360 |
bailout(); |
361 |
} |
362 |
|
363 |
// Succeeded |
364 |
else { |
365 |
xx_query ("UNLOCK TABLES", $con); |
366 |
} |
367 |
|
368 |
header("Location: subject_builder.phtml?subject_id=" . $subject_id); |
369 |
} |
370 |
|
371 |
|
372 |
/********************************************************** |
373 |
Function: updateRQSUpdate |
374 |
Author: Paul Bramscher |
375 |
Last Modified: 08.27.2003 |
376 |
*********************************************************** |
377 |
Purpose: |
378 |
Modifies the RQS "last updated" fields accordingly. |
379 |
**********************************************************/ |
380 |
function updateRQSUpdate($con, $sess_staff_account, $subject_id) { |
381 |
|
382 |
$sql = "UPDATE subject SET rqs_date_modified = now(), rqs_account_modified ='" |
383 |
. $sess_staff_account |
384 |
. "' WHERE subject_id = " |
385 |
. $subject_id; |
386 |
|
387 |
// Failed |
388 |
if (!xx_query ($sql, $con)){ |
389 |
sql_err($sql); |
390 |
xx_query ("UNLOCK TABLES", $con); |
391 |
bailout(); |
392 |
} |
393 |
|
394 |
// Succeeded |
395 |
else { |
396 |
xx_query ("UNLOCK TABLES", $con); |
397 |
} |
398 |
} |
399 |
|
400 |
|
401 |
/********************************************************** |
402 |
Function: updateSubjectBuilder |
403 |
Author: Paul Bramscher |
404 |
Last Modified: 05.27.2003 |
405 |
*********************************************************** |
406 |
Purpose: |
407 |
Update the RQS resource-subject-infoype assignment. Note |
408 |
that the incoming variables also include a flag for whether |
409 |
the assignment is to be a highlighted or "core" resource. |
410 |
**********************************************************/ |
411 |
function updateSubjectBuilder($con, $description, $descr_default, $highlighted, |
412 |
$infotype_id, $old_infotype_id, $resource_id, $subject_id) { |
413 |
|
414 |
// Clean up strings |
415 |
if (strlen($description) > 0) $description = textInmySQL($description); |
416 |
|
417 |
// First delete the one, as well as the newly-selected information type entry (if exists) |
418 |
$sql = "DELETE FROM res_sub_infotype WHERE resource_id = " |
419 |
. $resource_id |
420 |
. " AND subject_id = " |
421 |
. $subject_id |
422 |
. " AND (infotype_id = " |
423 |
. $old_infotype_id |
424 |
. " OR infotype_id = " |
425 |
. $infotype_id |
426 |
. ")"; |
427 |
|
428 |
if (!xx_query ($sql, $con)){ |
429 |
sql_err($sql); |
430 |
xx_query ("UNLOCK TABLES", $con); |
431 |
bailout(); |
432 |
} |
433 |
else { |
434 |
xx_query ("UNLOCK TABLES", $con); |
435 |
} |
436 |
|
437 |
// If the user opted for default resource description, void out the incoming $description; |
438 |
if ($descr_default == 1) $description = ""; |
439 |
|
440 |
// Fetch the master information type |
441 |
$masterinfotype_id = lookupField($con, "infotype", "infotype_id", $infotype_id, "masterinfotype_id"); |
442 |
|
443 |
// Insert the new row |
444 |
$sql = "INSERT INTO res_sub_infotype ( |
445 |
resource_id, |
446 |
subject_id, |
447 |
infotype_id, |
448 |
masterinfotype_id, |
449 |
highlighted, |
450 |
description) VALUES (" |
451 |
. $resource_id |
452 |
. ", " |
453 |
. $subject_id |
454 |
. ", " |
455 |
. $infotype_id |
456 |
. ", " |
457 |
. $masterinfotype_id |
458 |
. ", '" |
459 |
. $highlighted |
460 |
. "', '" |
461 |
. $description |
462 |
. "')"; |
463 |
|
464 |
if (!xx_query ($sql, $con)){ |
465 |
sql_err($sql); |
466 |
xx_query ("UNLOCK TABLES", $con); |
467 |
bailout(); |
468 |
} |
469 |
else { |
470 |
xx_query ("UNLOCK TABLES", $con); |
471 |
} |
472 |
|
473 |
header("Location: subject_builder.phtml?subject_id=" . $subject_id . "#" . $resource_id); |
474 |
} |
475 |
?> |