/[libdata]/branches/paul/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

Annotation of /branches/paul/admin/include/subject_builder.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (hide annotations)
Fri Dec 5 18:40:01 2003 UTC (20 years, 4 months ago) by dpavlin
File size: 13349 byte(s)
initial import of libdata version 1.04

1 dpavlin 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