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