/[libdata]/branches/pear-db/public_controls.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 /branches/pear-db/public_controls.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 47 - (show annotations)
Fri Mar 5 13:42:57 2004 UTC (20 years ago) by dpavlin
File size: 27796 byte(s)
branch to begin migration to Pear::DB

1 <?php
2 /**********************************************************
3 Function Library: public_controls.php
4 Original Author: Paul Bramscher <brams006@tc.umn.edu>
5 Last Modified: 12.15.2003
6 ***********************************************************
7 Comments:
8 Publicly accessible and executable functions.
9 ***********************************************************
10 Table of Contents:
11 displayCourseHeader
12 displayCoursePers
13 displayRelatedPages
14 displayRelatedSubjects
15 displayTOC
16 dropDownCoursesubSelected
17 dropDownFacultySelected
18 dropDownFieldOmit
19 dropDownFieldSelected
20 existsRow
21 locationList
22 lookupField
23 lookupStaff
24 pageLoadStats
25 printAlphabet
26 subLoadStats
27 textOutHTML
28 textSearchmySQL
29 **********************************************************/
30
31
32 /**********************************************************
33 Function: displayCourseHeader
34 Author: Paul Bramscher
35 Last Modified: 11.21.2003
36 ***********************************************************
37 Purpose:
38 Output the course related information for a course page.
39 **********************************************************/
40 function displayCourseHeader($con, $page_id, $pagetitle_style) {
41
42 // Retrieve current information
43 $sql = "SELECT *
44 FROM
45 course c
46 LEFT JOIN term t using (term_id)
47 LEFT JOIN campus p on c.campus_id = p.campus_id
48 LEFT JOIN coursesub s on c.coursesub_id = s.coursesub_id
49
50 WHERE
51 page_id = " . $page_id;
52
53 $rs = xx_query($sql, $con);
54 $row = xx_fetch_array ($rs);
55
56 $course_id = $row["course_id"];
57 $staff_id_created = $row["staff_id_created"];
58 $staff_id_edited = $row["staff_id_edited"];
59 $coursesub_id = $row["coursesub_id"];
60 $coursesub = $row["coursesub"];
61 $course_num = $row["course_num"];
62 $course_section = $row["course_section"];
63 $course_concat = $row["course_concat"];
64 $term_id = $row["term_id"];
65 $term = $row["term"];
66 $course_year = $row["course_year"];
67 $campus_id = $row["campus_id"];
68 $campus = $row["campus"];
69 $courseheader = $row["courseheader"];
70 $introheader1 = $row["introheader1"];
71 $intromessage1 = $row["intromessage1"];
72 $introheader2 = $row["introheader2"];
73 $intromessage2 = $row["intromessage2"];
74
75 // Course Header
76 if (strlen($courseheader) > 1) printf("%s<BR>\n", $courseheader);
77
78 // Start the span class
79 if ($pagetitle_style > 0) printf("<span class=\"S%d\">%s</span>", $pagetitle_style, $course_concat);
80 else printf("%s", $course_concat);
81 printf("<BR><BR>\n");
82
83 // Display course term
84 if (strlen($term) > 1 && $term_id > 1) printf("%s", $term);
85
86 // Display Comma
87 if (strlen($term) > 1 && strlen($course_year) > 1) printf(", ");
88
89 // Display course year
90 if (strlen($course_year) > 1) printf("%s", $course_year);
91
92 printf("<BR>");
93
94 // Campus
95 if (strlen($campus) > 0 && $campus_id > 1) printf("%s<BR>\n", $campus);
96
97 // Intro header1
98 if (strlen($introheader1) > 0) {
99 printf("<center><b>\n");
100 printf("%s", $introheader1);
101 printf("</b></center><br>\n");
102
103 }
104
105 // Intro Message1
106 if (strlen($intromessage1) > 0) {
107 printf("%s", $intromessage1);
108 printf("<br>\n");
109 }
110
111 // Intro header2
112 if (strlen($introheader2) > 0) {
113 printf("<center><b>\n");
114 printf("%s", $introheader2);
115 printf("</b></center><br>\n");
116
117 }
118
119 // Intro Message2
120 if (strlen($intromessage2) > 0) {
121 printf("%s", $intromessage2);
122 printf("<br>\n");
123 }
124
125 }
126
127
128 /**********************************************************
129 Function: displayCoursePers
130 Author: Paul Bramscher
131 Last Modified: 09.10.2003
132 ***********************************************************
133 Purpose:
134 Displays the personnel associated with the course, by
135 looking up the course id based on the page id.
136 **********************************************************/
137 function displayCoursePers($con, $page_id) {
138
139 // Determine the course id
140 $course_id = lookupfield($con, "course", "page_id", $page_id, "course_id");
141
142 // Retrieve current information
143 $sql = "SELECT *
144 FROM
145 course_personnel cp
146 LEFT JOIN staff s using (staff_id)
147 LEFT JOIN stafftitle st on cp.stafftitle_id = st.stafftitle_id
148 LEFT JOIN faculty f on cp.faculty_id = f.faculty_id
149
150 WHERE
151 course_id = " . $course_id . " ORDER BY personnel_id";
152
153 $rs = xx_query($sql, $con);
154
155 // See how many in this record set
156 $num_personnel = xx_num_rows($rs);
157
158 if ($num_personnel > 0) {
159
160 // Display course personnel
161 printf("<BR>\n");
162 printf("<b>Personnel:</b><br>\n");
163
164
165 while ($row = xx_fetch_array ($rs)) {
166
167 // Initialize
168 $last_name = "";
169 $first_name = "";
170 $email = "";
171 $stafftitle = "";
172
173 // Fetch the general stuff
174 $personnel_id = $row["personnel_id"];
175 $staff_id = $row["staff_id"];
176 $faculty_id = $row["faculty_id"];
177 $stafftitle = $row["stafftitle"];
178 $stafftitle_id = $row["stafftitle_id"];
179
180 // Row is staff. (Not 0, NULL, 1=N/A).
181 if ($staff_id > 1) {
182
183 // Gather the staff table fields
184 $last_name = $row["last_name"];
185 $first_name = $row["first_name"];
186 $email = $row["staff_email"];
187
188 }
189
190 // Row is faculty (Not 0, NULL, 1=N/A).
191 else if ($faculty_id > 1) {
192
193 // Gather the faculty table fields
194 $last_name = $row["faculty_lastname"];
195 $first_name = $row["faculty_firstname"];
196 $email = $row["faculty_email"];
197
198 }
199
200 // Row is "other", use the freetext fields
201 else {
202
203 // Gather the catch-all fields
204 $last_name = $row["pers_lastname"];
205 $first_name = $row["pers_firstname"];
206 $email = $row["pers_email"];
207 }
208
209
210 // Display the data
211 if ($stafftitle_id > 1) printf("%s: ", $stafftitle);
212 printf("%s %s <a href=\"mailto:%s\">%s</a><br>\n",
213 $first_name, $last_name, $email, $email);
214
215 } // all course_personnel rows
216
217 } // if there were any persons attached to this course
218
219 }
220
221
222 /**********************************************************
223 Function: displayRelatedPages($con, $subject_id)
224 Author: Paul Bramscher
225 Last Modified: 06.17.2003
226 ***********************************************************
227 Incoming:
228 $con Database connection string
229 $subject_id Subject of the RQS page
230 ***********************************************************
231 Outgoing:
232 None
233 ***********************************************************
234 Purpose:
235 Displays any PageScribe pages associated with the supplied
236 subject id.
237 **********************************************************/
238 function displayRelatedPages($con, $subject_id){
239 $sql = "SELECT p.page_id, p.page_title
240 FROM page p, sub_page sp
241 WHERE sp.subject_id = "
242 . $subject_id
243 . " AND sp.page_id = p.page_id ORDER BY p.page_title";
244
245 $rs = xx_query($sql, $con);
246 while ($row = xx_fetch_array ($rs)) {
247 $page_id = $row["page_id"];
248 $page_title = $row["page_title"];
249
250 // Pull out any HTML
251 $page_title = strip_tags($page_title);
252
253 printf("<a href=\"page.phtml?page_id=%s\">%s</a><BR>\n", $page_id, $page_title);
254 };
255 }
256
257
258 /**********************************************************
259 Function: displayRelatedSubjects($con, $subject_id)
260 Author: Paul Bramscher
261 Last Modified: 11.05.2003
262 ***********************************************************
263 Incoming:
264 $con Database connection string
265 $subject_id Subject of the RQS page
266 ***********************************************************
267 Outgoing:
268 None
269 ***********************************************************
270 Purpose:
271 Displays any RQS pages associated with the supplied
272 subject id.
273 **********************************************************/
274 function displayRelatedSubjects($con, $subject_id){
275
276 $sql = "SELECT s.subject, so.othersub_id
277 FROM subject s, sub_othersub so
278 WHERE so.subject_id = "
279 . $subject_id
280 . " AND so.othersub_id = s.subject_id ORDER BY s.subject";
281
282 $rs = xx_query($sql, $con);
283 while ($row = xx_fetch_array ($rs)) {
284 $othersub_id = $row["othersub_id"];
285 $subject = $row["subject"];
286
287 printf("<a href=\"rqs.phtml?subject_id=%s\">%s</a><BR>\n", $othersub_id, $subject);
288 };
289
290
291
292 }
293
294
295 /**********************************************************
296 Function: displayTOC
297 Author: Paul Bramscher
298 Last Modified: 12.15.2003
299 ***********************************************************
300 Purpose:
301 Generates and displays a table of contents (TOC) for the
302 supplied page id. This is done dynamically, and uses
303 root-level elements on the given page.
304
305 This function allows for the optional display of a
306 two-column table of contents, split at the midpoint
307 (rounded up for odd numbers of root elements).
308 **********************************************************/
309 function displayTOC($con, $page_id, $wrap_toc) {
310
311 // Calculate number of elements
312 $sql = "SELECT COUNT(*) as num_elements FROM element WHERE indent_level < 1 AND page_id = "
313 . $page_id;
314 $rs = xx_query($sql, $con);
315 $row = xx_fetch_array ($rs);
316 $num_elements = $row["num_elements"];
317
318 // Calculate midpoint element
319 if ($num_elements > 0) $midpoint = ceil($num_elements / 2);
320 else $midpoint = 0;
321
322 if ($num_elements > 0) {
323
324 // Retrieve all elements on that page
325 $sql = "SELECT
326 e.element_id,
327 e.label,
328 r.resource_id,
329 r.title,
330 l.location_id,
331 l.location,
332 v.service_id,
333 v.service,
334 s.staff_id,
335 s.last_name,
336 s.first_name,
337 b.subject_id,
338 b.subject
339
340 FROM
341 page p
342 LEFT JOIN element e using (page_id)
343 LEFT JOIN resource r on e.resource_id = r.resource_id
344 LEFT JOIN location l on e.location_id = l.location_id
345 LEFT JOIN service v on e.service_id = v.service_id
346 LEFT JOIN staff s on e.staff_id = s.staff_id
347 LEFT JOIN subject b on e.subject_id = b.subject_id
348
349 WHERE
350 p.page_id = "
351 . $page_id
352 . " AND e.indent_level < 1 ORDER BY e.element_order";
353
354 $rs = xx_query($sql, $con);
355
356 // Build a general ToC anchor
357 printf("<a name=\"toc\"></a>\n");
358 printf("<b>Table of Contents:</b><br>\n");
359 printf("<table>\n");
360
361 // Build the (single) row
362 printf("<tr>\n");
363
364 // Populate the left cell
365 printf("<td valign=\"top\"><ul>\n");
366
367 $row_num = 0;
368
369 while ($row = xx_fetch_array ($rs)) {
370
371 // Check for the midpoint
372 if ($row_num == $midpoint && $wrap_toc == 1) {
373
374 // Close the ul tag & table cell
375 printf("</ul>\n");
376 printf("</td>\n");
377
378 // Start a new one
379 printf("<td valign=\"top\">\n");
380 printf("<ul>\n");
381
382 }
383
384 // General
385 $element_id = $row["element_id"];
386
387 // Resource
388 $resource_id = $row["resource_id"];
389 $title = $row["title"];
390
391 // Label/unique
392 $label = $row["label"];
393
394 // Location
395 $location_id = $row["location_id"];
396 $location = $row["location"];
397
398 // Service
399 $service_id = $row["service_id"];
400 $service = $row["service"];
401
402 // Staff
403 $staff_id = $row["staff_id"];
404 $last_name = $row["last_name"];
405 $first_name = $row["first_name"];
406
407 // Subject
408 $subject_id = $row["subject_id"];
409 $subject = $row["subject"];
410
411 // Determine what sort of element it is
412 $toc_label = "";
413 if ($resource_id > 0) $toc_label = $title;
414 else if (strlen($label) > 0) $toc_label = $label;
415 else if ($location_id > 0) $toc_label = $location;
416 else if ($service_id > 0) $toc_label = $service;
417 else if ($staff_id > 0) $toc_label = $first_name . " " . $last_name;
418 else if ($subject_id > 0) $toc_label = $subject;
419
420 // Last-minute error check
421 if (strlen($toc_label) > 0) printf("<li><a href=\"#toc%d\">%s</a></li>\n", $element_id, $toc_label);
422
423 $row_num++;
424
425 } // end elements
426
427 // Close things
428 printf("</ul>\n");
429 printf("</td></tr></table><br>\n");
430
431
432 } // at least one item on this page
433 }
434
435
436 /**********************************************************
437 Function: dropDownCoursesubSelected($con, $limit, $preselected)
438 Author: Paul Bramscher
439 Last Modified: 08.18.2003
440 ***********************************************************
441 Incoming:
442 $con Database connection string
443 $limit Initial limit to the result set
444 $preselected Incoming course subject to preselect
445 ***********************************************************
446 Outgoing:
447 None
448 ***********************************************************
449 Purpose:
450 Populates a drop-down box on an HTML form with select
451 statements. Note that only course subjects (designators)
452 which have associated and published CourseLib pages will
453 appear in the drop down box.
454 **********************************************************/
455 function dropDownCoursesubSelected($con, $limit, $preselected){
456
457
458 $sql = "SELECT DISTINCT s.coursesub
459 FROM coursesub s, course c, page p "
460 . $limit
461 . "
462 AND s.coursesub_id = c.coursesub_id
463 AND c.page_id = p.page_id
464 AND p.published = '1'
465 AND s.coursesub_id = c.coursesub_id "
466 . " ORDER BY s.coursesub";
467
468 /*
469 Use this SQL instead, if all distinct course designators, used or not,
470 would rather be displayed.
471
472
473 $sql = "SELECT DISTINCT s.coursesub FROM coursesub s, course c"
474 . $limit
475 . " AND s.coursesub_id = c.coursesub_id "
476 . " ORDER BY s.coursesub";
477 */
478
479
480 $rs = xx_query($sql, $con);
481 while ($row = xx_fetch_array ($rs)) {
482 $coursesub = $row["coursesub"];
483
484 printf("<option value = \"%s\"", $coursesub);
485 if ($coursesub == $preselected) printf(" selected ");
486 printf(">" . $coursesub . "</option>\n");
487 };
488 }
489
490
491 /**********************************************************
492 Function: dropDownFacultySelected($con, $limit, $preselected)
493 Author: Paul Bramscher
494 Last Modified: 08.18.2003
495 ***********************************************************
496 Incoming:
497 $con Database connection string
498 $limit Any WHERE clause
499 $preselected Incoming faculty person to preselect
500 ***********************************************************
501 Outgoing:
502 None
503 ***********************************************************
504 Purpose:
505 Populates a drop-down box on an HTML form with select
506 statements. The faculty are displayed only if they
507 (a) are currently teaching 1+ courselib courses and
508 (b) that course(s) is published.
509 **********************************************************/
510 function dropDownFacultySelected($con, $limit, $preselected){
511
512 $sql = "SELECT DISTINCT
513 f.faculty_id,
514 f.faculty_lastname,
515 f.faculty_firstname
516 FROM faculty f, course c, course_personnel cp, page p "
517 . $limit
518 . "
519 AND f.faculty_id = cp.faculty_id
520 AND cp.course_id = c.course_id
521 AND c.page_id = p.page_id
522 AND p.published = '1'"
523 . " ORDER BY f.faculty_lastname, f.faculty_firstname";
524
525 // printf("<!-- sql was: %s -->", $sql);
526
527 /*
528 Use this SQL instead, if all faculty, on published courselib pages or
529 not, would rather be displayed.
530
531
532 $sql = "SELECT * FROM faculty "
533 . $limit
534 . " ORDER BY faculty_lastname, faculty_firstname";
535 */
536
537 $rs = xx_query($sql, $con);
538 while ($row = xx_fetch_array ($rs)) {
539 $faculty_id = $row["faculty_id"];
540 $faculty_lastname = $row["faculty_lastname"];
541 $faculty_firstname = $row["faculty_firstname"];
542 $faculty_account = $row["faculty_account"];
543
544 // Make it look more friendly
545 if ($faculty_id == 1) $faculty = "(N/A)";
546 else {
547 $faculty = $faculty_lastname . ", " . $faculty_firstname;
548 }
549
550 printf("<option value = \"%d\"", $faculty_id);
551 if ($faculty_id == $preselected) printf(" selected ");
552 printf(">" . $faculty . "</option>\n");
553 };
554 }
555
556
557 /**********************************************************
558 Function: dropDownFieldOmit($con, $table, $field_display,
559 $field_value, $where)
560 Author: Paul Bramscher
561 Last Modified: 8.14.2002
562 ***********************************************************
563 Incoming:
564 $con Database connection string
565 $table Table in database to search
566 $field_display Select displayed to user
567 $field_value Actual value of the HTML tag
568 $where SQL criteria in the list to exlude
569 ***********************************************************
570 Outgoing:
571 None
572 ***********************************************************
573 Purpose:
574 Populates a drop-down box on an HTML form with select
575 options. They are ordered by the $field_display field.
576 Typically, $field_value is the primary key field. $where
577 can be used to filter out results.
578 **********************************************************/
579 function dropDownFieldOmit($con, $table, $field_display,
580 $field_value, $where){
581
582 $sql = "SELECT "
583 . $field_display
584 . ", "
585 . $field_value
586 . " FROM "
587 . $table
588 . " "
589 . $where
590 . " ORDER BY "
591 . $field_display;
592 $rs = xx_query($sql, $con);
593 while ($row = xx_fetch_array ($rs)) {
594 $field_display_item = $row[$field_display];
595 if (strlen($field_display_item) > 40) $field_display_item = substr($field_display_item, 0, 39) . "...";
596 $field_value_item = $row[$field_value];
597 printf("<option value = \"" . $field_value_item
598 . "\" >" . $field_display_item . "</option>\n");
599 };
600 }
601
602
603 /**********************************************************
604 Function: dropDownFieldSelected($con, $table, $field_display,
605 $field_value, $limit, $preselected)
606 Author: Paul Bramscher
607 Last Modified: 12.04.2002
608 ***********************************************************
609 Incoming:
610 $con Database connection string
611 $table Table in database to search
612 $field_display Select displayed to user
613 $field_value Actual value of the HTML tag
614 $preselected A selected $field_value
615 $limit A WHERE clause
616 ***********************************************************
617 Outgoing:
618 None
619 ***********************************************************
620 Purpose:
621 Populates a drop-down box on an HTML form with select
622 options. They are ordered by the $field_display field.
623 Typically, $field_value is the primary key field. The
624 parameter $preselected determines which (single) selection
625 is selected.
626 **********************************************************/
627 function dropDownFieldSelected($con, $table, $field_display,
628 $field_value, $limit, $preselected){
629
630 $sql = "SELECT "
631 . $field_display
632 . ", "
633 . $field_value
634 . " FROM "
635 . $table
636 . " "
637 . $limit
638 . " ORDER BY "
639 . $field_display;
640
641 // Debugging
642 //printf("sql was: %s<BR>", $sql);
643
644 $rs = xx_query($sql, $con);
645 while ($row = xx_fetch_array ($rs)) {
646 $field_display_item = $row[$field_display];
647 $field_value_item = $row[$field_value];
648 if (strlen($field_display_item) > 50) $field_display_item = substr($field_display_item, 0, 49) . "...";
649
650 printf("<option value = \"" . $field_value_item . "\" ");
651 if ($field_value_item == $preselected) printf (" selected");
652 printf(">" . $field_display_item . "</option>\n");
653 };
654 }
655
656
657 /**********************************************************
658 Function: existsRow
659 Author: Paul Bramscher
660 Last Modified: 12.09.2002
661 ***********************************************************
662 Incoming:
663 $con Database connection string
664 $table Table to search
665 $key_field Field against which to search
666 $key_id Limit for the where clause
667 ***********************************************************
668 Outgoing:
669 "1" if the row exists, "0" if not
670 ***********************************************************
671 Purpose:
672 Useful in performing delete and other operations to make
673 sure that a row entity exists matching the supplied key
674 before going any further.
675 **********************************************************/
676 function existsRow($con, $table, $key_field, $limit_id){
677 // Cast as integer to avoid future problems
678 $limit_id = (int) $limit_id;
679
680 // Build the sql
681 $sql = "SELECT "
682 . $key_field
683 . " FROM "
684 . $table
685 . " WHERE "
686 . $key_field
687 . "="
688 . $limit_id;
689
690 $rs = xx_query($sql, $con);
691 $rowcount = xx_num_rows($rs);
692 if ($rowcount >= 1){
693 $rowcount = 1;
694 }
695 else $rowcount = 0;
696
697 return $rowcount;
698 }
699
700
701 /**********************************************************
702 Function: locationList($con, $resource_id)
703 Author: Paul Bramscher
704 Last Modified: 07.02.2002
705 ***********************************************************
706 Incoming:
707 $con Database connection string
708 $resource_id Resource ID to check locations on
709 ***********************************************************
710 Outgoing:
711 None
712 ***********************************************************
713 Purpose:
714 Looks up location(s) for this resource
715 **********************************************************/
716 function locationList($con, $resource_id){
717
718 // Initialize
719 $locations = "";
720 $first = 1;
721
722 $sql = "SELECT location FROM location l, res_loc rl WHERE rl.resource_id = "
723 . $resource_id
724 . " AND rl.location_id = l.location_id ORDER BY location";
725
726 $rs = xx_query($sql, $con);
727 while ($row = xx_fetch_array ($rs)) {
728 $location = $row["location"];
729 if ($first == 1) {
730 $first = 0;
731 $locations = $location;
732 }
733 else $locations .= "; " . $location;
734 }
735
736 return $locations;
737 }
738
739
740 /**********************************************************
741 Function: lookupField($con, $table, $key_field, $key_value,
742 $desc_field)
743 Author: Paul Bramscher
744 Last Modified: 9.14.2000
745 ***********************************************************
746 Incoming:
747 $con Database connection string
748 $table Table in database to search
749 $key_field Name of field on which to lookup
750 $key_value Value to attempt lookup with
751 $desc_field Descriptive value to return
752 ***********************************************************
753 Outgoing:
754 A descriptive name for an ID number.
755 ***********************************************************
756 Purpose:
757 Performs a lookup, typically on an ID field, to retrieve a
758 user-friendly descriptive name to the page.
759 **********************************************************/
760 function lookupField($con, $table, $key_field, $key_value,
761 $desc_field){
762
763 $sql = "SELECT "
764 . $desc_field
765 . " FROM "
766 . $table
767 . " WHERE "
768 . $key_field
769 . "='"
770 . $key_value
771 . "'";
772 $rs = xx_query($sql, $con);
773 $row = xx_fetch_array ($rs);
774 if (xx_num_rows($rs) == 1) $result = $row[$desc_field];
775 else $result = "";
776
777 return $result;
778 }
779
780
781 /**********************************************************
782 Function: lookupStaff($con, $staff_id)
783 Author: Paul Bramscher
784 Last Modified: 7.22.2002
785 ***********************************************************
786 Incoming:
787 $con Database connection string
788 $staff_id Staff ID number to retrieve
789 ***********************************************************
790 Outgoing:
791 Staff name in {First Name} {Last Name} format.
792 ***********************************************************
793 Purpose:
794 Performs a lookup on staff ID to retrieve name.
795 **********************************************************/
796 function lookupStaff($con, $staff_id){
797
798 $sql = "SELECT first_name, last_name FROM staff WHERE staff_id = "
799 . $staff_id;
800 $rs = xx_query($sql, $con);
801 $row = xx_fetch_array ($rs);
802 $last_name = $row["last_name"];
803 $first_name = $row["first_name"];
804
805 $staff_name .= $first_name . " " . $last_name;
806
807 // Debugging
808 //printf("sql was: %s<BR>", $sql);
809
810 return $staff_name;
811 }
812
813
814 /**********************************************************
815 Function: pageLoadStats
816 Author: Paul Bramscher
817 Last Modified: 04.23.2003
818 ***********************************************************
819 Purpose:
820 Logs a statistical entry for a PageScribe/CourseLib page
821 load. Page id, date, and IP address are currently logged.
822 It would be relatively trivial to add other fields,
823 such as browser type, refer URL, etc. both to the database
824 and this function here. However, care must be taken so
825 that the database doesn't grow too large. Currently there
826 exists no automatic mechanism to purge or archive stats.
827 **********************************************************/
828 function pageLoadStats($con, $page_id){
829
830 // Add a row for page usage
831
832 // Fetch user ip
833 $user_ip = $GLOBALS["REMOTE_ADDR"];
834
835 // Do the stat stuff here
836 $sql = "INSERT INTO libstats.pagestats (
837 page_id,
838 visit_date,
839 user_ip) VALUES ("
840 . $page_id
841 . ", now(), '"
842 . $user_ip
843 . "')";
844
845 if (!xx_query($sql, $con)){
846 sql_err($con);
847 xx_query ("UNLOCK TABLES", $con);
848 bailout();
849 } // bad write
850 else {
851 xx_query("UNLOCK TABLES", $con);
852
853 } // good write to the pagestats table
854
855 }
856
857 /**********************************************************
858 Function: printAlphabet
859 Author: Paul Bramscher
860 Last Modified: 07.07.2003
861 ***********************************************************
862 Purpose:
863 Prints upper-case alphabet characters separated by the
864 specified separator character, wrapped with the specified
865 URL.
866 **********************************************************/
867 function printAlphabet($separator_char, $url) {
868
869 printf("<table class=\"strong\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
870 printf("<tr><td>\n");
871
872 for ($ascii_char = 65; $ascii_char <= 90; $ascii_char++) {
873 printf("<a href= \"%s?letter=%s\">%s</a>", $url,
874 chr($ascii_char), chr($ascii_char));
875 if ($ascii_char != 90) printf ("%s", $separator_char);
876 }
877
878 printf("</td></tr>\n");
879 printf("</table>\n");
880
881
882 }
883
884 /**********************************************************
885 Function: subLoadStats
886 Author: Paul Bramscher
887 Last Modified: 08.25.2003
888 ***********************************************************
889 Purpose:
890 Logs a statistical entry for a RQS page load. Subject id,
891 date, and IP address are currently logged. Note that
892 both default (screen) and printer-friendly loads for the
893 same subject are logged with this function.
894 No differentiation between them is made, only between
895 subjects
896 **********************************************************/
897 function subLoadStats($con, $subject_id){
898
899 // Add a row for page usage
900
901 // Fetch user ip
902 $user_ip = $GLOBALS["REMOTE_ADDR"];
903
904 // Do the stat stuff here
905 $sql = "INSERT INTO libstats.substats (
906 subject_id,
907 visit_date,
908 user_ip) VALUES ("
909 . $subject_id
910 . ", now(), '"
911 . $user_ip
912 . "')";
913
914 if (!xx_query($sql, $con)){
915 sql_err($con);
916 xx_query ("UNLOCK TABLES", $con);
917 bailout();
918 } // bad write
919 else {
920 xx_query("UNLOCK TABLES", $con);
921
922 } // good write to the substats table
923
924 }
925
926 /**********************************************************
927 Function: textOutHTML
928 Author: Paul Bramscher
929 Last Modified: 04.21.2003
930 ***********************************************************
931 Purpose:
932 This function will help render some data more presentable
933 on HTML forms, particularly pre-setting form field values
934 which might contain a double-quote. This function may also
935 be extended to cover other cases.
936 **********************************************************/
937 function textOutHTML($incoming) {
938
939 // Replace double quotes with the HTML &quot;
940 $outgoing = ereg_replace("\"","&quot;",$incoming);
941
942 return $outgoing;
943
944 }
945
946
947 /**********************************************************
948 Function: textSearchmySQL
949 Author: Paul Bramscher
950 Last Modified: 05.20.2003
951 ***********************************************************
952 Purpose:
953 This function is to be used on HTML search forms
954 that might contain a single quote. They are escaped with
955 a backslash. Any other potential SELECT filtering can
956 happen here.
957 **********************************************************/
958 function textSearchmySQL($incoming) {
959
960 // Replace single quotes with two single quotes
961 $outgoing = ereg_replace("'","\'",$incoming);
962
963 return $outgoing;
964
965 }
966 ?>

  ViewVC Help
Powered by ViewVC 1.1.26