/[libdata]/trunk/admin/include/subject_builder.php
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/admin/include/subject_builder.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations)
Fri Dec 5 18:34:18 2003 UTC (20 years, 4 months ago) by dpavlin
File size: 13349 byte(s)
Initial revision

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 = mysql_query($sql);
48 if (mysql_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 (!mysql_query($sql, $con)){
57 sql_err($con);
58 mysql_query ("UNLOCK TABLES", $con);
59 bailout();
60 } // bad write
61 else {
62 mysql_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 = mysql_query($sql);
96 if (mysql_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 (!mysql_query($sql, $con)){
105 sql_err($con);
106 mysql_query ("UNLOCK TABLES", $con);
107 bailout();
108 } // bad write
109 else {
110 mysql_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 (!mysql_query ($sql, $con)){
143 sql_err($sql);
144 mysql_query ("UNLOCK TABLES", $con);
145 bailout();
146 }
147 else {
148 mysql_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 (!mysql_query ($sql, $con)){
178 sql_err($sql);
179 mysql_query ("UNLOCK TABLES", $con);
180 bailout();
181 }
182
183 // Succeeded
184 else {
185 mysql_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 (!mysql_query ($sql, $con)){
215 sql_err($sql);
216 mysql_query ("UNLOCK TABLES", $con);
217 bailout();
218 }
219
220 // Succeeded
221 else {
222 mysql_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 = mysql_query($sql, $con);
256 $row = mysql_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 (!mysql_query ($sql, $con)){
297 sql_err($sql);
298 mysql_query ("UNLOCK TABLES", $con);
299 bailout();
300 }
301 else {
302 mysql_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 (!mysql_query ($sql, $con)){
329 sql_err($sql);
330 mysql_query ("UNLOCK TABLES", $con);
331 bailout();
332 }
333
334 // Succeeded
335 else {
336 mysql_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 (!mysql_query ($sql, $con)){
358 sql_err($sql);
359 mysql_query ("UNLOCK TABLES", $con);
360 bailout();
361 }
362
363 // Succeeded
364 else {
365 mysql_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 (!mysql_query ($sql, $con)){
389 sql_err($sql);
390 mysql_query ("UNLOCK TABLES", $con);
391 bailout();
392 }
393
394 // Succeeded
395 else {
396 mysql_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 (!mysql_query ($sql, $con)){
429 sql_err($sql);
430 mysql_query ("UNLOCK TABLES", $con);
431 bailout();
432 }
433 else {
434 mysql_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 (!mysql_query ($sql, $con)){
465 sql_err($sql);
466 mysql_query ("UNLOCK TABLES", $con);
467 bailout();
468 }
469 else {
470 mysql_query ("UNLOCK TABLES", $con);
471 }
472
473 header("Location: subject_builder.phtml?subject_id=" . $subject_id . "#" . $resource_id);
474 }
475 ?>

  ViewVC Help
Powered by ViewVC 1.1.26