Gentoo Archives: gentoo-commits

From: Brian Evans <grknight@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/bouncer:master commit in: docs/mirror/forms/, php/inc/, php/images/, docs/mirror/admin/, docs/mirror/lib/, ...
Date: Tue, 30 Jan 2018 18:16:17
Message-Id: 1517259935.3c56284f7fe1926f6bf6ebd97ec72805d94df1e4.grknight@gentoo
1 commit: 3c56284f7fe1926f6bf6ebd97ec72805d94df1e4
2 Author: Brian Evans <grknight <AT> gentoo <DOT> org>
3 AuthorDate: Mon Jan 29 21:04:13 2018 +0000
4 Commit: Brian Evans <grknight <AT> gentoo <DOT> org>
5 CommitDate: Mon Jan 29 21:05:35 2018 +0000
6 URL: https://gitweb.gentoo.org/proj/bouncer.git/commit/?id=3c56284f
7
8 Import existing bouncer.g.o into git
9
10 .gitignore | 2 +
11 README | 69 ++
12 docs/blank.html | 13 +
13 docs/classtrees_mirror.html | 20 +
14 docs/elementindex.html | 1193 ++++++++++++++++++++
15 docs/elementindex_mirror.html | 1190 +++++++++++++++++++
16 docs/errors.html | 91 ++
17 docs/index.html | 24 +
18 docs/li_mirror.html | 231 ++++
19 docs/media/banner.css | 32 +
20 docs/media/stylesheet.css | 144 +++
21 docs/mirror/_php_cfg_admin_init_php.html | 89 ++
22 docs/mirror/_php_index_php.html | 75 ++
23 docs/mirror/admin/_php_admin_index_php.html | 145 +++
24 docs/mirror/admin/_php_admin_locations_php.html | 145 +++
25 docs/mirror/admin/_php_admin_login_php.html | 103 ++
26 docs/mirror/admin/_php_admin_logout_php.html | 75 ++
27 docs/mirror/admin/_php_admin_mstats_php.html | 89 ++
28 docs/mirror/admin/_php_admin_os_php.html | 145 +++
29 docs/mirror/admin/_php_admin_products_php.html | 145 +++
30 docs/mirror/admin/_php_admin_pstats_php.html | 89 ++
31 docs/mirror/admin/_php_admin_regions_php.html | 145 +++
32 docs/mirror/admin/_php_admin_users_php.html | 145 +++
33 docs/mirror/cfg/_php_cfg_admin_init_php.html | 89 ++
34 docs/mirror/cfg/_php_cfg_config-dist_php.html | 201 ++++
35 docs/mirror/cfg/_php_cfg_init_php.html | 117 ++
36 docs/mirror/forms/_php_inc_forms_location_php.html | 35 +
37 docs/mirror/forms/_php_inc_forms_mirror_php.html | 35 +
38 docs/mirror/forms/_php_inc_forms_os_php.html | 35 +
39 docs/mirror/forms/_php_inc_forms_product_php.html | 35 +
40 docs/mirror/forms/_php_inc_forms_region_php.html | 35 +
41 docs/mirror/forms/_php_inc_forms_user_php.html | 35 +
42 docs/mirror/inc/_php_inc_admin_nav_php.html | 35 +
43 docs/mirror/inc/_php_inc_footer_php.html | 35 +
44 docs/mirror/inc/_php_inc_header_php.html | 61 +
45 docs/mirror/lib/_php_lib_auth_php.html | 150 +++
46 docs/mirror/lib/_php_lib_db_php.html | 527 +++++++++
47 docs/mirror/lib/_php_lib_forms_php.html | 942 ++++++++++++++++
48 docs/mirror/lib/_php_lib_geo_php.html | 204 ++++
49 docs/mirror/lib/_php_lib_list_php.html | 362 ++++++
50 docs/mirror/lib/_php_lib_mirror_php.html | 1112 ++++++++++++++++++
51 docs/mirror/lib/_php_lib_util_php.html | 369 ++++++
52 docs/mirror/pub/_php_index_php.html | 75 ++
53 docs/packages.html | 30 +
54 docs/ric_README.html | 88 ++
55 docs/todolist.html | 25 +
56 php/admin/index.php | 111 ++
57 php/admin/locations.php | 100 ++
58 php/admin/login.php | 42 +
59 php/admin/logout.php | 12 +
60 php/admin/lstats.php | 59 +
61 php/admin/mirror-list.php | 74 ++
62 php/admin/mstats.php | 32 +
63 php/admin/os.php | 100 ++
64 php/admin/products.php | 101 ++
65 php/admin/pstats.php | 29 +
66 php/admin/regions.php | 101 ++
67 php/admin/users.php | 104 ++
68 php/cfg/admin_init.php | 15 +
69 php/cfg/config-dist.php | 18 +
70 php/cfg/init.php | 18 +
71 php/css/print.css | 0
72 php/css/screen.css | 84 ++
73 php/images/gridtest.gif | Bin 0 -> 3199 bytes
74 php/images/gtop-www.jpg | Bin 0 -> 4551 bytes
75 php/img/down.gif | Bin 0 -> 57 bytes
76 php/img/up.gif | Bin 0 -> 57 bytes
77 php/inc/admin_nav.php | 27 +
78 php/inc/footer.php | 24 +
79 php/inc/forms/location.php | 23 +
80 php/inc/forms/mirror.php | 27 +
81 php/inc/forms/os.php | 16 +
82 php/inc/forms/product.php | 16 +
83 php/inc/forms/region.php | 16 +
84 php/inc/forms/user.php | 37 +
85 php/inc/header.php | 55 +
86 php/inc/nav.php | 0
87 php/index-list.php | 83 ++
88 php/index.php | 75 ++
89 php/index.php.orig | 79 ++
90 php/lib/auth.php | 75 ++
91 php/lib/csv.php | 216 ++++
92 php/lib/db.php | 298 +++++
93 php/lib/db.php.orig | 306 +++++
94 php/lib/forms.php | 659 +++++++++++
95 php/lib/geo.php | 69 ++
96 php/lib/list.php | 391 +++++++
97 php/lib/mirror.php | 531 +++++++++
98 php/lib/util.php | 322 ++++++
99 php/mozilla.js | 22 +
100 php/rss/download-counts.php | 55 +
101 91 files changed, 13453 insertions(+)
102
103 diff --git a/.gitignore b/.gitignore
104 new file mode 100644
105 index 0000000..3a7b40c
106 --- /dev/null
107 +++ b/.gitignore
108 @@ -0,0 +1,2 @@
109 +php/cfg/config.php
110 +php/cfg/config.php.orig
111
112 diff --git a/README b/README
113 new file mode 100644
114 index 0000000..ec400f0
115 --- /dev/null
116 +++ b/README
117 @@ -0,0 +1,69 @@
118 +-----------------------
119 +Mirror Project
120 +Open Source Lab
121 +Oregon State University
122 +-----------------------
123 +*Coding Standards
124 +
125 + http://pear.php.net/manual/en/standards.php
126 +
127 +*PHP Documentation
128 +
129 + PHP documentation generated by PHP Documentor can be found in /docs. View index.html using file://.
130 +
131 +*Configuration
132 +
133 + Application configuration is done using define() calls. The configuration script is located in:
134 + cfg/config-dist.php
135 +
136 + Copy this config file to cfg/config.php and the init script (cfg/init.php) will process it as intended.
137 +
138 + !! DO NOT store password information in config-dist.php and checkin !!
139 +
140 +*Apache
141 +
142 + Don't forget to set up raw logs:
143 + ErrorLog "|/usr/bin/cronolog /var/www/download/logs/%Y%m%d/error.log"
144 + CustomLog "|/usr/bin/cronolog /var/www/download/logs/%Y%m%d/access.log"
145 +
146 + DB-based logging is configurable by enabling the LOGGING constant in config.php.
147 +
148 +*DB
149 +
150 + DB information is stored in:
151 + cfg/mirror.sql
152 +
153 + DB connections are persistent (msyql_pconnect()). For more info view the PHP manual:
154 + http://php.oregonstate.edu/mysql_pconnect
155 + http://php.oregonstate.edu/manual/en/features.persistent-connections.php
156 +
157 + The DB server should optimally NOT be localhost (save cycles).
158 +
159 +*Questions
160 +
161 + Send questions and rants to <mike dot morgan at oregonstate dot edu>
162 +
163 +*Output Buffering
164 +
165 + This application uses output buffering.
166 +
167 + ob_start() is called in inc/header.php.
168 + ob_end_flush() is called in inc/footer.php.
169 +
170 + No browser output (echo, print, etc.) should _ever_ happen outside of these boundaries.
171 +
172 +*Permissions
173 +
174 + The project directory should be readable by the web server.
175 +
176 +*Benchmarking
177 +
178 + !! ALL benchmark referencing /index.php should be done using ?print=true. !!
179 + !! This disables the actual redirects and avoids spamming mirrors. !!
180 +
181 +*Developers
182 +
183 + Scott Kveton <scott at osuosl dot org>
184 + Mike Morgan <mike dot morgan at oregonstate dot edu>
185 + Alex Polvi <polvi at osuosl dot org>
186 + Danny Robert <robert at osuosl dot org>
187
188 diff --git a/docs/blank.html b/docs/blank.html
189 new file mode 100644
190 index 0000000..f83c9a7
191 --- /dev/null
192 +++ b/docs/blank.html
193 @@ -0,0 +1,13 @@
194 +<html>
195 +<head>
196 + <title>mirror</title>
197 + <link rel="stylesheet" href="media/stylesheet.css" />
198 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
199 +</head>
200 +<body>
201 +<div align="center"><h1>mirror</h1></div>
202 +<b>Welcome to default!</b><br />
203 +<br />
204 +This documentation was generated by <a href="http://www.phpdoc.org">phpDocumentor v1.3.0RC3</a><br />
205 +</body>
206 +</html>
207 \ No newline at end of file
208
209 diff --git a/docs/classtrees_mirror.html b/docs/classtrees_mirror.html
210 new file mode 100644
211 index 0000000..19a95cb
212 --- /dev/null
213 +++ b/docs/classtrees_mirror.html
214 @@ -0,0 +1,20 @@
215 +<?xml version="1.0" encoding="iso-8859-1"?>
216 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
217 + <html xmlns="http://www.w3.org/1999/xhtml">
218 + <head>
219 + <!-- template designed by Marco Von Ballmoos -->
220 + <title></title>
221 + <link rel="stylesheet" href="media/stylesheet.css" />
222 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
223 + </head>
224 + <body>
225 +
226 +<!-- Start of Class Data -->
227 +<H2>
228 +
229 +</H2>
230 + <p class="notes" id="credit">
231 + Documentation generated on Mon, 8 Nov 2004 13:43:03 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
232 + </p>
233 + </body>
234 +</html>
235 \ No newline at end of file
236
237 diff --git a/docs/elementindex.html b/docs/elementindex.html
238 new file mode 100644
239 index 0000000..9b40eba
240 --- /dev/null
241 +++ b/docs/elementindex.html
242 @@ -0,0 +1,1193 @@
243 +<?xml version="1.0" encoding="iso-8859-1"?>
244 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
245 + <html xmlns="http://www.w3.org/1999/xhtml">
246 + <head>
247 + <!-- template designed by Marco Von Ballmoos -->
248 + <title></title>
249 + <link rel="stylesheet" href="media/stylesheet.css" />
250 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
251 + </head>
252 + <body>
253 +
254 <a name="top"></a>
255 +<h2>Full index</h2>
256 +<h3>Package indexes</h3>
257 +<ul>
258 + <li><a href="elementindex_mirror.html">mirror</a></li>
259 +</ul>
260 +<br />
261 +<div class="index-letter-menu">
262 + <a class="index-letter" href="elementindex.html#a">a</a>
263 + <a class="index-letter" href="elementindex.html#c">c</a>
264 + <a class="index-letter" href="elementindex.html#d">d</a>
265 + <a class="index-letter" href="elementindex.html#e">e</a>
266 + <a class="index-letter" href="elementindex.html#f">f</a>
267 + <a class="index-letter" href="elementindex.html#g">g</a>
268 + <a class="index-letter" href="elementindex.html#h">h</a>
269 + <a class="index-letter" href="elementindex.html#i">i</a>
270 + <a class="index-letter" href="elementindex.html#l">l</a>
271 + <a class="index-letter" href="elementindex.html#m">m</a>
272 + <a class="index-letter" href="elementindex.html#o">o</a>
273 + <a class="index-letter" href="elementindex.html#p">p</a>
274 + <a class="index-letter" href="elementindex.html#r">r</a>
275 + <a class="index-letter" href="elementindex.html#s">s</a>
276 + <a class="index-letter" href="elementindex.html#u">u</a>
277 + <a class="index-letter" href="elementindex.html#w">w</a>
278 +</div>
279 +
280 + <a name="a"></a>
281 + <div class="index-letter-section">
282 + <div style="float: left" class="index-letter-title">a</div>
283 + <div style="float: right"><a href="#top">top</a></div>
284 + <div style="clear: both"></div>
285 + </div>
286 + <dl>
287 + <dt class="field">
288 + <span class="method-title">array_days</span>
289 + </dt>
290 + <dd class="index-item-body">
291 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionarray_days">array_days()</a> in forms.php</div>
292 + <div class="index-item-description">Get calendar days in array format.</div>
293 + </dd>
294 + <dt class="field">
295 + <span class="method-title">array_hours</span>
296 + </dt>
297 + <dd class="index-item-body">
298 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionarray_hours">array_hours()</a> in forms.php</div>
299 + <div class="index-item-description">Get calendar hours in array format.</div>
300 + </dd>
301 + <dt class="field">
302 + <span class="method-title">array_minutes</span>
303 + </dt>
304 + <dd class="index-item-body">
305 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionarray_minutes">array_minutes()</a> in forms.php</div>
306 + <div class="index-item-description">Get array of minutes.</div>
307 + </dd>
308 + <dt class="field">
309 + <span class="method-title">array_months</span>
310 + </dt>
311 + <dd class="index-item-body">
312 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionarray_months">array_months()</a> in forms.php</div>
313 + <div class="index-item-description">Get calendar months in array format.</div>
314 + </dd>
315 + <dt class="field">
316 + <span class="method-title">array_order_by</span>
317 + </dt>
318 + <dd class="index-item-body">
319 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionarray_order_by">array_order_by()</a> in util.php</div>
320 + <div class="index-item-description">Sort a two dimensional array based on a 'column' key</div>
321 + </dd>
322 + <dt class="field">
323 + <span class="method-title">array_states</span>
324 + </dt>
325 + <dd class="index-item-body">
326 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionarray_states">array_states()</a> in forms.php</div>
327 + <div class="index-item-description">Get array of states.</div>
328 + </dd>
329 + <dt class="field">
330 + <span class="method-title">array_years</span>
331 + </dt>
332 + <dd class="index-item-body">
333 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionarray_years">array_years()</a> in forms.php</div>
334 + <div class="index-item-description">Get calendar years in array format.</div>
335 + </dd>
336 + <dt class="field">
337 + <span class="method-title">auth_create_session</span>
338 + </dt>
339 + <dd class="index-item-body">
340 + <div class="index-item-details"><a href="mirror/lib/_php_lib_auth_php.html#functionauth_create_session">auth_create_session()</a> in auth.php</div>
341 + <div class="index-item-description">Start a valid session.</div>
342 + </dd>
343 + <dt class="field">
344 + <span class="method-title">auth_is_valid_session</span>
345 + </dt>
346 + <dd class="index-item-body">
347 + <div class="index-item-details"><a href="mirror/lib/_php_lib_auth_php.html#functionauth_is_valid_session">auth_is_valid_session()</a> in auth.php</div>
348 + <div class="index-item-description">Check admin session against sessions table in database.</div>
349 + </dd>
350 + <dt class="field">
351 + <span class="method-title">auth_logout</span>
352 + </dt>
353 + <dd class="index-item-body">
354 + <div class="index-item-details"><a href="mirror/lib/_php_lib_auth_php.html#functionauth_logout">auth_logout()</a> in auth.php</div>
355 + <div class="index-item-description">Logout.</div>
356 + </dd>
357 + <dt class="field">
358 + <span class="method-title">auth_mysql</span>
359 + </dt>
360 + <dd class="index-item-body">
361 + <div class="index-item-details"><a href="mirror/lib/_php_lib_auth_php.html#functionauth_mysql">auth_mysql()</a> in auth.php</div>
362 + <div class="index-item-description">Authentication a user.</div>
363 + </dd>
364 + <dt class="field">
365 + <span class="include-title">admin_init.php</span>
366 + </dt>
367 + <dd class="index-item-body">
368 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_admin_init_php.html">admin_init.php</a> in admin_init.php</div>
369 + </dd>
370 + <dt class="field">
371 + <span class="include-title">admin_nav.php</span>
372 + </dt>
373 + <dd class="index-item-body">
374 + <div class="index-item-details"><a href="mirror/inc/_php_inc_admin_nav_php.html">admin_nav.php</a> in admin_nav.php</div>
375 + </dd>
376 + <dt class="field">
377 + <span class="include-title">auth.php</span>
378 + </dt>
379 + <dd class="index-item-body">
380 + <div class="index-item-details"><a href="mirror/lib/_php_lib_auth_php.html">auth.php</a> in auth.php</div>
381 + </dd>
382 + </dl>
383 + <a name="c"></a>
384 + <div class="index-letter-section">
385 + <div style="float: left" class="index-letter-title">c</div>
386 + <div style="float: right"><a href="#top">top</a></div>
387 + <div style="clear: both"></div>
388 + </div>
389 + <dl>
390 + <dt class="field">
391 + <span class="method-title">clean_in</span>
392 + </dt>
393 + <dd class="index-item-body">
394 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionclean_in">clean_in()</a> in forms.php</div>
395 + <div class="index-item-description">Cleans a string or an array of strings for DB input.</div>
396 + </dd>
397 + <dt class="field">
398 + <span class="method-title">clean_out</span>
399 + </dt>
400 + <dd class="index-item-body">
401 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionclean_out">clean_out()</a> in forms.php</div>
402 + <div class="index-item-description">Cleans a string or an array of strings for HTML presentation.</div>
403 + </dd>
404 + <dt class="field">
405 + <span class="include-title">config-dist.php</span>
406 + </dt>
407 + <dd class="index-item-body">
408 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html">config-dist.php</a> in config-dist.php</div>
409 + </dd>
410 + </dl>
411 + <a name="d"></a>
412 + <div class="index-letter-section">
413 + <div style="float: left" class="index-letter-title">d</div>
414 + <div style="float: right"><a href="#top">top</a></div>
415 + <div style="clear: both"></div>
416 + </div>
417 + <dl>
418 + <dt class="field">
419 + <span class="const-title">DBHOST</span>
420 + </dt>
421 + <dd class="index-item-body">
422 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineDBHOST">DBHOST</a> in config-dist.php</div>
423 + </dd>
424 + <dt class="field">
425 + <span class="const-title">DBNAME</span>
426 + </dt>
427 + <dd class="index-item-body">
428 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineDBNAME">DBNAME</a> in config-dist.php</div>
429 + </dd>
430 + <dt class="field">
431 + <span class="const-title">DBPASS</span>
432 + </dt>
433 + <dd class="index-item-body">
434 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineDBPASS">DBPASS</a> in config-dist.php</div>
435 + </dd>
436 + <dt class="field">
437 + <span class="const-title">DBUSER</span>
438 + </dt>
439 + <dd class="index-item-body">
440 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineDBUSER">DBUSER</a> in config-dist.php</div>
441 + </dd>
442 + <dt class="field">
443 + <span class="method-title">db_close</span>
444 + </dt>
445 + <dd class="index-item-body">
446 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_close">db_close()</a> in db.php</div>
447 + <div class="index-item-description">Close the db connection. If a dbh is not specified, assume the last opened link.</div>
448 + </dd>
449 + <dt class="field">
450 + <span class="method-title">db_connect</span>
451 + </dt>
452 + <dd class="index-item-body">
453 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_connect">db_connect()</a> in db.php</div>
454 + <div class="index-item-description">Connect to a MySQL database server.</div>
455 + </dd>
456 + <dt class="field">
457 + <span class="method-title">db_fetch</span>
458 + </dt>
459 + <dd class="index-item-body">
460 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_fetch">db_fetch()</a> in db.php</div>
461 + <div class="index-item-description">Fetch a row as an array from a result.</div>
462 + </dd>
463 + <dt class="field">
464 + <span class="method-title">db_fieldnames</span>
465 + </dt>
466 + <dd class="index-item-body">
467 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_fieldnames">db_fieldnames()</a> in db.php</div>
468 + <div class="index-item-description">Get all of the fieldnames for the specified table.</div>
469 + </dd>
470 + <dt class="field">
471 + <span class="method-title">db_get</span>
472 + </dt>
473 + <dd class="index-item-body">
474 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_get">db_get()</a> in db.php</div>
475 + <div class="index-item-description">Fetch an array based on a query.</div>
476 + </dd>
477 + <dt class="field">
478 + <span class="method-title">db_get_one</span>
479 + </dt>
480 + <dd class="index-item-body">
481 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_get_one">db_get_one()</a> in db.php</div>
482 + <div class="index-item-description">Get one record.</div>
483 + </dd>
484 + <dt class="field">
485 + <span class="method-title">db_get_to_options</span>
486 + </dt>
487 + <dd class="index-item-body">
488 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functiondb_get_to_options">db_get_to_options()</a> in forms.php</div>
489 + <div class="index-item-description">Take a db_get result and return an array of options.</div>
490 + </dd>
491 + <dt class="field">
492 + <span class="method-title">db_insert_id</span>
493 + </dt>
494 + <dd class="index-item-body">
495 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_insert_id">db_insert_id()</a> in db.php</div>
496 + <div class="index-item-description">Since PHP's mysql_insert_id() sometimes throws an error, this is the replacement</div>
497 + </dd>
498 + <dt class="field">
499 + <span class="method-title">db_makeinsert</span>
500 + </dt>
501 + <dd class="index-item-body">
502 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_makeinsert">db_makeinsert()</a> in db.php</div>
503 + <div class="index-item-description">Create a MySQL INSERT statement based on $_POST array generated by form submission.</div>
504 + </dd>
505 + <dt class="field">
506 + <span class="method-title">db_makereplace</span>
507 + </dt>
508 + <dd class="index-item-body">
509 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_makereplace">db_makereplace()</a> in db.php</div>
510 + <div class="index-item-description">Create a MySQL REPLACE statement based on $_POST array generated by form submission.</div>
511 + </dd>
512 + <dt class="field">
513 + <span class="method-title">db_makeupdate</span>
514 + </dt>
515 + <dd class="index-item-body">
516 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_makeupdate">db_makeupdate()</a> in db.php</div>
517 + <div class="index-item-description">Create a MySQL UPDATE statement based on $_POST array generated by form submission.</div>
518 + </dd>
519 + <dt class="field">
520 + <span class="method-title">db_name_to_id</span>
521 + </dt>
522 + <dd class="index-item-body">
523 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_name_to_id">db_name_to_id()</a> in db.php</div>
524 + <div class="index-item-description">Get an ID based on name.</div>
525 + </dd>
526 + <dt class="field">
527 + <span class="method-title">db_numrows</span>
528 + </dt>
529 + <dd class="index-item-body">
530 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_numrows">db_numrows()</a> in db.php</div>
531 + <div class="index-item-description">Determine number of rows in result.</div>
532 + </dd>
533 + <dt class="field">
534 + <span class="method-title">db_query</span>
535 + </dt>
536 + <dd class="index-item-body">
537 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_query">db_query()</a> in db.php</div>
538 + <div class="index-item-description">Execute a MySQL query.</div>
539 + </dd>
540 + <dt class="field">
541 + <span class="method-title">db_select</span>
542 + </dt>
543 + <dd class="index-item-body">
544 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_select">db_select()</a> in db.php</div>
545 + <div class="index-item-description">Select database.</div>
546 + </dd>
547 + <dt class="field">
548 + <span class="method-title">db_toggle_bool</span>
549 + </dt>
550 + <dd class="index-item-body">
551 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_toggle_bool">db_toggle_bool()</a> in db.php</div>
552 + <div class="index-item-description">Sets enum booleans to their opposite</div>
553 + </dd>
554 + <dt class="field">
555 + <span class="method-title">debug_r</span>
556 + </dt>
557 + <dd class="index-item-body">
558 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functiondebug_r">debug_r()</a> in util.php</div>
559 + <div class="index-item-description">Print out an varible enclosed by &amp;lt;pre&amp;gt; tags</div>
560 + </dd>
561 + <dt class="field">
562 + <span class="include-title">db.php</span>
563 + </dt>
564 + <dd class="index-item-body">
565 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html">db.php</a> in db.php</div>
566 + </dd>
567 + </dl>
568 + <a name="e"></a>
569 + <div class="index-letter-section">
570 + <div style="float: left" class="index-letter-title">e</div>
571 + <div style="float: right"><a href="#top">top</a></div>
572 + <div style="clear: both"></div>
573 + </div>
574 + <dl>
575 + <dt class="field">
576 + <span class="method-title">emptify_in_array</span>
577 + </dt>
578 + <dd class="index-item-body">
579 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionemptify_in_array">emptify_in_array()</a> in util.php</div>
580 + <div class="index-item-description">This recursive function empty values in an 'multi-dimensional' array.</div>
581 + </dd>
582 + </dl>
583 + <a name="f"></a>
584 + <div class="index-letter-section">
585 + <div style="float: left" class="index-letter-title">f</div>
586 + <div style="float: right"><a href="#top">top</a></div>
587 + <div style="clear: both"></div>
588 + </div>
589 + <dl>
590 + <dt class="field">
591 + <span class="const-title">FILEPATH</span>
592 + </dt>
593 + <dd class="index-item-body">
594 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineFILEPATH">FILEPATH</a> in config-dist.php</div>
595 + </dd>
596 + <dt class="field">
597 + <span class="const-title">FOOTER</span>
598 + </dt>
599 + <dd class="index-item-body">
600 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineFOOTER">FOOTER</a> in config-dist.php</div>
601 + </dd>
602 + <dt class="field">
603 + <span class="method-title">form_array_fix_dates</span>
604 + </dt>
605 + <dd class="index-item-body">
606 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_array_fix_dates">form_array_fix_dates()</a> in forms.php</div>
607 + <div class="index-item-description">Fix dates for form display, or proper db entry</div>
608 + </dd>
609 + <dt class="field">
610 + <span class="method-title">form_array_get_date</span>
611 + </dt>
612 + <dd class="index-item-body">
613 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_array_get_date">form_array_get_date()</a> in forms.php</div>
614 + <div class="index-item-description">Get put a date back together after a POST.</div>
615 + </dd>
616 + <dt class="field">
617 + <span class="method-title">form_array_get_datetime</span>
618 + </dt>
619 + <dd class="index-item-body">
620 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_array_get_datetime">form_array_get_datetime()</a> in forms.php</div>
621 + <div class="index-item-description">Get put a datetime back together after a POST.</div>
622 + </dd>
623 + <dt class="field">
624 + <span class="method-title">form_checkbox</span>
625 + </dt>
626 + <dd class="index-item-body">
627 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_checkbox">form_checkbox()</a> in forms.php</div>
628 + <div class="index-item-description">Writes a checkbox input.</div>
629 + </dd>
630 + <dt class="field">
631 + <span class="method-title">form_end</span>
632 + </dt>
633 + <dd class="index-item-body">
634 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_end">form_end()</a> in forms.php</div>
635 + <div class="index-item-description">Writes the ending form tag.</div>
636 + </dd>
637 + <dt class="field">
638 + <span class="method-title">form_hidden</span>
639 + </dt>
640 + <dd class="index-item-body">
641 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_hidden">form_hidden()</a> in forms.php</div>
642 + <div class="index-item-description">Writes a hidden field.</div>
643 + </dd>
644 + <dt class="field">
645 + <span class="method-title">form_label</span>
646 + </dt>
647 + <dd class="index-item-body">
648 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_label">form_label()</a> in forms.php</div>
649 + <div class="index-item-description">Writes a form input label.</div>
650 + </dd>
651 + <dt class="field">
652 + <span class="method-title">form_password</span>
653 + </dt>
654 + <dd class="index-item-body">
655 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_password">form_password()</a> in forms.php</div>
656 + <div class="index-item-description">Writes a password input.</div>
657 + </dd>
658 + <dt class="field">
659 + <span class="method-title">form_radio</span>
660 + </dt>
661 + <dd class="index-item-body">
662 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_radio">form_radio()</a> in forms.php</div>
663 + <div class="index-item-description">Writes a radio input.</div>
664 + </dd>
665 + <dt class="field">
666 + <span class="method-title">form_reset</span>
667 + </dt>
668 + <dd class="index-item-body">
669 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_reset">form_reset()</a> in forms.php</div>
670 + <div class="index-item-description">Writes a reset input.</div>
671 + </dd>
672 + <dt class="field">
673 + <span class="method-title">form_select</span>
674 + </dt>
675 + <dd class="index-item-body">
676 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_select">form_select()</a> in forms.php</div>
677 + <div class="index-item-description">Writes a select list with options.</div>
678 + </dd>
679 + <dt class="field">
680 + <span class="method-title">form_start</span>
681 + </dt>
682 + <dd class="index-item-body">
683 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_start">form_start()</a> in forms.php</div>
684 + <div class="index-item-description">Writes the beginning form tag.</div>
685 + </dd>
686 + <dt class="field">
687 + <span class="method-title">form_submit</span>
688 + </dt>
689 + <dd class="index-item-body">
690 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_submit">form_submit()</a> in forms.php</div>
691 + <div class="index-item-description">Writes a submit input.</div>
692 + </dd>
693 + <dt class="field">
694 + <span class="method-title">form_text</span>
695 + </dt>
696 + <dd class="index-item-body">
697 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_text">form_text()</a> in forms.php</div>
698 + <div class="index-item-description">Writes a text input.</div>
699 + </dd>
700 + <dt class="field">
701 + <span class="method-title">form_textarea</span>
702 + </dt>
703 + <dd class="index-item-body">
704 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_textarea">form_textarea()</a> in forms.php</div>
705 + <div class="index-item-description">Writes a textarea</div>
706 + </dd>
707 + <dt class="field">
708 + <span class="include-title">footer.php</span>
709 + </dt>
710 + <dd class="index-item-body">
711 + <div class="index-item-details"><a href="mirror/inc/_php_inc_footer_php.html">footer.php</a> in footer.php</div>
712 + </dd>
713 + <dt class="field">
714 + <span class="include-title">forms.php</span>
715 + </dt>
716 + <dd class="index-item-body">
717 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html">forms.php</a> in forms.php</div>
718 + </dd>
719 + </dl>
720 + <a name="g"></a>
721 + <div class="index-letter-section">
722 + <div style="float: left" class="index-letter-title">g</div>
723 + <div style="float: right"><a href="#top">top</a></div>
724 + <div style="clear: both"></div>
725 + </div>
726 + <dl>
727 + <dt class="field">
728 + <span class="method-title">geo_get_coordinates</span>
729 + </dt>
730 + <dd class="index-item-body">
731 + <div class="index-item-details"><a href="mirror/lib/_php_lib_geo_php.html#functiongeo_get_coordinates">geo_get_coordinates()</a> in geo.php</div>
732 + <div class="index-item-description">Get longitude and latitude of an IP.</div>
733 + </dd>
734 + <dt class="field">
735 + <span class="method-title">geo_get_country</span>
736 + </dt>
737 + <dd class="index-item-body">
738 + <div class="index-item-details"><a href="mirror/lib/_php_lib_geo_php.html#functiongeo_get_country">geo_get_country()</a> in geo.php</div>
739 + <div class="index-item-description">Get country of an IP.</div>
740 + </dd>
741 + <dt class="field">
742 + <span class="method-title">geo_get_distance</span>
743 + </dt>
744 + <dd class="index-item-body">
745 + <div class="index-item-details"><a href="mirror/lib/_php_lib_geo_php.html#functiongeo_get_distance">geo_get_distance()</a> in geo.php</div>
746 + <div class="index-item-description">Calculate the distance between two geo points.</div>
747 + </dd>
748 + <dt class="field">
749 + <span class="method-title">geo_get_record</span>
750 + </dt>
751 + <dd class="index-item-body">
752 + <div class="index-item-details"><a href="mirror/lib/_php_lib_geo_php.html#functiongeo_get_record">geo_get_record()</a> in geo.php</div>
753 + <div class="index-item-description">Get complete record based on IP.</div>
754 + </dd>
755 + <dt class="field">
756 + <span class="method-title">geo_query</span>
757 + </dt>
758 + <dd class="index-item-body">
759 + <div class="index-item-details"><a href="mirror/lib/_php_lib_geo_php.html#functiongeo_query">geo_query()</a> in geo.php</div>
760 + <div class="index-item-description">Query NetGeo based on API and parse results.</div>
761 + </dd>
762 + <dt class="field">
763 + <span class="method-title">get_order</span>
764 + </dt>
765 + <dd class="index-item-body">
766 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionget_order">get_order()</a> in list.php</div>
767 + <div class="index-item-description">Determine current sort order.</div>
768 + </dd>
769 + <dt class="field">
770 + <span class="method-title">get_orderby</span>
771 + </dt>
772 + <dd class="index-item-body">
773 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionget_orderby">get_orderby()</a> in list.php</div>
774 + <div class="index-item-description">Determine whether or not list is currently sorted.</div>
775 + </dd>
776 + <dt class="field">
777 + <span class="include-title">geo.php</span>
778 + </dt>
779 + <dd class="index-item-body">
780 + <div class="index-item-details"><a href="mirror/lib/_php_lib_geo_php.html">geo.php</a> in geo.php</div>
781 + </dd>
782 + </dl>
783 + <a name="h"></a>
784 + <div class="index-letter-section">
785 + <div style="float: left" class="index-letter-title">h</div>
786 + <div style="float: right"><a href="#top">top</a></div>
787 + <div style="clear: both"></div>
788 + </div>
789 + <dl>
790 + <dt class="field">
791 + <span class="const-title">HEADER</span>
792 + </dt>
793 + <dd class="index-item-body">
794 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineHEADER">HEADER</a> in config-dist.php</div>
795 + </dd>
796 + <dt class="field">
797 + <span class="include-title">header.php</span>
798 + </dt>
799 + <dd class="index-item-body">
800 + <div class="index-item-details"><a href="mirror/inc/_php_inc_header_php.html">header.php</a> in header.php</div>
801 + </dd>
802 + </dl>
803 + <a name="i"></a>
804 + <div class="index-letter-section">
805 + <div style="float: left" class="index-letter-title">i</div>
806 + <div style="float: right"><a href="#top">top</a></div>
807 + <div style="clear: both"></div>
808 + </div>
809 + <dl>
810 + <dt class="field">
811 + <span class="const-title">INC</span>
812 + </dt>
813 + <dd class="index-item-body">
814 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineINC">INC</a> in config-dist.php</div>
815 + </dd>
816 + <dt class="field">
817 + <span class="method-title">is_email_address</span>
818 + </dt>
819 + <dd class="index-item-body">
820 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionis_email_address">is_email_address()</a> in forms.php</div>
821 + <div class="index-item-description">Validates email addresses</div>
822 + </dd>
823 + <dt class="field">
824 + <span class="method-title">is_phone_number</span>
825 + </dt>
826 + <dd class="index-item-body">
827 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionis_phone_number">is_phone_number()</a> in forms.php</div>
828 + <div class="index-item-description">Validates phone number</div>
829 + </dd>
830 + <dt class="field">
831 + <span class="include-title">index.php</span>
832 + </dt>
833 + <dd class="index-item-body">
834 + <div class="index-item-details"><a href="mirror/admin/_php_admin_index_php.html">index.php</a> in index.php</div>
835 + </dd>
836 + <dt class="field">
837 + <span class="include-title">init.php</span>
838 + </dt>
839 + <dd class="index-item-body">
840 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_init_php.html">init.php</a> in init.php</div>
841 + </dd>
842 + <dt class="field">
843 + <span class="include-title">index.php</span>
844 + </dt>
845 + <dd class="index-item-body">
846 + <div class="index-item-details"><a href="mirror/pub/_php_index_php.html">index.php</a> in index.php</div>
847 + </dd>
848 + </dl>
849 + <a name="l"></a>
850 + <div class="index-letter-section">
851 + <div style="float: left" class="index-letter-title">l</div>
852 + <div style="float: right"><a href="#top">top</a></div>
853 + <div style="clear: both"></div>
854 + </div>
855 + <dl>
856 + <dt class="field">
857 + <span class="const-title">LIB</span>
858 + </dt>
859 + <dd class="index-item-body">
860 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineLIB">LIB</a> in config-dist.php</div>
861 + </dd>
862 + <dt class="field">
863 + <span class="method-title">list_edit_ids</span>
864 + </dt>
865 + <dd class="index-item-body">
866 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionlist_edit_ids">list_edit_ids()</a> in list.php</div>
867 + <div class="index-item-description">Parses $_POST for ids, shows edit forms for each id with populated data.</div>
868 + </dd>
869 + <dt class="field">
870 + <span class="method-title">list_update_ids</span>
871 + </dt>
872 + <dd class="index-item-body">
873 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionlist_update_ids">list_update_ids()</a> in list.php</div>
874 + <div class="index-item-description">Process a submitted list_edit_ids form.</div>
875 + </dd>
876 + <dt class="field">
877 + <span class="const-title">LOGGING</span>
878 + </dt>
879 + <dd class="index-item-body">
880 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineLOGGING">LOGGING</a> in config-dist.php</div>
881 + </dd>
882 + <dt class="field">
883 + <span class="include-title">locations.php</span>
884 + </dt>
885 + <dd class="index-item-body">
886 + <div class="index-item-details"><a href="mirror/admin/_php_admin_locations_php.html">locations.php</a> in locations.php</div>
887 + </dd>
888 + <dt class="field">
889 + <span class="include-title">login.php</span>
890 + </dt>
891 + <dd class="index-item-body">
892 + <div class="index-item-details"><a href="mirror/admin/_php_admin_login_php.html">login.php</a> in login.php</div>
893 + </dd>
894 + <dt class="field">
895 + <span class="include-title">logout.php</span>
896 + </dt>
897 + <dd class="index-item-body">
898 + <div class="index-item-details"><a href="mirror/admin/_php_admin_logout_php.html">logout.php</a> in logout.php</div>
899 + </dd>
900 + <dt class="field">
901 + <span class="include-title">location.php</span>
902 + </dt>
903 + <dd class="index-item-body">
904 + <div class="index-item-details"><a href="mirror/forms/_php_inc_forms_location_php.html">location.php</a> in location.php</div>
905 + </dd>
906 + <dt class="field">
907 + <span class="include-title">list.php</span>
908 + </dt>
909 + <dd class="index-item-body">
910 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html">list.php</a> in list.php</div>
911 + </dd>
912 + </dl>
913 + <a name="m"></a>
914 + <div class="index-letter-section">
915 + <div style="float: left" class="index-letter-title">m</div>
916 + <div style="float: right"><a href="#top">top</a></div>
917 + <div style="clear: both"></div>
918 + </div>
919 + <dl>
920 + <dt class="field">
921 + <span class="method-title">microtime_float</span>
922 + </dt>
923 + <dd class="index-item-body">
924 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionmicrotime_float">microtime_float()</a> in util.php</div>
925 + <div class="index-item-description">determine float value of now</div>
926 + </dd>
927 + <dt class="field">
928 + <span class="method-title">mirror_delete_location</span>
929 + </dt>
930 + <dd class="index-item-body">
931 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_location">mirror_delete_location()</a> in mirror.php</div>
932 + <div class="index-item-description">Delete a location.</div>
933 + </dd>
934 + <dt class="field">
935 + <span class="method-title">mirror_delete_mirror</span>
936 + </dt>
937 + <dd class="index-item-body">
938 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_mirror">mirror_delete_mirror()</a> in mirror.php</div>
939 + <div class="index-item-description">Delete mirror.</div>
940 + </dd>
941 + <dt class="field">
942 + <span class="method-title">mirror_delete_os</span>
943 + </dt>
944 + <dd class="index-item-body">
945 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_os">mirror_delete_os()</a> in mirror.php</div>
946 + <div class="index-item-description">Delete a os.</div>
947 + </dd>
948 + <dt class="field">
949 + <span class="method-title">mirror_delete_product</span>
950 + </dt>
951 + <dd class="index-item-body">
952 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_product">mirror_delete_product()</a> in mirror.php</div>
953 + <div class="index-item-description">Delete a product.</div>
954 + </dd>
955 + <dt class="field">
956 + <span class="method-title">mirror_delete_region</span>
957 + </dt>
958 + <dd class="index-item-body">
959 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_region">mirror_delete_region()</a> in mirror.php</div>
960 + <div class="index-item-description">Delete a region.</div>
961 + </dd>
962 + <dt class="field">
963 + <span class="method-title">mirror_delete_user</span>
964 + </dt>
965 + <dd class="index-item-body">
966 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_user">mirror_delete_user()</a> in mirror.php</div>
967 + <div class="index-item-description">Delete a user.</div>
968 + </dd>
969 + <dt class="field">
970 + <span class="method-title">mirror_get_locations</span>
971 + </dt>
972 + <dd class="index-item-body">
973 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_locations">mirror_get_locations()</a> in mirror.php</div>
974 + <div class="index-item-description">Get locations.</div>
975 + </dd>
976 + <dt class="field">
977 + <span class="method-title">mirror_get_mirrors</span>
978 + </dt>
979 + <dd class="index-item-body">
980 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_mirrors">mirror_get_mirrors()</a> in mirror.php</div>
981 + <div class="index-item-description">Get list of mirrors.</div>
982 + </dd>
983 + <dt class="field">
984 + <span class="method-title">mirror_get_mirrors_select</span>
985 + </dt>
986 + <dd class="index-item-body">
987 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_mirrors_select">mirror_get_mirrors_select()</a> in mirror.php</div>
988 + <div class="index-item-description">Get an alpha-list of mirrors for select list.</div>
989 + </dd>
990 + <dt class="field">
991 + <span class="method-title">mirror_get_mirror_stats</span>
992 + </dt>
993 + <dd class="index-item-body">
994 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_mirror_stats">mirror_get_mirror_stats()</a> in mirror.php</div>
995 + <div class="index-item-description">Get mirror statistics.</div>
996 + </dd>
997 + <dt class="field">
998 + <span class="method-title">mirror_get_one_location</span>
999 + </dt>
1000 + <dd class="index-item-body">
1001 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_location">mirror_get_one_location()</a> in mirror.php</div>
1002 + <div class="index-item-description">Get one location.</div>
1003 + </dd>
1004 + <dt class="field">
1005 + <span class="method-title">mirror_get_one_mirror</span>
1006 + </dt>
1007 + <dd class="index-item-body">
1008 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_mirror">mirror_get_one_mirror()</a> in mirror.php</div>
1009 + <div class="index-item-description">Get one mirror record.</div>
1010 + </dd>
1011 + <dt class="field">
1012 + <span class="method-title">mirror_get_one_os</span>
1013 + </dt>
1014 + <dd class="index-item-body">
1015 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_os">mirror_get_one_os()</a> in mirror.php</div>
1016 + <div class="index-item-description">Get one os.</div>
1017 + </dd>
1018 + <dt class="field">
1019 + <span class="method-title">mirror_get_one_product</span>
1020 + </dt>
1021 + <dd class="index-item-body">
1022 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_product">mirror_get_one_product()</a> in mirror.php</div>
1023 + <div class="index-item-description">Get one product.</div>
1024 + </dd>
1025 + <dt class="field">
1026 + <span class="method-title">mirror_get_one_region</span>
1027 + </dt>
1028 + <dd class="index-item-body">
1029 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_region">mirror_get_one_region()</a> in mirror.php</div>
1030 + <div class="index-item-description">Get one region.</div>
1031 + </dd>
1032 + <dt class="field">
1033 + <span class="method-title">mirror_get_one_user</span>
1034 + </dt>
1035 + <dd class="index-item-body">
1036 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_user">mirror_get_one_user()</a> in mirror.php</div>
1037 + <div class="index-item-description">Get one user.</div>
1038 + </dd>
1039 + <dt class="field">
1040 + <span class="method-title">mirror_get_oss</span>
1041 + </dt>
1042 + <dd class="index-item-body">
1043 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_oss">mirror_get_oss()</a> in mirror.php</div>
1044 + <div class="index-item-description">Get operating systems.</div>
1045 + </dd>
1046 + <dt class="field">
1047 + <span class="method-title">mirror_get_oss_select</span>
1048 + </dt>
1049 + <dd class="index-item-body">
1050 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_oss_select">mirror_get_oss_select()</a> in mirror.php</div>
1051 + <div class="index-item-description">Get an alpha-list of operating systems for select list.</div>
1052 + </dd>
1053 + <dt class="field">
1054 + <span class="method-title">mirror_get_oss_select_priority</span>
1055 + </dt>
1056 + <dd class="index-item-body">
1057 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_oss_select_priority">mirror_get_oss_select_priority()</a> in mirror.php</div>
1058 + <div class="index-item-description">Get an priority-list of operating systems for select list.</div>
1059 + </dd>
1060 + <dt class="field">
1061 + <span class="method-title">mirror_get_products</span>
1062 + </dt>
1063 + <dd class="index-item-body">
1064 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_products">mirror_get_products()</a> in mirror.php</div>
1065 + <div class="index-item-description">Get products.</div>
1066 + </dd>
1067 + <dt class="field">
1068 + <span class="method-title">mirror_get_products_select</span>
1069 + </dt>
1070 + <dd class="index-item-body">
1071 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_products_select">mirror_get_products_select()</a> in mirror.php</div>
1072 + <div class="index-item-description">Get an alpha-list of products for select list.</div>
1073 + </dd>
1074 + <dt class="field">
1075 + <span class="method-title">mirror_get_products_select_priority</span>
1076 + </dt>
1077 + <dd class="index-item-body">
1078 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_products_select_priority">mirror_get_products_select_priority()</a> in mirror.php</div>
1079 + <div class="index-item-description">Get an priority-list of operating systems for select list.</div>
1080 + </dd>
1081 + <dt class="field">
1082 + <span class="method-title">mirror_get_product_stats</span>
1083 + </dt>
1084 + <dd class="index-item-body">
1085 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_product_stats">mirror_get_product_stats()</a> in mirror.php</div>
1086 + <div class="index-item-description">Get product statistics.</div>
1087 + </dd>
1088 + <dt class="field">
1089 + <span class="method-title">mirror_get_regions</span>
1090 + </dt>
1091 + <dd class="index-item-body">
1092 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_regions">mirror_get_regions()</a> in mirror.php</div>
1093 + <div class="index-item-description">Get regions.</div>
1094 + </dd>
1095 + <dt class="field">
1096 + <span class="method-title">mirror_get_regions_select</span>
1097 + </dt>
1098 + <dd class="index-item-body">
1099 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_regions_select">mirror_get_regions_select()</a> in mirror.php</div>
1100 + <div class="index-item-description">Get an alpha-list of regions for select list.</div>
1101 + </dd>
1102 + <dt class="field">
1103 + <span class="method-title">mirror_get_regions_select_priority</span>
1104 + </dt>
1105 + <dd class="index-item-body">
1106 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_regions_select_priority">mirror_get_regions_select_priority()</a> in mirror.php</div>
1107 + <div class="index-item-description">Get an priority-list of regions for select list.</div>
1108 + </dd>
1109 + <dt class="field">
1110 + <span class="method-title">mirror_get_users</span>
1111 + </dt>
1112 + <dd class="index-item-body">
1113 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_users">mirror_get_users()</a> in mirror.php</div>
1114 + <div class="index-item-description">Get users.</div>
1115 + </dd>
1116 + <dt class="field">
1117 + <span class="method-title">mirror_insert_location</span>
1118 + </dt>
1119 + <dd class="index-item-body">
1120 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_location">mirror_insert_location()</a> in mirror.php</div>
1121 + <div class="index-item-description">Insert a new location.</div>
1122 + </dd>
1123 + <dt class="field">
1124 + <span class="method-title">mirror_insert_mirror</span>
1125 + </dt>
1126 + <dd class="index-item-body">
1127 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_mirror">mirror_insert_mirror()</a> in mirror.php</div>
1128 + <div class="index-item-description">Insert mirror.</div>
1129 + </dd>
1130 + <dt class="field">
1131 + <span class="method-title">mirror_insert_os</span>
1132 + </dt>
1133 + <dd class="index-item-body">
1134 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_os">mirror_insert_os()</a> in mirror.php</div>
1135 + <div class="index-item-description">Insert os.</div>
1136 + </dd>
1137 + <dt class="field">
1138 + <span class="method-title">mirror_insert_product</span>
1139 + </dt>
1140 + <dd class="index-item-body">
1141 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_product">mirror_insert_product()</a> in mirror.php</div>
1142 + <div class="index-item-description">Insert product.</div>
1143 + </dd>
1144 + <dt class="field">
1145 + <span class="method-title">mirror_insert_region</span>
1146 + </dt>
1147 + <dd class="index-item-body">
1148 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_region">mirror_insert_region()</a> in mirror.php</div>
1149 + <div class="index-item-description">Insert region.</div>
1150 + </dd>
1151 + <dt class="field">
1152 + <span class="method-title">mirror_insert_user</span>
1153 + </dt>
1154 + <dd class="index-item-body">
1155 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_user">mirror_insert_user()</a> in mirror.php</div>
1156 + <div class="index-item-description">Insert a new user.</div>
1157 + </dd>
1158 + <dt class="field">
1159 + <span class="method-title">mirror_toggle</span>
1160 + </dt>
1161 + <dd class="index-item-body">
1162 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_toggle">mirror_toggle()</a> in mirror.php</div>
1163 + <div class="index-item-description">Enable or disable a mirror.</div>
1164 + </dd>
1165 + <dt class="field">
1166 + <span class="method-title">mirror_update_location</span>
1167 + </dt>
1168 + <dd class="index-item-body">
1169 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_update_location">mirror_update_location()</a> in mirror.php</div>
1170 + <div class="index-item-description">Update a location.</div>
1171 + </dd>
1172 + <dt class="field">
1173 + <span class="method-title">mirror_update_mirror</span>
1174 + </dt>
1175 + <dd class="index-item-body">
1176 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_update_mirror">mirror_update_mirror()</a> in mirror.php</div>
1177 + <div class="index-item-description">Update mirror.</div>
1178 + </dd>
1179 + <dt class="field">
1180 + <span class="method-title">mirror_update_os</span>
1181 + </dt>
1182 + <dd class="index-item-body">
1183 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_update_os">mirror_update_os()</a> in mirror.php</div>
1184 + <div class="index-item-description">Update os.</div>
1185 + </dd>
1186 + <dt class="field">
1187 + <span class="method-title">mirror_update_product</span>
1188 + </dt>
1189 + <dd class="index-item-body">
1190 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_update_product">mirror_update_product()</a> in mirror.php</div>
1191 + <div class="index-item-description">Update product.</div>
1192 + </dd>
1193 + <dt class="field">
1194 + <span class="method-title">mirror_update_region</span>
1195 + </dt>
1196 + <dd class="index-item-body">
1197 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_update_region">mirror_update_region()</a> in mirror.php</div>
1198 + <div class="index-item-description">Update region.</div>
1199 + </dd>
1200 + <dt class="field">
1201 + <span class="method-title">mirror_update_user</span>
1202 + </dt>
1203 + <dd class="index-item-body">
1204 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_update_user">mirror_update_user()</a> in mirror.php</div>
1205 + <div class="index-item-description">Update a user.</div>
1206 + </dd>
1207 + <dt class="field">
1208 + <span class="include-title">mstats.php</span>
1209 + </dt>
1210 + <dd class="index-item-body">
1211 + <div class="index-item-details"><a href="mirror/admin/_php_admin_mstats_php.html">mstats.php</a> in mstats.php</div>
1212 + </dd>
1213 + <dt class="field">
1214 + <span class="include-title">mirror.php</span>
1215 + </dt>
1216 + <dd class="index-item-body">
1217 + <div class="index-item-details"><a href="mirror/forms/_php_inc_forms_mirror_php.html">mirror.php</a> in mirror.php</div>
1218 + </dd>
1219 + <dt class="field">
1220 + <span class="include-title">mirror.php</span>
1221 + </dt>
1222 + <dd class="index-item-body">
1223 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html">mirror.php</a> in mirror.php</div>
1224 + </dd>
1225 + </dl>
1226 + <a name="o"></a>
1227 + <div class="index-letter-section">
1228 + <div style="float: left" class="index-letter-title">o</div>
1229 + <div style="float: right"><a href="#top">top</a></div>
1230 + <div style="clear: both"></div>
1231 + </div>
1232 + <dl>
1233 + <dt class="field">
1234 + <span class="include-title">os.php</span>
1235 + </dt>
1236 + <dd class="index-item-body">
1237 + <div class="index-item-details"><a href="mirror/admin/_php_admin_os_php.html">os.php</a> in os.php</div>
1238 + </dd>
1239 + <dt class="field">
1240 + <span class="include-title">os.php</span>
1241 + </dt>
1242 + <dd class="index-item-body">
1243 + <div class="index-item-details"><a href="mirror/forms/_php_inc_forms_os_php.html">os.php</a> in os.php</div>
1244 + </dd>
1245 + </dl>
1246 + <a name="p"></a>
1247 + <div class="index-letter-section">
1248 + <div style="float: left" class="index-letter-title">p</div>
1249 + <div style="float: right"><a href="#top">top</a></div>
1250 + <div style="clear: both"></div>
1251 + </div>
1252 + <dl>
1253 + <dt class="field">
1254 + <span class="method-title">password_gen</span>
1255 + </dt>
1256 + <dd class="index-item-body">
1257 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionpassword_gen">password_gen()</a> in util.php</div>
1258 + <div class="index-item-description">Generate a random string good for passwords</div>
1259 + </dd>
1260 + <dt class="field">
1261 + <span class="include-title">products.php</span>
1262 + </dt>
1263 + <dd class="index-item-body">
1264 + <div class="index-item-details"><a href="mirror/admin/_php_admin_products_php.html">products.php</a> in products.php</div>
1265 + </dd>
1266 + <dt class="field">
1267 + <span class="include-title">pstats.php</span>
1268 + </dt>
1269 + <dd class="index-item-body">
1270 + <div class="index-item-details"><a href="mirror/admin/_php_admin_pstats_php.html">pstats.php</a> in pstats.php</div>
1271 + </dd>
1272 + <dt class="field">
1273 + <span class="include-title">product.php</span>
1274 + </dt>
1275 + <dd class="index-item-body">
1276 + <div class="index-item-details"><a href="mirror/forms/_php_inc_forms_product_php.html">product.php</a> in product.php</div>
1277 + </dd>
1278 + </dl>
1279 + <a name="r"></a>
1280 + <div class="index-letter-section">
1281 + <div style="float: left" class="index-letter-title">r</div>
1282 + <div style="float: right"><a href="#top">top</a></div>
1283 + <div style="clear: both"></div>
1284 + </div>
1285 + <dl>
1286 + <dt class="field">
1287 + <span class="include-title">regions.php</span>
1288 + </dt>
1289 + <dd class="index-item-body">
1290 + <div class="index-item-details"><a href="mirror/admin/_php_admin_regions_php.html">regions.php</a> in regions.php</div>
1291 + </dd>
1292 + <dt class="field">
1293 + <span class="include-title">region.php</span>
1294 + </dt>
1295 + <dd class="index-item-body">
1296 + <div class="index-item-details"><a href="mirror/forms/_php_inc_forms_region_php.html">region.php</a> in region.php</div>
1297 + </dd>
1298 + <dt class="field">
1299 + <span class="method-title">record_exists</span>
1300 + </dt>
1301 + <dd class="index-item-body">
1302 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionrecord_exists">record_exists()</a> in util.php</div>
1303 + <div class="index-item-description">This function checks for the existence of a particular row in a particular table matching a value.</div>
1304 + </dd>
1305 + </dl>
1306 + <a name="s"></a>
1307 + <div class="index-letter-section">
1308 + <div style="float: left" class="index-letter-title">s</div>
1309 + <div style="float: right"><a href="#top">top</a></div>
1310 + <div style="clear: both"></div>
1311 + </div>
1312 + <dl>
1313 + <dt class="field">
1314 + <span class="method-title">set_error</span>
1315 + </dt>
1316 + <dd class="index-item-body">
1317 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionset_error">set_error()</a> in util.php</div>
1318 + <div class="index-item-description">Add an error message to SESSION['errors'] array.</div>
1319 + </dd>
1320 + <dt class="field">
1321 + <span class="method-title">set_msg</span>
1322 + </dt>
1323 + <dd class="index-item-body">
1324 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionset_msg">set_msg()</a> in util.php</div>
1325 + <div class="index-item-description">Add a message to SESSION['messages'] array.</div>
1326 + </dd>
1327 + <dt class="field">
1328 + <span class="method-title">show_error</span>
1329 + </dt>
1330 + <dd class="index-item-body">
1331 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionshow_error">show_error()</a> in util.php</div>
1332 + <div class="index-item-description">Show errors messages.</div>
1333 + </dd>
1334 + <dt class="field">
1335 + <span class="method-title">show_headers</span>
1336 + </dt>
1337 + <dd class="index-item-body">
1338 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionshow_headers">show_headers()</a> in list.php</div>
1339 + <div class="index-item-description">Show table headers.</div>
1340 + </dd>
1341 + <dt class="field">
1342 + <span class="method-title">show_list</span>
1343 + </dt>
1344 + <dd class="index-item-body">
1345 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionshow_list">show_list()</a> in list.php</div>
1346 + <div class="index-item-description">Show a list of values, for forms.</div>
1347 + </dd>
1348 + <dt class="field">
1349 + <span class="method-title">show_msg</span>
1350 + </dt>
1351 + <dd class="index-item-body">
1352 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionshow_msg">show_msg()</a> in util.php</div>
1353 + <div class="index-item-description">Show messages.</div>
1354 + </dd>
1355 + <dt class="field">
1356 + <span class="method-title">show_row</span>
1357 + </dt>
1358 + <dd class="index-item-body">
1359 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionshow_row">show_row()</a> in list.php</div>
1360 + <div class="index-item-description">Show table data.</div>
1361 + </dd>
1362 + <dt class="field">
1363 + <span class="method-title">show_tabs</span>
1364 + </dt>
1365 + <dd class="index-item-body">
1366 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionshow_tabs">show_tabs()</a> in util.php</div>
1367 + <div class="index-item-description">Show user tabs, based on an array.</div>
1368 + </dd>
1369 + </dl>
1370 + <a name="u"></a>
1371 + <div class="index-letter-section">
1372 + <div style="float: left" class="index-letter-title">u</div>
1373 + <div style="float: right"><a href="#top">top</a></div>
1374 + <div style="clear: both"></div>
1375 + </div>
1376 + <dl>
1377 + <dt class="field">
1378 + <span class="include-title">users.php</span>
1379 + </dt>
1380 + <dd class="index-item-body">
1381 + <div class="index-item-details"><a href="mirror/admin/_php_admin_users_php.html">users.php</a> in users.php</div>
1382 + </dd>
1383 + <dt class="field">
1384 + <span class="include-title">user.php</span>
1385 + </dt>
1386 + <dd class="index-item-body">
1387 + <div class="index-item-details"><a href="mirror/forms/_php_inc_forms_user_php.html">user.php</a> in user.php</div>
1388 + </dd>
1389 + <dt class="field">
1390 + <span class="include-title">util.php</span>
1391 + </dt>
1392 + <dd class="index-item-body">
1393 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html">util.php</a> in util.php</div>
1394 + </dd>
1395 + <dt class="field">
1396 + <span class="method-title">url_out</span>
1397 + </dt>
1398 + <dd class="index-item-body">
1399 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionurl_out">url_out()</a> in forms.php</div>
1400 + <div class="index-item-description">Returns http:// and the string if the string does not begin with http://</div>
1401 + </dd>
1402 + </dl>
1403 + <a name="w"></a>
1404 + <div class="index-letter-section">
1405 + <div style="float: left" class="index-letter-title">w</div>
1406 + <div style="float: right"><a href="#top">top</a></div>
1407 + <div style="clear: both"></div>
1408 + </div>
1409 + <dl>
1410 + <dt class="field">
1411 + <span class="const-title">WEBPATH</span>
1412 + </dt>
1413 + <dd class="index-item-body">
1414 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineWEBPATH">WEBPATH</a> in config-dist.php</div>
1415 + </dd>
1416 + </dl>
1417 +
1418 +<div class="index-letter-menu">
1419 + <a class="index-letter" href="elementindex.html#a">a</a>
1420 + <a class="index-letter" href="elementindex.html#c">c</a>
1421 + <a class="index-letter" href="elementindex.html#d">d</a>
1422 + <a class="index-letter" href="elementindex.html#e">e</a>
1423 + <a class="index-letter" href="elementindex.html#f">f</a>
1424 + <a class="index-letter" href="elementindex.html#g">g</a>
1425 + <a class="index-letter" href="elementindex.html#h">h</a>
1426 + <a class="index-letter" href="elementindex.html#i">i</a>
1427 + <a class="index-letter" href="elementindex.html#l">l</a>
1428 + <a class="index-letter" href="elementindex.html#m">m</a>
1429 + <a class="index-letter" href="elementindex.html#o">o</a>
1430 + <a class="index-letter" href="elementindex.html#p">p</a>
1431 + <a class="index-letter" href="elementindex.html#r">r</a>
1432 + <a class="index-letter" href="elementindex.html#s">s</a>
1433 + <a class="index-letter" href="elementindex.html#u">u</a>
1434 + <a class="index-letter" href="elementindex.html#w">w</a>
1435 +</div>
1436 </body>
1437 +</html>
1438 \ No newline at end of file
1439
1440 diff --git a/docs/elementindex_mirror.html b/docs/elementindex_mirror.html
1441 new file mode 100644
1442 index 0000000..c32689e
1443 --- /dev/null
1444 +++ b/docs/elementindex_mirror.html
1445 @@ -0,0 +1,1190 @@
1446 +<?xml version="1.0" encoding="iso-8859-1"?>
1447 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
1448 + <html xmlns="http://www.w3.org/1999/xhtml">
1449 + <head>
1450 + <!-- template designed by Marco Von Ballmoos -->
1451 + <title></title>
1452 + <link rel="stylesheet" href="media/stylesheet.css" />
1453 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
1454 + </head>
1455 + <body>
1456 +
1457 <a name="top"></a>
1458 +<h2>[mirror] element index</h2>
1459 +<a href="elementindex.html">All elements</a>
1460 +<br />
1461 +<div class="index-letter-menu">
1462 + <a class="index-letter" href="elementindex_mirror.html#a">a</a>
1463 + <a class="index-letter" href="elementindex_mirror.html#c">c</a>
1464 + <a class="index-letter" href="elementindex_mirror.html#d">d</a>
1465 + <a class="index-letter" href="elementindex_mirror.html#e">e</a>
1466 + <a class="index-letter" href="elementindex_mirror.html#f">f</a>
1467 + <a class="index-letter" href="elementindex_mirror.html#g">g</a>
1468 + <a class="index-letter" href="elementindex_mirror.html#h">h</a>
1469 + <a class="index-letter" href="elementindex_mirror.html#i">i</a>
1470 + <a class="index-letter" href="elementindex_mirror.html#l">l</a>
1471 + <a class="index-letter" href="elementindex_mirror.html#m">m</a>
1472 + <a class="index-letter" href="elementindex_mirror.html#o">o</a>
1473 + <a class="index-letter" href="elementindex_mirror.html#p">p</a>
1474 + <a class="index-letter" href="elementindex_mirror.html#r">r</a>
1475 + <a class="index-letter" href="elementindex_mirror.html#s">s</a>
1476 + <a class="index-letter" href="elementindex_mirror.html#u">u</a>
1477 + <a class="index-letter" href="elementindex_mirror.html#w">w</a>
1478 +</div>
1479 +
1480 + <a name="a"></a>
1481 + <div class="index-letter-section">
1482 + <div style="float: left" class="index-letter-title">a</div>
1483 + <div style="float: right"><a href="#top">top</a></div>
1484 + <div style="clear: both"></div>
1485 + </div>
1486 + <dl>
1487 + <dt class="field">
1488 + <span class="include-title">admin_init.php</span>
1489 + </dt>
1490 + <dd class="index-item-body">
1491 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_admin_init_php.html">admin_init.php</a> in admin_init.php</div>
1492 + </dd>
1493 + <dt class="field">
1494 + <span class="include-title">admin_nav.php</span>
1495 + </dt>
1496 + <dd class="index-item-body">
1497 + <div class="index-item-details"><a href="mirror/inc/_php_inc_admin_nav_php.html">admin_nav.php</a> in admin_nav.php</div>
1498 + </dd>
1499 + <dt class="field">
1500 + <span class="method-title">array_days</span>
1501 + </dt>
1502 + <dd class="index-item-body">
1503 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionarray_days">array_days()</a> in forms.php</div>
1504 + <div class="index-item-description">Get calendar days in array format.</div>
1505 + </dd>
1506 + <dt class="field">
1507 + <span class="method-title">array_hours</span>
1508 + </dt>
1509 + <dd class="index-item-body">
1510 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionarray_hours">array_hours()</a> in forms.php</div>
1511 + <div class="index-item-description">Get calendar hours in array format.</div>
1512 + </dd>
1513 + <dt class="field">
1514 + <span class="method-title">array_minutes</span>
1515 + </dt>
1516 + <dd class="index-item-body">
1517 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionarray_minutes">array_minutes()</a> in forms.php</div>
1518 + <div class="index-item-description">Get array of minutes.</div>
1519 + </dd>
1520 + <dt class="field">
1521 + <span class="method-title">array_months</span>
1522 + </dt>
1523 + <dd class="index-item-body">
1524 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionarray_months">array_months()</a> in forms.php</div>
1525 + <div class="index-item-description">Get calendar months in array format.</div>
1526 + </dd>
1527 + <dt class="field">
1528 + <span class="method-title">array_order_by</span>
1529 + </dt>
1530 + <dd class="index-item-body">
1531 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionarray_order_by">array_order_by()</a> in util.php</div>
1532 + <div class="index-item-description">Sort a two dimensional array based on a 'column' key</div>
1533 + </dd>
1534 + <dt class="field">
1535 + <span class="method-title">array_states</span>
1536 + </dt>
1537 + <dd class="index-item-body">
1538 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionarray_states">array_states()</a> in forms.php</div>
1539 + <div class="index-item-description">Get array of states.</div>
1540 + </dd>
1541 + <dt class="field">
1542 + <span class="method-title">array_years</span>
1543 + </dt>
1544 + <dd class="index-item-body">
1545 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionarray_years">array_years()</a> in forms.php</div>
1546 + <div class="index-item-description">Get calendar years in array format.</div>
1547 + </dd>
1548 + <dt class="field">
1549 + <span class="method-title">auth_create_session</span>
1550 + </dt>
1551 + <dd class="index-item-body">
1552 + <div class="index-item-details"><a href="mirror/lib/_php_lib_auth_php.html#functionauth_create_session">auth_create_session()</a> in auth.php</div>
1553 + <div class="index-item-description">Start a valid session.</div>
1554 + </dd>
1555 + <dt class="field">
1556 + <span class="method-title">auth_is_valid_session</span>
1557 + </dt>
1558 + <dd class="index-item-body">
1559 + <div class="index-item-details"><a href="mirror/lib/_php_lib_auth_php.html#functionauth_is_valid_session">auth_is_valid_session()</a> in auth.php</div>
1560 + <div class="index-item-description">Check admin session against sessions table in database.</div>
1561 + </dd>
1562 + <dt class="field">
1563 + <span class="method-title">auth_logout</span>
1564 + </dt>
1565 + <dd class="index-item-body">
1566 + <div class="index-item-details"><a href="mirror/lib/_php_lib_auth_php.html#functionauth_logout">auth_logout()</a> in auth.php</div>
1567 + <div class="index-item-description">Logout.</div>
1568 + </dd>
1569 + <dt class="field">
1570 + <span class="method-title">auth_mysql</span>
1571 + </dt>
1572 + <dd class="index-item-body">
1573 + <div class="index-item-details"><a href="mirror/lib/_php_lib_auth_php.html#functionauth_mysql">auth_mysql()</a> in auth.php</div>
1574 + <div class="index-item-description">Authentication a user.</div>
1575 + </dd>
1576 + <dt class="field">
1577 + <span class="include-title">auth.php</span>
1578 + </dt>
1579 + <dd class="index-item-body">
1580 + <div class="index-item-details"><a href="mirror/lib/_php_lib_auth_php.html">auth.php</a> in auth.php</div>
1581 + </dd>
1582 + </dl>
1583 + <a name="c"></a>
1584 + <div class="index-letter-section">
1585 + <div style="float: left" class="index-letter-title">c</div>
1586 + <div style="float: right"><a href="#top">top</a></div>
1587 + <div style="clear: both"></div>
1588 + </div>
1589 + <dl>
1590 + <dt class="field">
1591 + <span class="include-title">config-dist.php</span>
1592 + </dt>
1593 + <dd class="index-item-body">
1594 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html">config-dist.php</a> in config-dist.php</div>
1595 + </dd>
1596 + <dt class="field">
1597 + <span class="method-title">clean_in</span>
1598 + </dt>
1599 + <dd class="index-item-body">
1600 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionclean_in">clean_in()</a> in forms.php</div>
1601 + <div class="index-item-description">Cleans a string or an array of strings for DB input.</div>
1602 + </dd>
1603 + <dt class="field">
1604 + <span class="method-title">clean_out</span>
1605 + </dt>
1606 + <dd class="index-item-body">
1607 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionclean_out">clean_out()</a> in forms.php</div>
1608 + <div class="index-item-description">Cleans a string or an array of strings for HTML presentation.</div>
1609 + </dd>
1610 + </dl>
1611 + <a name="d"></a>
1612 + <div class="index-letter-section">
1613 + <div style="float: left" class="index-letter-title">d</div>
1614 + <div style="float: right"><a href="#top">top</a></div>
1615 + <div style="clear: both"></div>
1616 + </div>
1617 + <dl>
1618 + <dt class="field">
1619 + <span class="const-title">DBHOST</span>
1620 + </dt>
1621 + <dd class="index-item-body">
1622 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineDBHOST">DBHOST</a> in config-dist.php</div>
1623 + </dd>
1624 + <dt class="field">
1625 + <span class="const-title">DBNAME</span>
1626 + </dt>
1627 + <dd class="index-item-body">
1628 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineDBNAME">DBNAME</a> in config-dist.php</div>
1629 + </dd>
1630 + <dt class="field">
1631 + <span class="const-title">DBPASS</span>
1632 + </dt>
1633 + <dd class="index-item-body">
1634 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineDBPASS">DBPASS</a> in config-dist.php</div>
1635 + </dd>
1636 + <dt class="field">
1637 + <span class="const-title">DBUSER</span>
1638 + </dt>
1639 + <dd class="index-item-body">
1640 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineDBUSER">DBUSER</a> in config-dist.php</div>
1641 + </dd>
1642 + <dt class="field">
1643 + <span class="method-title">db_close</span>
1644 + </dt>
1645 + <dd class="index-item-body">
1646 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_close">db_close()</a> in db.php</div>
1647 + <div class="index-item-description">Close the db connection. If a dbh is not specified, assume the last opened link.</div>
1648 + </dd>
1649 + <dt class="field">
1650 + <span class="method-title">db_connect</span>
1651 + </dt>
1652 + <dd class="index-item-body">
1653 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_connect">db_connect()</a> in db.php</div>
1654 + <div class="index-item-description">Connect to a MySQL database server.</div>
1655 + </dd>
1656 + <dt class="field">
1657 + <span class="method-title">db_fetch</span>
1658 + </dt>
1659 + <dd class="index-item-body">
1660 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_fetch">db_fetch()</a> in db.php</div>
1661 + <div class="index-item-description">Fetch a row as an array from a result.</div>
1662 + </dd>
1663 + <dt class="field">
1664 + <span class="method-title">db_fieldnames</span>
1665 + </dt>
1666 + <dd class="index-item-body">
1667 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_fieldnames">db_fieldnames()</a> in db.php</div>
1668 + <div class="index-item-description">Get all of the fieldnames for the specified table.</div>
1669 + </dd>
1670 + <dt class="field">
1671 + <span class="method-title">db_get</span>
1672 + </dt>
1673 + <dd class="index-item-body">
1674 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_get">db_get()</a> in db.php</div>
1675 + <div class="index-item-description">Fetch an array based on a query.</div>
1676 + </dd>
1677 + <dt class="field">
1678 + <span class="method-title">db_get_one</span>
1679 + </dt>
1680 + <dd class="index-item-body">
1681 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_get_one">db_get_one()</a> in db.php</div>
1682 + <div class="index-item-description">Get one record.</div>
1683 + </dd>
1684 + <dt class="field">
1685 + <span class="method-title">db_get_to_options</span>
1686 + </dt>
1687 + <dd class="index-item-body">
1688 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functiondb_get_to_options">db_get_to_options()</a> in forms.php</div>
1689 + <div class="index-item-description">Take a db_get result and return an array of options.</div>
1690 + </dd>
1691 + <dt class="field">
1692 + <span class="method-title">db_insert_id</span>
1693 + </dt>
1694 + <dd class="index-item-body">
1695 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_insert_id">db_insert_id()</a> in db.php</div>
1696 + <div class="index-item-description">Since PHP's mysql_insert_id() sometimes throws an error, this is the replacement</div>
1697 + </dd>
1698 + <dt class="field">
1699 + <span class="method-title">db_makeinsert</span>
1700 + </dt>
1701 + <dd class="index-item-body">
1702 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_makeinsert">db_makeinsert()</a> in db.php</div>
1703 + <div class="index-item-description">Create a MySQL INSERT statement based on $_POST array generated by form submission.</div>
1704 + </dd>
1705 + <dt class="field">
1706 + <span class="method-title">db_makereplace</span>
1707 + </dt>
1708 + <dd class="index-item-body">
1709 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_makereplace">db_makereplace()</a> in db.php</div>
1710 + <div class="index-item-description">Create a MySQL REPLACE statement based on $_POST array generated by form submission.</div>
1711 + </dd>
1712 + <dt class="field">
1713 + <span class="method-title">db_makeupdate</span>
1714 + </dt>
1715 + <dd class="index-item-body">
1716 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_makeupdate">db_makeupdate()</a> in db.php</div>
1717 + <div class="index-item-description">Create a MySQL UPDATE statement based on $_POST array generated by form submission.</div>
1718 + </dd>
1719 + <dt class="field">
1720 + <span class="method-title">db_name_to_id</span>
1721 + </dt>
1722 + <dd class="index-item-body">
1723 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_name_to_id">db_name_to_id()</a> in db.php</div>
1724 + <div class="index-item-description">Get an ID based on name.</div>
1725 + </dd>
1726 + <dt class="field">
1727 + <span class="method-title">db_numrows</span>
1728 + </dt>
1729 + <dd class="index-item-body">
1730 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_numrows">db_numrows()</a> in db.php</div>
1731 + <div class="index-item-description">Determine number of rows in result.</div>
1732 + </dd>
1733 + <dt class="field">
1734 + <span class="method-title">db_query</span>
1735 + </dt>
1736 + <dd class="index-item-body">
1737 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_query">db_query()</a> in db.php</div>
1738 + <div class="index-item-description">Execute a MySQL query.</div>
1739 + </dd>
1740 + <dt class="field">
1741 + <span class="method-title">db_select</span>
1742 + </dt>
1743 + <dd class="index-item-body">
1744 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_select">db_select()</a> in db.php</div>
1745 + <div class="index-item-description">Select database.</div>
1746 + </dd>
1747 + <dt class="field">
1748 + <span class="method-title">db_toggle_bool</span>
1749 + </dt>
1750 + <dd class="index-item-body">
1751 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html#functiondb_toggle_bool">db_toggle_bool()</a> in db.php</div>
1752 + <div class="index-item-description">Sets enum booleans to their opposite</div>
1753 + </dd>
1754 + <dt class="field">
1755 + <span class="method-title">debug_r</span>
1756 + </dt>
1757 + <dd class="index-item-body">
1758 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functiondebug_r">debug_r()</a> in util.php</div>
1759 + <div class="index-item-description">Print out an varible enclosed by &amp;lt;pre&amp;gt; tags</div>
1760 + </dd>
1761 + <dt class="field">
1762 + <span class="include-title">db.php</span>
1763 + </dt>
1764 + <dd class="index-item-body">
1765 + <div class="index-item-details"><a href="mirror/lib/_php_lib_db_php.html">db.php</a> in db.php</div>
1766 + </dd>
1767 + </dl>
1768 + <a name="e"></a>
1769 + <div class="index-letter-section">
1770 + <div style="float: left" class="index-letter-title">e</div>
1771 + <div style="float: right"><a href="#top">top</a></div>
1772 + <div style="clear: both"></div>
1773 + </div>
1774 + <dl>
1775 + <dt class="field">
1776 + <span class="method-title">emptify_in_array</span>
1777 + </dt>
1778 + <dd class="index-item-body">
1779 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionemptify_in_array">emptify_in_array()</a> in util.php</div>
1780 + <div class="index-item-description">This recursive function empty values in an 'multi-dimensional' array.</div>
1781 + </dd>
1782 + </dl>
1783 + <a name="f"></a>
1784 + <div class="index-letter-section">
1785 + <div style="float: left" class="index-letter-title">f</div>
1786 + <div style="float: right"><a href="#top">top</a></div>
1787 + <div style="clear: both"></div>
1788 + </div>
1789 + <dl>
1790 + <dt class="field">
1791 + <span class="const-title">FILEPATH</span>
1792 + </dt>
1793 + <dd class="index-item-body">
1794 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineFILEPATH">FILEPATH</a> in config-dist.php</div>
1795 + </dd>
1796 + <dt class="field">
1797 + <span class="const-title">FOOTER</span>
1798 + </dt>
1799 + <dd class="index-item-body">
1800 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineFOOTER">FOOTER</a> in config-dist.php</div>
1801 + </dd>
1802 + <dt class="field">
1803 + <span class="include-title">footer.php</span>
1804 + </dt>
1805 + <dd class="index-item-body">
1806 + <div class="index-item-details"><a href="mirror/inc/_php_inc_footer_php.html">footer.php</a> in footer.php</div>
1807 + </dd>
1808 + <dt class="field">
1809 + <span class="method-title">form_array_fix_dates</span>
1810 + </dt>
1811 + <dd class="index-item-body">
1812 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_array_fix_dates">form_array_fix_dates()</a> in forms.php</div>
1813 + <div class="index-item-description">Fix dates for form display, or proper db entry</div>
1814 + </dd>
1815 + <dt class="field">
1816 + <span class="method-title">form_array_get_date</span>
1817 + </dt>
1818 + <dd class="index-item-body">
1819 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_array_get_date">form_array_get_date()</a> in forms.php</div>
1820 + <div class="index-item-description">Get put a date back together after a POST.</div>
1821 + </dd>
1822 + <dt class="field">
1823 + <span class="method-title">form_array_get_datetime</span>
1824 + </dt>
1825 + <dd class="index-item-body">
1826 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_array_get_datetime">form_array_get_datetime()</a> in forms.php</div>
1827 + <div class="index-item-description">Get put a datetime back together after a POST.</div>
1828 + </dd>
1829 + <dt class="field">
1830 + <span class="method-title">form_checkbox</span>
1831 + </dt>
1832 + <dd class="index-item-body">
1833 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_checkbox">form_checkbox()</a> in forms.php</div>
1834 + <div class="index-item-description">Writes a checkbox input.</div>
1835 + </dd>
1836 + <dt class="field">
1837 + <span class="method-title">form_end</span>
1838 + </dt>
1839 + <dd class="index-item-body">
1840 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_end">form_end()</a> in forms.php</div>
1841 + <div class="index-item-description">Writes the ending form tag.</div>
1842 + </dd>
1843 + <dt class="field">
1844 + <span class="method-title">form_hidden</span>
1845 + </dt>
1846 + <dd class="index-item-body">
1847 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_hidden">form_hidden()</a> in forms.php</div>
1848 + <div class="index-item-description">Writes a hidden field.</div>
1849 + </dd>
1850 + <dt class="field">
1851 + <span class="method-title">form_label</span>
1852 + </dt>
1853 + <dd class="index-item-body">
1854 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_label">form_label()</a> in forms.php</div>
1855 + <div class="index-item-description">Writes a form input label.</div>
1856 + </dd>
1857 + <dt class="field">
1858 + <span class="method-title">form_password</span>
1859 + </dt>
1860 + <dd class="index-item-body">
1861 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_password">form_password()</a> in forms.php</div>
1862 + <div class="index-item-description">Writes a password input.</div>
1863 + </dd>
1864 + <dt class="field">
1865 + <span class="method-title">form_radio</span>
1866 + </dt>
1867 + <dd class="index-item-body">
1868 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_radio">form_radio()</a> in forms.php</div>
1869 + <div class="index-item-description">Writes a radio input.</div>
1870 + </dd>
1871 + <dt class="field">
1872 + <span class="method-title">form_reset</span>
1873 + </dt>
1874 + <dd class="index-item-body">
1875 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_reset">form_reset()</a> in forms.php</div>
1876 + <div class="index-item-description">Writes a reset input.</div>
1877 + </dd>
1878 + <dt class="field">
1879 + <span class="method-title">form_select</span>
1880 + </dt>
1881 + <dd class="index-item-body">
1882 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_select">form_select()</a> in forms.php</div>
1883 + <div class="index-item-description">Writes a select list with options.</div>
1884 + </dd>
1885 + <dt class="field">
1886 + <span class="method-title">form_start</span>
1887 + </dt>
1888 + <dd class="index-item-body">
1889 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_start">form_start()</a> in forms.php</div>
1890 + <div class="index-item-description">Writes the beginning form tag.</div>
1891 + </dd>
1892 + <dt class="field">
1893 + <span class="method-title">form_submit</span>
1894 + </dt>
1895 + <dd class="index-item-body">
1896 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_submit">form_submit()</a> in forms.php</div>
1897 + <div class="index-item-description">Writes a submit input.</div>
1898 + </dd>
1899 + <dt class="field">
1900 + <span class="method-title">form_text</span>
1901 + </dt>
1902 + <dd class="index-item-body">
1903 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_text">form_text()</a> in forms.php</div>
1904 + <div class="index-item-description">Writes a text input.</div>
1905 + </dd>
1906 + <dt class="field">
1907 + <span class="method-title">form_textarea</span>
1908 + </dt>
1909 + <dd class="index-item-body">
1910 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionform_textarea">form_textarea()</a> in forms.php</div>
1911 + <div class="index-item-description">Writes a textarea</div>
1912 + </dd>
1913 + <dt class="field">
1914 + <span class="include-title">forms.php</span>
1915 + </dt>
1916 + <dd class="index-item-body">
1917 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html">forms.php</a> in forms.php</div>
1918 + </dd>
1919 + </dl>
1920 + <a name="g"></a>
1921 + <div class="index-letter-section">
1922 + <div style="float: left" class="index-letter-title">g</div>
1923 + <div style="float: right"><a href="#top">top</a></div>
1924 + <div style="clear: both"></div>
1925 + </div>
1926 + <dl>
1927 + <dt class="field">
1928 + <span class="method-title">geo_get_coordinates</span>
1929 + </dt>
1930 + <dd class="index-item-body">
1931 + <div class="index-item-details"><a href="mirror/lib/_php_lib_geo_php.html#functiongeo_get_coordinates">geo_get_coordinates()</a> in geo.php</div>
1932 + <div class="index-item-description">Get longitude and latitude of an IP.</div>
1933 + </dd>
1934 + <dt class="field">
1935 + <span class="method-title">geo_get_country</span>
1936 + </dt>
1937 + <dd class="index-item-body">
1938 + <div class="index-item-details"><a href="mirror/lib/_php_lib_geo_php.html#functiongeo_get_country">geo_get_country()</a> in geo.php</div>
1939 + <div class="index-item-description">Get country of an IP.</div>
1940 + </dd>
1941 + <dt class="field">
1942 + <span class="method-title">geo_get_distance</span>
1943 + </dt>
1944 + <dd class="index-item-body">
1945 + <div class="index-item-details"><a href="mirror/lib/_php_lib_geo_php.html#functiongeo_get_distance">geo_get_distance()</a> in geo.php</div>
1946 + <div class="index-item-description">Calculate the distance between two geo points.</div>
1947 + </dd>
1948 + <dt class="field">
1949 + <span class="method-title">geo_get_record</span>
1950 + </dt>
1951 + <dd class="index-item-body">
1952 + <div class="index-item-details"><a href="mirror/lib/_php_lib_geo_php.html#functiongeo_get_record">geo_get_record()</a> in geo.php</div>
1953 + <div class="index-item-description">Get complete record based on IP.</div>
1954 + </dd>
1955 + <dt class="field">
1956 + <span class="method-title">geo_query</span>
1957 + </dt>
1958 + <dd class="index-item-body">
1959 + <div class="index-item-details"><a href="mirror/lib/_php_lib_geo_php.html#functiongeo_query">geo_query()</a> in geo.php</div>
1960 + <div class="index-item-description">Query NetGeo based on API and parse results.</div>
1961 + </dd>
1962 + <dt class="field">
1963 + <span class="method-title">get_order</span>
1964 + </dt>
1965 + <dd class="index-item-body">
1966 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionget_order">get_order()</a> in list.php</div>
1967 + <div class="index-item-description">Determine current sort order.</div>
1968 + </dd>
1969 + <dt class="field">
1970 + <span class="method-title">get_orderby</span>
1971 + </dt>
1972 + <dd class="index-item-body">
1973 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionget_orderby">get_orderby()</a> in list.php</div>
1974 + <div class="index-item-description">Determine whether or not list is currently sorted.</div>
1975 + </dd>
1976 + <dt class="field">
1977 + <span class="include-title">geo.php</span>
1978 + </dt>
1979 + <dd class="index-item-body">
1980 + <div class="index-item-details"><a href="mirror/lib/_php_lib_geo_php.html">geo.php</a> in geo.php</div>
1981 + </dd>
1982 + </dl>
1983 + <a name="h"></a>
1984 + <div class="index-letter-section">
1985 + <div style="float: left" class="index-letter-title">h</div>
1986 + <div style="float: right"><a href="#top">top</a></div>
1987 + <div style="clear: both"></div>
1988 + </div>
1989 + <dl>
1990 + <dt class="field">
1991 + <span class="const-title">HEADER</span>
1992 + </dt>
1993 + <dd class="index-item-body">
1994 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineHEADER">HEADER</a> in config-dist.php</div>
1995 + </dd>
1996 + <dt class="field">
1997 + <span class="include-title">header.php</span>
1998 + </dt>
1999 + <dd class="index-item-body">
2000 + <div class="index-item-details"><a href="mirror/inc/_php_inc_header_php.html">header.php</a> in header.php</div>
2001 + </dd>
2002 + </dl>
2003 + <a name="i"></a>
2004 + <div class="index-letter-section">
2005 + <div style="float: left" class="index-letter-title">i</div>
2006 + <div style="float: right"><a href="#top">top</a></div>
2007 + <div style="clear: both"></div>
2008 + </div>
2009 + <dl>
2010 + <dt class="field">
2011 + <span class="include-title">index.php</span>
2012 + </dt>
2013 + <dd class="index-item-body">
2014 + <div class="index-item-details"><a href="mirror/admin/_php_admin_index_php.html">index.php</a> in index.php</div>
2015 + </dd>
2016 + <dt class="field">
2017 + <span class="const-title">INC</span>
2018 + </dt>
2019 + <dd class="index-item-body">
2020 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineINC">INC</a> in config-dist.php</div>
2021 + </dd>
2022 + <dt class="field">
2023 + <span class="include-title">init.php</span>
2024 + </dt>
2025 + <dd class="index-item-body">
2026 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_init_php.html">init.php</a> in init.php</div>
2027 + </dd>
2028 + <dt class="field">
2029 + <span class="method-title">is_email_address</span>
2030 + </dt>
2031 + <dd class="index-item-body">
2032 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionis_email_address">is_email_address()</a> in forms.php</div>
2033 + <div class="index-item-description">Validates email addresses</div>
2034 + </dd>
2035 + <dt class="field">
2036 + <span class="method-title">is_phone_number</span>
2037 + </dt>
2038 + <dd class="index-item-body">
2039 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionis_phone_number">is_phone_number()</a> in forms.php</div>
2040 + <div class="index-item-description">Validates phone number</div>
2041 + </dd>
2042 + <dt class="field">
2043 + <span class="include-title">index.php</span>
2044 + </dt>
2045 + <dd class="index-item-body">
2046 + <div class="index-item-details"><a href="mirror/pub/_php_index_php.html">index.php</a> in index.php</div>
2047 + </dd>
2048 + </dl>
2049 + <a name="l"></a>
2050 + <div class="index-letter-section">
2051 + <div style="float: left" class="index-letter-title">l</div>
2052 + <div style="float: right"><a href="#top">top</a></div>
2053 + <div style="clear: both"></div>
2054 + </div>
2055 + <dl>
2056 + <dt class="field">
2057 + <span class="include-title">locations.php</span>
2058 + </dt>
2059 + <dd class="index-item-body">
2060 + <div class="index-item-details"><a href="mirror/admin/_php_admin_locations_php.html">locations.php</a> in locations.php</div>
2061 + </dd>
2062 + <dt class="field">
2063 + <span class="include-title">login.php</span>
2064 + </dt>
2065 + <dd class="index-item-body">
2066 + <div class="index-item-details"><a href="mirror/admin/_php_admin_login_php.html">login.php</a> in login.php</div>
2067 + </dd>
2068 + <dt class="field">
2069 + <span class="include-title">logout.php</span>
2070 + </dt>
2071 + <dd class="index-item-body">
2072 + <div class="index-item-details"><a href="mirror/admin/_php_admin_logout_php.html">logout.php</a> in logout.php</div>
2073 + </dd>
2074 + <dt class="field">
2075 + <span class="const-title">LIB</span>
2076 + </dt>
2077 + <dd class="index-item-body">
2078 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineLIB">LIB</a> in config-dist.php</div>
2079 + </dd>
2080 + <dt class="field">
2081 + <span class="const-title">LOGGING</span>
2082 + </dt>
2083 + <dd class="index-item-body">
2084 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineLOGGING">LOGGING</a> in config-dist.php</div>
2085 + </dd>
2086 + <dt class="field">
2087 + <span class="include-title">location.php</span>
2088 + </dt>
2089 + <dd class="index-item-body">
2090 + <div class="index-item-details"><a href="mirror/forms/_php_inc_forms_location_php.html">location.php</a> in location.php</div>
2091 + </dd>
2092 + <dt class="field">
2093 + <span class="method-title">list_edit_ids</span>
2094 + </dt>
2095 + <dd class="index-item-body">
2096 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionlist_edit_ids">list_edit_ids()</a> in list.php</div>
2097 + <div class="index-item-description">Parses $_POST for ids, shows edit forms for each id with populated data.</div>
2098 + </dd>
2099 + <dt class="field">
2100 + <span class="method-title">list_update_ids</span>
2101 + </dt>
2102 + <dd class="index-item-body">
2103 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionlist_update_ids">list_update_ids()</a> in list.php</div>
2104 + <div class="index-item-description">Process a submitted list_edit_ids form.</div>
2105 + </dd>
2106 + <dt class="field">
2107 + <span class="include-title">list.php</span>
2108 + </dt>
2109 + <dd class="index-item-body">
2110 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html">list.php</a> in list.php</div>
2111 + </dd>
2112 + </dl>
2113 + <a name="m"></a>
2114 + <div class="index-letter-section">
2115 + <div style="float: left" class="index-letter-title">m</div>
2116 + <div style="float: right"><a href="#top">top</a></div>
2117 + <div style="clear: both"></div>
2118 + </div>
2119 + <dl>
2120 + <dt class="field">
2121 + <span class="include-title">mstats.php</span>
2122 + </dt>
2123 + <dd class="index-item-body">
2124 + <div class="index-item-details"><a href="mirror/admin/_php_admin_mstats_php.html">mstats.php</a> in mstats.php</div>
2125 + </dd>
2126 + <dt class="field">
2127 + <span class="include-title">mirror.php</span>
2128 + </dt>
2129 + <dd class="index-item-body">
2130 + <div class="index-item-details"><a href="mirror/forms/_php_inc_forms_mirror_php.html">mirror.php</a> in mirror.php</div>
2131 + </dd>
2132 + <dt class="field">
2133 + <span class="method-title">microtime_float</span>
2134 + </dt>
2135 + <dd class="index-item-body">
2136 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionmicrotime_float">microtime_float()</a> in util.php</div>
2137 + <div class="index-item-description">determine float value of now</div>
2138 + </dd>
2139 + <dt class="field">
2140 + <span class="method-title">mirror_delete_location</span>
2141 + </dt>
2142 + <dd class="index-item-body">
2143 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_location">mirror_delete_location()</a> in mirror.php</div>
2144 + <div class="index-item-description">Delete a location.</div>
2145 + </dd>
2146 + <dt class="field">
2147 + <span class="method-title">mirror_delete_mirror</span>
2148 + </dt>
2149 + <dd class="index-item-body">
2150 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_mirror">mirror_delete_mirror()</a> in mirror.php</div>
2151 + <div class="index-item-description">Delete mirror.</div>
2152 + </dd>
2153 + <dt class="field">
2154 + <span class="method-title">mirror_delete_os</span>
2155 + </dt>
2156 + <dd class="index-item-body">
2157 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_os">mirror_delete_os()</a> in mirror.php</div>
2158 + <div class="index-item-description">Delete a os.</div>
2159 + </dd>
2160 + <dt class="field">
2161 + <span class="method-title">mirror_delete_product</span>
2162 + </dt>
2163 + <dd class="index-item-body">
2164 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_product">mirror_delete_product()</a> in mirror.php</div>
2165 + <div class="index-item-description">Delete a product.</div>
2166 + </dd>
2167 + <dt class="field">
2168 + <span class="method-title">mirror_delete_region</span>
2169 + </dt>
2170 + <dd class="index-item-body">
2171 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_region">mirror_delete_region()</a> in mirror.php</div>
2172 + <div class="index-item-description">Delete a region.</div>
2173 + </dd>
2174 + <dt class="field">
2175 + <span class="method-title">mirror_delete_user</span>
2176 + </dt>
2177 + <dd class="index-item-body">
2178 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_user">mirror_delete_user()</a> in mirror.php</div>
2179 + <div class="index-item-description">Delete a user.</div>
2180 + </dd>
2181 + <dt class="field">
2182 + <span class="method-title">mirror_get_locations</span>
2183 + </dt>
2184 + <dd class="index-item-body">
2185 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_locations">mirror_get_locations()</a> in mirror.php</div>
2186 + <div class="index-item-description">Get locations.</div>
2187 + </dd>
2188 + <dt class="field">
2189 + <span class="method-title">mirror_get_mirrors</span>
2190 + </dt>
2191 + <dd class="index-item-body">
2192 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_mirrors">mirror_get_mirrors()</a> in mirror.php</div>
2193 + <div class="index-item-description">Get list of mirrors.</div>
2194 + </dd>
2195 + <dt class="field">
2196 + <span class="method-title">mirror_get_mirrors_select</span>
2197 + </dt>
2198 + <dd class="index-item-body">
2199 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_mirrors_select">mirror_get_mirrors_select()</a> in mirror.php</div>
2200 + <div class="index-item-description">Get an alpha-list of mirrors for select list.</div>
2201 + </dd>
2202 + <dt class="field">
2203 + <span class="method-title">mirror_get_mirror_stats</span>
2204 + </dt>
2205 + <dd class="index-item-body">
2206 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_mirror_stats">mirror_get_mirror_stats()</a> in mirror.php</div>
2207 + <div class="index-item-description">Get mirror statistics.</div>
2208 + </dd>
2209 + <dt class="field">
2210 + <span class="method-title">mirror_get_one_location</span>
2211 + </dt>
2212 + <dd class="index-item-body">
2213 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_location">mirror_get_one_location()</a> in mirror.php</div>
2214 + <div class="index-item-description">Get one location.</div>
2215 + </dd>
2216 + <dt class="field">
2217 + <span class="method-title">mirror_get_one_mirror</span>
2218 + </dt>
2219 + <dd class="index-item-body">
2220 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_mirror">mirror_get_one_mirror()</a> in mirror.php</div>
2221 + <div class="index-item-description">Get one mirror record.</div>
2222 + </dd>
2223 + <dt class="field">
2224 + <span class="method-title">mirror_get_one_os</span>
2225 + </dt>
2226 + <dd class="index-item-body">
2227 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_os">mirror_get_one_os()</a> in mirror.php</div>
2228 + <div class="index-item-description">Get one os.</div>
2229 + </dd>
2230 + <dt class="field">
2231 + <span class="method-title">mirror_get_one_product</span>
2232 + </dt>
2233 + <dd class="index-item-body">
2234 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_product">mirror_get_one_product()</a> in mirror.php</div>
2235 + <div class="index-item-description">Get one product.</div>
2236 + </dd>
2237 + <dt class="field">
2238 + <span class="method-title">mirror_get_one_region</span>
2239 + </dt>
2240 + <dd class="index-item-body">
2241 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_region">mirror_get_one_region()</a> in mirror.php</div>
2242 + <div class="index-item-description">Get one region.</div>
2243 + </dd>
2244 + <dt class="field">
2245 + <span class="method-title">mirror_get_one_user</span>
2246 + </dt>
2247 + <dd class="index-item-body">
2248 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_user">mirror_get_one_user()</a> in mirror.php</div>
2249 + <div class="index-item-description">Get one user.</div>
2250 + </dd>
2251 + <dt class="field">
2252 + <span class="method-title">mirror_get_oss</span>
2253 + </dt>
2254 + <dd class="index-item-body">
2255 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_oss">mirror_get_oss()</a> in mirror.php</div>
2256 + <div class="index-item-description">Get operating systems.</div>
2257 + </dd>
2258 + <dt class="field">
2259 + <span class="method-title">mirror_get_oss_select</span>
2260 + </dt>
2261 + <dd class="index-item-body">
2262 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_oss_select">mirror_get_oss_select()</a> in mirror.php</div>
2263 + <div class="index-item-description">Get an alpha-list of operating systems for select list.</div>
2264 + </dd>
2265 + <dt class="field">
2266 + <span class="method-title">mirror_get_oss_select_priority</span>
2267 + </dt>
2268 + <dd class="index-item-body">
2269 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_oss_select_priority">mirror_get_oss_select_priority()</a> in mirror.php</div>
2270 + <div class="index-item-description">Get an priority-list of operating systems for select list.</div>
2271 + </dd>
2272 + <dt class="field">
2273 + <span class="method-title">mirror_get_products</span>
2274 + </dt>
2275 + <dd class="index-item-body">
2276 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_products">mirror_get_products()</a> in mirror.php</div>
2277 + <div class="index-item-description">Get products.</div>
2278 + </dd>
2279 + <dt class="field">
2280 + <span class="method-title">mirror_get_products_select</span>
2281 + </dt>
2282 + <dd class="index-item-body">
2283 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_products_select">mirror_get_products_select()</a> in mirror.php</div>
2284 + <div class="index-item-description">Get an alpha-list of products for select list.</div>
2285 + </dd>
2286 + <dt class="field">
2287 + <span class="method-title">mirror_get_products_select_priority</span>
2288 + </dt>
2289 + <dd class="index-item-body">
2290 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_products_select_priority">mirror_get_products_select_priority()</a> in mirror.php</div>
2291 + <div class="index-item-description">Get an priority-list of operating systems for select list.</div>
2292 + </dd>
2293 + <dt class="field">
2294 + <span class="method-title">mirror_get_product_stats</span>
2295 + </dt>
2296 + <dd class="index-item-body">
2297 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_product_stats">mirror_get_product_stats()</a> in mirror.php</div>
2298 + <div class="index-item-description">Get product statistics.</div>
2299 + </dd>
2300 + <dt class="field">
2301 + <span class="method-title">mirror_get_regions</span>
2302 + </dt>
2303 + <dd class="index-item-body">
2304 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_regions">mirror_get_regions()</a> in mirror.php</div>
2305 + <div class="index-item-description">Get regions.</div>
2306 + </dd>
2307 + <dt class="field">
2308 + <span class="method-title">mirror_get_regions_select</span>
2309 + </dt>
2310 + <dd class="index-item-body">
2311 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_regions_select">mirror_get_regions_select()</a> in mirror.php</div>
2312 + <div class="index-item-description">Get an alpha-list of regions for select list.</div>
2313 + </dd>
2314 + <dt class="field">
2315 + <span class="method-title">mirror_get_regions_select_priority</span>
2316 + </dt>
2317 + <dd class="index-item-body">
2318 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_regions_select_priority">mirror_get_regions_select_priority()</a> in mirror.php</div>
2319 + <div class="index-item-description">Get an priority-list of regions for select list.</div>
2320 + </dd>
2321 + <dt class="field">
2322 + <span class="method-title">mirror_get_users</span>
2323 + </dt>
2324 + <dd class="index-item-body">
2325 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_get_users">mirror_get_users()</a> in mirror.php</div>
2326 + <div class="index-item-description">Get users.</div>
2327 + </dd>
2328 + <dt class="field">
2329 + <span class="method-title">mirror_insert_location</span>
2330 + </dt>
2331 + <dd class="index-item-body">
2332 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_location">mirror_insert_location()</a> in mirror.php</div>
2333 + <div class="index-item-description">Insert a new location.</div>
2334 + </dd>
2335 + <dt class="field">
2336 + <span class="method-title">mirror_insert_mirror</span>
2337 + </dt>
2338 + <dd class="index-item-body">
2339 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_mirror">mirror_insert_mirror()</a> in mirror.php</div>
2340 + <div class="index-item-description">Insert mirror.</div>
2341 + </dd>
2342 + <dt class="field">
2343 + <span class="method-title">mirror_insert_os</span>
2344 + </dt>
2345 + <dd class="index-item-body">
2346 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_os">mirror_insert_os()</a> in mirror.php</div>
2347 + <div class="index-item-description">Insert os.</div>
2348 + </dd>
2349 + <dt class="field">
2350 + <span class="method-title">mirror_insert_product</span>
2351 + </dt>
2352 + <dd class="index-item-body">
2353 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_product">mirror_insert_product()</a> in mirror.php</div>
2354 + <div class="index-item-description">Insert product.</div>
2355 + </dd>
2356 + <dt class="field">
2357 + <span class="method-title">mirror_insert_region</span>
2358 + </dt>
2359 + <dd class="index-item-body">
2360 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_region">mirror_insert_region()</a> in mirror.php</div>
2361 + <div class="index-item-description">Insert region.</div>
2362 + </dd>
2363 + <dt class="field">
2364 + <span class="method-title">mirror_insert_user</span>
2365 + </dt>
2366 + <dd class="index-item-body">
2367 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_user">mirror_insert_user()</a> in mirror.php</div>
2368 + <div class="index-item-description">Insert a new user.</div>
2369 + </dd>
2370 + <dt class="field">
2371 + <span class="method-title">mirror_toggle</span>
2372 + </dt>
2373 + <dd class="index-item-body">
2374 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_toggle">mirror_toggle()</a> in mirror.php</div>
2375 + <div class="index-item-description">Enable or disable a mirror.</div>
2376 + </dd>
2377 + <dt class="field">
2378 + <span class="method-title">mirror_update_location</span>
2379 + </dt>
2380 + <dd class="index-item-body">
2381 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_update_location">mirror_update_location()</a> in mirror.php</div>
2382 + <div class="index-item-description">Update a location.</div>
2383 + </dd>
2384 + <dt class="field">
2385 + <span class="method-title">mirror_update_mirror</span>
2386 + </dt>
2387 + <dd class="index-item-body">
2388 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_update_mirror">mirror_update_mirror()</a> in mirror.php</div>
2389 + <div class="index-item-description">Update mirror.</div>
2390 + </dd>
2391 + <dt class="field">
2392 + <span class="method-title">mirror_update_os</span>
2393 + </dt>
2394 + <dd class="index-item-body">
2395 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_update_os">mirror_update_os()</a> in mirror.php</div>
2396 + <div class="index-item-description">Update os.</div>
2397 + </dd>
2398 + <dt class="field">
2399 + <span class="method-title">mirror_update_product</span>
2400 + </dt>
2401 + <dd class="index-item-body">
2402 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_update_product">mirror_update_product()</a> in mirror.php</div>
2403 + <div class="index-item-description">Update product.</div>
2404 + </dd>
2405 + <dt class="field">
2406 + <span class="method-title">mirror_update_region</span>
2407 + </dt>
2408 + <dd class="index-item-body">
2409 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_update_region">mirror_update_region()</a> in mirror.php</div>
2410 + <div class="index-item-description">Update region.</div>
2411 + </dd>
2412 + <dt class="field">
2413 + <span class="method-title">mirror_update_user</span>
2414 + </dt>
2415 + <dd class="index-item-body">
2416 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html#functionmirror_update_user">mirror_update_user()</a> in mirror.php</div>
2417 + <div class="index-item-description">Update a user.</div>
2418 + </dd>
2419 + <dt class="field">
2420 + <span class="include-title">mirror.php</span>
2421 + </dt>
2422 + <dd class="index-item-body">
2423 + <div class="index-item-details"><a href="mirror/lib/_php_lib_mirror_php.html">mirror.php</a> in mirror.php</div>
2424 + </dd>
2425 + </dl>
2426 + <a name="o"></a>
2427 + <div class="index-letter-section">
2428 + <div style="float: left" class="index-letter-title">o</div>
2429 + <div style="float: right"><a href="#top">top</a></div>
2430 + <div style="clear: both"></div>
2431 + </div>
2432 + <dl>
2433 + <dt class="field">
2434 + <span class="include-title">os.php</span>
2435 + </dt>
2436 + <dd class="index-item-body">
2437 + <div class="index-item-details"><a href="mirror/admin/_php_admin_os_php.html">os.php</a> in os.php</div>
2438 + </dd>
2439 + <dt class="field">
2440 + <span class="include-title">os.php</span>
2441 + </dt>
2442 + <dd class="index-item-body">
2443 + <div class="index-item-details"><a href="mirror/forms/_php_inc_forms_os_php.html">os.php</a> in os.php</div>
2444 + </dd>
2445 + </dl>
2446 + <a name="p"></a>
2447 + <div class="index-letter-section">
2448 + <div style="float: left" class="index-letter-title">p</div>
2449 + <div style="float: right"><a href="#top">top</a></div>
2450 + <div style="clear: both"></div>
2451 + </div>
2452 + <dl>
2453 + <dt class="field">
2454 + <span class="include-title">products.php</span>
2455 + </dt>
2456 + <dd class="index-item-body">
2457 + <div class="index-item-details"><a href="mirror/admin/_php_admin_products_php.html">products.php</a> in products.php</div>
2458 + </dd>
2459 + <dt class="field">
2460 + <span class="include-title">pstats.php</span>
2461 + </dt>
2462 + <dd class="index-item-body">
2463 + <div class="index-item-details"><a href="mirror/admin/_php_admin_pstats_php.html">pstats.php</a> in pstats.php</div>
2464 + </dd>
2465 + <dt class="field">
2466 + <span class="include-title">product.php</span>
2467 + </dt>
2468 + <dd class="index-item-body">
2469 + <div class="index-item-details"><a href="mirror/forms/_php_inc_forms_product_php.html">product.php</a> in product.php</div>
2470 + </dd>
2471 + <dt class="field">
2472 + <span class="method-title">password_gen</span>
2473 + </dt>
2474 + <dd class="index-item-body">
2475 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionpassword_gen">password_gen()</a> in util.php</div>
2476 + <div class="index-item-description">Generate a random string good for passwords</div>
2477 + </dd>
2478 + </dl>
2479 + <a name="r"></a>
2480 + <div class="index-letter-section">
2481 + <div style="float: left" class="index-letter-title">r</div>
2482 + <div style="float: right"><a href="#top">top</a></div>
2483 + <div style="clear: both"></div>
2484 + </div>
2485 + <dl>
2486 + <dt class="field">
2487 + <span class="include-title">regions.php</span>
2488 + </dt>
2489 + <dd class="index-item-body">
2490 + <div class="index-item-details"><a href="mirror/admin/_php_admin_regions_php.html">regions.php</a> in regions.php</div>
2491 + </dd>
2492 + <dt class="field">
2493 + <span class="include-title">region.php</span>
2494 + </dt>
2495 + <dd class="index-item-body">
2496 + <div class="index-item-details"><a href="mirror/forms/_php_inc_forms_region_php.html">region.php</a> in region.php</div>
2497 + </dd>
2498 + <dt class="field">
2499 + <span class="method-title">record_exists</span>
2500 + </dt>
2501 + <dd class="index-item-body">
2502 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionrecord_exists">record_exists()</a> in util.php</div>
2503 + <div class="index-item-description">This function checks for the existence of a particular row in a particular table matching a value.</div>
2504 + </dd>
2505 + </dl>
2506 + <a name="s"></a>
2507 + <div class="index-letter-section">
2508 + <div style="float: left" class="index-letter-title">s</div>
2509 + <div style="float: right"><a href="#top">top</a></div>
2510 + <div style="clear: both"></div>
2511 + </div>
2512 + <dl>
2513 + <dt class="field">
2514 + <span class="method-title">set_error</span>
2515 + </dt>
2516 + <dd class="index-item-body">
2517 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionset_error">set_error()</a> in util.php</div>
2518 + <div class="index-item-description">Add an error message to SESSION['errors'] array.</div>
2519 + </dd>
2520 + <dt class="field">
2521 + <span class="method-title">set_msg</span>
2522 + </dt>
2523 + <dd class="index-item-body">
2524 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionset_msg">set_msg()</a> in util.php</div>
2525 + <div class="index-item-description">Add a message to SESSION['messages'] array.</div>
2526 + </dd>
2527 + <dt class="field">
2528 + <span class="method-title">show_error</span>
2529 + </dt>
2530 + <dd class="index-item-body">
2531 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionshow_error">show_error()</a> in util.php</div>
2532 + <div class="index-item-description">Show errors messages.</div>
2533 + </dd>
2534 + <dt class="field">
2535 + <span class="method-title">show_headers</span>
2536 + </dt>
2537 + <dd class="index-item-body">
2538 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionshow_headers">show_headers()</a> in list.php</div>
2539 + <div class="index-item-description">Show table headers.</div>
2540 + </dd>
2541 + <dt class="field">
2542 + <span class="method-title">show_list</span>
2543 + </dt>
2544 + <dd class="index-item-body">
2545 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionshow_list">show_list()</a> in list.php</div>
2546 + <div class="index-item-description">Show a list of values, for forms.</div>
2547 + </dd>
2548 + <dt class="field">
2549 + <span class="method-title">show_msg</span>
2550 + </dt>
2551 + <dd class="index-item-body">
2552 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionshow_msg">show_msg()</a> in util.php</div>
2553 + <div class="index-item-description">Show messages.</div>
2554 + </dd>
2555 + <dt class="field">
2556 + <span class="method-title">show_row</span>
2557 + </dt>
2558 + <dd class="index-item-body">
2559 + <div class="index-item-details"><a href="mirror/lib/_php_lib_list_php.html#functionshow_row">show_row()</a> in list.php</div>
2560 + <div class="index-item-description">Show table data.</div>
2561 + </dd>
2562 + <dt class="field">
2563 + <span class="method-title">show_tabs</span>
2564 + </dt>
2565 + <dd class="index-item-body">
2566 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html#functionshow_tabs">show_tabs()</a> in util.php</div>
2567 + <div class="index-item-description">Show user tabs, based on an array.</div>
2568 + </dd>
2569 + </dl>
2570 + <a name="u"></a>
2571 + <div class="index-letter-section">
2572 + <div style="float: left" class="index-letter-title">u</div>
2573 + <div style="float: right"><a href="#top">top</a></div>
2574 + <div style="clear: both"></div>
2575 + </div>
2576 + <dl>
2577 + <dt class="field">
2578 + <span class="include-title">users.php</span>
2579 + </dt>
2580 + <dd class="index-item-body">
2581 + <div class="index-item-details"><a href="mirror/admin/_php_admin_users_php.html">users.php</a> in users.php</div>
2582 + </dd>
2583 + <dt class="field">
2584 + <span class="include-title">user.php</span>
2585 + </dt>
2586 + <dd class="index-item-body">
2587 + <div class="index-item-details"><a href="mirror/forms/_php_inc_forms_user_php.html">user.php</a> in user.php</div>
2588 + </dd>
2589 + <dt class="field">
2590 + <span class="include-title">util.php</span>
2591 + </dt>
2592 + <dd class="index-item-body">
2593 + <div class="index-item-details"><a href="mirror/lib/_php_lib_util_php.html">util.php</a> in util.php</div>
2594 + </dd>
2595 + <dt class="field">
2596 + <span class="method-title">url_out</span>
2597 + </dt>
2598 + <dd class="index-item-body">
2599 + <div class="index-item-details"><a href="mirror/lib/_php_lib_forms_php.html#functionurl_out">url_out()</a> in forms.php</div>
2600 + <div class="index-item-description">Returns http:// and the string if the string does not begin with http://</div>
2601 + </dd>
2602 + </dl>
2603 + <a name="w"></a>
2604 + <div class="index-letter-section">
2605 + <div style="float: left" class="index-letter-title">w</div>
2606 + <div style="float: right"><a href="#top">top</a></div>
2607 + <div style="clear: both"></div>
2608 + </div>
2609 + <dl>
2610 + <dt class="field">
2611 + <span class="const-title">WEBPATH</span>
2612 + </dt>
2613 + <dd class="index-item-body">
2614 + <div class="index-item-details"><a href="mirror/cfg/_php_cfg_config-dist_php.html#defineWEBPATH">WEBPATH</a> in config-dist.php</div>
2615 + </dd>
2616 + </dl>
2617 +
2618 +<div class="index-letter-menu">
2619 + <a class="index-letter" href="elementindex_mirror.html#a">a</a>
2620 + <a class="index-letter" href="elementindex_mirror.html#c">c</a>
2621 + <a class="index-letter" href="elementindex_mirror.html#d">d</a>
2622 + <a class="index-letter" href="elementindex_mirror.html#e">e</a>
2623 + <a class="index-letter" href="elementindex_mirror.html#f">f</a>
2624 + <a class="index-letter" href="elementindex_mirror.html#g">g</a>
2625 + <a class="index-letter" href="elementindex_mirror.html#h">h</a>
2626 + <a class="index-letter" href="elementindex_mirror.html#i">i</a>
2627 + <a class="index-letter" href="elementindex_mirror.html#l">l</a>
2628 + <a class="index-letter" href="elementindex_mirror.html#m">m</a>
2629 + <a class="index-letter" href="elementindex_mirror.html#o">o</a>
2630 + <a class="index-letter" href="elementindex_mirror.html#p">p</a>
2631 + <a class="index-letter" href="elementindex_mirror.html#r">r</a>
2632 + <a class="index-letter" href="elementindex_mirror.html#s">s</a>
2633 + <a class="index-letter" href="elementindex_mirror.html#u">u</a>
2634 + <a class="index-letter" href="elementindex_mirror.html#w">w</a>
2635 +</div>
2636 </body>
2637 +</html>
2638 \ No newline at end of file
2639
2640 diff --git a/docs/errors.html b/docs/errors.html
2641 new file mode 100644
2642 index 0000000..89f9ba9
2643 --- /dev/null
2644 +++ b/docs/errors.html
2645 @@ -0,0 +1,91 @@
2646 +<?xml version="1.0" encoding="iso-8859-1"?>
2647 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2648 + <html xmlns="http://www.w3.org/1999/xhtml">
2649 + <head>
2650 + <!-- template designed by Marco Von Ballmoos -->
2651 + <title>phpDocumentor Parser Errors and Warnings</title>
2652 + <link rel="stylesheet" href="media/stylesheet.css" />
2653 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
2654 + </head>
2655 + <body>
2656 +
2657 <a href="#Post-parsing">Post-parsing</a><br>
2658 +<a href="#config-dist.php">config-dist.php</a><br>
2659 +<a href="#header.php">header.php</a><br>
2660 +<a href="#index.php">index.php</a><br>
2661 +<a href="#init.php">init.php</a><br>
2662 +<a href="#locations.php">locations.php</a><br>
2663 +<a href="#login.php">login.php</a><br>
2664 +<a href="#logout.php">logout.php</a><br>
2665 +<a href="#mstats.php">mstats.php</a><br>
2666 +<a href="#os.php">os.php</a><br>
2667 +<a href="#products.php">products.php</a><br>
2668 +<a href="#pstats.php">pstats.php</a><br>
2669 +<a href="#regions.php">regions.php</a><br>
2670 +<a href="#users.php">users.php</a><br>
2671 +<a href="#util.php">util.php</a><br>
2672 +<a name="admin_init.php"></a>
2673 +<h1>admin_init.php</h1>
2674 +<h2>Warnings:</h2><br>
2675 +<b>Warning on line 6</b> - Page-level DocBlock precedes "require_once admin_init.php", use another DocBlock to document the source element<br>
2676 +<a name="config-dist.php"></a>
2677 +<h1>config-dist.php</h1>
2678 +<h2>Warnings:</h2><br>
2679 +<b>Warning on line 6</b> - Page-level DocBlock precedes "define FILEPATH", use another DocBlock to document the source element<br>
2680 +<a name="header.php"></a>
2681 +<h1>header.php</h1>
2682 +<h2>Warnings:</h2><br>
2683 +<b>Warning on line 53</b> - Page-level DocBlock precedes "require_once header.php", use another DocBlock to document the source element<br>
2684 +<a name="index.php"></a>
2685 +<h1>index.php</h1>
2686 +<h2>Warnings:</h2><br>
2687 +<b>Warning on line 7</b> - Page-level DocBlock precedes "require_once index.php", use another DocBlock to document the source element<br>
2688 +<b>Warning on line 7</b> - Page-level DocBlock precedes "require_once index.php", use another DocBlock to document the source element<br>
2689 +<a name="init.php"></a>
2690 +<h1>init.php</h1>
2691 +<h2>Warnings:</h2><br>
2692 +<b>Warning on line 6</b> - Page-level DocBlock precedes "require_once init.php", use another DocBlock to document the source element<br>
2693 +<a name="locations.php"></a>
2694 +<h1>locations.php</h1>
2695 +<h2>Warnings:</h2><br>
2696 +<b>Warning on line 7</b> - Page-level DocBlock precedes "require_once locations.php", use another DocBlock to document the source element<br>
2697 +<a name="login.php"></a>
2698 +<h1>login.php</h1>
2699 +<h2>Warnings:</h2><br>
2700 +<b>Warning on line 6</b> - Page-level DocBlock precedes "require_once login.php", use another DocBlock to document the source element<br>
2701 +<a name="logout.php"></a>
2702 +<h1>logout.php</h1>
2703 +<h2>Warnings:</h2><br>
2704 +<b>Warning on line 6</b> - Page-level DocBlock precedes "require_once logout.php", use another DocBlock to document the source element<br>
2705 +<a name="mstats.php"></a>
2706 +<h1>mstats.php</h1>
2707 +<h2>Warnings:</h2><br>
2708 +<b>Warning on line 7</b> - Page-level DocBlock precedes "require_once mstats.php", use another DocBlock to document the source element<br>
2709 +<a name="os.php"></a>
2710 +<h1>os.php</h1>
2711 +<h2>Warnings:</h2><br>
2712 +<b>Warning on line 7</b> - Page-level DocBlock precedes "require_once os.php", use another DocBlock to document the source element<br>
2713 +<a name="products.php"></a>
2714 +<h1>products.php</h1>
2715 +<h2>Warnings:</h2><br>
2716 +<b>Warning on line 7</b> - Page-level DocBlock precedes "require_once products.php", use another DocBlock to document the source element<br>
2717 +<a name="pstats.php"></a>
2718 +<h1>pstats.php</h1>
2719 +<h2>Warnings:</h2><br>
2720 +<b>Warning on line 7</b> - Page-level DocBlock precedes "require_once pstats.php", use another DocBlock to document the source element<br>
2721 +<a name="regions.php"></a>
2722 +<h1>regions.php</h1>
2723 +<h2>Warnings:</h2><br>
2724 +<b>Warning on line 7</b> - Page-level DocBlock precedes "require_once regions.php", use another DocBlock to document the source element<br>
2725 +<a name="users.php"></a>
2726 +<h1>users.php</h1>
2727 +<h2>Warnings:</h2><br>
2728 +<b>Warning on line 7</b> - Page-level DocBlock precedes "require_once users.php", use another DocBlock to document the source element<br>
2729 +<a name="util.php"></a>
2730 +<h1>util.php</h1>
2731 +<h2>Warnings:</h2><br>
2732 +<b>Warning on line 157</b> - Unknown tag "@ret" used<br>
2733 + <p class="notes" id="credit">
2734 + Documentation generated on Mon, 8 Nov 2004 13:43:06 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
2735 + </p>
2736 + </body>
2737 +</html>
2738 \ No newline at end of file
2739
2740 diff --git a/docs/index.html b/docs/index.html
2741 new file mode 100644
2742 index 0000000..d300169
2743 --- /dev/null
2744 +++ b/docs/index.html
2745 @@ -0,0 +1,24 @@
2746 +<?xml version="1.0" encoding="iso-8859-1"?>
2747 +<!DOCTYPE html
2748 + PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR"
2749 + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
2750 + <html xmlns="http://www.w3.org/1999/xhtml">
2751 +<head>
2752 + <!-- Generated by phpDocumentor on Mon, 8 Nov 2004 13:43:03 -0800 -->
2753 + <title>mirror</title>
2754 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
2755 +</head>
2756 +
2757 +<FRAMESET rows='120,*'>
2758 + <FRAME src='packages.html' name='left_top' frameborder="1" bordercolor="#999999">
2759 + <FRAMESET cols='25%,*'>
2760 + <FRAME src='li_mirror.html' name='left_bottom' frameborder="1" bordercolor="#999999">
2761 + <FRAME src='blank.html' name='right' frameborder="1" bordercolor="#999999">
2762 + </FRAMESET>
2763 + <NOFRAMES>
2764 + <H2>Frame Alert</H2>
2765 + <P>This document is designed to be viewed using the frames feature.
2766 + If you see this message, you are using a non-frame-capable web client.</P>
2767 + </NOFRAMES>
2768 +</FRAMESET>
2769 +</HTML>
2770 \ No newline at end of file
2771
2772 diff --git a/docs/li_mirror.html b/docs/li_mirror.html
2773 new file mode 100644
2774 index 0000000..50cc378
2775 --- /dev/null
2776 +++ b/docs/li_mirror.html
2777 @@ -0,0 +1,231 @@
2778 +<?xml version="1.0" encoding="iso-8859-1"?>
2779 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2780 + <html xmlns="http://www.w3.org/1999/xhtml">
2781 + <head>
2782 + <!-- template designed by Marco Von Ballmoos -->
2783 + <title></title>
2784 + <link rel="stylesheet" href="media/stylesheet.css" />
2785 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
2786 + </head>
2787 + <body>
2788 +
2789 <div class="package-title">mirror</div>
2790 +<div class="package-details">
2791 +
2792 + <dl class="tree">
2793 +
2794 + <dt class="folder-title">Description</dt>
2795 + <dd>
2796 + <a href='classtrees_mirror.html' target='right'>Class trees</a><br />
2797 + <a href='elementindex_mirror.html' target='right'>Index of elements</a><br />
2798 + <a href="todolist.html" target="right">Todo List</a><br />
2799 + </dd>
2800 +
2801 +
2802 +
2803 +
2804 +
2805 +
2806 +
2807 + <dt class="sub-package">admin</dt>
2808 + <dd>
2809 + <dl class="tree">
2810 + <dt class="folder-title">Files</dt>
2811 + <dd><a href='mirror/admin/_php_admin_index_php.html' target='right'>index.php</a></dd>
2812 + <dd><a href='mirror/admin/_php_admin_locations_php.html' target='right'>locations.php</a></dd>
2813 + <dd><a href='mirror/admin/_php_admin_login_php.html' target='right'>login.php</a></dd>
2814 + <dd><a href='mirror/admin/_php_admin_logout_php.html' target='right'>logout.php</a></dd>
2815 + <dd><a href='mirror/admin/_php_admin_mstats_php.html' target='right'>mstats.php</a></dd>
2816 + <dd><a href='mirror/admin/_php_admin_os_php.html' target='right'>os.php</a></dd>
2817 + <dd><a href='mirror/admin/_php_admin_products_php.html' target='right'>products.php</a></dd>
2818 + <dd><a href='mirror/admin/_php_admin_pstats_php.html' target='right'>pstats.php</a></dd>
2819 + <dd><a href='mirror/admin/_php_admin_regions_php.html' target='right'>regions.php</a></dd>
2820 + <dd><a href='mirror/admin/_php_admin_users_php.html' target='right'>users.php</a></dd>
2821 + </dl>
2822 + </dd>
2823 +
2824 +
2825 +
2826 +
2827 + <dt class="sub-package">cfg</dt>
2828 + <dd>
2829 + <dl class="tree">
2830 + <dt class="folder-title">Files</dt>
2831 + <dd><a href='mirror/cfg/_php_cfg_admin_init_php.html' target='right'>admin_init.php</a></dd>
2832 + <dd><a href='mirror/cfg/_php_cfg_config-dist_php.html' target='right'>config-dist.php</a></dd>
2833 + <dd><a href='mirror/cfg/_php_cfg_init_php.html' target='right'>init.php</a></dd>
2834 + </dl>
2835 + </dd>
2836 +
2837 +
2838 +
2839 +
2840 + <dt class="sub-package">forms</dt>
2841 + <dd>
2842 + <dl class="tree">
2843 + <dt class="folder-title">Files</dt>
2844 + <dd><a href='mirror/forms/_php_inc_forms_location_php.html' target='right'>location.php</a></dd>
2845 + <dd><a href='mirror/forms/_php_inc_forms_mirror_php.html' target='right'>mirror.php</a></dd>
2846 + <dd><a href='mirror/forms/_php_inc_forms_os_php.html' target='right'>os.php</a></dd>
2847 + <dd><a href='mirror/forms/_php_inc_forms_product_php.html' target='right'>product.php</a></dd>
2848 + <dd><a href='mirror/forms/_php_inc_forms_region_php.html' target='right'>region.php</a></dd>
2849 + <dd><a href='mirror/forms/_php_inc_forms_user_php.html' target='right'>user.php</a></dd>
2850 + </dl>
2851 + </dd>
2852 +
2853 +
2854 +
2855 +
2856 + <dt class="sub-package">inc</dt>
2857 + <dd>
2858 + <dl class="tree">
2859 + <dt class="folder-title">Files</dt>
2860 + <dd><a href='mirror/inc/_php_inc_admin_nav_php.html' target='right'>admin_nav.php</a></dd>
2861 + <dd><a href='mirror/inc/_php_inc_footer_php.html' target='right'>footer.php</a></dd>
2862 + <dd><a href='mirror/inc/_php_inc_header_php.html' target='right'>header.php</a></dd>
2863 + </dl>
2864 + </dd>
2865 +
2866 +
2867 +
2868 +
2869 + <dt class="sub-package">lib</dt>
2870 + <dd>
2871 + <dl class="tree">
2872 + <dt class="folder-title">Functions</dt>
2873 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionarray_days' target='right'>array_days</a></dd>
2874 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionarray_hours' target='right'>array_hours</a></dd>
2875 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionarray_minutes' target='right'>array_minutes</a></dd>
2876 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionarray_months' target='right'>array_months</a></dd>
2877 + <dd><a href='mirror/lib/_php_lib_util_php.html#functionarray_order_by' target='right'>array_order_by</a></dd>
2878 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionarray_states' target='right'>array_states</a></dd>
2879 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionarray_years' target='right'>array_years</a></dd>
2880 + <dd><a href='mirror/lib/_php_lib_auth_php.html#functionauth_create_session' target='right'>auth_create_session</a></dd>
2881 + <dd><a href='mirror/lib/_php_lib_auth_php.html#functionauth_is_valid_session' target='right'>auth_is_valid_session</a></dd>
2882 + <dd><a href='mirror/lib/_php_lib_auth_php.html#functionauth_logout' target='right'>auth_logout</a></dd>
2883 + <dd><a href='mirror/lib/_php_lib_auth_php.html#functionauth_mysql' target='right'>auth_mysql</a></dd>
2884 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionclean_in' target='right'>clean_in</a></dd>
2885 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionclean_out' target='right'>clean_out</a></dd>
2886 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_close' target='right'>db_close</a></dd>
2887 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_connect' target='right'>db_connect</a></dd>
2888 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_fetch' target='right'>db_fetch</a></dd>
2889 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_fieldnames' target='right'>db_fieldnames</a></dd>
2890 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_get' target='right'>db_get</a></dd>
2891 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_get_one' target='right'>db_get_one</a></dd>
2892 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functiondb_get_to_options' target='right'>db_get_to_options</a></dd>
2893 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_insert_id' target='right'>db_insert_id</a></dd>
2894 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_makeinsert' target='right'>db_makeinsert</a></dd>
2895 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_makereplace' target='right'>db_makereplace</a></dd>
2896 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_makeupdate' target='right'>db_makeupdate</a></dd>
2897 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_name_to_id' target='right'>db_name_to_id</a></dd>
2898 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_numrows' target='right'>db_numrows</a></dd>
2899 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_query' target='right'>db_query</a></dd>
2900 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_select' target='right'>db_select</a></dd>
2901 + <dd><a href='mirror/lib/_php_lib_db_php.html#functiondb_toggle_bool' target='right'>db_toggle_bool</a></dd>
2902 + <dd><a href='mirror/lib/_php_lib_util_php.html#functiondebug_r' target='right'>debug_r</a></dd>
2903 + <dd><a href='mirror/lib/_php_lib_util_php.html#functionemptify_in_array' target='right'>emptify_in_array</a></dd>
2904 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_array_fix_dates' target='right'>form_array_fix_dates</a></dd>
2905 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_array_get_date' target='right'>form_array_get_date</a></dd>
2906 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_array_get_datetime' target='right'>form_array_get_datetime</a></dd>
2907 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_checkbox' target='right'>form_checkbox</a></dd>
2908 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_end' target='right'>form_end</a></dd>
2909 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_hidden' target='right'>form_hidden</a></dd>
2910 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_label' target='right'>form_label</a></dd>
2911 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_password' target='right'>form_password</a></dd>
2912 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_radio' target='right'>form_radio</a></dd>
2913 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_reset' target='right'>form_reset</a></dd>
2914 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_select' target='right'>form_select</a></dd>
2915 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_start' target='right'>form_start</a></dd>
2916 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_submit' target='right'>form_submit</a></dd>
2917 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_text' target='right'>form_text</a></dd>
2918 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionform_textarea' target='right'>form_textarea</a></dd>
2919 + <dd><a href='mirror/lib/_php_lib_geo_php.html#functiongeo_get_coordinates' target='right'>geo_get_coordinates</a></dd>
2920 + <dd><a href='mirror/lib/_php_lib_geo_php.html#functiongeo_get_country' target='right'>geo_get_country</a></dd>
2921 + <dd><a href='mirror/lib/_php_lib_geo_php.html#functiongeo_get_distance' target='right'>geo_get_distance</a></dd>
2922 + <dd><a href='mirror/lib/_php_lib_geo_php.html#functiongeo_get_record' target='right'>geo_get_record</a></dd>
2923 + <dd><a href='mirror/lib/_php_lib_geo_php.html#functiongeo_query' target='right'>geo_query</a></dd>
2924 + <dd><a href='mirror/lib/_php_lib_list_php.html#functionget_order' target='right'>get_order</a></dd>
2925 + <dd><a href='mirror/lib/_php_lib_list_php.html#functionget_orderby' target='right'>get_orderby</a></dd>
2926 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionis_email_address' target='right'>is_email_address</a></dd>
2927 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionis_phone_number' target='right'>is_phone_number</a></dd>
2928 + <dd><a href='mirror/lib/_php_lib_list_php.html#functionlist_edit_ids' target='right'>list_edit_ids</a></dd>
2929 + <dd><a href='mirror/lib/_php_lib_list_php.html#functionlist_update_ids' target='right'>list_update_ids</a></dd>
2930 + <dd><a href='mirror/lib/_php_lib_util_php.html#functionmicrotime_float' target='right'>microtime_float</a></dd>
2931 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_location' target='right'>mirror_delete_location</a></dd>
2932 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_mirror' target='right'>mirror_delete_mirror</a></dd>
2933 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_os' target='right'>mirror_delete_os</a></dd>
2934 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_product' target='right'>mirror_delete_product</a></dd>
2935 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_region' target='right'>mirror_delete_region</a></dd>
2936 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_delete_user' target='right'>mirror_delete_user</a></dd>
2937 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_locations' target='right'>mirror_get_locations</a></dd>
2938 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_mirrors' target='right'>mirror_get_mirrors</a></dd>
2939 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_mirrors_select' target='right'>mirror_get_mirrors_select</a></dd>
2940 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_mirror_stats' target='right'>mirror_get_mirror_stats</a></dd>
2941 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_location' target='right'>mirror_get_one_location</a></dd>
2942 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_mirror' target='right'>mirror_get_one_mirror</a></dd>
2943 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_os' target='right'>mirror_get_one_os</a></dd>
2944 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_product' target='right'>mirror_get_one_product</a></dd>
2945 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_region' target='right'>mirror_get_one_region</a></dd>
2946 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_one_user' target='right'>mirror_get_one_user</a></dd>
2947 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_oss' target='right'>mirror_get_oss</a></dd>
2948 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_oss_select' target='right'>mirror_get_oss_select</a></dd>
2949 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_oss_select_priority' target='right'>mirror_get_oss_select_priority</a></dd>
2950 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_products' target='right'>mirror_get_products</a></dd>
2951 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_products_select' target='right'>mirror_get_products_select</a></dd>
2952 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_products_select_priority' target='right'>mirror_get_products_select_priority</a></dd>
2953 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_product_stats' target='right'>mirror_get_product_stats</a></dd>
2954 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_regions' target='right'>mirror_get_regions</a></dd>
2955 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_regions_select' target='right'>mirror_get_regions_select</a></dd>
2956 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_regions_select_priority' target='right'>mirror_get_regions_select_priority</a></dd>
2957 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_get_users' target='right'>mirror_get_users</a></dd>
2958 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_location' target='right'>mirror_insert_location</a></dd>
2959 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_mirror' target='right'>mirror_insert_mirror</a></dd>
2960 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_os' target='right'>mirror_insert_os</a></dd>
2961 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_product' target='right'>mirror_insert_product</a></dd>
2962 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_region' target='right'>mirror_insert_region</a></dd>
2963 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_insert_user' target='right'>mirror_insert_user</a></dd>
2964 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_toggle' target='right'>mirror_toggle</a></dd>
2965 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_update_location' target='right'>mirror_update_location</a></dd>
2966 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_update_mirror' target='right'>mirror_update_mirror</a></dd>
2967 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_update_os' target='right'>mirror_update_os</a></dd>
2968 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_update_product' target='right'>mirror_update_product</a></dd>
2969 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_update_region' target='right'>mirror_update_region</a></dd>
2970 + <dd><a href='mirror/lib/_php_lib_mirror_php.html#functionmirror_update_user' target='right'>mirror_update_user</a></dd>
2971 + <dd><a href='mirror/lib/_php_lib_util_php.html#functionpassword_gen' target='right'>password_gen</a></dd>
2972 + <dd><a href='mirror/lib/_php_lib_util_php.html#functionrecord_exists' target='right'>record_exists</a></dd>
2973 + <dd><a href='mirror/lib/_php_lib_util_php.html#functionset_error' target='right'>set_error</a></dd>
2974 + <dd><a href='mirror/lib/_php_lib_util_php.html#functionset_msg' target='right'>set_msg</a></dd>
2975 + <dd><a href='mirror/lib/_php_lib_util_php.html#functionshow_error' target='right'>show_error</a></dd>
2976 + <dd><a href='mirror/lib/_php_lib_list_php.html#functionshow_headers' target='right'>show_headers</a></dd>
2977 + <dd><a href='mirror/lib/_php_lib_list_php.html#functionshow_list' target='right'>show_list</a></dd>
2978 + <dd><a href='mirror/lib/_php_lib_util_php.html#functionshow_msg' target='right'>show_msg</a></dd>
2979 + <dd><a href='mirror/lib/_php_lib_list_php.html#functionshow_row' target='right'>show_row</a></dd>
2980 + <dd><a href='mirror/lib/_php_lib_util_php.html#functionshow_tabs' target='right'>show_tabs</a></dd>
2981 + <dd><a href='mirror/lib/_php_lib_forms_php.html#functionurl_out' target='right'>url_out</a></dd>
2982 + <dt class="folder-title">Files</dt>
2983 + <dd><a href='mirror/lib/_php_lib_auth_php.html' target='right'>auth.php</a></dd>
2984 + <dd><a href='mirror/lib/_php_lib_db_php.html' target='right'>db.php</a></dd>
2985 + <dd><a href='mirror/lib/_php_lib_forms_php.html' target='right'>forms.php</a></dd>
2986 + <dd><a href='mirror/lib/_php_lib_geo_php.html' target='right'>geo.php</a></dd>
2987 + <dd><a href='mirror/lib/_php_lib_list_php.html' target='right'>list.php</a></dd>
2988 + <dd><a href='mirror/lib/_php_lib_mirror_php.html' target='right'>mirror.php</a></dd>
2989 + <dd><a href='mirror/lib/_php_lib_util_php.html' target='right'>util.php</a></dd>
2990 + </dl>
2991 + </dd>
2992 +
2993 +
2994 +
2995 +
2996 + <dt class="sub-package">pub</dt>
2997 + <dd>
2998 + <dl class="tree">
2999 + <dt class="folder-title">Files</dt>
3000 + <dd><a href='mirror/pub/_php_index_php.html' target='right'>index.php</a></dd>
3001 + </dl>
3002 + </dd>
3003 +
3004 +
3005 + </dl>
3006 +</div>
3007 +<p class="notes"><a href="http://www.phpdoc.org" target="_blank">phpDocumentor v <span class="field">1.3.0RC3</span></a></p>
3008 +</BODY>
3009 +</HTML>
3010 \ No newline at end of file
3011
3012 diff --git a/docs/media/banner.css b/docs/media/banner.css
3013 new file mode 100644
3014 index 0000000..f2149eb
3015 --- /dev/null
3016 +++ b/docs/media/banner.css
3017 @@ -0,0 +1,32 @@
3018 +body
3019 +{
3020 + background-color: #CCCCFF;
3021 + margin: 0px;
3022 + padding: 0px;
3023 +}
3024 +
3025 +/* Banner (top bar) classes */
3026 +
3027 +.banner { }
3028 +
3029 +.banner-menu
3030 +{
3031 + clear: both;
3032 + padding: .5em;
3033 + border-top: 2px solid #6666AA;
3034 +}
3035 +
3036 +.banner-title
3037 +{
3038 + text-align: right;
3039 + font-size: 20pt;
3040 + font-weight: bold;
3041 + margin: .2em;
3042 +}
3043 +
3044 +.package-selector
3045 +{
3046 + background-color: #AAAADD;
3047 + border: 1px solid black;
3048 + color: yellow;
3049 +}
3050
3051 diff --git a/docs/media/stylesheet.css b/docs/media/stylesheet.css
3052 new file mode 100644
3053 index 0000000..94870fb
3054 --- /dev/null
3055 +++ b/docs/media/stylesheet.css
3056 @@ -0,0 +1,144 @@
3057 +a { color: #336699; text-decoration: none; }
3058 +a:hover { color: #6699CC; text-decoration: underline; }
3059 +a:active { color: #6699CC; text-decoration: underline; }
3060 +
3061 +body { background : #FFFFFF; }
3062 +body, table { font-family: Georgia, Times New Roman, Times, serif; font-size: 10pt }
3063 +p, li { line-height: 140% }
3064 +a img { border: 0px; }
3065 +dd { margin-left: 0px; padding-left: 1em; }
3066 +
3067 +/* Page layout/boxes */
3068 +
3069 +.info-box {}
3070 +.info-box-title { margin: 1em 0em 0em 0em; padding: .25em; font-weight: normal; font-size: 14pt; border: 2px solid #999999; background-color: #CCCCFF }
3071 +.info-box-body { border: 1px solid #999999; padding: .5em; }
3072 +.nav-bar { font-size: 8pt; white-space: nowrap; text-align: right; padding: .2em; margin: 0em 0em 1em 0em; }
3073 +
3074 +.oddrow { background-color: #F8F8F8; border: 1px solid #AAAAAA; padding: .5em; margin-bottom: 1em}
3075 +.evenrow { border: 1px solid #AAAAAA; padding: .5em; margin-bottom: 1em}
3076 +
3077 +.page-body { max-width: 800px; margin: auto; }
3078 +.tree dl { margin: 0px }
3079 +
3080 +/* Index formatting classes */
3081 +
3082 +.index-item-body { margin-top: .5em; margin-bottom: .5em}
3083 +.index-item-description { margin-top: .25em }
3084 +.index-item-details { font-weight: normal; font-style: italic; font-size: 8pt }
3085 +.index-letter-section { background-color: #EEEEEE; border: 1px dotted #999999; padding: .5em; margin-bottom: 1em}
3086 +.index-letter-title { font-size: 12pt; font-weight: bold }
3087 +.index-letter-menu { text-align: center; margin: 1em }
3088 +.index-letter { font-size: 12pt }
3089 +
3090 +/* Docbook classes */
3091 +
3092 +.description {}
3093 +.short-description { font-weight: bold; color: #666666; }
3094 +.tags { padding-left: 0em; margin-left: 3em; color: #666666; list-style-type: square; }
3095 +.parameters { padding-left: 0em; margin-left: 3em; font-style: italic; list-style-type: square; }
3096 +.redefinitions { font-size: 8pt; padding-left: 0em; margin-left: 2em; }
3097 +.package { }
3098 +.package-title { font-weight: bold; font-size: 14pt; border-bottom: 1px solid black }
3099 +.package-details { font-size: 85%; }
3100 +.sub-package { font-weight: bold; font-size: 120% }
3101 +.tutorial { border-width: thin; border-color: #0066ff }
3102 +.tutorial-nav-box { width: 100%; border: 1px solid #999999; background-color: #F8F8F8; }
3103 +.nav-button-disabled { color: #999999; }
3104 +.nav-button:active,
3105 +.nav-button:focus,
3106 +.nav-button:hover { background-color: #DDDDDD; outline: 1px solid #999999; text-decoration: none }
3107 +.folder-title { font-style: italic }
3108 +
3109 +/* Generic formatting */
3110 +
3111 +.field { font-weight: bold; }
3112 +.detail { font-size: 8pt; }
3113 +.notes { font-style: italic; font-size: 8pt; }
3114 +.separator { background-color: #999999; height: 2px; }
3115 +.warning { color: #FF6600; }
3116 +.disabled { font-style: italic; color: #999999; }
3117 +
3118 +/* Code elements */
3119 +
3120 +.line-number { }
3121 +
3122 +.class-table { width: 100%; }
3123 +.class-table-header { border-bottom: 1px dotted #666666; text-align: left}
3124 +.class-name { color: #000000; font-weight: bold; }
3125 +
3126 +.method-summary { padding-left: 1em; font-size: 8pt }
3127 +.method-header { }
3128 +.method-definition { margin-bottom: .3em }
3129 +.method-title { font-weight: bold; }
3130 +.method-name { font-weight: bold; }
3131 +.method-signature { font-size: 85%; color: #666666; margin: .5em 0em }
3132 +.method-result { font-style: italic; }
3133 +
3134 +.var-summary { padding-left: 1em; font-size: 8pt; }
3135 +.var-header { }
3136 +.var-title { margin-bottom: .3em }
3137 +.var-type { font-style: italic; }
3138 +.var-name { font-weight: bold; }
3139 +.var-default {}
3140 +.var-description { font-weight: normal; color: #000000; }
3141 +
3142 +.include-title { }
3143 +.include-type { font-style: italic; }
3144 +.include-name { font-weight: bold; }
3145 +
3146 +.const-title { }
3147 +.const-name { font-weight: bold; }
3148 +
3149 +/* Syntax highlighting */
3150 +
3151 +.src-code { border: 1px solid #336699; padding: 1em; background-color: #EEEEEE; }
3152 +*[class="src-code"] { line-height : 0.5em }
3153 +
3154 +.src-comm { color: green; }
3155 +.src-id { }
3156 +.src-inc { color: #0000FF; }
3157 +.src-key { color: #0000FF; }
3158 +.src-num { color: #CC0000; }
3159 +.src-str { color: #66cccc; }
3160 +.src-sym { font-weight: bold; }
3161 +.src-var { }
3162 +
3163 +.src-php { font-weight: bold; }
3164 +
3165 +.src-doc { color: #009999 }
3166 +.src-doc-close-template { color: #0000FF }
3167 +.src-doc-coretag { color: #0099FF; font-weight: bold }
3168 +.src-doc-inlinetag { color: #0099FF }
3169 +.src-doc-internal { color: #6699cc }
3170 +.src-doc-tag { color: #0080CC }
3171 +.src-doc-template { color: #0000FF }
3172 +.src-doc-type { font-style: italic }
3173 +.src-doc-var { font-style: italic }
3174 +
3175 +.tute-tag { color: #009999 }
3176 +.tute-attribute-name { color: #0000FF }
3177 +.tute-attribute-value { color: #0099FF }
3178 +.tute-entity { font-weight: bold; }
3179 +.tute-comment { font-style: italic }
3180 +.tute-inline-tag { color: #636311; font-weight: bold }
3181 +
3182 +/* tutorial */
3183 +
3184 +.authors { }
3185 +.author { font-style: italic; font-weight: bold }
3186 +.author-blurb { margin: .5em 0em .5em 2em; font-size: 85%; font-weight: normal; font-style: normal }
3187 +.example { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; }
3188 +*[class="example"] { line-height : 0.5em }
3189 +.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
3190 +*[class="listing"] { line-height : 0.5em }
3191 +.release-info { font-size: 85%; font-style: italic; margin: 1em 0em }
3192 +.ref-title-box { }
3193 +.ref-title { }
3194 +.ref-purpose { font-style: italic; color: #666666 }
3195 +.ref-synopsis { }
3196 +.title { font-weight: bold; margin: 1em 0em 0em 0em; padding: .25em; border: 2px solid #999999; background-color: #CCCCFF }
3197 +.cmd-synopsis { margin: 1em 0em }
3198 +.cmd-title { font-weight: bold }
3199 +.toc { margin-left: 2em; padding-left: 0em }
3200 +
3201
3202 diff --git a/docs/mirror/_php_cfg_admin_init_php.html b/docs/mirror/_php_cfg_admin_init_php.html
3203 new file mode 100644
3204 index 0000000..33b23f1
3205 --- /dev/null
3206 +++ b/docs/mirror/_php_cfg_admin_init_php.html
3207 @@ -0,0 +1,89 @@
3208 +<?xml version="1.0" encoding="iso-8859-1"?>
3209 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3210 + <html xmlns="http://www.w3.org/1999/xhtml">
3211 + <head>
3212 + <!-- template designed by Marco Von Ballmoos -->
3213 + <title>Docs for page admin_init.php</title>
3214 + <link rel="stylesheet" href="../media/stylesheet.css" />
3215 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
3216 + </head>
3217 + <body>
3218 + <div class="page-body">
3219 +<h2 class="file-name">/php/cfg/admin_init.php</h2>
3220 +
3221 +<a name="sec-description"></a>
3222 +<div class="info-box">
3223 + <div class="info-box-title">Description</div>
3224 + <div class="nav-bar">
3225 + <span class="disabled">Description</span> |
3226 + <a href="#sec-includes">Includes</a>
3227 + </div>
3228 + <div class="info-box-body">
3229 + <!-- ========== Info from phpDoc block ========= -->
3230 +<p class="short-description">Admin initialization.</p>
3231 +
3232 + </div>
3233 +</div>
3234 +
3235 +
3236 + <a name="sec-includes"></a>
3237 + <div class="info-box">
3238 + <div class="info-box-title">Includes</div>
3239 + <div class="nav-bar">
3240 + <a href="#sec-description">Description</a> |
3241 + <span class="disabled">Includes</span>
3242 + </div>
3243 + <div class="info-box-body">
3244 + <a name="_LIB_/auth_php"><!-- --></a>
3245 +<div class="evenrow">
3246 +
3247 + <div>
3248 + <span class="include-title">
3249 + <span class="include-type">require_once</span>
3250 + (<span class="include-name">LIB.'/auth.php'</span>)
3251 + (line <span class="line-number">7</span>)
3252 + </span>
3253 + </div>
3254 +
3255 + <!-- ========== Info from phpDoc block ========= -->
3256 +
3257 +</div>
3258 +<a name="_LIB_/forms_php"><!-- --></a>
3259 +<div class="oddrow">
3260 +
3261 + <div>
3262 + <span class="include-title">
3263 + <span class="include-type">require_once</span>
3264 + (<span class="include-name">LIB.'/forms.php'</span>)
3265 + (line <span class="line-number">8</span>)
3266 + </span>
3267 + </div>
3268 +
3269 + <!-- ========== Info from phpDoc block ========= -->
3270 +
3271 +</div>
3272 +<a name="_LIB_/list_php"><!-- --></a>
3273 +<div class="evenrow">
3274 +
3275 + <div>
3276 + <span class="include-title">
3277 + <span class="include-type">require_once</span>
3278 + (<span class="include-name">LIB.'/list.php'</span>)
3279 + (line <span class="line-number">9</span>)
3280 + </span>
3281 + </div>
3282 +
3283 + <!-- ========== Info from phpDoc block ========= -->
3284 +
3285 +</div>
3286 + </div>
3287 + </div>
3288 +
3289 +
3290 +
3291 +
3292 + <p class="notes" id="credit">
3293 + Documentation generated on Mon, 8 Nov 2004 13:30:41 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
3294 + </p>
3295 + </div></body>
3296 +</html>
3297 \ No newline at end of file
3298
3299 diff --git a/docs/mirror/_php_index_php.html b/docs/mirror/_php_index_php.html
3300 new file mode 100644
3301 index 0000000..8a0609b
3302 --- /dev/null
3303 +++ b/docs/mirror/_php_index_php.html
3304 @@ -0,0 +1,75 @@
3305 +<?xml version="1.0" encoding="iso-8859-1"?>
3306 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3307 + <html xmlns="http://www.w3.org/1999/xhtml">
3308 + <head>
3309 + <!-- template designed by Marco Von Ballmoos -->
3310 + <title>Docs for page index.php</title>
3311 + <link rel="stylesheet" href="../media/stylesheet.css" />
3312 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
3313 + </head>
3314 + <body>
3315 + <div class="page-body">
3316 +<h2 class="file-name">/php/index.php</h2>
3317 +
3318 +<a name="sec-description"></a>
3319 +<div class="info-box">
3320 + <div class="info-box-title">Description</div>
3321 + <div class="nav-bar">
3322 + <span class="disabled">Description</span> |
3323 + <a href="#sec-includes">Includes</a>
3324 + </div>
3325 + <div class="info-box-body">
3326 + <!-- ========== Info from phpDoc block ========= -->
3327 +<p class="short-description">Main handler.</p>
3328 +
3329 + </div>
3330 +</div>
3331 +
3332 +
3333 + <a name="sec-includes"></a>
3334 + <div class="info-box">
3335 + <div class="info-box-title">Includes</div>
3336 + <div class="nav-bar">
3337 + <a href="#sec-description">Description</a> |
3338 + <span class="disabled">Includes</span>
3339 + </div>
3340 + <div class="info-box-body">
3341 + <a name="__/cfg/config_php"><!-- --></a>
3342 +<div class="evenrow">
3343 +
3344 + <div>
3345 + <span class="include-title">
3346 + <span class="include-type">require_once</span>
3347 + (<span class="include-name">'./cfg/config.php'</span>)
3348 + (line <span class="line-number">7</span>)
3349 + </span>
3350 + </div>
3351 +
3352 + <!-- ========== Info from phpDoc block ========= -->
3353 +
3354 +</div>
3355 +<a name="_LIB_/db_php"><!-- --></a>
3356 +<div class="oddrow">
3357 +
3358 + <div>
3359 + <span class="include-title">
3360 + <span class="include-type">require_once</span>
3361 + (<span class="include-name">LIB.'/db.php'</span>)
3362 + (line <span class="line-number">11</span>)
3363 + </span>
3364 + </div>
3365 +
3366 + <!-- ========== Info from phpDoc block ========= -->
3367 +
3368 +</div>
3369 + </div>
3370 + </div>
3371 +
3372 +
3373 +
3374 +
3375 + <p class="notes" id="credit">
3376 + Documentation generated on Mon, 8 Nov 2004 13:30:42 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
3377 + </p>
3378 + </div></body>
3379 +</html>
3380 \ No newline at end of file
3381
3382 diff --git a/docs/mirror/admin/_php_admin_index_php.html b/docs/mirror/admin/_php_admin_index_php.html
3383 new file mode 100644
3384 index 0000000..5ccf292
3385 --- /dev/null
3386 +++ b/docs/mirror/admin/_php_admin_index_php.html
3387 @@ -0,0 +1,145 @@
3388 +<?xml version="1.0" encoding="iso-8859-1"?>
3389 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3390 + <html xmlns="http://www.w3.org/1999/xhtml">
3391 + <head>
3392 + <!-- template designed by Marco Von Ballmoos -->
3393 + <title>Docs for page index.php</title>
3394 + <link rel="stylesheet" href="../../media/stylesheet.css" />
3395 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
3396 + </head>
3397 + <body>
3398 + <div class="page-body">
3399 +<h2 class="file-name">/php/admin/index.php</h2>
3400 +
3401 +<a name="sec-description"></a>
3402 +<div class="info-box">
3403 + <div class="info-box-title">Description</div>
3404 + <div class="nav-bar">
3405 + <span class="disabled">Description</span> |
3406 + <a href="#sec-includes">Includes</a>
3407 + </div>
3408 + <div class="info-box-body">
3409 + <!-- ========== Info from phpDoc block ========= -->
3410 +<p class="short-description">Regions.</p>
3411 +
3412 + </div>
3413 +</div>
3414 +
3415 +
3416 + <a name="sec-includes"></a>
3417 + <div class="info-box">
3418 + <div class="info-box-title">Includes</div>
3419 + <div class="nav-bar">
3420 + <a href="#sec-description">Description</a> |
3421 + <span class="disabled">Includes</span>
3422 + </div>
3423 + <div class="info-box-body">
3424 + <a name="_INC_/forms/mirror_php"><!-- --></a>
3425 +<div class="evenrow">
3426 +
3427 + <div>
3428 + <span class="include-title">
3429 + <span class="include-type">include_once</span>
3430 + (<span class="include-name">INC.'/forms/mirror.php'</span>)
3431 + (line <span class="line-number">105</span>)
3432 + </span>
3433 + </div>
3434 +
3435 + <!-- ========== Info from phpDoc block ========= -->
3436 +
3437 +</div>
3438 +<a name="_INC_/forms/mirror_php"><!-- --></a>
3439 +<div class="oddrow">
3440 +
3441 + <div>
3442 + <span class="include-title">
3443 + <span class="include-type">include_once</span>
3444 + (<span class="include-name">INC.'/forms/mirror.php'</span>)
3445 + (line <span class="line-number">41</span>)
3446 + </span>
3447 + </div>
3448 +
3449 + <!-- ========== Info from phpDoc block ========= -->
3450 +
3451 +</div>
3452 +<a name="_HEADER"><!-- --></a>
3453 +<div class="evenrow">
3454 +
3455 + <div>
3456 + <span class="include-title">
3457 + <span class="include-type">require_once</span>
3458 + (<span class="include-name">HEADER</span>)
3459 + (line <span class="line-number">37</span>)
3460 + </span>
3461 + </div>
3462 +
3463 + <!-- ========== Info from phpDoc block ========= -->
3464 +
3465 +</div>
3466 +<a name="___/cfg/init_php"><!-- --></a>
3467 +<div class="oddrow">
3468 +
3469 + <div>
3470 + <span class="include-title">
3471 + <span class="include-type">require_once</span>
3472 + (<span class="include-name"><a href="../../mirror/cfg/_php_cfg_init_php.html">'../cfg/init.php'</a></span>)
3473 + (line <span class="line-number">8</span>)
3474 + </span>
3475 + </div>
3476 +
3477 + <!-- ========== Info from phpDoc block ========= -->
3478 +
3479 +</div>
3480 +<a name="_HEADER"><!-- --></a>
3481 +<div class="evenrow">
3482 +
3483 + <div>
3484 + <span class="include-title">
3485 + <span class="include-type">require_once</span>
3486 + (<span class="include-name">HEADER</span>)
3487 + (line <span class="line-number">72</span>)
3488 + </span>
3489 + </div>
3490 +
3491 + <!-- ========== Info from phpDoc block ========= -->
3492 +
3493 +</div>
3494 +<a name="_FOOTER"><!-- --></a>
3495 +<div class="oddrow">
3496 +
3497 + <div>
3498 + <span class="include-title">
3499 + <span class="include-type">require_once</span>
3500 + (<span class="include-name">FOOTER</span>)
3501 + (line <span class="line-number">109</span>)
3502 + </span>
3503 + </div>
3504 +
3505 + <!-- ========== Info from phpDoc block ========= -->
3506 +
3507 +</div>
3508 +<a name="_FOOTER"><!-- --></a>
3509 +<div class="evenrow">
3510 +
3511 + <div>
3512 + <span class="include-title">
3513 + <span class="include-type">require_once</span>
3514 + (<span class="include-name">FOOTER</span>)
3515 + (line <span class="line-number">47</span>)
3516 + </span>
3517 + </div>
3518 +
3519 + <!-- ========== Info from phpDoc block ========= -->
3520 +
3521 +</div>
3522 + </div>
3523 + </div>
3524 +
3525 +
3526 +
3527 +
3528 + <p class="notes" id="credit">
3529 + Documentation generated on Mon, 8 Nov 2004 13:43:04 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
3530 + </p>
3531 + </div></body>
3532 +</html>
3533 \ No newline at end of file
3534
3535 diff --git a/docs/mirror/admin/_php_admin_locations_php.html b/docs/mirror/admin/_php_admin_locations_php.html
3536 new file mode 100644
3537 index 0000000..580fdc5
3538 --- /dev/null
3539 +++ b/docs/mirror/admin/_php_admin_locations_php.html
3540 @@ -0,0 +1,145 @@
3541 +<?xml version="1.0" encoding="iso-8859-1"?>
3542 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3543 + <html xmlns="http://www.w3.org/1999/xhtml">
3544 + <head>
3545 + <!-- template designed by Marco Von Ballmoos -->
3546 + <title>Docs for page locations.php</title>
3547 + <link rel="stylesheet" href="../../media/stylesheet.css" />
3548 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
3549 + </head>
3550 + <body>
3551 + <div class="page-body">
3552 +<h2 class="file-name">/php/admin/locations.php</h2>
3553 +
3554 +<a name="sec-description"></a>
3555 +<div class="info-box">
3556 + <div class="info-box-title">Description</div>
3557 + <div class="nav-bar">
3558 + <span class="disabled">Description</span> |
3559 + <a href="#sec-includes">Includes</a>
3560 + </div>
3561 + <div class="info-box-body">
3562 + <!-- ========== Info from phpDoc block ========= -->
3563 +<p class="short-description">File locations.</p>
3564 +
3565 + </div>
3566 +</div>
3567 +
3568 +
3569 + <a name="sec-includes"></a>
3570 + <div class="info-box">
3571 + <div class="info-box-title">Includes</div>
3572 + <div class="nav-bar">
3573 + <a href="#sec-description">Description</a> |
3574 + <span class="disabled">Includes</span>
3575 + </div>
3576 + <div class="info-box-body">
3577 + <a name="_INC_/forms/location_php"><!-- --></a>
3578 +<div class="oddrow">
3579 +
3580 + <div>
3581 + <span class="include-title">
3582 + <span class="include-type">include_once</span>
3583 + (<span class="include-name">INC.'/forms/location.php'</span>)
3584 + (line <span class="line-number">95</span>)
3585 + </span>
3586 + </div>
3587 +
3588 + <!-- ========== Info from phpDoc block ========= -->
3589 +
3590 +</div>
3591 +<a name="_INC_/forms/location_php"><!-- --></a>
3592 +<div class="evenrow">
3593 +
3594 + <div>
3595 + <span class="include-title">
3596 + <span class="include-type">include_once</span>
3597 + (<span class="include-name">INC.'/forms/location.php'</span>)
3598 + (line <span class="line-number">41</span>)
3599 + </span>
3600 + </div>
3601 +
3602 + <!-- ========== Info from phpDoc block ========= -->
3603 +
3604 +</div>
3605 +<a name="_HEADER"><!-- --></a>
3606 +<div class="oddrow">
3607 +
3608 + <div>
3609 + <span class="include-title">
3610 + <span class="include-type">require_once</span>
3611 + (<span class="include-name">HEADER</span>)
3612 + (line <span class="line-number">37</span>)
3613 + </span>
3614 + </div>
3615 +
3616 + <!-- ========== Info from phpDoc block ========= -->
3617 +
3618 +</div>
3619 +<a name="___/cfg/init_php"><!-- --></a>
3620 +<div class="evenrow">
3621 +
3622 + <div>
3623 + <span class="include-title">
3624 + <span class="include-type">require_once</span>
3625 + (<span class="include-name"><a href="../../mirror/cfg/_php_cfg_init_php.html">'../cfg/init.php'</a></span>)
3626 + (line <span class="line-number">8</span>)
3627 + </span>
3628 + </div>
3629 +
3630 + <!-- ========== Info from phpDoc block ========= -->
3631 +
3632 +</div>
3633 +<a name="_HEADER"><!-- --></a>
3634 +<div class="oddrow">
3635 +
3636 + <div>
3637 + <span class="include-title">
3638 + <span class="include-type">require_once</span>
3639 + (<span class="include-name">HEADER</span>)
3640 + (line <span class="line-number">66</span>)
3641 + </span>
3642 + </div>
3643 +
3644 + <!-- ========== Info from phpDoc block ========= -->
3645 +
3646 +</div>
3647 +<a name="_FOOTER"><!-- --></a>
3648 +<div class="evenrow">
3649 +
3650 + <div>
3651 + <span class="include-title">
3652 + <span class="include-type">require_once</span>
3653 + (<span class="include-name">FOOTER</span>)
3654 + (line <span class="line-number">99</span>)
3655 + </span>
3656 + </div>
3657 +
3658 + <!-- ========== Info from phpDoc block ========= -->
3659 +
3660 +</div>
3661 +<a name="_FOOTER"><!-- --></a>
3662 +<div class="oddrow">
3663 +
3664 + <div>
3665 + <span class="include-title">
3666 + <span class="include-type">require_once</span>
3667 + (<span class="include-name">FOOTER</span>)
3668 + (line <span class="line-number">47</span>)
3669 + </span>
3670 + </div>
3671 +
3672 + <!-- ========== Info from phpDoc block ========= -->
3673 +
3674 +</div>
3675 + </div>
3676 + </div>
3677 +
3678 +
3679 +
3680 +
3681 + <p class="notes" id="credit">
3682 + Documentation generated on Mon, 8 Nov 2004 13:43:05 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
3683 + </p>
3684 + </div></body>
3685 +</html>
3686 \ No newline at end of file
3687
3688 diff --git a/docs/mirror/admin/_php_admin_login_php.html b/docs/mirror/admin/_php_admin_login_php.html
3689 new file mode 100644
3690 index 0000000..5fb9b53
3691 --- /dev/null
3692 +++ b/docs/mirror/admin/_php_admin_login_php.html
3693 @@ -0,0 +1,103 @@
3694 +<?xml version="1.0" encoding="iso-8859-1"?>
3695 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3696 + <html xmlns="http://www.w3.org/1999/xhtml">
3697 + <head>
3698 + <!-- template designed by Marco Von Ballmoos -->
3699 + <title>Docs for page login.php</title>
3700 + <link rel="stylesheet" href="../../media/stylesheet.css" />
3701 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
3702 + </head>
3703 + <body>
3704 + <div class="page-body">
3705 +<h2 class="file-name">/php/admin/login.php</h2>
3706 +
3707 +<a name="sec-description"></a>
3708 +<div class="info-box">
3709 + <div class="info-box-title">Description</div>
3710 + <div class="nav-bar">
3711 + <span class="disabled">Description</span> |
3712 + <a href="#sec-includes">Includes</a>
3713 + </div>
3714 + <div class="info-box-body">
3715 + <!-- ========== Info from phpDoc block ========= -->
3716 +<p class="short-description">Admin login.</p>
3717 +
3718 + </div>
3719 +</div>
3720 +
3721 +
3722 + <a name="sec-includes"></a>
3723 + <div class="info-box">
3724 + <div class="info-box-title">Includes</div>
3725 + <div class="nav-bar">
3726 + <a href="#sec-description">Description</a> |
3727 + <span class="disabled">Includes</span>
3728 + </div>
3729 + <div class="info-box-body">
3730 + <a name="___/cfg/init_php"><!-- --></a>
3731 +<div class="evenrow">
3732 +
3733 + <div>
3734 + <span class="include-title">
3735 + <span class="include-type">require_once</span>
3736 + (<span class="include-name"><a href="../../mirror/cfg/_php_cfg_init_php.html">'../cfg/init.php'</a></span>)
3737 + (line <span class="line-number">7</span>)
3738 + </span>
3739 + </div>
3740 +
3741 + <!-- ========== Info from phpDoc block ========= -->
3742 +
3743 +</div>
3744 +<a name="_LIB_/auth_php"><!-- --></a>
3745 +<div class="oddrow">
3746 +
3747 + <div>
3748 + <span class="include-title">
3749 + <span class="include-type">require_once</span>
3750 + (<span class="include-name">LIB.'/auth.php'</span>)
3751 + (line <span class="line-number">8</span>)
3752 + </span>
3753 + </div>
3754 +
3755 + <!-- ========== Info from phpDoc block ========= -->
3756 +
3757 +</div>
3758 +<a name="_HEADER"><!-- --></a>
3759 +<div class="evenrow">
3760 +
3761 + <div>
3762 + <span class="include-title">
3763 + <span class="include-type">require_once</span>
3764 + (<span class="include-name">HEADER</span>)
3765 + (line <span class="line-number">23</span>)
3766 + </span>
3767 + </div>
3768 +
3769 + <!-- ========== Info from phpDoc block ========= -->
3770 +
3771 +</div>
3772 +<a name="_FOOTER"><!-- --></a>
3773 +<div class="oddrow">
3774 +
3775 + <div>
3776 + <span class="include-title">
3777 + <span class="include-type">require_once</span>
3778 + (<span class="include-name">FOOTER</span>)
3779 + (line <span class="line-number">41</span>)
3780 + </span>
3781 + </div>
3782 +
3783 + <!-- ========== Info from phpDoc block ========= -->
3784 +
3785 +</div>
3786 + </div>
3787 + </div>
3788 +
3789 +
3790 +
3791 +
3792 + <p class="notes" id="credit">
3793 + Documentation generated on Mon, 8 Nov 2004 13:43:05 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
3794 + </p>
3795 + </div></body>
3796 +</html>
3797 \ No newline at end of file
3798
3799 diff --git a/docs/mirror/admin/_php_admin_logout_php.html b/docs/mirror/admin/_php_admin_logout_php.html
3800 new file mode 100644
3801 index 0000000..23ead61
3802 --- /dev/null
3803 +++ b/docs/mirror/admin/_php_admin_logout_php.html
3804 @@ -0,0 +1,75 @@
3805 +<?xml version="1.0" encoding="iso-8859-1"?>
3806 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3807 + <html xmlns="http://www.w3.org/1999/xhtml">
3808 + <head>
3809 + <!-- template designed by Marco Von Ballmoos -->
3810 + <title>Docs for page logout.php</title>
3811 + <link rel="stylesheet" href="../../media/stylesheet.css" />
3812 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
3813 + </head>
3814 + <body>
3815 + <div class="page-body">
3816 +<h2 class="file-name">/php/admin/logout.php</h2>
3817 +
3818 +<a name="sec-description"></a>
3819 +<div class="info-box">
3820 + <div class="info-box-title">Description</div>
3821 + <div class="nav-bar">
3822 + <span class="disabled">Description</span> |
3823 + <a href="#sec-includes">Includes</a>
3824 + </div>
3825 + <div class="info-box-body">
3826 + <!-- ========== Info from phpDoc block ========= -->
3827 +<p class="short-description">Admin logout.</p>
3828 +
3829 + </div>
3830 +</div>
3831 +
3832 +
3833 + <a name="sec-includes"></a>
3834 + <div class="info-box">
3835 + <div class="info-box-title">Includes</div>
3836 + <div class="nav-bar">
3837 + <a href="#sec-description">Description</a> |
3838 + <span class="disabled">Includes</span>
3839 + </div>
3840 + <div class="info-box-body">
3841 + <a name="___/cfg/init_php"><!-- --></a>
3842 +<div class="evenrow">
3843 +
3844 + <div>
3845 + <span class="include-title">
3846 + <span class="include-type">require_once</span>
3847 + (<span class="include-name"><a href="../../mirror/cfg/_php_cfg_init_php.html">'../cfg/init.php'</a></span>)
3848 + (line <span class="line-number">7</span>)
3849 + </span>
3850 + </div>
3851 +
3852 + <!-- ========== Info from phpDoc block ========= -->
3853 +
3854 +</div>
3855 +<a name="_LIB_/auth_php"><!-- --></a>
3856 +<div class="oddrow">
3857 +
3858 + <div>
3859 + <span class="include-title">
3860 + <span class="include-type">require_once</span>
3861 + (<span class="include-name">LIB.'/auth.php'</span>)
3862 + (line <span class="line-number">8</span>)
3863 + </span>
3864 + </div>
3865 +
3866 + <!-- ========== Info from phpDoc block ========= -->
3867 +
3868 +</div>
3869 + </div>
3870 + </div>
3871 +
3872 +
3873 +
3874 +
3875 + <p class="notes" id="credit">
3876 + Documentation generated on Mon, 8 Nov 2004 13:43:05 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
3877 + </p>
3878 + </div></body>
3879 +</html>
3880 \ No newline at end of file
3881
3882 diff --git a/docs/mirror/admin/_php_admin_mstats_php.html b/docs/mirror/admin/_php_admin_mstats_php.html
3883 new file mode 100644
3884 index 0000000..7a8c630
3885 --- /dev/null
3886 +++ b/docs/mirror/admin/_php_admin_mstats_php.html
3887 @@ -0,0 +1,89 @@
3888 +<?xml version="1.0" encoding="iso-8859-1"?>
3889 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3890 + <html xmlns="http://www.w3.org/1999/xhtml">
3891 + <head>
3892 + <!-- template designed by Marco Von Ballmoos -->
3893 + <title>Docs for page mstats.php</title>
3894 + <link rel="stylesheet" href="../../media/stylesheet.css" />
3895 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
3896 + </head>
3897 + <body>
3898 + <div class="page-body">
3899 +<h2 class="file-name">/php/admin/mstats.php</h2>
3900 +
3901 +<a name="sec-description"></a>
3902 +<div class="info-box">
3903 + <div class="info-box-title">Description</div>
3904 + <div class="nav-bar">
3905 + <span class="disabled">Description</span> |
3906 + <a href="#sec-includes">Includes</a>
3907 + </div>
3908 + <div class="info-box-body">
3909 + <!-- ========== Info from phpDoc block ========= -->
3910 +<p class="short-description">Mirror Statistics.</p>
3911 +
3912 + </div>
3913 +</div>
3914 +
3915 +
3916 + <a name="sec-includes"></a>
3917 + <div class="info-box">
3918 + <div class="info-box-title">Includes</div>
3919 + <div class="nav-bar">
3920 + <a href="#sec-description">Description</a> |
3921 + <span class="disabled">Includes</span>
3922 + </div>
3923 + <div class="info-box-body">
3924 + <a name="___/cfg/init_php"><!-- --></a>
3925 +<div class="evenrow">
3926 +
3927 + <div>
3928 + <span class="include-title">
3929 + <span class="include-type">require_once</span>
3930 + (<span class="include-name"><a href="../../mirror/cfg/_php_cfg_init_php.html">'../cfg/init.php'</a></span>)
3931 + (line <span class="line-number">8</span>)
3932 + </span>
3933 + </div>
3934 +
3935 + <!-- ========== Info from phpDoc block ========= -->
3936 +
3937 +</div>
3938 +<a name="_HEADER"><!-- --></a>
3939 +<div class="oddrow">
3940 +
3941 + <div>
3942 + <span class="include-title">
3943 + <span class="include-type">require_once</span>
3944 + (<span class="include-name">HEADER</span>)
3945 + (line <span class="line-number">12</span>)
3946 + </span>
3947 + </div>
3948 +
3949 + <!-- ========== Info from phpDoc block ========= -->
3950 +
3951 +</div>
3952 +<a name="_FOOTER"><!-- --></a>
3953 +<div class="evenrow">
3954 +
3955 + <div>
3956 + <span class="include-title">
3957 + <span class="include-type">require_once</span>
3958 + (<span class="include-name">FOOTER</span>)
3959 + (line <span class="line-number">31</span>)
3960 + </span>
3961 + </div>
3962 +
3963 + <!-- ========== Info from phpDoc block ========= -->
3964 +
3965 +</div>
3966 + </div>
3967 + </div>
3968 +
3969 +
3970 +
3971 +
3972 + <p class="notes" id="credit">
3973 + Documentation generated on Mon, 8 Nov 2004 13:43:05 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
3974 + </p>
3975 + </div></body>
3976 +</html>
3977 \ No newline at end of file
3978
3979 diff --git a/docs/mirror/admin/_php_admin_os_php.html b/docs/mirror/admin/_php_admin_os_php.html
3980 new file mode 100644
3981 index 0000000..f8d93d8
3982 --- /dev/null
3983 +++ b/docs/mirror/admin/_php_admin_os_php.html
3984 @@ -0,0 +1,145 @@
3985 +<?xml version="1.0" encoding="iso-8859-1"?>
3986 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3987 + <html xmlns="http://www.w3.org/1999/xhtml">
3988 + <head>
3989 + <!-- template designed by Marco Von Ballmoos -->
3990 + <title>Docs for page os.php</title>
3991 + <link rel="stylesheet" href="../../media/stylesheet.css" />
3992 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
3993 + </head>
3994 + <body>
3995 + <div class="page-body">
3996 +<h2 class="file-name">/php/admin/os.php</h2>
3997 +
3998 +<a name="sec-description"></a>
3999 +<div class="info-box">
4000 + <div class="info-box-title">Description</div>
4001 + <div class="nav-bar">
4002 + <span class="disabled">Description</span> |
4003 + <a href="#sec-includes">Includes</a>
4004 + </div>
4005 + <div class="info-box-body">
4006 + <!-- ========== Info from phpDoc block ========= -->
4007 +<p class="short-description">Operating Systems.</p>
4008 +
4009 + </div>
4010 +</div>
4011 +
4012 +
4013 + <a name="sec-includes"></a>
4014 + <div class="info-box">
4015 + <div class="info-box-title">Includes</div>
4016 + <div class="nav-bar">
4017 + <a href="#sec-description">Description</a> |
4018 + <span class="disabled">Includes</span>
4019 + </div>
4020 + <div class="info-box-body">
4021 + <a name="_INC_/forms/os_php"><!-- --></a>
4022 +<div class="oddrow">
4023 +
4024 + <div>
4025 + <span class="include-title">
4026 + <span class="include-type">include_once</span>
4027 + (<span class="include-name">INC.'/forms/os.php'</span>)
4028 + (line <span class="line-number">95</span>)
4029 + </span>
4030 + </div>
4031 +
4032 + <!-- ========== Info from phpDoc block ========= -->
4033 +
4034 +</div>
4035 +<a name="_INC_/forms/os_php"><!-- --></a>
4036 +<div class="evenrow">
4037 +
4038 + <div>
4039 + <span class="include-title">
4040 + <span class="include-type">include_once</span>
4041 + (<span class="include-name">INC.'/forms/os.php'</span>)
4042 + (line <span class="line-number">41</span>)
4043 + </span>
4044 + </div>
4045 +
4046 + <!-- ========== Info from phpDoc block ========= -->
4047 +
4048 +</div>
4049 +<a name="_HEADER"><!-- --></a>
4050 +<div class="oddrow">
4051 +
4052 + <div>
4053 + <span class="include-title">
4054 + <span class="include-type">require_once</span>
4055 + (<span class="include-name">HEADER</span>)
4056 + (line <span class="line-number">37</span>)
4057 + </span>
4058 + </div>
4059 +
4060 + <!-- ========== Info from phpDoc block ========= -->
4061 +
4062 +</div>
4063 +<a name="___/cfg/init_php"><!-- --></a>
4064 +<div class="evenrow">
4065 +
4066 + <div>
4067 + <span class="include-title">
4068 + <span class="include-type">require_once</span>
4069 + (<span class="include-name"><a href="../../mirror/cfg/_php_cfg_init_php.html">'../cfg/init.php'</a></span>)
4070 + (line <span class="line-number">8</span>)
4071 + </span>
4072 + </div>
4073 +
4074 + <!-- ========== Info from phpDoc block ========= -->
4075 +
4076 +</div>
4077 +<a name="_HEADER"><!-- --></a>
4078 +<div class="oddrow">
4079 +
4080 + <div>
4081 + <span class="include-title">
4082 + <span class="include-type">require_once</span>
4083 + (<span class="include-name">HEADER</span>)
4084 + (line <span class="line-number">66</span>)
4085 + </span>
4086 + </div>
4087 +
4088 + <!-- ========== Info from phpDoc block ========= -->
4089 +
4090 +</div>
4091 +<a name="_FOOTER"><!-- --></a>
4092 +<div class="evenrow">
4093 +
4094 + <div>
4095 + <span class="include-title">
4096 + <span class="include-type">require_once</span>
4097 + (<span class="include-name">FOOTER</span>)
4098 + (line <span class="line-number">99</span>)
4099 + </span>
4100 + </div>
4101 +
4102 + <!-- ========== Info from phpDoc block ========= -->
4103 +
4104 +</div>
4105 +<a name="_FOOTER"><!-- --></a>
4106 +<div class="oddrow">
4107 +
4108 + <div>
4109 + <span class="include-title">
4110 + <span class="include-type">require_once</span>
4111 + (<span class="include-name">FOOTER</span>)
4112 + (line <span class="line-number">47</span>)
4113 + </span>
4114 + </div>
4115 +
4116 + <!-- ========== Info from phpDoc block ========= -->
4117 +
4118 +</div>
4119 + </div>
4120 + </div>
4121 +
4122 +
4123 +
4124 +
4125 + <p class="notes" id="credit">
4126 + Documentation generated on Mon, 8 Nov 2004 13:43:05 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
4127 + </p>
4128 + </div></body>
4129 +</html>
4130 \ No newline at end of file
4131
4132 diff --git a/docs/mirror/admin/_php_admin_products_php.html b/docs/mirror/admin/_php_admin_products_php.html
4133 new file mode 100644
4134 index 0000000..d370b59
4135 --- /dev/null
4136 +++ b/docs/mirror/admin/_php_admin_products_php.html
4137 @@ -0,0 +1,145 @@
4138 +<?xml version="1.0" encoding="iso-8859-1"?>
4139 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4140 + <html xmlns="http://www.w3.org/1999/xhtml">
4141 + <head>
4142 + <!-- template designed by Marco Von Ballmoos -->
4143 + <title>Docs for page products.php</title>
4144 + <link rel="stylesheet" href="../../media/stylesheet.css" />
4145 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
4146 + </head>
4147 + <body>
4148 + <div class="page-body">
4149 +<h2 class="file-name">/php/admin/products.php</h2>
4150 +
4151 +<a name="sec-description"></a>
4152 +<div class="info-box">
4153 + <div class="info-box-title">Description</div>
4154 + <div class="nav-bar">
4155 + <span class="disabled">Description</span> |
4156 + <a href="#sec-includes">Includes</a>
4157 + </div>
4158 + <div class="info-box-body">
4159 + <!-- ========== Info from phpDoc block ========= -->
4160 +<p class="short-description">Products.</p>
4161 +
4162 + </div>
4163 +</div>
4164 +
4165 +
4166 + <a name="sec-includes"></a>
4167 + <div class="info-box">
4168 + <div class="info-box-title">Includes</div>
4169 + <div class="nav-bar">
4170 + <a href="#sec-description">Description</a> |
4171 + <span class="disabled">Includes</span>
4172 + </div>
4173 + <div class="info-box-body">
4174 + <a name="_INC_/forms/product_php"><!-- --></a>
4175 +<div class="evenrow">
4176 +
4177 + <div>
4178 + <span class="include-title">
4179 + <span class="include-type">include_once</span>
4180 + (<span class="include-name">INC.'/forms/product.php'</span>)
4181 + (line <span class="line-number">95</span>)
4182 + </span>
4183 + </div>
4184 +
4185 + <!-- ========== Info from phpDoc block ========= -->
4186 +
4187 +</div>
4188 +<a name="_INC_/forms/product_php"><!-- --></a>
4189 +<div class="oddrow">
4190 +
4191 + <div>
4192 + <span class="include-title">
4193 + <span class="include-type">include_once</span>
4194 + (<span class="include-name">INC.'/forms/product.php'</span>)
4195 + (line <span class="line-number">41</span>)
4196 + </span>
4197 + </div>
4198 +
4199 + <!-- ========== Info from phpDoc block ========= -->
4200 +
4201 +</div>
4202 +<a name="_HEADER"><!-- --></a>
4203 +<div class="evenrow">
4204 +
4205 + <div>
4206 + <span class="include-title">
4207 + <span class="include-type">require_once</span>
4208 + (<span class="include-name">HEADER</span>)
4209 + (line <span class="line-number">37</span>)
4210 + </span>
4211 + </div>
4212 +
4213 + <!-- ========== Info from phpDoc block ========= -->
4214 +
4215 +</div>
4216 +<a name="___/cfg/init_php"><!-- --></a>
4217 +<div class="oddrow">
4218 +
4219 + <div>
4220 + <span class="include-title">
4221 + <span class="include-type">require_once</span>
4222 + (<span class="include-name"><a href="../../mirror/cfg/_php_cfg_init_php.html">'../cfg/init.php'</a></span>)
4223 + (line <span class="line-number">8</span>)
4224 + </span>
4225 + </div>
4226 +
4227 + <!-- ========== Info from phpDoc block ========= -->
4228 +
4229 +</div>
4230 +<a name="_HEADER"><!-- --></a>
4231 +<div class="evenrow">
4232 +
4233 + <div>
4234 + <span class="include-title">
4235 + <span class="include-type">require_once</span>
4236 + (<span class="include-name">HEADER</span>)
4237 + (line <span class="line-number">66</span>)
4238 + </span>
4239 + </div>
4240 +
4241 + <!-- ========== Info from phpDoc block ========= -->
4242 +
4243 +</div>
4244 +<a name="_FOOTER"><!-- --></a>
4245 +<div class="oddrow">
4246 +
4247 + <div>
4248 + <span class="include-title">
4249 + <span class="include-type">require_once</span>
4250 + (<span class="include-name">FOOTER</span>)
4251 + (line <span class="line-number">99</span>)
4252 + </span>
4253 + </div>
4254 +
4255 + <!-- ========== Info from phpDoc block ========= -->
4256 +
4257 +</div>
4258 +<a name="_FOOTER"><!-- --></a>
4259 +<div class="evenrow">
4260 +
4261 + <div>
4262 + <span class="include-title">
4263 + <span class="include-type">require_once</span>
4264 + (<span class="include-name">FOOTER</span>)
4265 + (line <span class="line-number">47</span>)
4266 + </span>
4267 + </div>
4268 +
4269 + <!-- ========== Info from phpDoc block ========= -->
4270 +
4271 +</div>
4272 + </div>
4273 + </div>
4274 +
4275 +
4276 +
4277 +
4278 + <p class="notes" id="credit">
4279 + Documentation generated on Mon, 8 Nov 2004 13:43:06 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
4280 + </p>
4281 + </div></body>
4282 +</html>
4283 \ No newline at end of file
4284
4285 diff --git a/docs/mirror/admin/_php_admin_pstats_php.html b/docs/mirror/admin/_php_admin_pstats_php.html
4286 new file mode 100644
4287 index 0000000..0ad4f4e
4288 --- /dev/null
4289 +++ b/docs/mirror/admin/_php_admin_pstats_php.html
4290 @@ -0,0 +1,89 @@
4291 +<?xml version="1.0" encoding="iso-8859-1"?>
4292 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4293 + <html xmlns="http://www.w3.org/1999/xhtml">
4294 + <head>
4295 + <!-- template designed by Marco Von Ballmoos -->
4296 + <title>Docs for page pstats.php</title>
4297 + <link rel="stylesheet" href="../../media/stylesheet.css" />
4298 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
4299 + </head>
4300 + <body>
4301 + <div class="page-body">
4302 +<h2 class="file-name">/php/admin/pstats.php</h2>
4303 +
4304 +<a name="sec-description"></a>
4305 +<div class="info-box">
4306 + <div class="info-box-title">Description</div>
4307 + <div class="nav-bar">
4308 + <span class="disabled">Description</span> |
4309 + <a href="#sec-includes">Includes</a>
4310 + </div>
4311 + <div class="info-box-body">
4312 + <!-- ========== Info from phpDoc block ========= -->
4313 +<p class="short-description">Product Statistics.</p>
4314 +
4315 + </div>
4316 +</div>
4317 +
4318 +
4319 + <a name="sec-includes"></a>
4320 + <div class="info-box">
4321 + <div class="info-box-title">Includes</div>
4322 + <div class="nav-bar">
4323 + <a href="#sec-description">Description</a> |
4324 + <span class="disabled">Includes</span>
4325 + </div>
4326 + <div class="info-box-body">
4327 + <a name="___/cfg/init_php"><!-- --></a>
4328 +<div class="oddrow">
4329 +
4330 + <div>
4331 + <span class="include-title">
4332 + <span class="include-type">require_once</span>
4333 + (<span class="include-name"><a href="../../mirror/cfg/_php_cfg_init_php.html">'../cfg/init.php'</a></span>)
4334 + (line <span class="line-number">8</span>)
4335 + </span>
4336 + </div>
4337 +
4338 + <!-- ========== Info from phpDoc block ========= -->
4339 +
4340 +</div>
4341 +<a name="_HEADER"><!-- --></a>
4342 +<div class="evenrow">
4343 +
4344 + <div>
4345 + <span class="include-title">
4346 + <span class="include-type">require_once</span>
4347 + (<span class="include-name">HEADER</span>)
4348 + (line <span class="line-number">12</span>)
4349 + </span>
4350 + </div>
4351 +
4352 + <!-- ========== Info from phpDoc block ========= -->
4353 +
4354 +</div>
4355 +<a name="_FOOTER"><!-- --></a>
4356 +<div class="oddrow">
4357 +
4358 + <div>
4359 + <span class="include-title">
4360 + <span class="include-type">require_once</span>
4361 + (<span class="include-name">FOOTER</span>)
4362 + (line <span class="line-number">28</span>)
4363 + </span>
4364 + </div>
4365 +
4366 + <!-- ========== Info from phpDoc block ========= -->
4367 +
4368 +</div>
4369 + </div>
4370 + </div>
4371 +
4372 +
4373 +
4374 +
4375 + <p class="notes" id="credit">
4376 + Documentation generated on Mon, 8 Nov 2004 13:43:06 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
4377 + </p>
4378 + </div></body>
4379 +</html>
4380 \ No newline at end of file
4381
4382 diff --git a/docs/mirror/admin/_php_admin_regions_php.html b/docs/mirror/admin/_php_admin_regions_php.html
4383 new file mode 100644
4384 index 0000000..a90e209
4385 --- /dev/null
4386 +++ b/docs/mirror/admin/_php_admin_regions_php.html
4387 @@ -0,0 +1,145 @@
4388 +<?xml version="1.0" encoding="iso-8859-1"?>
4389 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4390 + <html xmlns="http://www.w3.org/1999/xhtml">
4391 + <head>
4392 + <!-- template designed by Marco Von Ballmoos -->
4393 + <title>Docs for page regions.php</title>
4394 + <link rel="stylesheet" href="../../media/stylesheet.css" />
4395 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
4396 + </head>
4397 + <body>
4398 + <div class="page-body">
4399 +<h2 class="file-name">/php/admin/regions.php</h2>
4400 +
4401 +<a name="sec-description"></a>
4402 +<div class="info-box">
4403 + <div class="info-box-title">Description</div>
4404 + <div class="nav-bar">
4405 + <span class="disabled">Description</span> |
4406 + <a href="#sec-includes">Includes</a>
4407 + </div>
4408 + <div class="info-box-body">
4409 + <!-- ========== Info from phpDoc block ========= -->
4410 +<p class="short-description">Regions.</p>
4411 +
4412 + </div>
4413 +</div>
4414 +
4415 +
4416 + <a name="sec-includes"></a>
4417 + <div class="info-box">
4418 + <div class="info-box-title">Includes</div>
4419 + <div class="nav-bar">
4420 + <a href="#sec-description">Description</a> |
4421 + <span class="disabled">Includes</span>
4422 + </div>
4423 + <div class="info-box-body">
4424 + <a name="_INC_/forms/region_php"><!-- --></a>
4425 +<div class="evenrow">
4426 +
4427 + <div>
4428 + <span class="include-title">
4429 + <span class="include-type">include_once</span>
4430 + (<span class="include-name">INC.'/forms/region.php'</span>)
4431 + (line <span class="line-number">96</span>)
4432 + </span>
4433 + </div>
4434 +
4435 + <!-- ========== Info from phpDoc block ========= -->
4436 +
4437 +</div>
4438 +<a name="_INC_/forms/region_php"><!-- --></a>
4439 +<div class="oddrow">
4440 +
4441 + <div>
4442 + <span class="include-title">
4443 + <span class="include-type">include_once</span>
4444 + (<span class="include-name">INC.'/forms/region.php'</span>)
4445 + (line <span class="line-number">41</span>)
4446 + </span>
4447 + </div>
4448 +
4449 + <!-- ========== Info from phpDoc block ========= -->
4450 +
4451 +</div>
4452 +<a name="_HEADER"><!-- --></a>
4453 +<div class="evenrow">
4454 +
4455 + <div>
4456 + <span class="include-title">
4457 + <span class="include-type">require_once</span>
4458 + (<span class="include-name">HEADER</span>)
4459 + (line <span class="line-number">37</span>)
4460 + </span>
4461 + </div>
4462 +
4463 + <!-- ========== Info from phpDoc block ========= -->
4464 +
4465 +</div>
4466 +<a name="___/cfg/init_php"><!-- --></a>
4467 +<div class="oddrow">
4468 +
4469 + <div>
4470 + <span class="include-title">
4471 + <span class="include-type">require_once</span>
4472 + (<span class="include-name"><a href="../../mirror/cfg/_php_cfg_init_php.html">'../cfg/init.php'</a></span>)
4473 + (line <span class="line-number">8</span>)
4474 + </span>
4475 + </div>
4476 +
4477 + <!-- ========== Info from phpDoc block ========= -->
4478 +
4479 +</div>
4480 +<a name="_HEADER"><!-- --></a>
4481 +<div class="evenrow">
4482 +
4483 + <div>
4484 + <span class="include-title">
4485 + <span class="include-type">require_once</span>
4486 + (<span class="include-name">HEADER</span>)
4487 + (line <span class="line-number">66</span>)
4488 + </span>
4489 + </div>
4490 +
4491 + <!-- ========== Info from phpDoc block ========= -->
4492 +
4493 +</div>
4494 +<a name="_FOOTER"><!-- --></a>
4495 +<div class="oddrow">
4496 +
4497 + <div>
4498 + <span class="include-title">
4499 + <span class="include-type">require_once</span>
4500 + (<span class="include-name">FOOTER</span>)
4501 + (line <span class="line-number">100</span>)
4502 + </span>
4503 + </div>
4504 +
4505 + <!-- ========== Info from phpDoc block ========= -->
4506 +
4507 +</div>
4508 +<a name="_FOOTER"><!-- --></a>
4509 +<div class="evenrow">
4510 +
4511 + <div>
4512 + <span class="include-title">
4513 + <span class="include-type">require_once</span>
4514 + (<span class="include-name">FOOTER</span>)
4515 + (line <span class="line-number">47</span>)
4516 + </span>
4517 + </div>
4518 +
4519 + <!-- ========== Info from phpDoc block ========= -->
4520 +
4521 +</div>
4522 + </div>
4523 + </div>
4524 +
4525 +
4526 +
4527 +
4528 + <p class="notes" id="credit">
4529 + Documentation generated on Mon, 8 Nov 2004 13:43:06 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
4530 + </p>
4531 + </div></body>
4532 +</html>
4533 \ No newline at end of file
4534
4535 diff --git a/docs/mirror/admin/_php_admin_users_php.html b/docs/mirror/admin/_php_admin_users_php.html
4536 new file mode 100644
4537 index 0000000..fd347e9
4538 --- /dev/null
4539 +++ b/docs/mirror/admin/_php_admin_users_php.html
4540 @@ -0,0 +1,145 @@
4541 +<?xml version="1.0" encoding="iso-8859-1"?>
4542 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4543 + <html xmlns="http://www.w3.org/1999/xhtml">
4544 + <head>
4545 + <!-- template designed by Marco Von Ballmoos -->
4546 + <title>Docs for page users.php</title>
4547 + <link rel="stylesheet" href="../../media/stylesheet.css" />
4548 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
4549 + </head>
4550 + <body>
4551 + <div class="page-body">
4552 +<h2 class="file-name">/php/admin/users.php</h2>
4553 +
4554 +<a name="sec-description"></a>
4555 +<div class="info-box">
4556 + <div class="info-box-title">Description</div>
4557 + <div class="nav-bar">
4558 + <span class="disabled">Description</span> |
4559 + <a href="#sec-includes">Includes</a>
4560 + </div>
4561 + <div class="info-box-body">
4562 + <!-- ========== Info from phpDoc block ========= -->
4563 +<p class="short-description">Users.</p>
4564 +
4565 + </div>
4566 +</div>
4567 +
4568 +
4569 + <a name="sec-includes"></a>
4570 + <div class="info-box">
4571 + <div class="info-box-title">Includes</div>
4572 + <div class="nav-bar">
4573 + <a href="#sec-description">Description</a> |
4574 + <span class="disabled">Includes</span>
4575 + </div>
4576 + <div class="info-box-body">
4577 + <a name="_INC_/forms/user_php"><!-- --></a>
4578 +<div class="oddrow">
4579 +
4580 + <div>
4581 + <span class="include-title">
4582 + <span class="include-type">include_once</span>
4583 + (<span class="include-name">INC.'/forms/user.php'</span>)
4584 + (line <span class="line-number">99</span>)
4585 + </span>
4586 + </div>
4587 +
4588 + <!-- ========== Info from phpDoc block ========= -->
4589 +
4590 +</div>
4591 +<a name="_INC_/forms/user_php"><!-- --></a>
4592 +<div class="evenrow">
4593 +
4594 + <div>
4595 + <span class="include-title">
4596 + <span class="include-type">include_once</span>
4597 + (<span class="include-name">INC.'/forms/user.php'</span>)
4598 + (line <span class="line-number">41</span>)
4599 + </span>
4600 + </div>
4601 +
4602 + <!-- ========== Info from phpDoc block ========= -->
4603 +
4604 +</div>
4605 +<a name="_HEADER"><!-- --></a>
4606 +<div class="oddrow">
4607 +
4608 + <div>
4609 + <span class="include-title">
4610 + <span class="include-type">require_once</span>
4611 + (<span class="include-name">HEADER</span>)
4612 + (line <span class="line-number">37</span>)
4613 + </span>
4614 + </div>
4615 +
4616 + <!-- ========== Info from phpDoc block ========= -->
4617 +
4618 +</div>
4619 +<a name="___/cfg/init_php"><!-- --></a>
4620 +<div class="evenrow">
4621 +
4622 + <div>
4623 + <span class="include-title">
4624 + <span class="include-type">require_once</span>
4625 + (<span class="include-name"><a href="../../mirror/cfg/_php_cfg_init_php.html">'../cfg/init.php'</a></span>)
4626 + (line <span class="line-number">8</span>)
4627 + </span>
4628 + </div>
4629 +
4630 + <!-- ========== Info from phpDoc block ========= -->
4631 +
4632 +</div>
4633 +<a name="_HEADER"><!-- --></a>
4634 +<div class="oddrow">
4635 +
4636 + <div>
4637 + <span class="include-title">
4638 + <span class="include-type">require_once</span>
4639 + (<span class="include-name">HEADER</span>)
4640 + (line <span class="line-number">68</span>)
4641 + </span>
4642 + </div>
4643 +
4644 + <!-- ========== Info from phpDoc block ========= -->
4645 +
4646 +</div>
4647 +<a name="_FOOTER"><!-- --></a>
4648 +<div class="evenrow">
4649 +
4650 + <div>
4651 + <span class="include-title">
4652 + <span class="include-type">require_once</span>
4653 + (<span class="include-name">FOOTER</span>)
4654 + (line <span class="line-number">103</span>)
4655 + </span>
4656 + </div>
4657 +
4658 + <!-- ========== Info from phpDoc block ========= -->
4659 +
4660 +</div>
4661 +<a name="_FOOTER"><!-- --></a>
4662 +<div class="oddrow">
4663 +
4664 + <div>
4665 + <span class="include-title">
4666 + <span class="include-type">require_once</span>
4667 + (<span class="include-name">FOOTER</span>)
4668 + (line <span class="line-number">47</span>)
4669 + </span>
4670 + </div>
4671 +
4672 + <!-- ========== Info from phpDoc block ========= -->
4673 +
4674 +</div>
4675 + </div>
4676 + </div>
4677 +
4678 +
4679 +
4680 +
4681 + <p class="notes" id="credit">
4682 + Documentation generated on Mon, 8 Nov 2004 13:43:06 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
4683 + </p>
4684 + </div></body>
4685 +</html>
4686 \ No newline at end of file
4687
4688 diff --git a/docs/mirror/cfg/_php_cfg_admin_init_php.html b/docs/mirror/cfg/_php_cfg_admin_init_php.html
4689 new file mode 100644
4690 index 0000000..904abc5
4691 --- /dev/null
4692 +++ b/docs/mirror/cfg/_php_cfg_admin_init_php.html
4693 @@ -0,0 +1,89 @@
4694 +<?xml version="1.0" encoding="iso-8859-1"?>
4695 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4696 + <html xmlns="http://www.w3.org/1999/xhtml">
4697 + <head>
4698 + <!-- template designed by Marco Von Ballmoos -->
4699 + <title>Docs for page admin_init.php</title>
4700 + <link rel="stylesheet" href="../../media/stylesheet.css" />
4701 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
4702 + </head>
4703 + <body>
4704 + <div class="page-body">
4705 +<h2 class="file-name">/php/cfg/admin_init.php</h2>
4706 +
4707 +<a name="sec-description"></a>
4708 +<div class="info-box">
4709 + <div class="info-box-title">Description</div>
4710 + <div class="nav-bar">
4711 + <span class="disabled">Description</span> |
4712 + <a href="#sec-includes">Includes</a>
4713 + </div>
4714 + <div class="info-box-body">
4715 + <!-- ========== Info from phpDoc block ========= -->
4716 +<p class="short-description">Admin initialization.</p>
4717 +
4718 + </div>
4719 +</div>
4720 +
4721 +
4722 + <a name="sec-includes"></a>
4723 + <div class="info-box">
4724 + <div class="info-box-title">Includes</div>
4725 + <div class="nav-bar">
4726 + <a href="#sec-description">Description</a> |
4727 + <span class="disabled">Includes</span>
4728 + </div>
4729 + <div class="info-box-body">
4730 + <a name="_LIB_/auth_php"><!-- --></a>
4731 +<div class="evenrow">
4732 +
4733 + <div>
4734 + <span class="include-title">
4735 + <span class="include-type">require_once</span>
4736 + (<span class="include-name">LIB.'/auth.php'</span>)
4737 + (line <span class="line-number">7</span>)
4738 + </span>
4739 + </div>
4740 +
4741 + <!-- ========== Info from phpDoc block ========= -->
4742 +
4743 +</div>
4744 +<a name="_LIB_/forms_php"><!-- --></a>
4745 +<div class="oddrow">
4746 +
4747 + <div>
4748 + <span class="include-title">
4749 + <span class="include-type">require_once</span>
4750 + (<span class="include-name">LIB.'/forms.php'</span>)
4751 + (line <span class="line-number">8</span>)
4752 + </span>
4753 + </div>
4754 +
4755 + <!-- ========== Info from phpDoc block ========= -->
4756 +
4757 +</div>
4758 +<a name="_LIB_/list_php"><!-- --></a>
4759 +<div class="evenrow">
4760 +
4761 + <div>
4762 + <span class="include-title">
4763 + <span class="include-type">require_once</span>
4764 + (<span class="include-name">LIB.'/list.php'</span>)
4765 + (line <span class="line-number">9</span>)
4766 + </span>
4767 + </div>
4768 +
4769 + <!-- ========== Info from phpDoc block ========= -->
4770 +
4771 +</div>
4772 + </div>
4773 + </div>
4774 +
4775 +
4776 +
4777 +
4778 + <p class="notes" id="credit">
4779 + Documentation generated on Mon, 8 Nov 2004 13:43:03 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
4780 + </p>
4781 + </div></body>
4782 +</html>
4783 \ No newline at end of file
4784
4785 diff --git a/docs/mirror/cfg/_php_cfg_config-dist_php.html b/docs/mirror/cfg/_php_cfg_config-dist_php.html
4786 new file mode 100644
4787 index 0000000..d4e6b53
4788 --- /dev/null
4789 +++ b/docs/mirror/cfg/_php_cfg_config-dist_php.html
4790 @@ -0,0 +1,201 @@
4791 +<?xml version="1.0" encoding="iso-8859-1"?>
4792 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4793 + <html xmlns="http://www.w3.org/1999/xhtml">
4794 + <head>
4795 + <!-- template designed by Marco Von Ballmoos -->
4796 + <title>Docs for page config-dist.php</title>
4797 + <link rel="stylesheet" href="../../media/stylesheet.css" />
4798 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
4799 + </head>
4800 + <body>
4801 + <div class="page-body">
4802 +<h2 class="file-name">/php/cfg/config-dist.php</h2>
4803 +
4804 +<a name="sec-description"></a>
4805 +<div class="info-box">
4806 + <div class="info-box-title">Description</div>
4807 + <div class="nav-bar">
4808 + <span class="disabled">Description</span> |
4809 + <a href="#sec-constants">Constants</a>
4810 + </div>
4811 + <div class="info-box-body">
4812 + <!-- ========== Info from phpDoc block ========= -->
4813 +<p class="short-description">Mirror configuration document.</p>
4814 +
4815 + </div>
4816 +</div>
4817 +
4818 +
4819 +
4820 + <a name="sec-constants"></a>
4821 + <div class="info-box">
4822 + <div class="info-box-title">Constants</div>
4823 + <div class="nav-bar">
4824 + <a href="#sec-description">Description</a> |
4825 + <span class="disabled">Constants</span>
4826 + </div>
4827 + <div class="info-box-body">
4828 + <a name="defineDBHOST"><!-- --></a>
4829 +<div class="oddrow">
4830 +
4831 + <div>
4832 + <span class="const-title">
4833 + <span class="const-name">DBHOST</span> = ''
4834 + (line <span class="line-number">13</span>)
4835 + </span>
4836 + </div>
4837 +
4838 + <!-- ========== Info from phpDoc block ========= -->
4839 +
4840 +
4841 +</div>
4842 +<a name="defineDBNAME"><!-- --></a>
4843 +<div class="evenrow">
4844 +
4845 + <div>
4846 + <span class="const-title">
4847 + <span class="const-name">DBNAME</span> = ''
4848 + (line <span class="line-number">14</span>)
4849 + </span>
4850 + </div>
4851 +
4852 + <!-- ========== Info from phpDoc block ========= -->
4853 +
4854 +
4855 +</div>
4856 +<a name="defineDBPASS"><!-- --></a>
4857 +<div class="oddrow">
4858 +
4859 + <div>
4860 + <span class="const-title">
4861 + <span class="const-name">DBPASS</span> = ''
4862 + (line <span class="line-number">16</span>)
4863 + </span>
4864 + </div>
4865 +
4866 + <!-- ========== Info from phpDoc block ========= -->
4867 +
4868 +
4869 +</div>
4870 +<a name="defineDBUSER"><!-- --></a>
4871 +<div class="evenrow">
4872 +
4873 + <div>
4874 + <span class="const-title">
4875 + <span class="const-name">DBUSER</span> = ''
4876 + (line <span class="line-number">15</span>)
4877 + </span>
4878 + </div>
4879 +
4880 + <!-- ========== Info from phpDoc block ========= -->
4881 +
4882 +
4883 +</div>
4884 +<a name="defineFILEPATH"><!-- --></a>
4885 +<div class="oddrow">
4886 +
4887 + <div>
4888 + <span class="const-title">
4889 + <span class="const-name">FILEPATH</span> = '/var/www/download'
4890 + (line <span class="line-number">7</span>)
4891 + </span>
4892 + </div>
4893 +
4894 + <!-- ========== Info from phpDoc block ========= -->
4895 +
4896 +
4897 +</div>
4898 +<a name="defineFOOTER"><!-- --></a>
4899 +<div class="evenrow">
4900 +
4901 + <div>
4902 + <span class="const-title">
4903 + <span class="const-name">FOOTER</span> = INC.'/footer.php'
4904 + (line <span class="line-number">12</span>)
4905 + </span>
4906 + </div>
4907 +
4908 + <!-- ========== Info from phpDoc block ========= -->
4909 +
4910 +
4911 +</div>
4912 +<a name="defineHEADER"><!-- --></a>
4913 +<div class="oddrow">
4914 +
4915 + <div>
4916 + <span class="const-title">
4917 + <span class="const-name">HEADER</span> = INC.'/header.php'
4918 + (line <span class="line-number">11</span>)
4919 + </span>
4920 + </div>
4921 +
4922 + <!-- ========== Info from phpDoc block ========= -->
4923 +
4924 +
4925 +</div>
4926 +<a name="defineINC"><!-- --></a>
4927 +<div class="evenrow">
4928 +
4929 + <div>
4930 + <span class="const-title">
4931 + <span class="const-name">INC</span> = FILEPATH.'/inc'
4932 + (line <span class="line-number">10</span>)
4933 + </span>
4934 + </div>
4935 +
4936 + <!-- ========== Info from phpDoc block ========= -->
4937 +
4938 +
4939 +</div>
4940 +<a name="defineLIB"><!-- --></a>
4941 +<div class="oddrow">
4942 +
4943 + <div>
4944 + <span class="const-title">
4945 + <span class="const-name">LIB</span> = FILEPATH.'/lib'
4946 + (line <span class="line-number">9</span>)
4947 + </span>
4948 + </div>
4949 +
4950 + <!-- ========== Info from phpDoc block ========= -->
4951 +
4952 +
4953 +</div>
4954 +<a name="defineLOGGING"><!-- --></a>
4955 +<div class="evenrow">
4956 +
4957 + <div>
4958 + <span class="const-title">
4959 + <span class="const-name">LOGGING</span> = 1
4960 + (line <span class="line-number">17</span>)
4961 + </span>
4962 + </div>
4963 +
4964 + <!-- ========== Info from phpDoc block ========= -->
4965 +
4966 +
4967 +</div>
4968 +<a name="defineWEBPATH"><!-- --></a>
4969 +<div class="oddrow">
4970 +
4971 + <div>
4972 + <span class="const-title">
4973 + <span class="const-name">WEBPATH</span> = ''
4974 + (line <span class="line-number">8</span>)
4975 + </span>
4976 + </div>
4977 +
4978 + <!-- ========== Info from phpDoc block ========= -->
4979 +
4980 +
4981 +</div>
4982 + </div>
4983 + </div>
4984 +
4985 +
4986 +
4987 + <p class="notes" id="credit">
4988 + Documentation generated on Mon, 8 Nov 2004 13:43:03 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
4989 + </p>
4990 + </div></body>
4991 +</html>
4992 \ No newline at end of file
4993
4994 diff --git a/docs/mirror/cfg/_php_cfg_init_php.html b/docs/mirror/cfg/_php_cfg_init_php.html
4995 new file mode 100644
4996 index 0000000..1166cbe
4997 --- /dev/null
4998 +++ b/docs/mirror/cfg/_php_cfg_init_php.html
4999 @@ -0,0 +1,117 @@
5000 +<?xml version="1.0" encoding="iso-8859-1"?>
5001 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5002 + <html xmlns="http://www.w3.org/1999/xhtml">
5003 + <head>
5004 + <!-- template designed by Marco Von Ballmoos -->
5005 + <title>Docs for page init.php</title>
5006 + <link rel="stylesheet" href="../../media/stylesheet.css" />
5007 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
5008 + </head>
5009 + <body>
5010 + <div class="page-body">
5011 +<h2 class="file-name">/php/cfg/init.php</h2>
5012 +
5013 +<a name="sec-description"></a>
5014 +<div class="info-box">
5015 + <div class="info-box-title">Description</div>
5016 + <div class="nav-bar">
5017 + <span class="disabled">Description</span> |
5018 + <a href="#sec-includes">Includes</a>
5019 + </div>
5020 + <div class="info-box-body">
5021 + <!-- ========== Info from phpDoc block ========= -->
5022 +<p class="short-description">Init.</p>
5023 +
5024 + </div>
5025 +</div>
5026 +
5027 +
5028 + <a name="sec-includes"></a>
5029 + <div class="info-box">
5030 + <div class="info-box-title">Includes</div>
5031 + <div class="nav-bar">
5032 + <a href="#sec-description">Description</a> |
5033 + <span class="disabled">Includes</span>
5034 + </div>
5035 + <div class="info-box-body">
5036 + <a name="_config_php"><!-- --></a>
5037 +<div class="oddrow">
5038 +
5039 + <div>
5040 + <span class="include-title">
5041 + <span class="include-type">require_once</span>
5042 + (<span class="include-name">'config.php'</span>)
5043 + (line <span class="line-number">7</span>)
5044 + </span>
5045 + </div>
5046 +
5047 + <!-- ========== Info from phpDoc block ========= -->
5048 +
5049 +</div>
5050 +<a name="_LIB_/util_php"><!-- --></a>
5051 +<div class="evenrow">
5052 +
5053 + <div>
5054 + <span class="include-title">
5055 + <span class="include-type">require_once</span>
5056 + (<span class="include-name">LIB.'/util.php'</span>)
5057 + (line <span class="line-number">8</span>)
5058 + </span>
5059 + </div>
5060 +
5061 + <!-- ========== Info from phpDoc block ========= -->
5062 +
5063 +</div>
5064 +<a name="_LIB_/mirror_php"><!-- --></a>
5065 +<div class="oddrow">
5066 +
5067 + <div>
5068 + <span class="include-title">
5069 + <span class="include-type">require_once</span>
5070 + (<span class="include-name">LIB.'/mirror.php'</span>)
5071 + (line <span class="line-number">10</span>)
5072 + </span>
5073 + </div>
5074 +
5075 + <!-- ========== Info from phpDoc block ========= -->
5076 +
5077 +</div>
5078 +<a name="_LIB_/db_php"><!-- --></a>
5079 +<div class="evenrow">
5080 +
5081 + <div>
5082 + <span class="include-title">
5083 + <span class="include-type">require_once</span>
5084 + (<span class="include-name">LIB.'/db.php'</span>)
5085 + (line <span class="line-number">11</span>)
5086 + </span>
5087 + </div>
5088 +
5089 + <!-- ========== Info from phpDoc block ========= -->
5090 +
5091 +</div>
5092 +<a name="_admin_init_php"><!-- --></a>
5093 +<div class="oddrow">
5094 +
5095 + <div>
5096 + <span class="include-title">
5097 + <span class="include-type">require_once</span>
5098 + (<span class="include-name"><a href="../../mirror/cfg/_php_cfg_admin_init_php.html">'admin_init.php'</a></span>)
5099 + (line <span class="line-number">15</span>)
5100 + </span>
5101 + </div>
5102 +
5103 + <!-- ========== Info from phpDoc block ========= -->
5104 +
5105 +</div>
5106 + </div>
5107 + </div>
5108 +
5109 +
5110 +
5111 +
5112 + <p class="notes" id="credit">
5113 + Documentation generated on Mon, 8 Nov 2004 13:43:04 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
5114 + </p>
5115 + </div></body>
5116 +</html>
5117 \ No newline at end of file
5118
5119 diff --git a/docs/mirror/forms/_php_inc_forms_location_php.html b/docs/mirror/forms/_php_inc_forms_location_php.html
5120 new file mode 100644
5121 index 0000000..4450a8f
5122 --- /dev/null
5123 +++ b/docs/mirror/forms/_php_inc_forms_location_php.html
5124 @@ -0,0 +1,35 @@
5125 +<?xml version="1.0" encoding="iso-8859-1"?>
5126 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5127 + <html xmlns="http://www.w3.org/1999/xhtml">
5128 + <head>
5129 + <!-- template designed by Marco Von Ballmoos -->
5130 + <title>Docs for page location.php</title>
5131 + <link rel="stylesheet" href="../../media/stylesheet.css" />
5132 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
5133 + </head>
5134 + <body>
5135 + <div class="page-body">
5136 +<h2 class="file-name">/php/inc/forms/location.php</h2>
5137 +
5138 +<a name="sec-description"></a>
5139 +<div class="info-box">
5140 + <div class="info-box-title">Description</div>
5141 + <div class="nav-bar">
5142 + </div>
5143 + <div class="info-box-body">
5144 + <!-- ========== Info from phpDoc block ========= -->
5145 +<p class="short-description">File location form.</p>
5146 +
5147 + </div>
5148 +</div>
5149 +
5150 +
5151 +
5152 +
5153 +
5154 +
5155 + <p class="notes" id="credit">
5156 + Documentation generated on Mon, 8 Nov 2004 13:43:05 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
5157 + </p>
5158 + </div></body>
5159 +</html>
5160 \ No newline at end of file
5161
5162 diff --git a/docs/mirror/forms/_php_inc_forms_mirror_php.html b/docs/mirror/forms/_php_inc_forms_mirror_php.html
5163 new file mode 100644
5164 index 0000000..89399af
5165 --- /dev/null
5166 +++ b/docs/mirror/forms/_php_inc_forms_mirror_php.html
5167 @@ -0,0 +1,35 @@
5168 +<?xml version="1.0" encoding="iso-8859-1"?>
5169 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5170 + <html xmlns="http://www.w3.org/1999/xhtml">
5171 + <head>
5172 + <!-- template designed by Marco Von Ballmoos -->
5173 + <title>Docs for page mirror.php</title>
5174 + <link rel="stylesheet" href="../../media/stylesheet.css" />
5175 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
5176 + </head>
5177 + <body>
5178 + <div class="page-body">
5179 +<h2 class="file-name">/php/inc/forms/mirror.php</h2>
5180 +
5181 +<a name="sec-description"></a>
5182 +<div class="info-box">
5183 + <div class="info-box-title">Description</div>
5184 + <div class="nav-bar">
5185 + </div>
5186 + <div class="info-box-body">
5187 + <!-- ========== Info from phpDoc block ========= -->
5188 +<p class="short-description">Region form.</p>
5189 +
5190 + </div>
5191 +</div>
5192 +
5193 +
5194 +
5195 +
5196 +
5197 +
5198 + <p class="notes" id="credit">
5199 + Documentation generated on Mon, 8 Nov 2004 13:43:05 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
5200 + </p>
5201 + </div></body>
5202 +</html>
5203 \ No newline at end of file
5204
5205 diff --git a/docs/mirror/forms/_php_inc_forms_os_php.html b/docs/mirror/forms/_php_inc_forms_os_php.html
5206 new file mode 100644
5207 index 0000000..6def3e7
5208 --- /dev/null
5209 +++ b/docs/mirror/forms/_php_inc_forms_os_php.html
5210 @@ -0,0 +1,35 @@
5211 +<?xml version="1.0" encoding="iso-8859-1"?>
5212 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5213 + <html xmlns="http://www.w3.org/1999/xhtml">
5214 + <head>
5215 + <!-- template designed by Marco Von Ballmoos -->
5216 + <title>Docs for page os.php</title>
5217 + <link rel="stylesheet" href="../../media/stylesheet.css" />
5218 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
5219 + </head>
5220 + <body>
5221 + <div class="page-body">
5222 +<h2 class="file-name">/php/inc/forms/os.php</h2>
5223 +
5224 +<a name="sec-description"></a>
5225 +<div class="info-box">
5226 + <div class="info-box-title">Description</div>
5227 + <div class="nav-bar">
5228 + </div>
5229 + <div class="info-box-body">
5230 + <!-- ========== Info from phpDoc block ========= -->
5231 +<p class="short-description">OS form.</p>
5232 +
5233 + </div>
5234 +</div>
5235 +
5236 +
5237 +
5238 +
5239 +
5240 +
5241 + <p class="notes" id="credit">
5242 + Documentation generated on Mon, 8 Nov 2004 13:43:05 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
5243 + </p>
5244 + </div></body>
5245 +</html>
5246 \ No newline at end of file
5247
5248 diff --git a/docs/mirror/forms/_php_inc_forms_product_php.html b/docs/mirror/forms/_php_inc_forms_product_php.html
5249 new file mode 100644
5250 index 0000000..5d7b5d4
5251 --- /dev/null
5252 +++ b/docs/mirror/forms/_php_inc_forms_product_php.html
5253 @@ -0,0 +1,35 @@
5254 +<?xml version="1.0" encoding="iso-8859-1"?>
5255 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5256 + <html xmlns="http://www.w3.org/1999/xhtml">
5257 + <head>
5258 + <!-- template designed by Marco Von Ballmoos -->
5259 + <title>Docs for page product.php</title>
5260 + <link rel="stylesheet" href="../../media/stylesheet.css" />
5261 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
5262 + </head>
5263 + <body>
5264 + <div class="page-body">
5265 +<h2 class="file-name">/php/inc/forms/product.php</h2>
5266 +
5267 +<a name="sec-description"></a>
5268 +<div class="info-box">
5269 + <div class="info-box-title">Description</div>
5270 + <div class="nav-bar">
5271 + </div>
5272 + <div class="info-box-body">
5273 + <!-- ========== Info from phpDoc block ========= -->
5274 +<p class="short-description">Product form.</p>
5275 +
5276 + </div>
5277 +</div>
5278 +
5279 +
5280 +
5281 +
5282 +
5283 +
5284 + <p class="notes" id="credit">
5285 + Documentation generated on Mon, 8 Nov 2004 13:43:06 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
5286 + </p>
5287 + </div></body>
5288 +</html>
5289 \ No newline at end of file
5290
5291 diff --git a/docs/mirror/forms/_php_inc_forms_region_php.html b/docs/mirror/forms/_php_inc_forms_region_php.html
5292 new file mode 100644
5293 index 0000000..0796126
5294 --- /dev/null
5295 +++ b/docs/mirror/forms/_php_inc_forms_region_php.html
5296 @@ -0,0 +1,35 @@
5297 +<?xml version="1.0" encoding="iso-8859-1"?>
5298 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5299 + <html xmlns="http://www.w3.org/1999/xhtml">
5300 + <head>
5301 + <!-- template designed by Marco Von Ballmoos -->
5302 + <title>Docs for page region.php</title>
5303 + <link rel="stylesheet" href="../../media/stylesheet.css" />
5304 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
5305 + </head>
5306 + <body>
5307 + <div class="page-body">
5308 +<h2 class="file-name">/php/inc/forms/region.php</h2>
5309 +
5310 +<a name="sec-description"></a>
5311 +<div class="info-box">
5312 + <div class="info-box-title">Description</div>
5313 + <div class="nav-bar">
5314 + </div>
5315 + <div class="info-box-body">
5316 + <!-- ========== Info from phpDoc block ========= -->
5317 +<p class="short-description">Region form.</p>
5318 +
5319 + </div>
5320 +</div>
5321 +
5322 +
5323 +
5324 +
5325 +
5326 +
5327 + <p class="notes" id="credit">
5328 + Documentation generated on Mon, 8 Nov 2004 13:43:06 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
5329 + </p>
5330 + </div></body>
5331 +</html>
5332 \ No newline at end of file
5333
5334 diff --git a/docs/mirror/forms/_php_inc_forms_user_php.html b/docs/mirror/forms/_php_inc_forms_user_php.html
5335 new file mode 100644
5336 index 0000000..f4b527c
5337 --- /dev/null
5338 +++ b/docs/mirror/forms/_php_inc_forms_user_php.html
5339 @@ -0,0 +1,35 @@
5340 +<?xml version="1.0" encoding="iso-8859-1"?>
5341 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5342 + <html xmlns="http://www.w3.org/1999/xhtml">
5343 + <head>
5344 + <!-- template designed by Marco Von Ballmoos -->
5345 + <title>Docs for page user.php</title>
5346 + <link rel="stylesheet" href="../../media/stylesheet.css" />
5347 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
5348 + </head>
5349 + <body>
5350 + <div class="page-body">
5351 +<h2 class="file-name">/php/inc/forms/user.php</h2>
5352 +
5353 +<a name="sec-description"></a>
5354 +<div class="info-box">
5355 + <div class="info-box-title">Description</div>
5356 + <div class="nav-bar">
5357 + </div>
5358 + <div class="info-box-body">
5359 + <!-- ========== Info from phpDoc block ========= -->
5360 +<p class="short-description">User form.</p>
5361 +
5362 + </div>
5363 +</div>
5364 +
5365 +
5366 +
5367 +
5368 +
5369 +
5370 + <p class="notes" id="credit">
5371 + Documentation generated on Mon, 8 Nov 2004 13:43:06 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
5372 + </p>
5373 + </div></body>
5374 +</html>
5375 \ No newline at end of file
5376
5377 diff --git a/docs/mirror/inc/_php_inc_admin_nav_php.html b/docs/mirror/inc/_php_inc_admin_nav_php.html
5378 new file mode 100644
5379 index 0000000..34c8f45
5380 --- /dev/null
5381 +++ b/docs/mirror/inc/_php_inc_admin_nav_php.html
5382 @@ -0,0 +1,35 @@
5383 +<?xml version="1.0" encoding="iso-8859-1"?>
5384 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5385 + <html xmlns="http://www.w3.org/1999/xhtml">
5386 + <head>
5387 + <!-- template designed by Marco Von Ballmoos -->
5388 + <title>Docs for page admin_nav.php</title>
5389 + <link rel="stylesheet" href="../../media/stylesheet.css" />
5390 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
5391 + </head>
5392 + <body>
5393 + <div class="page-body">
5394 +<h2 class="file-name">/php/inc/admin_nav.php</h2>
5395 +
5396 +<a name="sec-description"></a>
5397 +<div class="info-box">
5398 + <div class="info-box-title">Description</div>
5399 + <div class="nav-bar">
5400 + </div>
5401 + <div class="info-box-body">
5402 + <!-- ========== Info from phpDoc block ========= -->
5403 +<p class="short-description">Admin navigation.</p>
5404 +
5405 + </div>
5406 +</div>
5407 +
5408 +
5409 +
5410 +
5411 +
5412 +
5413 + <p class="notes" id="credit">
5414 + Documentation generated on Mon, 8 Nov 2004 13:43:03 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
5415 + </p>
5416 + </div></body>
5417 +</html>
5418 \ No newline at end of file
5419
5420 diff --git a/docs/mirror/inc/_php_inc_footer_php.html b/docs/mirror/inc/_php_inc_footer_php.html
5421 new file mode 100644
5422 index 0000000..5ec21f7
5423 --- /dev/null
5424 +++ b/docs/mirror/inc/_php_inc_footer_php.html
5425 @@ -0,0 +1,35 @@
5426 +<?xml version="1.0" encoding="iso-8859-1"?>
5427 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5428 + <html xmlns="http://www.w3.org/1999/xhtml">
5429 + <head>
5430 + <!-- template designed by Marco Von Ballmoos -->
5431 + <title>Docs for page footer.php</title>
5432 + <link rel="stylesheet" href="../../media/stylesheet.css" />
5433 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
5434 + </head>
5435 + <body>
5436 + <div class="page-body">
5437 +<h2 class="file-name">/php/inc/footer.php</h2>
5438 +
5439 +<a name="sec-description"></a>
5440 +<div class="info-box">
5441 + <div class="info-box-title">Description</div>
5442 + <div class="nav-bar">
5443 + </div>
5444 + <div class="info-box-body">
5445 + <!-- ========== Info from phpDoc block ========= -->
5446 +<p class="short-description">Footer document.</p>
5447 +
5448 + </div>
5449 +</div>
5450 +
5451 +
5452 +
5453 +
5454 +
5455 +
5456 + <p class="notes" id="credit">
5457 + Documentation generated on Mon, 8 Nov 2004 13:43:04 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
5458 + </p>
5459 + </div></body>
5460 +</html>
5461 \ No newline at end of file
5462
5463 diff --git a/docs/mirror/inc/_php_inc_header_php.html b/docs/mirror/inc/_php_inc_header_php.html
5464 new file mode 100644
5465 index 0000000..9eabc3c
5466 --- /dev/null
5467 +++ b/docs/mirror/inc/_php_inc_header_php.html
5468 @@ -0,0 +1,61 @@
5469 +<?xml version="1.0" encoding="iso-8859-1"?>
5470 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5471 + <html xmlns="http://www.w3.org/1999/xhtml">
5472 + <head>
5473 + <!-- template designed by Marco Von Ballmoos -->
5474 + <title>Docs for page header.php</title>
5475 + <link rel="stylesheet" href="../../media/stylesheet.css" />
5476 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
5477 + </head>
5478 + <body>
5479 + <div class="page-body">
5480 +<h2 class="file-name">/php/inc/header.php</h2>
5481 +
5482 +<a name="sec-description"></a>
5483 +<div class="info-box">
5484 + <div class="info-box-title">Description</div>
5485 + <div class="nav-bar">
5486 + <span class="disabled">Description</span> |
5487 + <a href="#sec-includes">Includes</a>
5488 + </div>
5489 + <div class="info-box-body">
5490 + <!-- ========== Info from phpDoc block ========= -->
5491 +<p class="short-description">Header document.</p>
5492 +
5493 + </div>
5494 +</div>
5495 +
5496 +
5497 + <a name="sec-includes"></a>
5498 + <div class="info-box">
5499 + <div class="info-box-title">Includes</div>
5500 + <div class="nav-bar">
5501 + <a href="#sec-description">Description</a> |
5502 + <span class="disabled">Includes</span>
5503 + </div>
5504 + <div class="info-box-body">
5505 + <a name="_$nav"><!-- --></a>
5506 +<div class="oddrow">
5507 +
5508 + <div>
5509 + <span class="include-title">
5510 + <span class="include-type">require_once</span>
5511 + (<span class="include-name">$nav</span>)
5512 + (line <span class="line-number">54</span>)
5513 + </span>
5514 + </div>
5515 +
5516 + <!-- ========== Info from phpDoc block ========= -->
5517 +
5518 +</div>
5519 + </div>
5520 + </div>
5521 +
5522 +
5523 +
5524 +
5525 + <p class="notes" id="credit">
5526 + Documentation generated on Mon, 8 Nov 2004 13:43:04 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
5527 + </p>
5528 + </div></body>
5529 +</html>
5530 \ No newline at end of file
5531
5532 diff --git a/docs/mirror/lib/_php_lib_auth_php.html b/docs/mirror/lib/_php_lib_auth_php.html
5533 new file mode 100644
5534 index 0000000..b40ce29
5535 --- /dev/null
5536 +++ b/docs/mirror/lib/_php_lib_auth_php.html
5537 @@ -0,0 +1,150 @@
5538 +<?xml version="1.0" encoding="iso-8859-1"?>
5539 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5540 + <html xmlns="http://www.w3.org/1999/xhtml">
5541 + <head>
5542 + <!-- template designed by Marco Von Ballmoos -->
5543 + <title>Docs for page auth.php</title>
5544 + <link rel="stylesheet" href="../../media/stylesheet.css" />
5545 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
5546 + </head>
5547 + <body>
5548 + <div class="page-body">
5549 +<h2 class="file-name">/php/lib/auth.php</h2>
5550 +
5551 +<a name="sec-description"></a>
5552 +<div class="info-box">
5553 + <div class="info-box-title">Description</div>
5554 + <div class="nav-bar">
5555 + <span class="disabled">Description</span> |
5556 + <a href="#sec-functions">Functions</a>
5557 + </div>
5558 + <div class="info-box-body">
5559 + <!-- ========== Info from phpDoc block ========= -->
5560 +<p class="short-description">Home-cooked auth libraries - because PEAR is fat.</p>
5561 + <ul class="tags">
5562 + <li><span class="field">todo:</span> re-enforce one-per-user session limit</li>
5563 + </ul>
5564 +
5565 + </div>
5566 +</div>
5567 +
5568 +
5569 +
5570 +
5571 +
5572 + <a name="sec-functions"></a>
5573 + <div class="info-box">
5574 + <div class="info-box-title">Functions</div>
5575 + <div class="nav-bar">
5576 + <a href="#sec-description">Description</a> |
5577 + <span class="disabled">Functions</span>
5578 + </div>
5579 + <div class="info-box-body">
5580 + <a name="functionauth_create_session" id="functionauth_create_session"><!-- --></a>
5581 +<div class="oddrow">
5582 +
5583 + <div>
5584 + <span class="method-title">auth_create_session</span> (line <span class="line-number">56</span>)
5585 + </div>
5586 +
5587 + <!-- ========== Info from phpDoc block ========= -->
5588 +<p class="short-description">Start a valid session.</p>
5589 +
5590 + <div class="method-signature">
5591 + <span class="method-result">void</span>
5592 + <span class="method-name">
5593 + auth_create_session
5594 + </span>
5595 + (<span class="var-type">array</span>&nbsp;<span class="var-name">$user</span>, [<span class="var-type">mixed</span>&nbsp;<span class="var-name">$secure</span> = <span class="var-default">0</span>])
5596 + </div>
5597 +
5598 + <ul class="parameters">
5599 + <li>
5600 + <span class="var-type">array</span>
5601 + <span class="var-name">$user</span><span class="var-description">: array containing user information.</span> </li>
5602 + </ul>
5603 +
5604 +
5605 +</div>
5606 +<a name="functionauth_is_valid_session" id="functionauth_is_valid_session"><!-- --></a>
5607 +<div class="evenrow">
5608 +
5609 + <div>
5610 + <span class="method-title">auth_is_valid_session</span> (line <span class="line-number">13</span>)
5611 + </div>
5612 +
5613 + <!-- ========== Info from phpDoc block ========= -->
5614 +<p class="short-description">Check admin session against sessions table in database.</p>
5615 +
5616 + <div class="method-signature">
5617 + <span class="method-result">bool</span>
5618 + <span class="method-name">
5619 + auth_is_valid_session
5620 + </span>
5621 + ()
5622 + </div>
5623 +
5624 +
5625 +
5626 +</div>
5627 +<a name="functionauth_logout" id="functionauth_logout"><!-- --></a>
5628 +<div class="oddrow">
5629 +
5630 + <div>
5631 + <span class="method-title">auth_logout</span> (line <span class="line-number">68</span>)
5632 + </div>
5633 +
5634 + <!-- ========== Info from phpDoc block ========= -->
5635 +<p class="short-description">Logout.</p>
5636 +
5637 + <div class="method-signature">
5638 + <span class="method-result">void</span>
5639 + <span class="method-name">
5640 + auth_logout
5641 + </span>
5642 + ()
5643 + </div>
5644 +
5645 +
5646 +
5647 +</div>
5648 +<a name="functionauth_mysql" id="functionauth_mysql"><!-- --></a>
5649 +<div class="evenrow">
5650 +
5651 + <div>
5652 + <span class="method-title">auth_mysql</span> (line <span class="line-number">37</span>)
5653 + </div>
5654 +
5655 + <!-- ========== Info from phpDoc block ========= -->
5656 +<p class="short-description">Authentication a user.</p>
5657 + <ul class="tags">
5658 + <li><span class="field">return:</span> array containing user data or false on failure</li>
5659 + </ul>
5660 +
5661 + <div class="method-signature">
5662 + <span class="method-result">array|bool</span>
5663 + <span class="method-name">
5664 + auth_mysql
5665 + </span>
5666 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$username</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$password</span>)
5667 + </div>
5668 +
5669 + <ul class="parameters">
5670 + <li>
5671 + <span class="var-type">string</span>
5672 + <span class="var-name">$username</span> </li>
5673 + <li>
5674 + <span class="var-type">string</span>
5675 + <span class="var-name">$password</span> </li>
5676 + </ul>
5677 +
5678 +
5679 +</div>
5680 + </div>
5681 + </div>
5682 +
5683 + <p class="notes" id="credit">
5684 + Documentation generated on Mon, 8 Nov 2004 13:43:03 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
5685 + </p>
5686 + </div></body>
5687 +</html>
5688 \ No newline at end of file
5689
5690 diff --git a/docs/mirror/lib/_php_lib_db_php.html b/docs/mirror/lib/_php_lib_db_php.html
5691 new file mode 100644
5692 index 0000000..5b8ddbd
5693 --- /dev/null
5694 +++ b/docs/mirror/lib/_php_lib_db_php.html
5695 @@ -0,0 +1,527 @@
5696 +<?xml version="1.0" encoding="iso-8859-1"?>
5697 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5698 + <html xmlns="http://www.w3.org/1999/xhtml">
5699 + <head>
5700 + <!-- template designed by Marco Von Ballmoos -->
5701 + <title>Docs for page db.php</title>
5702 + <link rel="stylesheet" href="../../media/stylesheet.css" />
5703 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
5704 + </head>
5705 + <body>
5706 + <div class="page-body">
5707 +<h2 class="file-name">/php/lib/db.php</h2>
5708 +
5709 +<a name="sec-description"></a>
5710 +<div class="info-box">
5711 + <div class="info-box-title">Description</div>
5712 + <div class="nav-bar">
5713 + <span class="disabled">Description</span> |
5714 + <a href="#sec-functions">Functions</a>
5715 + </div>
5716 + <div class="info-box-body">
5717 + <!-- ========== Info from phpDoc block ========= -->
5718 +<p class="short-description">Minimal wrappers for core PHP mysql_* functions.</p>
5719 +
5720 + </div>
5721 +</div>
5722 +
5723 +
5724 +
5725 +
5726 +
5727 + <a name="sec-functions"></a>
5728 + <div class="info-box">
5729 + <div class="info-box-title">Functions</div>
5730 + <div class="nav-bar">
5731 + <a href="#sec-description">Description</a> |
5732 + <span class="disabled">Functions</span>
5733 + </div>
5734 + <div class="info-box-body">
5735 + <a name="functiondb_close" id="functiondb_close"><!-- --></a>
5736 +<div class="evenrow">
5737 +
5738 + <div>
5739 + <span class="method-title">db_close</span> (line <span class="line-number">258</span>)
5740 + </div>
5741 +
5742 + <!-- ========== Info from phpDoc block ========= -->
5743 +<p class="short-description">Close the db connection. If a dbh is not specified, assume the last opened link.</p>
5744 +
5745 + <div class="method-signature">
5746 + <span class="method-result">void</span>
5747 + <span class="method-name">
5748 + db_close
5749 + </span>
5750 + ([<span class="var-type">resource</span>&nbsp;<span class="var-name">$dbh</span> = <span class="var-default">null</span>])
5751 + </div>
5752 +
5753 + <ul class="parameters">
5754 + <li>
5755 + <span class="var-type">resource</span>
5756 + <span class="var-name">$dbh</span><span class="var-description">: optional dbh to close</span> </li>
5757 + </ul>
5758 +
5759 +
5760 +</div>
5761 +<a name="functiondb_connect" id="functiondb_connect"><!-- --></a>
5762 +<div class="oddrow">
5763 +
5764 + <div>
5765 + <span class="method-title">db_connect</span> (line <span class="line-number">15</span>)
5766 + </div>
5767 +
5768 + <!-- ========== Info from phpDoc block ========= -->
5769 +<p class="short-description">Connect to a MySQL database server.</p>
5770 + <ul class="tags">
5771 + <li><span class="field">return:</span> dbh</li>
5772 + </ul>
5773 +
5774 + <div class="method-signature">
5775 + <span class="method-result">resource</span>
5776 + <span class="method-name">
5777 + db_connect
5778 + </span>
5779 + ([<span class="var-type">string</span>&nbsp;<span class="var-name">$host</span> = <span class="var-default">'localhost'</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$user</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$password</span> = <span class="var-default">null</span>])
5780 + </div>
5781 +
5782 + <ul class="parameters">
5783 + <li>
5784 + <span class="var-type">string</span>
5785 + <span class="var-name">$host</span><span class="var-description">: db server, defaults to localhost</span> </li>
5786 + <li>
5787 + <span class="var-type">string</span>
5788 + <span class="var-name">$user</span><span class="var-description">: db username</span> </li>
5789 + <li>
5790 + <span class="var-type">string</span>
5791 + <span class="var-name">$password</span><span class="var-description">: db password</span> </li>
5792 + </ul>
5793 +
5794 +
5795 +</div>
5796 +<a name="functiondb_fetch" id="functiondb_fetch"><!-- --></a>
5797 +<div class="evenrow">
5798 +
5799 + <div>
5800 + <span class="method-title">db_fetch</span> (line <span class="line-number">69</span>)
5801 + </div>
5802 +
5803 + <!-- ========== Info from phpDoc block ========= -->
5804 +<p class="short-description">Fetch a row as an array from a result.</p>
5805 +
5806 + <div class="method-signature">
5807 + <span class="method-result">array</span>
5808 + <span class="method-name">
5809 + db_fetch
5810 + </span>
5811 + ([<span class="var-type">string</span>&nbsp;<span class="var-name">$result</span> = <span class="var-default">null</span>], [<span class="var-type">mixed</span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">MYSQL_BOTH</span>])
5812 + </div>
5813 +
5814 + <ul class="parameters">
5815 + <li>
5816 + <span class="var-type">string</span>
5817 + <span class="var-name">$result</span><span class="var-description">: (default to null)</span> </li>
5818 + </ul>
5819 +
5820 +
5821 +</div>
5822 +<a name="functiondb_fieldnames" id="functiondb_fieldnames"><!-- --></a>
5823 +<div class="oddrow">
5824 +
5825 + <div>
5826 + <span class="method-title">db_fieldnames</span> (line <span class="line-number">121</span>)
5827 + </div>
5828 +
5829 + <!-- ========== Info from phpDoc block ========= -->
5830 +<p class="short-description">Get all of the fieldnames for the specified table.</p>
5831 + <ul class="tags">
5832 + <li><span class="field">return:</span> array of column names, must be an array</li>
5833 + </ul>
5834 +
5835 + <div class="method-signature">
5836 + <span class="method-result">array</span>
5837 + <span class="method-name">
5838 + db_fieldnames
5839 + </span>
5840 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$table</span>)
5841 + </div>
5842 +
5843 + <ul class="parameters">
5844 + <li>
5845 + <span class="var-type">string</span>
5846 + <span class="var-name">$table</span><span class="var-description">: name of table to describe</span> </li>
5847 + </ul>
5848 +
5849 +
5850 +</div>
5851 +<a name="functiondb_get" id="functiondb_get"><!-- --></a>
5852 +<div class="evenrow">
5853 +
5854 + <div>
5855 + <span class="method-title">db_get</span> (line <span class="line-number">96</span>)
5856 + </div>
5857 +
5858 + <!-- ========== Info from phpDoc block ========= -->
5859 +<p class="short-description">Fetch an array based on a query.</p>
5860 + <ul class="tags">
5861 + <li><span class="field">return:</span> array of database rows Example of returned array: <pre><ol><code><pre><li> <a href="../../mirror/lib/_php_lib_db_php.html#functiondb_get">db_get</a><span class="src-sym">(</span><span class="src-str">&quot;SELECT * FROM table&quot;</span><span class="src-sym">,</span><span class="src-id">MYSQL_ASSOC</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
5862 +<li> <span class="src-id">returns</span>...</li>
5863 +<li> <span class="src-key">Array</span></li>
5864 +<li> <span class="src-sym">(</span></li>
5865 +<li> <span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">] </span>=&gt; <span class="src-key">Array</span></li>
5866 +<li> <span class="src-sym">(</span></li>
5867 +<li> <span class="src-sym">[</span><span class="src-id">id</span><span class="src-sym">] </span>=&gt; <span class="src-num">1</span></li>
5868 +<li> <span class="src-sym">[</span><span class="src-id">field1</span><span class="src-sym">] </span>=&gt; <span class="src-id">data1</span></li>
5869 +<li> <span class="src-sym">[</span><span class="src-id">field2</span><span class="src-sym">] </span>=&gt; <span class="src-id">data2</span></li>
5870 +<li> <span class="src-sym">)</span></li>
5871 +<li>&nbsp;</li>
5872 +<li> <span class="src-sym">)</span></li>
5873 +</pre></code></ol></pre></li>
5874 + </ul>
5875 +
5876 + <div class="method-signature">
5877 + <span class="method-result">array</span>
5878 + <span class="method-name">
5879 + db_get
5880 + </span>
5881 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$query</span>, [<span class="var-type">int</span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">MYSQL_BOTH</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$col_id</span> = <span class="var-default">NULL</span>])
5882 + </div>
5883 +
5884 + <ul class="parameters">
5885 + <li>
5886 + <span class="var-type">string</span>
5887 + <span class="var-name">$query</span><span class="var-description">: database query</span> </li>
5888 + <li>
5889 + <span class="var-type">int</span>
5890 + <span class="var-name">$type</span><span class="var-description">: result type</span> </li>
5891 + <li>
5892 + <span class="var-type">string</span>
5893 + <span class="var-name">$col_id</span><span class="var-description">: if passed it, the values of this column in the result set will be used as the array keys in the returned array</span> </li>
5894 + </ul>
5895 +
5896 +
5897 +</div>
5898 +<a name="functiondb_get_one" id="functiondb_get_one"><!-- --></a>
5899 +<div class="oddrow">
5900 +
5901 + <div>
5902 + <span class="method-title">db_get_one</span> (line <span class="line-number">268</span>)
5903 + </div>
5904 +
5905 + <!-- ========== Info from phpDoc block ========= -->
5906 +<p class="short-description">Get one record.</p>
5907 +
5908 + <div class="method-signature">
5909 + <span class="method-result">void</span>
5910 + <span class="method-name">
5911 + db_get_one
5912 + </span>
5913 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$query</span>, [<span class="var-type">int</span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">MYSQL_ASSOC</span>])
5914 + </div>
5915 +
5916 + <ul class="parameters">
5917 + <li>
5918 + <span class="var-type">string</span>
5919 + <span class="var-name">$query</span><span class="var-description">: query</span> </li>
5920 + <li>
5921 + <span class="var-type">int</span>
5922 + <span class="var-name">$type</span><span class="var-description">: result type</span> </li>
5923 + </ul>
5924 +
5925 +
5926 +</div>
5927 +<a name="functiondb_insert_id" id="functiondb_insert_id"><!-- --></a>
5928 +<div class="evenrow">
5929 +
5930 + <div>
5931 + <span class="method-title">db_insert_id</span> (line <span class="line-number">237</span>)
5932 + </div>
5933 +
5934 + <!-- ========== Info from phpDoc block ========= -->
5935 +<p class="short-description">Since PHP's mysql_insert_id() sometimes throws an error, this is the replacement</p>
5936 + <ul class="tags">
5937 + <li><span class="field">return:</span> the return value of MySQL's last_insert_id()</li>
5938 + </ul>
5939 +
5940 + <div class="method-signature">
5941 + <span class="method-result">int</span>
5942 + <span class="method-name">
5943 + db_insert_id
5944 + </span>
5945 + ([<span class="var-type">resource</span>&nbsp;<span class="var-name">$dbh</span> = <span class="var-default">null</span>])
5946 + </div>
5947 +
5948 + <ul class="parameters">
5949 + <li>
5950 + <span class="var-type">resource</span>
5951 + <span class="var-name">$dbh</span><span class="var-description">: optional dbh to get the last inserted id from</span> </li>
5952 + </ul>
5953 +
5954 +
5955 +</div>
5956 +<a name="functiondb_makeinsert" id="functiondb_makeinsert"><!-- --></a>
5957 +<div class="oddrow">
5958 +
5959 + <div>
5960 + <span class="method-title">db_makeinsert</span> (line <span class="line-number">151</span>)
5961 + </div>
5962 +
5963 + <!-- ========== Info from phpDoc block ========= -->
5964 +<p class="short-description">Create a MySQL INSERT statement based on $_POST array generated by form submission.</p>
5965 +<p class="description"><p><ul><li>does not work with mysql functions (PASSWORD, etc.) because there are forced double quotes</li><li>do not use clean_in() before this, or you'll have double the slashes</li><li>use the function only when it saves you time, not _always_</li><li>form items not set will not be processed (unchecked radios, checkboxes) - handle these manually, or don't use the func</li></ul></p></p>
5966 + <ul class="tags">
5967 + <li><span class="field">return:</span> resulting MySQL insert string</li>
5968 + </ul>
5969 +
5970 + <div class="method-signature">
5971 + <span class="method-result">string</span>
5972 + <span class="method-name">
5973 + db_makeinsert
5974 + </span>
5975 + (<span class="var-type">array</span>&nbsp;<span class="var-name">$vars</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$table</span>)
5976 + </div>
5977 +
5978 + <ul class="parameters">
5979 + <li>
5980 + <span class="var-type">array</span>
5981 + <span class="var-name">$vars</span><span class="var-description">: array of posts</span> </li>
5982 + <li>
5983 + <span class="var-type">string</span>
5984 + <span class="var-name">$table</span><span class="var-description">: name of the table that fields will be inserted into</span> </li>
5985 + </ul>
5986 +
5987 +
5988 +</div>
5989 +<a name="functiondb_makereplace" id="functiondb_makereplace"><!-- --></a>
5990 +<div class="evenrow">
5991 +
5992 + <div>
5993 + <span class="method-title">db_makereplace</span> (line <span class="line-number">183</span>)
5994 + </div>
5995 +
5996 + <!-- ========== Info from phpDoc block ========= -->
5997 +<p class="short-description">Create a MySQL REPLACE statement based on $_POST array generated by form submission.</p>
5998 +<p class="description"><p><ul><li>does not work with mysql functions (PASSWORD, etc.) because there are forced double quotes</li><li>do not use clean_in() before this, or you'll have double the slashes</li><li>use the function only when it saves you time, not _always_</li><li>form items not set will not be processed (unchecked radios, checkboxes) - handle these manually, or don't use the func</li></ul></p></p>
5999 + <ul class="tags">
6000 + <li><span class="field">return:</span> resulting MySQL insert string</li>
6001 + </ul>
6002 +
6003 + <div class="method-signature">
6004 + <span class="method-result">string</span>
6005 + <span class="method-name">
6006 + db_makereplace
6007 + </span>
6008 + (<span class="var-type">array</span>&nbsp;<span class="var-name">$vars</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$table</span>)
6009 + </div>
6010 +
6011 + <ul class="parameters">
6012 + <li>
6013 + <span class="var-type">array</span>
6014 + <span class="var-name">$vars</span><span class="var-description">: array of posts</span> </li>
6015 + <li>
6016 + <span class="var-type">string</span>
6017 + <span class="var-name">$table</span><span class="var-description">: name of the table that fields will be inserted into</span> </li>
6018 + </ul>
6019 +
6020 +
6021 +</div>
6022 +<a name="functiondb_makeupdate" id="functiondb_makeupdate"><!-- --></a>
6023 +<div class="oddrow">
6024 +
6025 + <div>
6026 + <span class="method-title">db_makeupdate</span> (line <span class="line-number">215</span>)
6027 + </div>
6028 +
6029 + <!-- ========== Info from phpDoc block ========= -->
6030 +<p class="short-description">Create a MySQL UPDATE statement based on $_POST array generated by form submission.</p>
6031 +<p class="description"><p><ul><li>does not work with mysql functions (PASSWORD, etc.) because there are forced double quotes</li><li>do not use clean_in() before this, or you'll have double the slashes</li><li>use the function only when it saves you time, not _always_</li><li>form items not set will not be processed (unchecked radios, checkboxes) - handle these manually, or don't use the func</li></ul></p></p>
6032 +
6033 + <div class="method-signature">
6034 + <span class="method-result">void</span>
6035 + <span class="method-name">
6036 + db_makeupdate
6037 + </span>
6038 + (<span class="var-type">array</span>&nbsp;<span class="var-name">$vars</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$table</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$where</span>)
6039 + </div>
6040 +
6041 + <ul class="parameters">
6042 + <li>
6043 + <span class="var-type">array</span>
6044 + <span class="var-name">$vars</span><span class="var-description">: array of posts</span> </li>
6045 + <li>
6046 + <span class="var-type">string</span>
6047 + <span class="var-name">$table</span><span class="var-description">: name of the table that fields will be inserted into</span> </li>
6048 + <li>
6049 + <span class="var-type">string</span>
6050 + <span class="var-name">$where</span><span class="var-description">: where clause, describing which records are to be updated</span> </li>
6051 + </ul>
6052 +
6053 +
6054 +</div>
6055 +<a name="functiondb_name_to_id" id="functiondb_name_to_id"><!-- --></a>
6056 +<div class="evenrow">
6057 +
6058 + <div>
6059 + <span class="method-title">db_name_to_id</span> (line <span class="line-number">280</span>)
6060 + </div>
6061 +
6062 + <!-- ========== Info from phpDoc block ========= -->
6063 +<p class="short-description">Get an ID based on name.</p>
6064 +
6065 + <div class="method-signature">
6066 + <span class="method-result">void</span>
6067 + <span class="method-name">
6068 + db_name_to_id
6069 + </span>
6070 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$table</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$id_col</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$name_col</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>)
6071 + </div>
6072 +
6073 + <ul class="parameters">
6074 + <li>
6075 + <span class="var-type">string</span>
6076 + <span class="var-name">$table</span> </li>
6077 + <li>
6078 + <span class="var-type">string</span>
6079 + <span class="var-name">$id_col</span> </li>
6080 + <li>
6081 + <span class="var-type">string</span>
6082 + <span class="var-name">$name_col</span> </li>
6083 + <li>
6084 + <span class="var-type">string</span>
6085 + <span class="var-name">$name</span> </li>
6086 + </ul>
6087 +
6088 +
6089 +</div>
6090 +<a name="functiondb_numrows" id="functiondb_numrows"><!-- --></a>
6091 +<div class="oddrow">
6092 +
6093 + <div>
6094 + <span class="method-title">db_numrows</span> (line <span class="line-number">249</span>)
6095 + </div>
6096 +
6097 + <!-- ========== Info from phpDoc block ========= -->
6098 +<p class="short-description">Determine number of rows in result.</p>
6099 + <ul class="tags">
6100 + <li><span class="field">return:</span> number of rows in query result</li>
6101 + </ul>
6102 +
6103 + <div class="method-signature">
6104 + <span class="method-result">int</span>
6105 + <span class="method-name">
6106 + db_numrows
6107 + </span>
6108 + ([<span class="var-type">resource</span>&nbsp;<span class="var-name">$result</span> = <span class="var-default">null</span>])
6109 + </div>
6110 +
6111 + <ul class="parameters">
6112 + <li>
6113 + <span class="var-type">resource</span>
6114 + <span class="var-name">$result</span><span class="var-description">: mysql result</span> </li>
6115 + </ul>
6116 +
6117 +
6118 +</div>
6119 +<a name="functiondb_query" id="functiondb_query"><!-- --></a>
6120 +<div class="evenrow">
6121 +
6122 + <div>
6123 + <span class="method-title">db_query</span> (line <span class="line-number">48</span>)
6124 + </div>
6125 +
6126 + <!-- ========== Info from phpDoc block ========= -->
6127 +<p class="short-description">Execute a MySQL query.</p>
6128 +
6129 + <div class="method-signature">
6130 + <span class="method-result">void</span>
6131 + <span class="method-name">
6132 + db_query
6133 + </span>
6134 + ([<span class="var-type">string</span>&nbsp;<span class="var-name">$qry</span> = <span class="var-default">null</span>], [<span class="var-type">resource</span>&nbsp;<span class="var-name">$dbh</span> = <span class="var-default">null</span>])
6135 + </div>
6136 +
6137 + <ul class="parameters">
6138 + <li>
6139 + <span class="var-type">string</span>
6140 + <span class="var-name">$qry</span><span class="var-description">: MySQL query</span> </li>
6141 + <li>
6142 + <span class="var-type">resource</span>
6143 + <span class="var-name">$dbh</span><span class="var-description">: valid dbh</span> </li>
6144 + </ul>
6145 +
6146 +
6147 +</div>
6148 +<a name="functiondb_select" id="functiondb_select"><!-- --></a>
6149 +<div class="oddrow">
6150 +
6151 + <div>
6152 + <span class="method-title">db_select</span> (line <span class="line-number">33</span>)
6153 + </div>
6154 +
6155 + <!-- ========== Info from phpDoc block ========= -->
6156 +<p class="short-description">Select database.</p>
6157 + <ul class="tags">
6158 + <li><span class="field">return:</span> success of command</li>
6159 + </ul>
6160 +
6161 + <div class="method-signature">
6162 + <span class="method-result">bool</span>
6163 + <span class="method-name">
6164 + db_select
6165 + </span>
6166 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$database</span>, [<span class="var-type">resource</span>&nbsp;<span class="var-name">$dbh</span> = <span class="var-default">null</span>])
6167 + </div>
6168 +
6169 + <ul class="parameters">
6170 + <li>
6171 + <span class="var-type">string</span>
6172 + <span class="var-name">$database</span><span class="var-description">: name of the database to select</span> </li>
6173 + <li>
6174 + <span class="var-type">resource</span>
6175 + <span class="var-name">$dbh</span><span class="var-description">: valid dbh, null if not defined</span> </li>
6176 + </ul>
6177 +
6178 +
6179 +</div>
6180 +<a name="functiondb_toggle_bool" id="functiondb_toggle_bool"><!-- --></a>
6181 +<div class="evenrow">
6182 +
6183 + <div>
6184 + <span class="method-title">db_toggle_bool</span> (line <span class="line-number">294</span>)
6185 + </div>
6186 +
6187 + <!-- ========== Info from phpDoc block ========= -->
6188 +<p class="short-description">Sets enum booleans to their opposite</p>
6189 +
6190 + <div class="method-signature">
6191 + <span class="method-result">int</span>
6192 + <span class="method-name">
6193 + db_toggle_bool
6194 + </span>
6195 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$table</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$pri</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$col</span>, <span class="var-type">array</span>&nbsp;<span class="var-name">$id</span>)
6196 + </div>
6197 +
6198 + <ul class="parameters">
6199 + <li>
6200 + <span class="var-type">string</span>
6201 + <span class="var-name">$table</span> </li>
6202 + <li>
6203 + <span class="var-type">string</span>
6204 + <span class="var-name">$pri</span> </li>
6205 + <li>
6206 + <span class="var-type">string</span>
6207 + <span class="var-name">$col</span> </li>
6208 + <li>
6209 + <span class="var-type">array</span>
6210 + <span class="var-name">$id</span> </li>
6211 + </ul>
6212 +
6213 +
6214 +</div>
6215 + </div>
6216 + </div>
6217 +
6218 + <p class="notes" id="credit">
6219 + Documentation generated on Mon, 8 Nov 2004 13:43:03 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
6220 + </p>
6221 + </div></body>
6222 +</html>
6223 \ No newline at end of file
6224
6225 diff --git a/docs/mirror/lib/_php_lib_forms_php.html b/docs/mirror/lib/_php_lib_forms_php.html
6226 new file mode 100644
6227 index 0000000..aadc7f2
6228 --- /dev/null
6229 +++ b/docs/mirror/lib/_php_lib_forms_php.html
6230 @@ -0,0 +1,942 @@
6231 +<?xml version="1.0" encoding="iso-8859-1"?>
6232 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6233 + <html xmlns="http://www.w3.org/1999/xhtml">
6234 + <head>
6235 + <!-- template designed by Marco Von Ballmoos -->
6236 + <title>Docs for page forms.php</title>
6237 + <link rel="stylesheet" href="../../media/stylesheet.css" />
6238 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
6239 + </head>
6240 + <body>
6241 + <div class="page-body">
6242 +<h2 class="file-name">/php/lib/forms.php</h2>
6243 +
6244 +<a name="sec-description"></a>
6245 +<div class="info-box">
6246 + <div class="info-box-title">Description</div>
6247 + <div class="nav-bar">
6248 + <span class="disabled">Description</span> |
6249 + <a href="#sec-functions">Functions</a>
6250 + </div>
6251 + <div class="info-box-body">
6252 + <!-- ========== Info from phpDoc block ========= -->
6253 +<p class="short-description">Form functions for handling form input, output, and markup.</p>
6254 +
6255 + </div>
6256 +</div>
6257 +
6258 +
6259 +
6260 +
6261 +
6262 + <a name="sec-functions"></a>
6263 + <div class="info-box">
6264 + <div class="info-box-title">Functions</div>
6265 + <div class="nav-bar">
6266 + <a href="#sec-description">Description</a> |
6267 + <span class="disabled">Functions</span>
6268 + </div>
6269 + <div class="info-box-body">
6270 + <a name="functionarray_days" id="functionarray_days"><!-- --></a>
6271 +<div class="oddrow">
6272 +
6273 + <div>
6274 + <span class="method-title">array_days</span> (line <span class="line-number">76</span>)
6275 + </div>
6276 +
6277 + <!-- ========== Info from phpDoc block ========= -->
6278 +<p class="short-description">Get calendar days in array format.</p>
6279 + <ul class="tags">
6280 + <li><span class="field">return:</span> days from 1-&gt;[28-31] (zero-filled)</li>
6281 + </ul>
6282 +
6283 + <div class="method-signature">
6284 + <span class="method-result">array</span>
6285 + <span class="method-name">
6286 + array_days
6287 + </span>
6288 + ([<span class="var-type">int</span>&nbsp;<span class="var-name">$month</span> = <span class="var-default">''</span>], [<span class="var-type">int</span>&nbsp;<span class="var-name">$year</span> = <span class="var-default">''</span>])
6289 + </div>
6290 +
6291 + <ul class="parameters">
6292 + <li>
6293 + <span class="var-type">int</span>
6294 + <span class="var-name">$month</span><span class="var-description">: numeric representation of month (optional) default is empty, accepted range value is 1-12 inclusive, this affects the total number of days in given month</span> </li>
6295 + <li>
6296 + <span class="var-type">int</span>
6297 + <span class="var-name">$year</span><span class="var-description">: the year (optional) default is empty, this affects the total number of days in given month</span> </li>
6298 + </ul>
6299 +
6300 +
6301 +</div>
6302 +<a name="functionarray_hours" id="functionarray_hours"><!-- --></a>
6303 +<div class="evenrow">
6304 +
6305 + <div>
6306 + <span class="method-title">array_hours</span> (line <span class="line-number">159</span>)
6307 + </div>
6308 +
6309 + <!-- ========== Info from phpDoc block ========= -->
6310 +<p class="short-description">Get calendar hours in array format.</p>
6311 + <ul class="tags">
6312 + <li><span class="field">return:</span> hours (zero-filled)</li>
6313 + </ul>
6314 +
6315 + <div class="method-signature">
6316 + <span class="method-result">array</span>
6317 + <span class="method-name">
6318 + array_hours
6319 + </span>
6320 + ()
6321 + </div>
6322 +
6323 +
6324 +
6325 +</div>
6326 +<a name="functionarray_minutes" id="functionarray_minutes"><!-- --></a>
6327 +<div class="oddrow">
6328 +
6329 + <div>
6330 + <span class="method-title">array_minutes</span> (line <span class="line-number">187</span>)
6331 + </div>
6332 +
6333 + <!-- ========== Info from phpDoc block ========= -->
6334 +<p class="short-description">Get array of minutes.</p>
6335 + <ul class="tags">
6336 + <li><span class="field">return:</span> minutes (zero-filled)</li>
6337 + </ul>
6338 +
6339 + <div class="method-signature">
6340 + <span class="method-result">array</span>
6341 + <span class="method-name">
6342 + array_minutes
6343 + </span>
6344 + ([<span class="var-type">int</span>&nbsp;<span class="var-name">$interval</span> = <span class="var-default">15</span>])
6345 + </div>
6346 +
6347 + <ul class="parameters">
6348 + <li>
6349 + <span class="var-type">int</span>
6350 + <span class="var-name">$interval</span><span class="var-description">: interval between minutes (optional) default is 15</span> </li>
6351 + </ul>
6352 +
6353 +
6354 +</div>
6355 +<a name="functionarray_months" id="functionarray_months"><!-- --></a>
6356 +<div class="evenrow">
6357 +
6358 + <div>
6359 + <span class="method-title">array_months</span> (line <span class="line-number">105</span>)
6360 + </div>
6361 +
6362 + <!-- ========== Info from phpDoc block ========= -->
6363 +<p class="short-description">Get calendar months in array format.</p>
6364 + <ul class="tags">
6365 + <li><span class="field">return:</span> months from 01-12 (zero-filled)</li>
6366 + </ul>
6367 +
6368 + <div class="method-signature">
6369 + <span class="method-result">array</span>
6370 + <span class="method-name">
6371 + array_months
6372 + </span>
6373 + ()
6374 + </div>
6375 +
6376 +
6377 +
6378 +</div>
6379 +<a name="functionarray_states" id="functionarray_states"><!-- --></a>
6380 +<div class="oddrow">
6381 +
6382 + <div>
6383 + <span class="method-title">array_states</span> (line <span class="line-number">203</span>)
6384 + </div>
6385 +
6386 + <!-- ========== Info from phpDoc block ========= -->
6387 +<p class="short-description">Get array of states.</p>
6388 + <ul class="tags">
6389 + <li><span class="field">return:</span> states (abbr=&gt;fullname)</li>
6390 + </ul>
6391 +
6392 + <div class="method-signature">
6393 + <span class="method-result">array</span>
6394 + <span class="method-name">
6395 + array_states
6396 + </span>
6397 + ()
6398 + </div>
6399 +
6400 +
6401 +
6402 +</div>
6403 +<a name="functionarray_years" id="functionarray_years"><!-- --></a>
6404 +<div class="evenrow">
6405 +
6406 + <div>
6407 + <span class="method-title">array_years</span> (line <span class="line-number">130</span>)
6408 + </div>
6409 +
6410 + <!-- ========== Info from phpDoc block ========= -->
6411 +<p class="short-description">Get calendar years in array format.</p>
6412 + <ul class="tags">
6413 + <li><span class="field">return:</span> years</li>
6414 + </ul>
6415 +
6416 + <div class="method-signature">
6417 + <span class="method-result">array</span>
6418 + <span class="method-name">
6419 + array_years
6420 + </span>
6421 + ([<span class="var-type">int</span>&nbsp;<span class="var-name">$num</span> = <span class="var-default">5</span>], [<span class="var-type">int</span>&nbsp;<span class="var-name">$year</span> = <span class="var-default">''</span>])
6422 + </div>
6423 +
6424 + <ul class="parameters">
6425 + <li>
6426 + <span class="var-type">int</span>
6427 + <span class="var-name">$num</span><span class="var-description">: number of years to display (optional) default is 5, negative numbers change direction of array</span> </li>
6428 + <li>
6429 + <span class="var-type">int</span>
6430 + <span class="var-name">$year</span><span class="var-description">: starting year (optional) default is this year</span> </li>
6431 + </ul>
6432 +
6433 +
6434 +</div>
6435 +<a name="functionclean_in" id="functionclean_in"><!-- --></a>
6436 +<div class="oddrow">
6437 +
6438 + <div>
6439 + <span class="method-title">clean_in</span> (line <span class="line-number">41</span>)
6440 + </div>
6441 +
6442 + <!-- ========== Info from phpDoc block ========= -->
6443 +<p class="short-description">Cleans a string or an array of strings for DB input.</p>
6444 + <ul class="tags">
6445 + <li><span class="field">return:</span> slashes added, if necessary</li>
6446 + </ul>
6447 +
6448 + <div class="method-signature">
6449 + <span class="method-result">mixed</span>
6450 + <span class="method-name">
6451 + clean_in
6452 + </span>
6453 + (<span class="var-type">mixed</span>&nbsp;<span class="var-name">$str</span>, [<span class="var-type">mixed</span>&nbsp;<span class="var-name">$single_quotes</span> = <span class="var-default">FALSE</span>], [<span class="var-type">bool</span>&nbsp;<span class="var-name">$decode</span> = <span class="var-default">FALSE</span>], <span class="var-type">bool</span>&nbsp;<span class="var-name">$single_quote</span>)
6454 + </div>
6455 +
6456 + <ul class="parameters">
6457 + <li>
6458 + <span class="var-type">mixed</span>
6459 + <span class="var-name">$str</span><span class="var-description">: dirty</span> </li>
6460 + <li>
6461 + <span class="var-type">bool</span>
6462 + <span class="var-name">$single_quote</span><span class="var-description">: add single quotes around the string, optional</span> </li>
6463 + <li>
6464 + <span class="var-type">bool</span>
6465 + <span class="var-name">$decode</span><span class="var-description">: run html_entity_decode(), optional</span> </li>
6466 + </ul>
6467 +
6468 +
6469 +</div>
6470 +<a name="functionclean_out" id="functionclean_out"><!-- --></a>
6471 +<div class="evenrow">
6472 +
6473 + <div>
6474 + <span class="method-title">clean_out</span> (line <span class="line-number">14</span>)
6475 + </div>
6476 +
6477 + <!-- ========== Info from phpDoc block ========= -->
6478 +<p class="short-description">Cleans a string or an array of strings for HTML presentation.</p>
6479 + <ul class="tags">
6480 + <li><span class="field">return:</span> cleaned for HTML</li>
6481 + </ul>
6482 +
6483 + <div class="method-signature">
6484 + <span class="method-result">mixed</span>
6485 + <span class="method-name">
6486 + clean_out
6487 + </span>
6488 + (<span class="var-type">mixed</span>&nbsp;<span class="var-name">$str</span>, [<span class="var-type">bool</span>&nbsp;<span class="var-name">$slashes</span> = <span class="var-default">FALSE</span>])
6489 + </div>
6490 +
6491 + <ul class="parameters">
6492 + <li>
6493 + <span class="var-type">mixed</span>
6494 + <span class="var-name">$str</span><span class="var-description">: dirty</span> </li>
6495 + <li>
6496 + <span class="var-type">bool</span>
6497 + <span class="var-name">$slashes</span><span class="var-description">: default to false, this parameter indicate if stripslashes is desired, usually use for magic qoutes</span> </li>
6498 + </ul>
6499 +
6500 +
6501 +</div>
6502 +<a name="functiondb_get_to_options" id="functiondb_get_to_options"><!-- --></a>
6503 +<div class="oddrow">
6504 +
6505 + <div>
6506 + <span class="method-title">db_get_to_options</span> (line <span class="line-number">650</span>)
6507 + </div>
6508 +
6509 + <!-- ========== Info from phpDoc block ========= -->
6510 +<p class="short-description">Take a db_get result and return an array of options.</p>
6511 + <ul class="tags">
6512 + <li><span class="field">return:</span> array of options ($val=&gt;$text)</li>
6513 + </ul>
6514 +
6515 + <div class="method-signature">
6516 + <span class="method-result">array</span>
6517 + <span class="method-name">
6518 + db_get_to_options
6519 + </span>
6520 + (<span class="var-type">array</span>&nbsp;<span class="var-name">$data</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$val_col</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$name_col</span>)
6521 + </div>
6522 +
6523 + <ul class="parameters">
6524 + <li>
6525 + <span class="var-type">array</span>
6526 + <span class="var-name">$data</span><span class="var-description">: db_get result</span> </li>
6527 + <li>
6528 + <span class="var-type">string</span>
6529 + <span class="var-name">$val_col</span><span class="var-description">: column containing the value for each option</span> </li>
6530 + <li>
6531 + <span class="var-type">string</span>
6532 + <span class="var-name">$name_col</span><span class="var-description">: column containing the text</span> </li>
6533 + </ul>
6534 +
6535 +
6536 +</div>
6537 +<a name="functionform_array_fix_dates" id="functionform_array_fix_dates"><!-- --></a>
6538 +<div class="evenrow">
6539 +
6540 + <div>
6541 + <span class="method-title">form_array_fix_dates</span> (line <span class="line-number">532</span>)
6542 + </div>
6543 +
6544 + <!-- ========== Info from phpDoc block ========= -->
6545 +<p class="short-description">Fix dates for form display, or proper db entry</p>
6546 + <ul class="tags">
6547 + <li><span class="field">return:</span> null, or the original array modified to have separated date values for the forms</li>
6548 + </ul>
6549 +
6550 + <div class="method-signature">
6551 + <span class="method-result">mixed</span>
6552 + <span class="method-name">
6553 + form_array_fix_dates
6554 + </span>
6555 + (<span class="var-type">array</span>&nbsp;<span class="var-name">$dates</span>, <span class="var-type">array</span>&nbsp;<span class="var-name">$datetimes</span>, [<span class="var-type">int</span>&nbsp;<span class="var-name">$way</span> = <span class="var-default">1</span>], [<span class="var-type">array</span>&nbsp;<span class="var-name">$orig</span> = <span class="var-default">''</span>])
6556 + </div>
6557 +
6558 + <ul class="parameters">
6559 + <li>
6560 + <span class="var-type">array</span>
6561 + <span class="var-name">$dates</span><span class="var-description">: array of date field names</span> </li>
6562 + <li>
6563 + <span class="var-type">array</span>
6564 + <span class="var-name">$datetimes</span><span class="var-description">: array of datetime field names</span> </li>
6565 + <li>
6566 + <span class="var-type">int</span>
6567 + <span class="var-name">$way</span><span class="var-description">: 1 is done after a post, 2 is done when selecting for forms</span> </li>
6568 + <li>
6569 + <span class="var-type">array</span>
6570 + <span class="var-name">$orig</span><span class="var-description">: for way 2, the array we need to add the separated date values to (usually $posts)</span> </li>
6571 + </ul>
6572 +
6573 +
6574 +</div>
6575 +<a name="functionform_array_get_date" id="functionform_array_get_date"><!-- --></a>
6576 +<div class="oddrow">
6577 +
6578 + <div>
6579 + <span class="method-title">form_array_get_date</span> (line <span class="line-number">587</span>)
6580 + </div>
6581 +
6582 + <!-- ========== Info from phpDoc block ========= -->
6583 +<p class="short-description">Get put a date back together after a POST.</p>
6584 + <ul class="tags">
6585 + <li><span class="field">return:</span> repaired date, as an array that corresponds to the form</li>
6586 + </ul>
6587 +
6588 + <div class="method-signature">
6589 + <span class="method-result">array</span>
6590 + <span class="method-name">
6591 + form_array_get_date
6592 + </span>
6593 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$field</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$key</span>)
6594 + </div>
6595 +
6596 + <ul class="parameters">
6597 + <li>
6598 + <span class="var-type">string</span>
6599 + <span class="var-name">$field</span><span class="var-description">: name of post index of date field</span> </li>
6600 + <li>
6601 + <span class="var-type">int</span>
6602 + <span class="var-name">$key</span><span class="var-description">: index of form array that the field value belongs to</span> </li>
6603 + </ul>
6604 +
6605 +
6606 +</div>
6607 +<a name="functionform_array_get_datetime" id="functionform_array_get_datetime"><!-- --></a>
6608 +<div class="evenrow">
6609 +
6610 + <div>
6611 + <span class="method-title">form_array_get_datetime</span> (line <span class="line-number">603</span>)
6612 + </div>
6613 +
6614 + <!-- ========== Info from phpDoc block ========= -->
6615 +<p class="short-description">Get put a datetime back together after a POST.</p>
6616 + <ul class="tags">
6617 + <li><span class="field">return:</span> repaired datetime, as an array that corresponds to the form</li>
6618 + </ul>
6619 +
6620 + <div class="method-signature">
6621 + <span class="method-result">array</span>
6622 + <span class="method-name">
6623 + form_array_get_datetime
6624 + </span>
6625 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$field</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$key</span>)
6626 + </div>
6627 +
6628 + <ul class="parameters">
6629 + <li>
6630 + <span class="var-type">string</span>
6631 + <span class="var-name">$field</span><span class="var-description">: name of post index of datetime field</span> </li>
6632 + <li>
6633 + <span class="var-type">int</span>
6634 + <span class="var-name">$key</span><span class="var-description">: index of form array that the field value belongs to</span> </li>
6635 + </ul>
6636 +
6637 +
6638 +</div>
6639 +<a name="functionform_checkbox" id="functionform_checkbox"><!-- --></a>
6640 +<div class="oddrow">
6641 +
6642 + <div>
6643 + <span class="method-title">form_checkbox</span> (line <span class="line-number">359</span>)
6644 + </div>
6645 +
6646 + <!-- ========== Info from phpDoc block ========= -->
6647 +<p class="short-description">Writes a checkbox input.</p>
6648 +
6649 + <div class="method-signature">
6650 + <span class="method-result">void</span>
6651 + <span class="method-name">
6652 + form_checkbox
6653 + </span>
6654 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$id</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$class</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$value</span> = <span class="var-default">null</span>], [<span class="var-type">bool</span>&nbsp;<span class="var-name">$checked</span> = <span class="var-default">0</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$extra</span> = <span class="var-default">null</span>])
6655 + </div>
6656 +
6657 + <ul class="parameters">
6658 + <li>
6659 + <span class="var-type">string</span>
6660 + <span class="var-name">$name</span><span class="var-description">: name of field</span> </li>
6661 + <li>
6662 + <span class="var-type">string</span>
6663 + <span class="var-name">$id</span><span class="var-description">: id of field, must be unique per page</span> </li>
6664 + <li>
6665 + <span class="var-type">string</span>
6666 + <span class="var-name">$class</span><span class="var-description">: css class</span> </li>
6667 + <li>
6668 + <span class="var-type">string</span>
6669 + <span class="var-name">$value</span><span class="var-description">: value</span> </li>
6670 + <li>
6671 + <span class="var-type">bool</span>
6672 + <span class="var-name">$checked</span><span class="var-description">: checked?</span> </li>
6673 + <li>
6674 + <span class="var-type">string</span>
6675 + <span class="var-name">$extra</span><span class="var-description">: any extra parameters (optional)</span> </li>
6676 + </ul>
6677 +
6678 +
6679 +</div>
6680 +<a name="functionform_end" id="functionform_end"><!-- --></a>
6681 +<div class="evenrow">
6682 +
6683 + <div>
6684 + <span class="method-title">form_end</span> (line <span class="line-number">289</span>)
6685 + </div>
6686 +
6687 + <!-- ========== Info from phpDoc block ========= -->
6688 +<p class="short-description">Writes the ending form tag.</p>
6689 +
6690 + <div class="method-signature">
6691 + <span class="method-result">void</span>
6692 + <span class="method-name">
6693 + form_end
6694 + </span>
6695 + ()
6696 + </div>
6697 +
6698 +
6699 +
6700 +</div>
6701 +<a name="functionform_hidden" id="functionform_hidden"><!-- --></a>
6702 +<div class="oddrow">
6703 +
6704 + <div>
6705 + <span class="method-title">form_hidden</span> (line <span class="line-number">454</span>)
6706 + </div>
6707 +
6708 + <!-- ========== Info from phpDoc block ========= -->
6709 +<p class="short-description">Writes a hidden field.</p>
6710 +
6711 + <div class="method-signature">
6712 + <span class="method-result">void</span>
6713 + <span class="method-name">
6714 + form_hidden
6715 + </span>
6716 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$value</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$extra</span> = <span class="var-default">null</span>])
6717 + </div>
6718 +
6719 + <ul class="parameters">
6720 + <li>
6721 + <span class="var-type">string</span>
6722 + <span class="var-name">$name</span><span class="var-description">: name of field</span> </li>
6723 + <li>
6724 + <span class="var-type">string</span>
6725 + <span class="var-name">$value</span><span class="var-description">: value</span> </li>
6726 + <li>
6727 + <span class="var-type">string</span>
6728 + <span class="var-name">$extra</span><span class="var-description">: any extra parameters (optional)</span> </li>
6729 + </ul>
6730 +
6731 +
6732 +</div>
6733 +<a name="functionform_label" id="functionform_label"><!-- --></a>
6734 +<div class="evenrow">
6735 +
6736 + <div>
6737 + <span class="method-title">form_label</span> (line <span class="line-number">301</span>)
6738 + </div>
6739 +
6740 + <!-- ========== Info from phpDoc block ========= -->
6741 +<p class="short-description">Writes a form input label.</p>
6742 +
6743 + <div class="method-signature">
6744 + <span class="method-result">void</span>
6745 + <span class="method-name">
6746 + form_label
6747 + </span>
6748 + ([<span class="var-type">string</span>&nbsp;<span class="var-name">$text</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$for</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$class</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$extra</span> = <span class="var-default">null</span>])
6749 + </div>
6750 +
6751 + <ul class="parameters">
6752 + <li>
6753 + <span class="var-type">string</span>
6754 + <span class="var-name">$text</span><span class="var-description">: label text</span> </li>
6755 + <li>
6756 + <span class="var-type">string</span>
6757 + <span class="var-name">$for</span><span class="var-description">: id of corresponding field</span> </li>
6758 + <li>
6759 + <span class="var-type">string</span>
6760 + <span class="var-name">$class</span><span class="var-description">: class css class of label</span> </li>
6761 + <li>
6762 + <span class="var-type">string</span>
6763 + <span class="var-name">$extra</span><span class="var-description">: any extra parameters (optional)</span> </li>
6764 + </ul>
6765 +
6766 +
6767 +</div>
6768 +<a name="functionform_password" id="functionform_password"><!-- --></a>
6769 +<div class="oddrow">
6770 +
6771 + <div>
6772 + <span class="method-title">form_password</span> (line <span class="line-number">340</span>)
6773 + </div>
6774 +
6775 + <!-- ========== Info from phpDoc block ========= -->
6776 +<p class="short-description">Writes a password input.</p>
6777 +
6778 + <div class="method-signature">
6779 + <span class="method-result">void</span>
6780 + <span class="method-name">
6781 + form_password
6782 + </span>
6783 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$id</span> = <span class="var-default">null</span>], [<span class="var-type">mixed</span>&nbsp;<span class="var-name">$class</span> = <span class="var-default">null</span>], [<span class="var-type">int</span>&nbsp;<span class="var-name">$size</span> = <span class="var-default">'30'</span>], [<span class="var-type">int</span>&nbsp;<span class="var-name">$maxlength</span> = <span class="var-default">'100'</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$extra</span> = <span class="var-default">null</span>], <span class="var-type">string</span>&nbsp;<span class="var-name">$css</span>)
6784 + </div>
6785 +
6786 + <ul class="parameters">
6787 + <li>
6788 + <span class="var-type">string</span>
6789 + <span class="var-name">$name</span><span class="var-description">: name of field</span> </li>
6790 + <li>
6791 + <span class="var-type">string</span>
6792 + <span class="var-name">$id</span><span class="var-description">: id of field, must be unique per page</span> </li>
6793 + <li>
6794 + <span class="var-type">string</span>
6795 + <span class="var-name">$css</span><span class="var-description">: css class</span> </li>
6796 + <li>
6797 + <span class="var-type">int</span>
6798 + <span class="var-name">$size</span><span class="var-description">: size of field (optional) default is 30</span> </li>
6799 + <li>
6800 + <span class="var-type">int</span>
6801 + <span class="var-name">$maxlength</span><span class="var-description">: maxlength of field (optional)</span> </li>
6802 + <li>
6803 + <span class="var-type">string</span>
6804 + <span class="var-name">$extra</span><span class="var-description">: any extra parameters (optional)</span> </li>
6805 + </ul>
6806 +
6807 +
6808 +</div>
6809 +<a name="functionform_radio" id="functionform_radio"><!-- --></a>
6810 +<div class="evenrow">
6811 +
6812 + <div>
6813 + <span class="method-title">form_radio</span> (line <span class="line-number">391</span>)
6814 + </div>
6815 +
6816 + <!-- ========== Info from phpDoc block ========= -->
6817 +<p class="short-description">Writes a radio input.</p>
6818 +
6819 + <div class="method-signature">
6820 + <span class="method-result">void</span>
6821 + <span class="method-name">
6822 + form_radio
6823 + </span>
6824 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$id</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$class</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$value</span> = <span class="var-default">null</span>], [<span class="var-type">bool</span>&nbsp;<span class="var-name">$checked</span> = <span class="var-default">0</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$extra</span> = <span class="var-default">null</span>])
6825 + </div>
6826 +
6827 + <ul class="parameters">
6828 + <li>
6829 + <span class="var-type">string</span>
6830 + <span class="var-name">$name</span><span class="var-description">: name of field</span> </li>
6831 + <li>
6832 + <span class="var-type">string</span>
6833 + <span class="var-name">$id</span><span class="var-description">: id of field, must be unique per page</span> </li>
6834 + <li>
6835 + <span class="var-type">string</span>
6836 + <span class="var-name">$class</span><span class="var-description">: css class</span> </li>
6837 + <li>
6838 + <span class="var-type">string</span>
6839 + <span class="var-name">$value</span><span class="var-description">: value</span> </li>
6840 + <li>
6841 + <span class="var-type">bool</span>
6842 + <span class="var-name">$checked</span><span class="var-description">: checked?</span> </li>
6843 + <li>
6844 + <span class="var-type">string</span>
6845 + <span class="var-name">$extra</span><span class="var-description">: any extra parameters (optional)</span> </li>
6846 + </ul>
6847 +
6848 +
6849 +</div>
6850 +<a name="functionform_reset" id="functionform_reset"><!-- --></a>
6851 +<div class="oddrow">
6852 +
6853 + <div>
6854 + <span class="method-title">form_reset</span> (line <span class="line-number">439</span>)
6855 + </div>
6856 +
6857 + <!-- ========== Info from phpDoc block ========= -->
6858 +<p class="short-description">Writes a reset input.</p>
6859 +
6860 + <div class="method-signature">
6861 + <span class="method-result">void</span>
6862 + <span class="method-name">
6863 + form_reset
6864 + </span>
6865 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$class</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$value</span> = <span class="var-default">'Reset'</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$extra</span> = <span class="var-default">null</span>])
6866 + </div>
6867 +
6868 + <ul class="parameters">
6869 + <li>
6870 + <span class="var-type">string</span>
6871 + <span class="var-name">$name</span><span class="var-description">: name of field</span> </li>
6872 + <li>
6873 + <span class="var-type">string</span>
6874 + <span class="var-name">$class</span><span class="var-description">: css class</span> </li>
6875 + <li>
6876 + <span class="var-type">string</span>
6877 + <span class="var-name">$value</span><span class="var-description">: value (button text)</span> </li>
6878 + <li>
6879 + <span class="var-type">string</span>
6880 + <span class="var-name">$extra</span><span class="var-description">: any extra parameters (optional)</span> </li>
6881 + </ul>
6882 +
6883 +
6884 +</div>
6885 +<a name="functionform_select" id="functionform_select"><!-- --></a>
6886 +<div class="evenrow">
6887 +
6888 + <div>
6889 + <span class="method-title">form_select</span> (line <span class="line-number">477</span>)
6890 + </div>
6891 +
6892 + <!-- ========== Info from phpDoc block ========= -->
6893 +<p class="short-description">Writes a select list with options.</p>
6894 +
6895 + <div class="method-signature">
6896 + <span class="method-result">void</span>
6897 + <span class="method-name">
6898 + form_select
6899 + </span>
6900 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$id</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$class</span> = <span class="var-default">null</span>], [<span class="var-type">array</span>&nbsp;<span class="var-name">$options</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$selected</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$extra</span> = <span class="var-default">null</span>])
6901 + </div>
6902 +
6903 + <ul class="parameters">
6904 + <li>
6905 + <span class="var-type">string</span>
6906 + <span class="var-name">$name</span><span class="var-description">: name of field</span> </li>
6907 + <li>
6908 + <span class="var-type">string</span>
6909 + <span class="var-name">$id</span><span class="var-description">: id of field, must be unique per page</span> </li>
6910 + <li>
6911 + <span class="var-type">string</span>
6912 + <span class="var-name">$class</span><span class="var-description">: css class</span> </li>
6913 + <li>
6914 + <span class="var-type">array</span>
6915 + <span class="var-name">$options</span><span class="var-description">: possible options, usually pulled from db, or array_* funcs</span> </li>
6916 + <li>
6917 + <span class="var-type">string</span>
6918 + <span class="var-name">$selected</span><span class="var-description">: <p>if the value matches, it is selected</p><p>Multiple selects based on sets come out of a database as val,val,val so the explode was intended to create the instance of an array based on the string regardless of whether or not it has val,val,val.</p></span> </li>
6919 + <li>
6920 + <span class="var-type">string</span>
6921 + <span class="var-name">$extra</span><span class="var-description">: any extra parameters (optional)</span> </li>
6922 + </ul>
6923 +
6924 +
6925 +</div>
6926 +<a name="functionform_start" id="functionform_start"><!-- --></a>
6927 +<div class="oddrow">
6928 +
6929 + <div>
6930 + <span class="method-title">form_start</span> (line <span class="line-number">276</span>)
6931 + </div>
6932 +
6933 + <!-- ========== Info from phpDoc block ========= -->
6934 +<p class="short-description">Writes the beginning form tag.</p>
6935 +
6936 + <div class="method-signature">
6937 + <span class="method-result">void</span>
6938 + <span class="method-name">
6939 + form_start
6940 + </span>
6941 + ([<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span> = <span class="var-default">'form'</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$class</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$method</span> = <span class="var-default">'post'</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$action</span> = <span class="var-default">null</span>], [<span class="var-type">mixed</span>&nbsp;<span class="var-name">$extra</span> = <span class="var-default">null</span>])
6942 + </div>
6943 +
6944 + <ul class="parameters">
6945 + <li>
6946 + <span class="var-type">string</span>
6947 + <span class="var-name">$name</span><span class="var-description">: form name</span> </li>
6948 + <li>
6949 + <span class="var-type">string</span>
6950 + <span class="var-name">$class</span><span class="var-description">: class name</span> </li>
6951 + <li>
6952 + <span class="var-type">string</span>
6953 + <span class="var-name">$method</span><span class="var-description">: method (post or get)</span> </li>
6954 + <li>
6955 + <span class="var-type">string</span>
6956 + <span class="var-name">$action</span><span class="var-description">: action</span> </li>
6957 + </ul>
6958 +
6959 +
6960 +</div>
6961 +<a name="functionform_submit" id="functionform_submit"><!-- --></a>
6962 +<div class="evenrow">
6963 +
6964 + <div>
6965 + <span class="method-title">form_submit</span> (line <span class="line-number">422</span>)
6966 + </div>
6967 +
6968 + <!-- ========== Info from phpDoc block ========= -->
6969 +<p class="short-description">Writes a submit input.</p>
6970 +
6971 + <div class="method-signature">
6972 + <span class="method-result">void</span>
6973 + <span class="method-name">
6974 + form_submit
6975 + </span>
6976 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$id</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$class</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$value</span> = <span class="var-default">'Submit'</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$extra</span> = <span class="var-default">null</span>])
6977 + </div>
6978 +
6979 + <ul class="parameters">
6980 + <li>
6981 + <span class="var-type">string</span>
6982 + <span class="var-name">$id</span><span class="var-description">: the id attribute</span> </li>
6983 + <li>
6984 + <span class="var-type">string</span>
6985 + <span class="var-name">$name</span><span class="var-description">: name name of field</span> </li>
6986 + <li>
6987 + <span class="var-type">string</span>
6988 + <span class="var-name">$class</span><span class="var-description">: css class</span> </li>
6989 + <li>
6990 + <span class="var-type">string</span>
6991 + <span class="var-name">$value</span><span class="var-description">: value (button text)</span> </li>
6992 + <li>
6993 + <span class="var-type">string</span>
6994 + <span class="var-name">$extra</span><span class="var-description">: any extra parameters (optional)</span> </li>
6995 + </ul>
6996 +
6997 +
6998 +</div>
6999 +<a name="functionform_text" id="functionform_text"><!-- --></a>
7000 +<div class="oddrow">
7001 +
7002 + <div>
7003 + <span class="method-title">form_text</span> (line <span class="line-number">321</span>)
7004 + </div>
7005 +
7006 + <!-- ========== Info from phpDoc block ========= -->
7007 +<p class="short-description">Writes a text input.</p>
7008 +
7009 + <div class="method-signature">
7010 + <span class="method-result">void</span>
7011 + <span class="method-name">
7012 + form_text
7013 + </span>
7014 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$id</span> = <span class="var-default">null</span>], [<span class="var-type">mixed</span>&nbsp;<span class="var-name">$class</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$value</span> = <span class="var-default">null</span>], [<span class="var-type">int</span>&nbsp;<span class="var-name">$size</span> = <span class="var-default">'30'</span>], [<span class="var-type">int</span>&nbsp;<span class="var-name">$maxlength</span> = <span class="var-default">'100'</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$extra</span> = <span class="var-default">null</span>], <span class="var-type">string</span>&nbsp;<span class="var-name">$css</span>)
7015 + </div>
7016 +
7017 + <ul class="parameters">
7018 + <li>
7019 + <span class="var-type">string</span>
7020 + <span class="var-name">$name</span><span class="var-description">: name of field</span> </li>
7021 + <li>
7022 + <span class="var-type">string</span>
7023 + <span class="var-name">$id</span><span class="var-description">: id of field, must be unique per page</span> </li>
7024 + <li>
7025 + <span class="var-type">string</span>
7026 + <span class="var-name">$css</span><span class="var-description">: css class</span> </li>
7027 + <li>
7028 + <span class="var-type">string</span>
7029 + <span class="var-name">$value</span><span class="var-description">: value</span> </li>
7030 + <li>
7031 + <span class="var-type">int</span>
7032 + <span class="var-name">$size</span><span class="var-description">: size of field</span> </li>
7033 + <li>
7034 + <span class="var-type">int</span>
7035 + <span class="var-name">$maxlength</span><span class="var-description">: maxlength of field</span> </li>
7036 + <li>
7037 + <span class="var-type">string</span>
7038 + <span class="var-name">$extra</span><span class="var-description">: any extra parameters (optional)</span> </li>
7039 + </ul>
7040 +
7041 +
7042 +</div>
7043 +<a name="functionform_textarea" id="functionform_textarea"><!-- --></a>
7044 +<div class="evenrow">
7045 +
7046 + <div>
7047 + <span class="method-title">form_textarea</span> (line <span class="line-number">513</span>)
7048 + </div>
7049 +
7050 + <!-- ========== Info from phpDoc block ========= -->
7051 +<p class="short-description">Writes a textarea</p>
7052 +
7053 + <div class="method-signature">
7054 + <span class="method-result">void</span>
7055 + <span class="method-name">
7056 + form_textarea
7057 + </span>
7058 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$id</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$class</span> = <span class="var-default">null</span>], [<span class="var-type">int</span>&nbsp;<span class="var-name">$rows</span> = <span class="var-default">'6'</span>], [<span class="var-type">int</span>&nbsp;<span class="var-name">$cols</span> = <span class="var-default">'50'</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$value</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$extra</span> = <span class="var-default">null</span>])
7059 + </div>
7060 +
7061 + <ul class="parameters">
7062 + <li>
7063 + <span class="var-type">string</span>
7064 + <span class="var-name">$name</span><span class="var-description">: name of field</span> </li>
7065 + <li>
7066 + <span class="var-type">string</span>
7067 + <span class="var-name">$id</span><span class="var-description">: id of field, must be unique per page</span> </li>
7068 + <li>
7069 + <span class="var-type">string</span>
7070 + <span class="var-name">$class</span><span class="var-description">: css class</span> </li>
7071 + <li>
7072 + <span class="var-type">int</span>
7073 + <span class="var-name">$rows</span><span class="var-description">: number of rows (height)</span> </li>
7074 + <li>
7075 + <span class="var-type">int</span>
7076 + <span class="var-name">$cols</span><span class="var-description">: number of cols (width)</span> </li>
7077 + <li>
7078 + <span class="var-type">string</span>
7079 + <span class="var-name">$value</span><span class="var-description">: value of field</span> </li>
7080 + <li>
7081 + <span class="var-type">string</span>
7082 + <span class="var-name">$extra</span><span class="var-description">: any extra parameters</span> </li>
7083 + </ul>
7084 +
7085 +
7086 +</div>
7087 +<a name="functionis_email_address" id="functionis_email_address"><!-- --></a>
7088 +<div class="oddrow">
7089 +
7090 + <div>
7091 + <span class="method-title">is_email_address</span> (line <span class="line-number">618</span>)
7092 + </div>
7093 +
7094 + <!-- ========== Info from phpDoc block ========= -->
7095 +<p class="short-description">Validates email addresses</p>
7096 +
7097 + <div class="method-signature">
7098 + <span class="method-result">bool</span>
7099 + <span class="method-name">
7100 + is_email_address
7101 + </span>
7102 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$email</span>)
7103 + </div>
7104 +
7105 + <ul class="parameters">
7106 + <li>
7107 + <span class="var-type">string</span>
7108 + <span class="var-name">$email</span> </li>
7109 + </ul>
7110 +
7111 +
7112 +</div>
7113 +<a name="functionis_phone_number" id="functionis_phone_number"><!-- --></a>
7114 +<div class="evenrow">
7115 +
7116 + <div>
7117 + <span class="method-title">is_phone_number</span> (line <span class="line-number">628</span>)
7118 + </div>
7119 +
7120 + <!-- ========== Info from phpDoc block ========= -->
7121 +<p class="short-description">Validates phone number</p>
7122 +
7123 + <div class="method-signature">
7124 + <span class="method-result">bool</span>
7125 + <span class="method-name">
7126 + is_phone_number
7127 + </span>
7128 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$phone</span>)
7129 + </div>
7130 +
7131 + <ul class="parameters">
7132 + <li>
7133 + <span class="var-type">string</span>
7134 + <span class="var-name">$phone</span> </li>
7135 + </ul>
7136 +
7137 +
7138 +</div>
7139 +<a name="functionurl_out" id="functionurl_out"><!-- --></a>
7140 +<div class="oddrow">
7141 +
7142 + <div>
7143 + <span class="method-title">url_out</span> (line <span class="line-number">638</span>)
7144 + </div>
7145 +
7146 + <!-- ========== Info from phpDoc block ========= -->
7147 +<p class="short-description">Returns http:// and the string if the string does not begin with http://</p>
7148 +
7149 + <div class="method-signature">
7150 + <span class="method-result">string</span>
7151 + <span class="method-name">
7152 + url_out
7153 + </span>
7154 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$url</span>)
7155 + </div>
7156 +
7157 + <ul class="parameters">
7158 + <li>
7159 + <span class="var-type">string</span>
7160 + <span class="var-name">$url</span> </li>
7161 + </ul>
7162 +
7163 +
7164 +</div>
7165 + </div>
7166 + </div>
7167 +
7168 + <p class="notes" id="credit">
7169 + Documentation generated on Mon, 8 Nov 2004 13:43:04 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
7170 + </p>
7171 + </div></body>
7172 +</html>
7173 \ No newline at end of file
7174
7175 diff --git a/docs/mirror/lib/_php_lib_geo_php.html b/docs/mirror/lib/_php_lib_geo_php.html
7176 new file mode 100644
7177 index 0000000..a441634
7178 --- /dev/null
7179 +++ b/docs/mirror/lib/_php_lib_geo_php.html
7180 @@ -0,0 +1,204 @@
7181 +<?xml version="1.0" encoding="iso-8859-1"?>
7182 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
7183 + <html xmlns="http://www.w3.org/1999/xhtml">
7184 + <head>
7185 + <!-- template designed by Marco Von Ballmoos -->
7186 + <title>Docs for page geo.php</title>
7187 + <link rel="stylesheet" href="../../media/stylesheet.css" />
7188 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
7189 + </head>
7190 + <body>
7191 + <div class="page-body">
7192 +<h2 class="file-name">/php/lib/geo.php</h2>
7193 +
7194 +<a name="sec-description"></a>
7195 +<div class="info-box">
7196 + <div class="info-box-title">Description</div>
7197 + <div class="nav-bar">
7198 + <span class="disabled">Description</span> |
7199 + <a href="#sec-functions">Functions</a>
7200 + </div>
7201 + <div class="info-box-body">
7202 + <!-- ========== Info from phpDoc block ========= -->
7203 +<p class="short-description">Functions for netgeo lookups.</p>
7204 +
7205 + </div>
7206 +</div>
7207 +
7208 +
7209 +
7210 +
7211 +
7212 + <a name="sec-functions"></a>
7213 + <div class="info-box">
7214 + <div class="info-box-title">Functions</div>
7215 + <div class="nav-bar">
7216 + <a href="#sec-description">Description</a> |
7217 + <span class="disabled">Functions</span>
7218 + </div>
7219 + <div class="info-box-body">
7220 + <a name="functiongeo_get_coordinates" id="functiongeo_get_coordinates"><!-- --></a>
7221 +<div class="evenrow">
7222 +
7223 + <div>
7224 + <span class="method-title">geo_get_coordinates</span> (line <span class="line-number">45</span>)
7225 + </div>
7226 +
7227 + <!-- ========== Info from phpDoc block ========= -->
7228 +<p class="short-description">Get longitude and latitude of an IP.</p>
7229 + <ul class="tags">
7230 + <li><span class="field">return:</span> array containing results or false on failure</li>
7231 + </ul>
7232 +
7233 + <div class="method-signature">
7234 + <span class="method-result">array|false</span>
7235 + <span class="method-name">
7236 + geo_get_coordinates
7237 + </span>
7238 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$ip</span>)
7239 + </div>
7240 +
7241 + <ul class="parameters">
7242 + <li>
7243 + <span class="var-type">string</span>
7244 + <span class="var-name">$ip</span><span class="var-description">: an IP address</span> </li>
7245 + </ul>
7246 +
7247 +
7248 +</div>
7249 +<a name="functiongeo_get_country" id="functiongeo_get_country"><!-- --></a>
7250 +<div class="oddrow">
7251 +
7252 + <div>
7253 + <span class="method-title">geo_get_country</span> (line <span class="line-number">65</span>)
7254 + </div>
7255 +
7256 + <!-- ========== Info from phpDoc block ========= -->
7257 +<p class="short-description">Get country of an IP.</p>
7258 + <ul class="tags">
7259 + <li><span class="field">return:</span> array containing results or false on failure</li>
7260 + </ul>
7261 +
7262 + <div class="method-signature">
7263 + <span class="method-result">string|false</span>
7264 + <span class="method-name">
7265 + geo_get_country
7266 + </span>
7267 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$ip</span>)
7268 + </div>
7269 +
7270 + <ul class="parameters">
7271 + <li>
7272 + <span class="var-type">string</span>
7273 + <span class="var-name">$ip</span><span class="var-description">: an IP address</span> </li>
7274 + </ul>
7275 +
7276 +
7277 +</div>
7278 +<a name="functiongeo_get_distance" id="functiongeo_get_distance"><!-- --></a>
7279 +<div class="evenrow">
7280 +
7281 + <div>
7282 + <span class="method-title">geo_get_distance</span> (line <span class="line-number">16</span>)
7283 + </div>
7284 +
7285 + <!-- ========== Info from phpDoc block ========= -->
7286 +<p class="short-description">Calculate the distance between two geo points.</p>
7287 + <ul class="tags">
7288 + <li><span class="field">return:</span> rounded distance in _km_ between these points</li>
7289 + </ul>
7290 +
7291 + <div class="method-signature">
7292 + <span class="method-result">int</span>
7293 + <span class="method-name">
7294 + geo_get_distance
7295 + </span>
7296 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$lat1</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$lon1</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$lat2</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$lon2</span>)
7297 + </div>
7298 +
7299 + <ul class="parameters">
7300 + <li>
7301 + <span class="var-type">int</span>
7302 + <span class="var-name">$lat1</span><span class="var-description">: latitude of first point</span> </li>
7303 + <li>
7304 + <span class="var-type">int</span>
7305 + <span class="var-name">$lon1</span><span class="var-description">: longitude of first point</span> </li>
7306 + <li>
7307 + <span class="var-type">int</span>
7308 + <span class="var-name">$lat2</span><span class="var-description">: latitude of second point</span> </li>
7309 + <li>
7310 + <span class="var-type">int</span>
7311 + <span class="var-name">$lon2</span><span class="var-description">: longitude of second point</span> </li>
7312 + </ul>
7313 +
7314 +
7315 +</div>
7316 +<a name="functiongeo_get_record" id="functiongeo_get_record"><!-- --></a>
7317 +<div class="oddrow">
7318 +
7319 + <div>
7320 + <span class="method-title">geo_get_record</span> (line <span class="line-number">55</span>)
7321 + </div>
7322 +
7323 + <!-- ========== Info from phpDoc block ========= -->
7324 +<p class="short-description">Get complete record based on IP.</p>
7325 + <ul class="tags">
7326 + <li><span class="field">return:</span> array containing results or false on failure</li>
7327 + </ul>
7328 +
7329 + <div class="method-signature">
7330 + <span class="method-result">array|false</span>
7331 + <span class="method-name">
7332 + geo_get_record
7333 + </span>
7334 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$ip</span>)
7335 + </div>
7336 +
7337 + <ul class="parameters">
7338 + <li>
7339 + <span class="var-type">string</span>
7340 + <span class="var-name">$ip</span><span class="var-description">: an IP address</span> </li>
7341 + </ul>
7342 +
7343 +
7344 +</div>
7345 +<a name="functiongeo_query" id="functiongeo_query"><!-- --></a>
7346 +<div class="evenrow">
7347 +
7348 + <div>
7349 + <span class="method-title">geo_query</span> (line <span class="line-number">27</span>)
7350 + </div>
7351 +
7352 + <!-- ========== Info from phpDoc block ========= -->
7353 +<p class="short-description">Query NetGeo based on API and parse results.</p>
7354 + <ul class="tags">
7355 + <li><span class="field">return:</span> array containing results or false on failure</li>
7356 + </ul>
7357 +
7358 + <div class="method-signature">
7359 + <span class="method-result">array|false</span>
7360 + <span class="method-name">
7361 + geo_query
7362 + </span>
7363 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$ip</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$method</span> = <span class="var-default">'getRecord'</span>])
7364 + </div>
7365 +
7366 + <ul class="parameters">
7367 + <li>
7368 + <span class="var-type">string</span>
7369 + <span class="var-name">$ip</span><span class="var-description">: an IP address</span> </li>
7370 + <li>
7371 + <span class="var-type">string</span>
7372 + <span class="var-name">$method</span><span class="var-description">: lookup method, based on NetGeo API.</span> </li>
7373 + </ul>
7374 +
7375 +
7376 +</div>
7377 + </div>
7378 + </div>
7379 +
7380 + <p class="notes" id="credit">
7381 + Documentation generated on Mon, 8 Nov 2004 13:43:04 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
7382 + </p>
7383 + </div></body>
7384 +</html>
7385 \ No newline at end of file
7386
7387 diff --git a/docs/mirror/lib/_php_lib_list_php.html b/docs/mirror/lib/_php_lib_list_php.html
7388 new file mode 100644
7389 index 0000000..2e810d7
7390 --- /dev/null
7391 +++ b/docs/mirror/lib/_php_lib_list_php.html
7392 @@ -0,0 +1,362 @@
7393 +<?xml version="1.0" encoding="iso-8859-1"?>
7394 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
7395 + <html xmlns="http://www.w3.org/1999/xhtml">
7396 + <head>
7397 + <!-- template designed by Marco Von Ballmoos -->
7398 + <title>Docs for page list.php</title>
7399 + <link rel="stylesheet" href="../../media/stylesheet.css" />
7400 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
7401 + </head>
7402 + <body>
7403 + <div class="page-body">
7404 +<h2 class="file-name">/php/lib/list.php</h2>
7405 +
7406 +<a name="sec-description"></a>
7407 +<div class="info-box">
7408 + <div class="info-box-title">Description</div>
7409 + <div class="nav-bar">
7410 + <span class="disabled">Description</span> |
7411 + <a href="#sec-functions">Functions</a>
7412 + </div>
7413 + <div class="info-box-body">
7414 + <!-- ========== Info from phpDoc block ========= -->
7415 +<p class="short-description">List functions for lists of values.</p>
7416 + <ul class="tags">
7417 + <li><span class="field">author:</span> <p>Mike Morgan &lt;<a href="mailto:mike.morgan@×××××××××××.edu">mike.morgan@×××××××××××.edu</a>&gt;</p><p>Usage example: <pre><ol><code><pre><li> <span class="src-var">$orderby</span>=<a href="../../mirror/lib/_php_lib_list_php.html#functionget_order">get_order</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
7418 +<li> <span class="src-var">$query</span>=<span class="src-str">&quot;</span><span class="src-id">SELECT</span> * <span class="src-id">FROM fic_courses </span><span class="src-var">$orderby</span><span class="src-str">&quot;</span><span class="src-sym">;</span></li>
7419 +<li> <span class="src-var">$courses</span>=<a href="../../mirror/lib/_php_lib_db_php.html#functiondb_get">db_get</a><span class="src-sym">(</span><span class="src-var">$query</span><span class="src-sym">,</span><span class="src-id">MYSQL_ASSOC</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
7420 +<li> <span class="src-var">$headers</span>=<span class="src-key">array</span><span class="src-sym">(</span></li>
7421 +<li> <span class="src-str">'course_id'</span>=&gt;<span class="src-str">''</span><span class="src-sym">,</span></li>
7422 +<li> <span class="src-str">'title'</span>=&gt;<span class="src-str">'Course Title'</span><span class="src-sym">,</span></li>
7423 +<li> <span class="src-str">'date_start_course'</span>=&gt;<span class="src-str">'Start'</span><span class="src-sym">,</span></li>
7424 +<li> <span class="src-str">'date_end_course'</span>=&gt;<span class="src-str">'End'</span><span class="src-sym">,</span></li>
7425 +<li> <span class="src-str">'date_start_reg'</span>=&gt;<span class="src-str">'Reg Starts'</span><span class="src-sym">,</span></li>
7426 +<li> <span class="src-str">'date_end_reg'</span>=&gt;<span class="src-str">'Reg Ends'</span><span class="src-sym">,</span></li>
7427 +<li> <span class="src-str">'active'</span>=&gt;<span class="src-str">'Active?'</span><span class="src-sym">,</span></li>
7428 +<li> <span class="src-str">'entry_date'</span>=&gt;<span class="src-str">'Created'</span></li>
7429 +<li> <span class="src-sym">)</span><span class="src-sym">;</span></li>
7430 +<li> <a href="../../mirror/lib/_php_lib_list_php.html#functionshow_list">show_list</a><span class="src-sym">(</span><span class="src-var">$courses</span><span class="src-sym">,</span><span class="src-var">$headers</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
7431 +</pre></code></ol></pre></p><p>Accompanying CSS for table output: <pre><ol><code><pre><li> .list</li>
7432 +<li> <span class="src-sym">{</span></li>
7433 +<li> <span class="src-id">border</span>:<span class="src-num">1</span><span class="src-id">px solid </span><span class="src-comm">#999;</span></li>
7434 +<li> <span class="src-sym">}</span></li>
7435 +<li> .list <span class="src-id">th</span></li>
7436 +<li> <span class="src-sym">{</span></li>
7437 +<li> <span class="src-id">background</span>:<span class="src-comm">#eee;</span></li>
7438 +<li> <span class="src-id">border</span>:<span class="src-num">1</span><span class="src-id">px solid </span><span class="src-comm">#000;</span></li>
7439 +<li> <span class="src-id">font</span>-<span class="src-id">weight</span>:<span class="src-id">bold</span><span class="src-sym">;</span></li>
7440 +<li> <span class="src-sym">}</span></li>
7441 +<li> .list <span class="src-id">th a</span></li>
7442 +<li> <span class="src-sym">{</span></li>
7443 +<li> <span class="src-id">display</span>:<span class="src-id">block</span><span class="src-sym">;</span></li>
7444 +<li> <span class="src-id">padding</span>:<span class="src-num">0 14</span><span class="src-id">px</span><span class="src-sym">;</span></li>
7445 +<li> <span class="src-sym">}</span></li>
7446 +<li> .list <span class="src-id">th a</span>:<span class="src-id">hover</span></li>
7447 +<li> <span class="src-sym">{</span></li>
7448 +<li> <span class="src-id">background</span>-<span class="src-id">color</span>:<span class="src-comm">#fff;</span></li>
7449 +<li> <span class="src-sym">}</span></li>
7450 +<li> .<span class="src-id">row1</span></li>
7451 +<li> <span class="src-sym">{</span></li>
7452 +<li> <span class="src-id">background</span>:<span class="src-comm">#ddd;</span></li>
7453 +<li> <span class="src-sym">}</span></li>
7454 +<li> .<span class="src-id">row2</span></li>
7455 +<li> <span class="src-sym">{</span></li>
7456 +<li> <span class="src-id">background</span>:<span class="src-comm">#ccc;</span></li>
7457 +<li> <span class="src-sym">}</span></li>
7458 +<li> .<span class="src-id">row1</span>:<span class="src-id">hover</span><span class="src-sym">, </span>.<span class="src-id">row2</span>:<span class="src-id">hover</span></li>
7459 +<li> <span class="src-sym">{</span></li>
7460 +<li> <span class="src-id">background</span>-<span class="src-id">color</span>:<span class="src-comm">#fec;</span></li>
7461 +<li> <span class="src-sym">}</span></li>
7462 +<li> .<a href="http://www.php.net/current">current</a>-<a href="http://www.php.net/sort">sort</a></li>
7463 +<li> <span class="src-sym">{</span></li>
7464 +<li> <span class="src-id">background</span>:<span class="src-comm">#fda;</span></li>
7465 +<li> <span class="src-sym">}</span></li>
7466 +<li> .<a href="http://www.php.net/sort">sort</a>-<span class="src-id">desc</span></li>
7467 +<li> <span class="src-sym">{</span></li>
7468 +<li> <span class="src-id">background</span>:<span class="src-comm">#fec url(../img/up.gif) no-repeat right;</span></li>
7469 +<li> <span class="src-sym">}</span></li>
7470 +<li> .<a href="http://www.php.net/sort">sort</a>-<span class="src-id">asc</span></li>
7471 +<li> <span class="src-sym">{</span></li>
7472 +<li> <span class="src-id">background</span>:<span class="src-comm">#fec url(../img/down.gif) no-repeat right;</span></li>
7473 +<li> <span class="src-sym">}</span></li>
7474 +</pre></code></ol></pre> Accompanying JavaScript for select all / inverse: <pre><ol><code><pre><li> &lt;<span class="src-id">script type</span>=<span class="src-str">&quot;text/javascript&quot;</span>&gt;</li>
7475 +<li> <span class="src-comm">//&lt;!--</span></li>
7476 +<li> <span class="src-key">function </span><span class="src-id">selectAll</span><span class="src-sym">(</span><span class="src-id">formObj</span><span class="src-sym">,</span><span class="src-id">invert</span><span class="src-sym">)</span></li>
7477 +<li> <span class="src-sym">{</span></li>
7478 +<li> <span class="src-key">for </span><span class="src-sym">(</span><span class="src-key">var </span><span class="src-id">i</span>=<span class="src-num">0</span><span class="src-sym">;</span><span class="src-id">i </span>&lt; <span class="src-id">formObj</span>.<span class="src-id">elements</span>.<span class="src-id">length</span><span class="src-sym">;</span><span class="src-id">i</span>++<span class="src-sym">)</span></li>
7479 +<li> <span class="src-sym">{</span></li>
7480 +<li> <span class="src-id">fldObj </span>= <span class="src-id">formObj</span>.<span class="src-id">elements</span><span class="src-sym">[</span><span class="src-id">i</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
7481 +<li> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-id">fldObj</span>.<span class="src-id">type </span>== <span class="src-str">'checkbox'</span><span class="src-sym">)</span></li>
7482 +<li> <span class="src-sym">{</span></li>
7483 +<li> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-id">invert</span>==<span class="src-num">1</span><span class="src-sym">)</span></li>
7484 +<li> <span class="src-sym">{</span></li>
7485 +<li> <span class="src-id">fldObj</span>.<span class="src-id">checked </span>= <span class="src-sym">(</span><span class="src-id">fldObj</span>.<span class="src-id">checked</span><span class="src-sym">) </span>? <span class="src-id">false </span>: <span class="src-id">true</span><span class="src-sym">;</span></li>
7486 +<li> <span class="src-sym">}</span></li>
7487 +<li> <span class="src-key">else</span></li>
7488 +<li> <span class="src-sym">{</span></li>
7489 +<li> <span class="src-id">fldObj</span>.<span class="src-id">checked </span>= <span class="src-id">true</span><span class="src-sym">;</span></li>
7490 +<li> <span class="src-sym">}</span></li>
7491 +<li> <span class="src-sym">}</span></li>
7492 +<li> <span class="src-sym">}</span></li>
7493 +<li> <span class="src-sym">}</span></li>
7494 +<li> <span class="src-comm">//--&gt;</span></li>
7495 +<li> <span class="src-php">&lt;/script&gt;</span></li>
7496 +</pre></code></ol></pre></p></li>
7497 + </ul>
7498 +
7499 + </div>
7500 +</div>
7501 +
7502 +
7503 +
7504 +
7505 +
7506 + <a name="sec-functions"></a>
7507 + <div class="info-box">
7508 + <div class="info-box-title">Functions</div>
7509 + <div class="nav-bar">
7510 + <a href="#sec-description">Description</a> |
7511 + <span class="disabled">Functions</span>
7512 + </div>
7513 + <div class="info-box-body">
7514 + <a name="functionget_order" id="functionget_order"><!-- --></a>
7515 +<div class="evenrow">
7516 +
7517 + <div>
7518 + <span class="method-title">get_order</span> (line <span class="line-number">283</span>)
7519 + </div>
7520 +
7521 + <!-- ========== Info from phpDoc block ========= -->
7522 +<p class="short-description">Determine current sort order.</p>
7523 +
7524 + <div class="method-signature">
7525 + <span class="method-result">void</span>
7526 + <span class="method-name">
7527 + get_order
7528 + </span>
7529 + ()
7530 + </div>
7531 +
7532 +
7533 +
7534 +</div>
7535 +<a name="functionget_orderby" id="functionget_orderby"><!-- --></a>
7536 +<div class="oddrow">
7537 +
7538 + <div>
7539 + <span class="method-title">get_orderby</span> (line <span class="line-number">293</span>)
7540 + </div>
7541 +
7542 + <!-- ========== Info from phpDoc block ========= -->
7543 +<p class="short-description">Determine whether or not list is currently sorted.</p>
7544 + <ul class="tags">
7545 + <li><span class="field">return:</span> cleaned orderby clause based on saved sort information or null if no orderby is set in the defined method</li>
7546 + </ul>
7547 +
7548 + <div class="method-signature">
7549 + <span class="method-result">mixed</span>
7550 + <span class="method-name">
7551 + get_orderby
7552 + </span>
7553 + ([<span class="var-type">string</span>&nbsp;<span class="var-name">$method</span> = <span class="var-default">'get'</span>])
7554 + </div>
7555 +
7556 + <ul class="parameters">
7557 + <li>
7558 + <span class="var-type">string</span>
7559 + <span class="var-name">$method</span><span class="var-description">: which http method to check for sort information</span> </li>
7560 + </ul>
7561 +
7562 +
7563 +</div>
7564 +<a name="functionlist_edit_ids" id="functionlist_edit_ids"><!-- --></a>
7565 +<div class="evenrow">
7566 +
7567 + <div>
7568 + <span class="method-title">list_edit_ids</span> (line <span class="line-number">334</span>)
7569 + </div>
7570 +
7571 + <!-- ========== Info from phpDoc block ========= -->
7572 +<p class="short-description">Parses $_POST for ids, shows edit forms for each id with populated data.</p>
7573 +<p class="description"><p><ul><li>name will be used to retrieve an _array_ from $_POST of the same name</li><li>the form will be an include, with $posts[col_name] as the default for all values</li><li>try to keep your query simple (no crazy sorting, etc.) -- we're talking one record at a time here anyway</li></ul> Example: <pre><ol><code><pre><li> <a href="../../mirror/lib/_php_lib_list_php.html#functionlist_edit_ids">list_edit_ids</a><span class="src-sym">(</span><span class="src-str">'course_id'</span><span class="src-sym">,</span><span class="src-str">'../forms/course.php'</span><span class="src-sym">,</span><span class="src-str">'SELECT * FROM fic_courses'</span><span class="src-sym">,</span><span class="src-str">'1'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
7574 +</pre></code></ol></pre></p></p>
7575 +
7576 + <div class="method-signature">
7577 + <span class="method-result">void</span>
7578 + <span class="method-name">
7579 + list_edit_ids
7580 + </span>
7581 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$form</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$q_front</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$q_where</span> = <span class="var-default">'1'</span>], [<span class="var-type">array</span>&nbsp;<span class="var-name">$dates</span> = <span class="var-default">null</span>], [<span class="var-type">array</span>&nbsp;<span class="var-name">$datetimes</span> = <span class="var-default">null</span>])
7582 + </div>
7583 +
7584 + <ul class="parameters">
7585 + <li>
7586 + <span class="var-type">string</span>
7587 + <span class="var-name">$name</span><span class="var-description">: name of id field</span> </li>
7588 + <li>
7589 + <span class="var-type">string</span>
7590 + <span class="var-name">$form</span><span class="var-description">: path to form to be used to items</span> </li>
7591 + <li>
7592 + <span class="var-type">string</span>
7593 + <span class="var-name">$q_front</span><span class="var-description">: front half of query</span> </li>
7594 + <li>
7595 + <span class="var-type">string</span>
7596 + <span class="var-name">$q_where</span><span class="var-description">: where statement</span> </li>
7597 + <li>
7598 + <span class="var-type">array</span>
7599 + <span class="var-name">$dates</span><span class="var-description">: array of date field names, so they can be fixed for forms</span> </li>
7600 + <li>
7601 + <span class="var-type">array</span>
7602 + <span class="var-name">$datetimes</span><span class="var-description">: array of datetime field names, so they can be fixed for forms</span> </li>
7603 + </ul>
7604 +
7605 +
7606 +</div>
7607 +<a name="functionlist_update_ids" id="functionlist_update_ids"><!-- --></a>
7608 +<div class="oddrow">
7609 +
7610 + <div>
7611 + <span class="method-title">list_update_ids</span> (line <span class="line-number">370</span>)
7612 + </div>
7613 +
7614 + <!-- ========== Info from phpDoc block ========= -->
7615 +<p class="short-description">Process a submitted list_edit_ids form.</p>
7616 +
7617 + <div class="method-signature">
7618 + <span class="method-result">void</span>
7619 + <span class="method-name">
7620 + list_update_ids
7621 + </span>
7622 + (<span class="var-type">array</span>&nbsp;<span class="var-name">$name</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$table</span>)
7623 + </div>
7624 +
7625 + <ul class="parameters">
7626 + <li>
7627 + <span class="var-type">array</span>
7628 + <span class="var-name">$name</span><span class="var-description">: array of primary ids posted from the form, these are vital to the WHERE clause of the UPDATE statements.</span> </li>
7629 + <li>
7630 + <span class="var-type">string</span>
7631 + <span class="var-name">$table</span><span class="var-description">: name of table being affected</span> </li>
7632 + </ul>
7633 +
7634 +
7635 +</div>
7636 +<a name="functionshow_headers" id="functionshow_headers"><!-- --></a>
7637 +<div class="evenrow">
7638 +
7639 + <div>
7640 + <span class="method-title">show_headers</span> (line <span class="line-number">190</span>)
7641 + </div>
7642 +
7643 + <!-- ========== Info from phpDoc block ========= -->
7644 +<p class="short-description">Show table headers.</p>
7645 +
7646 + <div class="method-signature">
7647 + <span class="method-result">void</span>
7648 + <span class="method-name">
7649 + show_headers
7650 + </span>
7651 + (<span class="var-type">array</span>&nbsp;<span class="var-name">$headers</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$type</span>, [<span class="var-type">bool</span>&nbsp;<span class="var-name">$sortable</span> = <span class="var-default">true</span>])
7652 + </div>
7653 +
7654 + <ul class="parameters">
7655 + <li>
7656 + <span class="var-type">array</span>
7657 + <span class="var-name">$headers</span><span class="var-description">: column name =&gt; column title (for table heads)</span> </li>
7658 + <li>
7659 + <span class="var-type">string</span>
7660 + <span class="var-name">$type</span><span class="var-description">: type of list that is being shown</span> </li>
7661 + <li>
7662 + <span class="var-type">bool</span>
7663 + <span class="var-name">$sortable</span><span class="var-description">: whether or not to show sortable column headers (links in th's)</span> </li>
7664 + </ul>
7665 +
7666 +
7667 +</div>
7668 +<a name="functionshow_list" id="functionshow_list"><!-- --></a>
7669 +<div class="oddrow">
7670 +
7671 + <div>
7672 + <span class="method-title">show_list</span> (line <span class="line-number">110</span>)
7673 + </div>
7674 +
7675 + <!-- ========== Info from phpDoc block ========= -->
7676 +<p class="short-description">Show a list of values, for forms.</p>
7677 +
7678 + <div class="method-signature">
7679 + <span class="method-result">void</span>
7680 + <span class="method-name">
7681 + show_list
7682 + </span>
7683 + (<span class="var-type">array</span>&nbsp;<span class="var-name">$list</span>, <span class="var-type">array</span>&nbsp;<span class="var-name">$headers</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$type</span> = <span class="var-default">'checkbox'</span>], [<span class="var-type">mixed</span>&nbsp;<span class="var-name">$actions</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$form_id</span> = <span class="var-default">null</span>], [<span class="var-type">bool</span>&nbsp;<span class="var-name">$sortable</span> = <span class="var-default">true</span>], [<span class="var-type">array|string</span>&nbsp;<span class="var-name">$selected</span> = <span class="var-default">null</span>], <span class="var-type">array</span>&nbsp;<span class="var-name">$array</span>)
7684 + </div>
7685 +
7686 + <ul class="parameters">
7687 + <li>
7688 + <span class="var-type">array</span>
7689 + <span class="var-name">$list</span><span class="var-description">: associative array</span> </li>
7690 + <li>
7691 + <span class="var-type">array</span>
7692 + <span class="var-name">$headers</span><span class="var-description">: column name =&gt; column title (for table heads)</span> </li>
7693 + <li>
7694 + <span class="var-type">string</span>
7695 + <span class="var-name">$type</span><span class="var-description">: checkbox, radio, simple</span> </li>
7696 + <li>
7697 + <span class="var-type">array</span>
7698 + <span class="var-name">$array</span><span class="var-description">: actions to display in actions select list</span> </li>
7699 + <li>
7700 + <span class="var-type">string</span>
7701 + <span class="var-name">$form_id</span><span class="var-description">: id of form holding list</span> </li>
7702 + <li>
7703 + <span class="var-type">bool</span>
7704 + <span class="var-name">$sortable</span><span class="var-description">: whether or not to show sortable column headers (links in th's)</span> </li>
7705 + <li>
7706 + <span class="var-type">array|string</span>
7707 + <span class="var-name">$selected</span><span class="var-description">: if type is checkbox, array otherwise string with one val</span> </li>
7708 + </ul>
7709 +
7710 +
7711 +</div>
7712 +<a name="functionshow_row" id="functionshow_row"><!-- --></a>
7713 +<div class="evenrow">
7714 +
7715 + <div>
7716 + <span class="method-title">show_row</span> (line <span class="line-number">245</span>)
7717 + </div>
7718 +
7719 + <!-- ========== Info from phpDoc block ========= -->
7720 +<p class="short-description">Show table data.</p>
7721 +
7722 + <div class="method-signature">
7723 + <span class="method-result">void</span>
7724 + <span class="method-name">
7725 + show_row
7726 + </span>
7727 + (<span class="var-type">array</span>&nbsp;<span class="var-name">$headers</span>, <span class="var-type">array</span>&nbsp;<span class="var-name">$row</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$type</span>, [<span class="var-type">mixed</span>&nbsp;<span class="var-name">$num</span> = <span class="var-default">null</span>], [<span class="var-type">array|string</span>&nbsp;<span class="var-name">$selected</span> = <span class="var-default">null</span>])
7728 + </div>
7729 +
7730 + <ul class="parameters">
7731 + <li>
7732 + <span class="var-type">array</span>
7733 + <span class="var-name">$headers</span><span class="var-description">: column name =&gt; column title (for knowing which ones to display)</span> </li>
7734 + <li>
7735 + <span class="var-type">array</span>
7736 + <span class="var-name">$row</span><span class="var-description">: table row, assoc</span> </li>
7737 + <li>
7738 + <span class="var-type">string</span>
7739 + <span class="var-name">$type</span><span class="var-description">: type of table, determines first column, which could be an input</span> </li>
7740 + <li>
7741 + <span class="var-type">array|string</span>
7742 + <span class="var-name">$selected</span><span class="var-description">: selected items; if type is checkbox, array otherwise string with one val</span> </li>
7743 + </ul>
7744 +
7745 +
7746 +</div>
7747 + </div>
7748 + </div>
7749 +
7750 + <p class="notes" id="credit">
7751 + Documentation generated on Mon, 8 Nov 2004 13:43:04 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
7752 + </p>
7753 + </div></body>
7754 +</html>
7755 \ No newline at end of file
7756
7757 diff --git a/docs/mirror/lib/_php_lib_mirror_php.html b/docs/mirror/lib/_php_lib_mirror_php.html
7758 new file mode 100644
7759 index 0000000..1f6b576
7760 --- /dev/null
7761 +++ b/docs/mirror/lib/_php_lib_mirror_php.html
7762 @@ -0,0 +1,1112 @@
7763 +<?xml version="1.0" encoding="iso-8859-1"?>
7764 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
7765 + <html xmlns="http://www.w3.org/1999/xhtml">
7766 + <head>
7767 + <!-- template designed by Marco Von Ballmoos -->
7768 + <title>Docs for page mirror.php</title>
7769 + <link rel="stylesheet" href="../../media/stylesheet.css" />
7770 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
7771 + </head>
7772 + <body>
7773 + <div class="page-body">
7774 +<h2 class="file-name">/php/lib/mirror.php</h2>
7775 +
7776 +<a name="sec-description"></a>
7777 +<div class="info-box">
7778 + <div class="info-box-title">Description</div>
7779 + <div class="nav-bar">
7780 + <span class="disabled">Description</span> |
7781 + <a href="#sec-functions">Functions</a>
7782 + </div>
7783 + <div class="info-box-body">
7784 + <!-- ========== Info from phpDoc block ========= -->
7785 +<p class="short-description">Application functions. Dependent on lib/db.php!</p>
7786 + <ul class="tags">
7787 + <li><span class="field">todo:</span> add transactions once innodb table types are in place</li>
7788 + </ul>
7789 +
7790 + </div>
7791 +</div>
7792 +
7793 +
7794 +
7795 +
7796 +
7797 + <a name="sec-functions"></a>
7798 + <div class="info-box">
7799 + <div class="info-box-title">Functions</div>
7800 + <div class="nav-bar">
7801 + <a href="#sec-description">Description</a> |
7802 + <span class="disabled">Functions</span>
7803 + </div>
7804 + <div class="info-box-body">
7805 + <a name="functionmirror_delete_location" id="functionmirror_delete_location"><!-- --></a>
7806 +<div class="evenrow">
7807 +
7808 + <div>
7809 + <span class="method-title">mirror_delete_location</span> (line <span class="line-number">340</span>)
7810 + </div>
7811 +
7812 + <!-- ========== Info from phpDoc block ========= -->
7813 +<p class="short-description">Delete a location.</p>
7814 +
7815 + <div class="method-signature">
7816 + <span class="method-result">bool</span>
7817 + <span class="method-name">
7818 + mirror_delete_location
7819 + </span>
7820 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>)
7821 + </div>
7822 +
7823 + <ul class="parameters">
7824 + <li>
7825 + <span class="var-type">int</span>
7826 + <span class="var-name">$id</span> </li>
7827 + </ul>
7828 +
7829 +
7830 +</div>
7831 +<a name="functionmirror_delete_mirror" id="functionmirror_delete_mirror"><!-- --></a>
7832 +<div class="oddrow">
7833 +
7834 + <div>
7835 + <span class="method-title">mirror_delete_mirror</span> (line <span class="line-number">130</span>)
7836 + </div>
7837 +
7838 + <!-- ========== Info from phpDoc block ========= -->
7839 +<p class="short-description">Delete mirror.</p>
7840 +
7841 + <div class="method-signature">
7842 + <span class="method-result">bool</span>
7843 + <span class="method-name">
7844 + mirror_delete_mirror
7845 + </span>
7846 + (<span class="var-type">mixed</span>&nbsp;<span class="var-name">$mirror_id</span>)
7847 + </div>
7848 +
7849 +
7850 +
7851 +</div>
7852 +<a name="functionmirror_delete_os" id="functionmirror_delete_os"><!-- --></a>
7853 +<div class="evenrow">
7854 +
7855 + <div>
7856 + <span class="method-title">mirror_delete_os</span> (line <span class="line-number">244</span>)
7857 + </div>
7858 +
7859 + <!-- ========== Info from phpDoc block ========= -->
7860 +<p class="short-description">Delete a os.</p>
7861 +
7862 + <div class="method-signature">
7863 + <span class="method-result">bool</span>
7864 + <span class="method-name">
7865 + mirror_delete_os
7866 + </span>
7867 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>)
7868 + </div>
7869 +
7870 + <ul class="parameters">
7871 + <li>
7872 + <span class="var-type">int</span>
7873 + <span class="var-name">$id</span> </li>
7874 + </ul>
7875 +
7876 +
7877 +</div>
7878 +<a name="functionmirror_delete_product" id="functionmirror_delete_product"><!-- --></a>
7879 +<div class="oddrow">
7880 +
7881 + <div>
7882 + <span class="method-title">mirror_delete_product</span> (line <span class="line-number">192</span>)
7883 + </div>
7884 +
7885 + <!-- ========== Info from phpDoc block ========= -->
7886 +<p class="short-description">Delete a product.</p>
7887 +
7888 + <div class="method-signature">
7889 + <span class="method-result">bool</span>
7890 + <span class="method-name">
7891 + mirror_delete_product
7892 + </span>
7893 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>)
7894 + </div>
7895 +
7896 + <ul class="parameters">
7897 + <li>
7898 + <span class="var-type">int</span>
7899 + <span class="var-name">$id</span> </li>
7900 + </ul>
7901 +
7902 +
7903 +</div>
7904 +<a name="functionmirror_delete_region" id="functionmirror_delete_region"><!-- --></a>
7905 +<div class="evenrow">
7906 +
7907 + <div>
7908 + <span class="method-title">mirror_delete_region</span> (line <span class="line-number">73</span>)
7909 + </div>
7910 +
7911 + <!-- ========== Info from phpDoc block ========= -->
7912 +<p class="short-description">Delete a region.</p>
7913 +
7914 + <div class="method-signature">
7915 + <span class="method-result">bool</span>
7916 + <span class="method-name">
7917 + mirror_delete_region
7918 + </span>
7919 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>)
7920 + </div>
7921 +
7922 + <ul class="parameters">
7923 + <li>
7924 + <span class="var-type">int</span>
7925 + <span class="var-name">$id</span> </li>
7926 + </ul>
7927 +
7928 +
7929 +</div>
7930 +<a name="functionmirror_delete_user" id="functionmirror_delete_user"><!-- --></a>
7931 +<div class="oddrow">
7932 +
7933 + <div>
7934 + <span class="method-title">mirror_delete_user</span> (line <span class="line-number">405</span>)
7935 + </div>
7936 +
7937 + <!-- ========== Info from phpDoc block ========= -->
7938 +<p class="short-description">Delete a user.</p>
7939 +
7940 + <div class="method-signature">
7941 + <span class="method-result">bool</span>
7942 + <span class="method-name">
7943 + mirror_delete_user
7944 + </span>
7945 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>)
7946 + </div>
7947 +
7948 + <ul class="parameters">
7949 + <li>
7950 + <span class="var-type">int</span>
7951 + <span class="var-name">$id</span> </li>
7952 + </ul>
7953 +
7954 +
7955 +</div>
7956 +<a name="functionmirror_get_locations" id="functionmirror_get_locations"><!-- --></a>
7957 +<div class="evenrow">
7958 +
7959 + <div>
7960 + <span class="method-title">mirror_get_locations</span> (line <span class="line-number">349</span>)
7961 + </div>
7962 +
7963 + <!-- ========== Info from phpDoc block ========= -->
7964 +<p class="short-description">Get locations.</p>
7965 + <ul class="tags">
7966 + <li><span class="field">return:</span> array containing all location information.</li>
7967 + </ul>
7968 +
7969 + <div class="method-signature">
7970 + <span class="method-result">array</span>
7971 + <span class="method-name">
7972 + mirror_get_locations
7973 + </span>
7974 + ()
7975 + </div>
7976 +
7977 +
7978 +
7979 +</div>
7980 +<a name="functionmirror_get_mirrors" id="functionmirror_get_mirrors"><!-- --></a>
7981 +<div class="oddrow">
7982 +
7983 + <div>
7984 + <span class="method-title">mirror_get_mirrors</span> (line <span class="line-number">149</span>)
7985 + </div>
7986 +
7987 + <!-- ========== Info from phpDoc block ========= -->
7988 +<p class="short-description">Get list of mirrors.</p>
7989 +
7990 + <div class="method-signature">
7991 + <span class="method-result">array</span>
7992 + <span class="method-name">
7993 + mirror_get_mirrors
7994 + </span>
7995 + ()
7996 + </div>
7997 +
7998 +
7999 +
8000 +</div>
8001 +<a name="functionmirror_get_mirrors_select" id="functionmirror_get_mirrors_select"><!-- --></a>
8002 +<div class="evenrow">
8003 +
8004 + <div>
8005 + <span class="method-title">mirror_get_mirrors_select</span> (line <span class="line-number">82</span>)
8006 + </div>
8007 +
8008 + <!-- ========== Info from phpDoc block ========= -->
8009 +<p class="short-description">Get an alpha-list of mirrors for select list.</p>
8010 +
8011 + <div class="method-signature">
8012 + <span class="method-result">array</span>
8013 + <span class="method-name">
8014 + mirror_get_mirrors_select
8015 + </span>
8016 + ()
8017 + </div>
8018 +
8019 +
8020 +
8021 +</div>
8022 +<a name="functionmirror_get_mirror_stats" id="functionmirror_get_mirror_stats"><!-- --></a>
8023 +<div class="oddrow">
8024 +
8025 + <div>
8026 + <span class="method-title">mirror_get_mirror_stats</span> (line <span class="line-number">443</span>)
8027 + </div>
8028 +
8029 + <!-- ========== Info from phpDoc block ========= -->
8030 +<p class="short-description">Get mirror statistics.</p>
8031 +
8032 + <div class="method-signature">
8033 + <span class="method-result">array</span>
8034 + <span class="method-name">
8035 + mirror_get_mirror_stats
8036 + </span>
8037 + ()
8038 + </div>
8039 +
8040 +
8041 +
8042 +</div>
8043 +<a name="functionmirror_get_one_location" id="functionmirror_get_one_location"><!-- --></a>
8044 +<div class="evenrow">
8045 +
8046 + <div>
8047 + <span class="method-title">mirror_get_one_location</span> (line <span class="line-number">359</span>)
8048 + </div>
8049 +
8050 + <!-- ========== Info from phpDoc block ========= -->
8051 +<p class="short-description">Get one location.</p>
8052 +
8053 + <div class="method-signature">
8054 + <span class="method-result">array</span>
8055 + <span class="method-name">
8056 + mirror_get_one_location
8057 + </span>
8058 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>)
8059 + </div>
8060 +
8061 + <ul class="parameters">
8062 + <li>
8063 + <span class="var-type">int</span>
8064 + <span class="var-name">$id</span> </li>
8065 + </ul>
8066 +
8067 +
8068 +</div>
8069 +<a name="functionmirror_get_one_mirror" id="functionmirror_get_one_mirror"><!-- --></a>
8070 +<div class="oddrow">
8071 +
8072 + <div>
8073 + <span class="method-title">mirror_get_one_mirror</span> (line <span class="line-number">140</span>)
8074 + </div>
8075 +
8076 + <!-- ========== Info from phpDoc block ========= -->
8077 +<p class="short-description">Get one mirror record.</p>
8078 + <ul class="tags">
8079 + <li><span class="field">return:</span> mirror information</li>
8080 + </ul>
8081 +
8082 + <div class="method-signature">
8083 + <span class="method-result">array</span>
8084 + <span class="method-name">
8085 + mirror_get_one_mirror
8086 + </span>
8087 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$mirror_id</span>)
8088 + </div>
8089 +
8090 + <ul class="parameters">
8091 + <li>
8092 + <span class="var-type">int</span>
8093 + <span class="var-name">$mirror_id</span> </li>
8094 + </ul>
8095 +
8096 +
8097 +</div>
8098 +<a name="functionmirror_get_one_os" id="functionmirror_get_one_os"><!-- --></a>
8099 +<div class="evenrow">
8100 +
8101 + <div>
8102 + <span class="method-title">mirror_get_one_os</span> (line <span class="line-number">234</span>)
8103 + </div>
8104 +
8105 + <!-- ========== Info from phpDoc block ========= -->
8106 +<p class="short-description">Get one os.</p>
8107 +
8108 + <div class="method-signature">
8109 + <span class="method-result">array</span>
8110 + <span class="method-name">
8111 + mirror_get_one_os
8112 + </span>
8113 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>)
8114 + </div>
8115 +
8116 + <ul class="parameters">
8117 + <li>
8118 + <span class="var-type">int</span>
8119 + <span class="var-name">$id</span> </li>
8120 + </ul>
8121 +
8122 +
8123 +</div>
8124 +<a name="functionmirror_get_one_product" id="functionmirror_get_one_product"><!-- --></a>
8125 +<div class="oddrow">
8126 +
8127 + <div>
8128 + <span class="method-title">mirror_get_one_product</span> (line <span class="line-number">182</span>)
8129 + </div>
8130 +
8131 + <!-- ========== Info from phpDoc block ========= -->
8132 +<p class="short-description">Get one product.</p>
8133 +
8134 + <div class="method-signature">
8135 + <span class="method-result">array</span>
8136 + <span class="method-name">
8137 + mirror_get_one_product
8138 + </span>
8139 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>)
8140 + </div>
8141 +
8142 + <ul class="parameters">
8143 + <li>
8144 + <span class="var-type">int</span>
8145 + <span class="var-name">$id</span> </li>
8146 + </ul>
8147 +
8148 +
8149 +</div>
8150 +<a name="functionmirror_get_one_region" id="functionmirror_get_one_region"><!-- --></a>
8151 +<div class="evenrow">
8152 +
8153 + <div>
8154 + <span class="method-title">mirror_get_one_region</span> (line <span class="line-number">63</span>)
8155 + </div>
8156 +
8157 + <!-- ========== Info from phpDoc block ========= -->
8158 +<p class="short-description">Get one region.</p>
8159 +
8160 + <div class="method-signature">
8161 + <span class="method-result">array</span>
8162 + <span class="method-name">
8163 + mirror_get_one_region
8164 + </span>
8165 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>)
8166 + </div>
8167 +
8168 + <ul class="parameters">
8169 + <li>
8170 + <span class="var-type">int</span>
8171 + <span class="var-name">$id</span> </li>
8172 + </ul>
8173 +
8174 +
8175 +</div>
8176 +<a name="functionmirror_get_one_user" id="functionmirror_get_one_user"><!-- --></a>
8177 +<div class="oddrow">
8178 +
8179 + <div>
8180 + <span class="method-title">mirror_get_one_user</span> (line <span class="line-number">424</span>)
8181 + </div>
8182 +
8183 + <!-- ========== Info from phpDoc block ========= -->
8184 +<p class="short-description">Get one user.</p>
8185 +
8186 + <div class="method-signature">
8187 + <span class="method-result">array</span>
8188 + <span class="method-name">
8189 + mirror_get_one_user
8190 + </span>
8191 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>)
8192 + </div>
8193 +
8194 + <ul class="parameters">
8195 + <li>
8196 + <span class="var-type">int</span>
8197 + <span class="var-name">$id</span> </li>
8198 + </ul>
8199 +
8200 +
8201 +</div>
8202 +<a name="functionmirror_get_oss" id="functionmirror_get_oss"><!-- --></a>
8203 +<div class="evenrow">
8204 +
8205 + <div>
8206 + <span class="method-title">mirror_get_oss</span> (line <span class="line-number">253</span>)
8207 + </div>
8208 +
8209 + <!-- ========== Info from phpDoc block ========= -->
8210 +<p class="short-description">Get operating systems.</p>
8211 +
8212 + <div class="method-signature">
8213 + <span class="method-result">array</span>
8214 + <span class="method-name">
8215 + mirror_get_oss
8216 + </span>
8217 + ()
8218 + </div>
8219 +
8220 +
8221 +
8222 +</div>
8223 +<a name="functionmirror_get_oss_select" id="functionmirror_get_oss_select"><!-- --></a>
8224 +<div class="oddrow">
8225 +
8226 + <div>
8227 + <span class="method-title">mirror_get_oss_select</span> (line <span class="line-number">262</span>)
8228 + </div>
8229 +
8230 + <!-- ========== Info from phpDoc block ========= -->
8231 +<p class="short-description">Get an alpha-list of operating systems for select list.</p>
8232 +
8233 + <div class="method-signature">
8234 + <span class="method-result">array</span>
8235 + <span class="method-name">
8236 + mirror_get_oss_select
8237 + </span>
8238 + ()
8239 + </div>
8240 +
8241 +
8242 +
8243 +</div>
8244 +<a name="functionmirror_get_oss_select_priority" id="functionmirror_get_oss_select_priority"><!-- --></a>
8245 +<div class="evenrow">
8246 +
8247 + <div>
8248 + <span class="method-title">mirror_get_oss_select_priority</span> (line <span class="line-number">275</span>)
8249 + </div>
8250 +
8251 + <!-- ========== Info from phpDoc block ========= -->
8252 +<p class="short-description">Get an priority-list of operating systems for select list.</p>
8253 +
8254 + <div class="method-signature">
8255 + <span class="method-result">array</span>
8256 + <span class="method-name">
8257 + mirror_get_oss_select_priority
8258 + </span>
8259 + ()
8260 + </div>
8261 +
8262 +
8263 +
8264 +</div>
8265 +<a name="functionmirror_get_products" id="functionmirror_get_products"><!-- --></a>
8266 +<div class="oddrow">
8267 +
8268 + <div>
8269 + <span class="method-title">mirror_get_products</span> (line <span class="line-number">201</span>)
8270 + </div>
8271 +
8272 + <!-- ========== Info from phpDoc block ========= -->
8273 +<p class="short-description">Get products.</p>
8274 +
8275 + <div class="method-signature">
8276 + <span class="method-result">array</span>
8277 + <span class="method-name">
8278 + mirror_get_products
8279 + </span>
8280 + ()
8281 + </div>
8282 +
8283 +
8284 +
8285 +</div>
8286 +<a name="functionmirror_get_products_select" id="functionmirror_get_products_select"><!-- --></a>
8287 +<div class="evenrow">
8288 +
8289 + <div>
8290 + <span class="method-title">mirror_get_products_select</span> (line <span class="line-number">288</span>)
8291 + </div>
8292 +
8293 + <!-- ========== Info from phpDoc block ========= -->
8294 +<p class="short-description">Get an alpha-list of products for select list.</p>
8295 +
8296 + <div class="method-signature">
8297 + <span class="method-result">array</span>
8298 + <span class="method-name">
8299 + mirror_get_products_select
8300 + </span>
8301 + ()
8302 + </div>
8303 +
8304 +
8305 +
8306 +</div>
8307 +<a name="functionmirror_get_products_select_priority" id="functionmirror_get_products_select_priority"><!-- --></a>
8308 +<div class="oddrow">
8309 +
8310 + <div>
8311 + <span class="method-title">mirror_get_products_select_priority</span> (line <span class="line-number">301</span>)
8312 + </div>
8313 +
8314 + <!-- ========== Info from phpDoc block ========= -->
8315 +<p class="short-description">Get an priority-list of operating systems for select list.</p>
8316 +
8317 + <div class="method-signature">
8318 + <span class="method-result">array</span>
8319 + <span class="method-name">
8320 + mirror_get_products_select_priority
8321 + </span>
8322 + ()
8323 + </div>
8324 +
8325 +
8326 +
8327 +</div>
8328 +<a name="functionmirror_get_product_stats" id="functionmirror_get_product_stats"><!-- --></a>
8329 +<div class="evenrow">
8330 +
8331 + <div>
8332 + <span class="method-title">mirror_get_product_stats</span> (line <span class="line-number">452</span>)
8333 + </div>
8334 +
8335 + <!-- ========== Info from phpDoc block ========= -->
8336 +<p class="short-description">Get product statistics.</p>
8337 +
8338 + <div class="method-signature">
8339 + <span class="method-result">array</span>
8340 + <span class="method-name">
8341 + mirror_get_product_stats
8342 + </span>
8343 + ()
8344 + </div>
8345 +
8346 +
8347 +
8348 +</div>
8349 +<a name="functionmirror_get_regions" id="functionmirror_get_regions"><!-- --></a>
8350 +<div class="oddrow">
8351 +
8352 + <div>
8353 + <span class="method-title">mirror_get_regions</span> (line <span class="line-number">95</span>)
8354 + </div>
8355 +
8356 + <!-- ========== Info from phpDoc block ========= -->
8357 +<p class="short-description">Get regions.</p>
8358 +
8359 + <div class="method-signature">
8360 + <span class="method-result">array</span>
8361 + <span class="method-name">
8362 + mirror_get_regions
8363 + </span>
8364 + ()
8365 + </div>
8366 +
8367 +
8368 +
8369 +</div>
8370 +<a name="functionmirror_get_regions_select" id="functionmirror_get_regions_select"><!-- --></a>
8371 +<div class="evenrow">
8372 +
8373 + <div>
8374 + <span class="method-title">mirror_get_regions_select</span> (line <span class="line-number">13</span>)
8375 + </div>
8376 +
8377 + <!-- ========== Info from phpDoc block ========= -->
8378 +<p class="short-description">Get an alpha-list of regions for select list.</p>
8379 +
8380 + <div class="method-signature">
8381 + <span class="method-result">array</span>
8382 + <span class="method-name">
8383 + mirror_get_regions_select
8384 + </span>
8385 + ()
8386 + </div>
8387 +
8388 +
8389 +
8390 +</div>
8391 +<a name="functionmirror_get_regions_select_priority" id="functionmirror_get_regions_select_priority"><!-- --></a>
8392 +<div class="oddrow">
8393 +
8394 + <div>
8395 + <span class="method-title">mirror_get_regions_select_priority</span> (line <span class="line-number">26</span>)
8396 + </div>
8397 +
8398 + <!-- ========== Info from phpDoc block ========= -->
8399 +<p class="short-description">Get an priority-list of regions for select list.</p>
8400 +
8401 + <div class="method-signature">
8402 + <span class="method-result">array</span>
8403 + <span class="method-name">
8404 + mirror_get_regions_select_priority
8405 + </span>
8406 + ()
8407 + </div>
8408 +
8409 +
8410 +
8411 +</div>
8412 +<a name="functionmirror_get_users" id="functionmirror_get_users"><!-- --></a>
8413 +<div class="evenrow">
8414 +
8415 + <div>
8416 + <span class="method-title">mirror_get_users</span> (line <span class="line-number">414</span>)
8417 + </div>
8418 +
8419 + <!-- ========== Info from phpDoc block ========= -->
8420 +<p class="short-description">Get users.</p>
8421 + <ul class="tags">
8422 + <li><span class="field">return:</span> array containing all user information.</li>
8423 + </ul>
8424 +
8425 + <div class="method-signature">
8426 + <span class="method-result">array</span>
8427 + <span class="method-name">
8428 + mirror_get_users
8429 + </span>
8430 + ()
8431 + </div>
8432 +
8433 +
8434 +
8435 +</div>
8436 +<a name="functionmirror_insert_location" id="functionmirror_insert_location"><!-- --></a>
8437 +<div class="oddrow">
8438 +
8439 + <div>
8440 + <span class="method-title">mirror_insert_location</span> (line <span class="line-number">317</span>)
8441 + </div>
8442 +
8443 + <!-- ========== Info from phpDoc block ========= -->
8444 +<p class="short-description">Insert a new location.</p>
8445 +
8446 + <div class="method-signature">
8447 + <span class="method-result">bool</span>
8448 + <span class="method-name">
8449 + mirror_insert_location
8450 + </span>
8451 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$product</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$os</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$path</span>)
8452 + </div>
8453 +
8454 + <ul class="parameters">
8455 + <li>
8456 + <span class="var-type">int</span>
8457 + <span class="var-name">$product</span> </li>
8458 + <li>
8459 + <span class="var-type">int</span>
8460 + <span class="var-name">$os</span> </li>
8461 + <li>
8462 + <span class="var-type">string</span>
8463 + <span class="var-name">$path</span> </li>
8464 + </ul>
8465 +
8466 +
8467 +</div>
8468 +<a name="functionmirror_insert_mirror" id="functionmirror_insert_mirror"><!-- --></a>
8469 +<div class="evenrow">
8470 +
8471 + <div>
8472 + <span class="method-title">mirror_insert_mirror</span> (line <span class="line-number">108</span>)
8473 + </div>
8474 +
8475 + <!-- ========== Info from phpDoc block ========= -->
8476 +<p class="short-description">Insert mirror.</p>
8477 +
8478 + <div class="method-signature">
8479 + <span class="method-result">bool</span>
8480 + <span class="method-name">
8481 + mirror_insert_mirror
8482 + </span>
8483 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$region_id</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$baseurl</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$rating</span>)
8484 + </div>
8485 +
8486 + <ul class="parameters">
8487 + <li>
8488 + <span class="var-type">string</span>
8489 + <span class="var-name">$name</span> </li>
8490 + <li>
8491 + <span class="var-type">int</span>
8492 + <span class="var-name">$region_id</span> </li>
8493 + <li>
8494 + <span class="var-type">string</span>
8495 + <span class="var-name">$baseurl</span> </li>
8496 + <li>
8497 + <span class="var-type">int</span>
8498 + <span class="var-name">$rating</span> </li>
8499 + </ul>
8500 +
8501 +
8502 +</div>
8503 +<a name="functionmirror_insert_os" id="functionmirror_insert_os"><!-- --></a>
8504 +<div class="oddrow">
8505 +
8506 + <div>
8507 + <span class="method-title">mirror_insert_os</span> (line <span class="line-number">212</span>)
8508 + </div>
8509 +
8510 + <!-- ========== Info from phpDoc block ========= -->
8511 +<p class="short-description">Insert os.</p>
8512 +
8513 + <div class="method-signature">
8514 + <span class="method-result">bool</span>
8515 + <span class="method-name">
8516 + mirror_insert_os
8517 + </span>
8518 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$priority</span>)
8519 + </div>
8520 +
8521 + <ul class="parameters">
8522 + <li>
8523 + <span class="var-type">string</span>
8524 + <span class="var-name">$name</span> </li>
8525 + <li>
8526 + <span class="var-type">int</span>
8527 + <span class="var-name">$priority</span> </li>
8528 + </ul>
8529 +
8530 +
8531 +</div>
8532 +<a name="functionmirror_insert_product" id="functionmirror_insert_product"><!-- --></a>
8533 +<div class="evenrow">
8534 +
8535 + <div>
8536 + <span class="method-title">mirror_insert_product</span> (line <span class="line-number">160</span>)
8537 + </div>
8538 +
8539 + <!-- ========== Info from phpDoc block ========= -->
8540 +<p class="short-description">Insert product.</p>
8541 +
8542 + <div class="method-signature">
8543 + <span class="method-result">bool</span>
8544 + <span class="method-name">
8545 + mirror_insert_product
8546 + </span>
8547 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$priority</span>)
8548 + </div>
8549 +
8550 + <ul class="parameters">
8551 + <li>
8552 + <span class="var-type">string</span>
8553 + <span class="var-name">$name</span> </li>
8554 + <li>
8555 + <span class="var-type">int</span>
8556 + <span class="var-name">$priority</span> </li>
8557 + </ul>
8558 +
8559 +
8560 +</div>
8561 +<a name="functionmirror_insert_region" id="functionmirror_insert_region"><!-- --></a>
8562 +<div class="oddrow">
8563 +
8564 + <div>
8565 + <span class="method-title">mirror_insert_region</span> (line <span class="line-number">41</span>)
8566 + </div>
8567 +
8568 + <!-- ========== Info from phpDoc block ========= -->
8569 +<p class="short-description">Insert region.</p>
8570 +
8571 + <div class="method-signature">
8572 + <span class="method-result">bool</span>
8573 + <span class="method-name">
8574 + mirror_insert_region
8575 + </span>
8576 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$priority</span>)
8577 + </div>
8578 +
8579 + <ul class="parameters">
8580 + <li>
8581 + <span class="var-type">string</span>
8582 + <span class="var-name">$name</span> </li>
8583 + <li>
8584 + <span class="var-type">int</span>
8585 + <span class="var-name">$priority</span> </li>
8586 + </ul>
8587 +
8588 +
8589 +</div>
8590 +<a name="functionmirror_insert_user" id="functionmirror_insert_user"><!-- --></a>
8591 +<div class="evenrow">
8592 +
8593 + <div>
8594 + <span class="method-title">mirror_insert_user</span> (line <span class="line-number">374</span>)
8595 + </div>
8596 +
8597 + <!-- ========== Info from phpDoc block ========= -->
8598 +<p class="short-description">Insert a new user.</p>
8599 +
8600 + <div class="method-signature">
8601 + <span class="method-result">bool</span>
8602 + <span class="method-name">
8603 + mirror_insert_user
8604 + </span>
8605 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$username</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$password</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$rpassword</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$firstname</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$lastname</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$email</span>)
8606 + </div>
8607 +
8608 + <ul class="parameters">
8609 + <li>
8610 + <span class="var-type">string</span>
8611 + <span class="var-name">$username</span> </li>
8612 + <li>
8613 + <span class="var-type">string</span>
8614 + <span class="var-name">$password</span> </li>
8615 + <li>
8616 + <span class="var-type">string</span>
8617 + <span class="var-name">$rpassword</span><span class="var-description">: (re-entered password)</span> </li>
8618 + <li>
8619 + <span class="var-type">string</span>
8620 + <span class="var-name">$firstname</span> </li>
8621 + <li>
8622 + <span class="var-type">string</span>
8623 + <span class="var-name">$lastname</span> </li>
8624 + <li>
8625 + <span class="var-type">string</span>
8626 + <span class="var-name">$email</span> </li>
8627 + </ul>
8628 +
8629 +
8630 +</div>
8631 +<a name="functionmirror_toggle" id="functionmirror_toggle"><!-- --></a>
8632 +<div class="oddrow">
8633 +
8634 + <div>
8635 + <span class="method-title">mirror_toggle</span> (line <span class="line-number">434</span>)
8636 + </div>
8637 +
8638 + <!-- ========== Info from phpDoc block ========= -->
8639 +<p class="short-description">Enable or disable a mirror.</p>
8640 +
8641 + <div class="method-signature">
8642 + <span class="method-result">bool</span>
8643 + <span class="method-name">
8644 + mirror_toggle
8645 + </span>
8646 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$mirror</span>)
8647 + </div>
8648 +
8649 + <ul class="parameters">
8650 + <li>
8651 + <span class="var-type">int</span>
8652 + <span class="var-name">$mirror</span> </li>
8653 + </ul>
8654 +
8655 +
8656 +</div>
8657 +<a name="functionmirror_update_location" id="functionmirror_update_location"><!-- --></a>
8658 +<div class="evenrow">
8659 +
8660 + <div>
8661 + <span class="method-title">mirror_update_location</span> (line <span class="line-number">330</span>)
8662 + </div>
8663 +
8664 + <!-- ========== Info from phpDoc block ========= -->
8665 +<p class="short-description">Update a location.</p>
8666 +
8667 + <div class="method-signature">
8668 + <span class="method-result">bool</span>
8669 + <span class="method-name">
8670 + mirror_update_location
8671 + </span>
8672 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$location</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$product</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$os</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$path</span>)
8673 + </div>
8674 +
8675 + <ul class="parameters">
8676 + <li>
8677 + <span class="var-type">int</span>
8678 + <span class="var-name">$location</span> </li>
8679 + <li>
8680 + <span class="var-type">int</span>
8681 + <span class="var-name">$product</span> </li>
8682 + <li>
8683 + <span class="var-type">int</span>
8684 + <span class="var-name">$os</span> </li>
8685 + <li>
8686 + <span class="var-type">string</span>
8687 + <span class="var-name">$path</span> </li>
8688 + </ul>
8689 +
8690 +
8691 +</div>
8692 +<a name="functionmirror_update_mirror" id="functionmirror_update_mirror"><!-- --></a>
8693 +<div class="oddrow">
8694 +
8695 + <div>
8696 + <span class="method-title">mirror_update_mirror</span> (line <span class="line-number">121</span>)
8697 + </div>
8698 +
8699 + <!-- ========== Info from phpDoc block ========= -->
8700 +<p class="short-description">Update mirror.</p>
8701 +
8702 + <div class="method-signature">
8703 + <span class="method-result">bool</span>
8704 + <span class="method-name">
8705 + mirror_update_mirror
8706 + </span>
8707 + (<span class="var-type">mixed</span>&nbsp;<span class="var-name">$id</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$region_id</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$baseurl</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$rating</span>)
8708 + </div>
8709 +
8710 + <ul class="parameters">
8711 + <li>
8712 + <span class="var-type">string</span>
8713 + <span class="var-name">$name</span> </li>
8714 + <li>
8715 + <span class="var-type">int</span>
8716 + <span class="var-name">$region_id</span> </li>
8717 + <li>
8718 + <span class="var-type">string</span>
8719 + <span class="var-name">$baseurl</span> </li>
8720 + <li>
8721 + <span class="var-type">int</span>
8722 + <span class="var-name">$rating</span> </li>
8723 + </ul>
8724 +
8725 +
8726 +</div>
8727 +<a name="functionmirror_update_os" id="functionmirror_update_os"><!-- --></a>
8728 +<div class="evenrow">
8729 +
8730 + <div>
8731 + <span class="method-title">mirror_update_os</span> (line <span class="line-number">224</span>)
8732 + </div>
8733 +
8734 + <!-- ========== Info from phpDoc block ========= -->
8735 +<p class="short-description">Update os.</p>
8736 +
8737 + <div class="method-signature">
8738 + <span class="method-result">bool</span>
8739 + <span class="method-name">
8740 + mirror_update_os
8741 + </span>
8742 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$priority</span>)
8743 + </div>
8744 +
8745 + <ul class="parameters">
8746 + <li>
8747 + <span class="var-type">int</span>
8748 + <span class="var-name">$id</span> </li>
8749 + <li>
8750 + <span class="var-type">string</span>
8751 + <span class="var-name">$name</span> </li>
8752 + <li>
8753 + <span class="var-type">int</span>
8754 + <span class="var-name">$priority</span> </li>
8755 + </ul>
8756 +
8757 +
8758 +</div>
8759 +<a name="functionmirror_update_product" id="functionmirror_update_product"><!-- --></a>
8760 +<div class="oddrow">
8761 +
8762 + <div>
8763 + <span class="method-title">mirror_update_product</span> (line <span class="line-number">172</span>)
8764 + </div>
8765 +
8766 + <!-- ========== Info from phpDoc block ========= -->
8767 +<p class="short-description">Update product.</p>
8768 +
8769 + <div class="method-signature">
8770 + <span class="method-result">bool</span>
8771 + <span class="method-name">
8772 + mirror_update_product
8773 + </span>
8774 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$priority</span>)
8775 + </div>
8776 +
8777 + <ul class="parameters">
8778 + <li>
8779 + <span class="var-type">int</span>
8780 + <span class="var-name">$id</span> </li>
8781 + <li>
8782 + <span class="var-type">string</span>
8783 + <span class="var-name">$name</span> </li>
8784 + <li>
8785 + <span class="var-type">int</span>
8786 + <span class="var-name">$priority</span> </li>
8787 + </ul>
8788 +
8789 +
8790 +</div>
8791 +<a name="functionmirror_update_region" id="functionmirror_update_region"><!-- --></a>
8792 +<div class="evenrow">
8793 +
8794 + <div>
8795 + <span class="method-title">mirror_update_region</span> (line <span class="line-number">53</span>)
8796 + </div>
8797 +
8798 + <!-- ========== Info from phpDoc block ========= -->
8799 +<p class="short-description">Update region.</p>
8800 +
8801 + <div class="method-signature">
8802 + <span class="method-result">bool</span>
8803 + <span class="method-name">
8804 + mirror_update_region
8805 + </span>
8806 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$id</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$name</span>, <span class="var-type">int</span>&nbsp;<span class="var-name">$priority</span>)
8807 + </div>
8808 +
8809 + <ul class="parameters">
8810 + <li>
8811 + <span class="var-type">int</span>
8812 + <span class="var-name">$id</span> </li>
8813 + <li>
8814 + <span class="var-type">string</span>
8815 + <span class="var-name">$name</span> </li>
8816 + <li>
8817 + <span class="var-type">int</span>
8818 + <span class="var-name">$priority</span> </li>
8819 + </ul>
8820 +
8821 +
8822 +</div>
8823 +<a name="functionmirror_update_user" id="functionmirror_update_user"><!-- --></a>
8824 +<div class="oddrow">
8825 +
8826 + <div>
8827 + <span class="method-title">mirror_update_user</span> (line <span class="line-number">394</span>)
8828 + </div>
8829 +
8830 + <!-- ========== Info from phpDoc block ========= -->
8831 +<p class="short-description">Update a user.</p>
8832 +
8833 + <div class="method-signature">
8834 + <span class="method-result">bool</span>
8835 + <span class="method-name">
8836 + mirror_update_user
8837 + </span>
8838 + (<span class="var-type">int</span>&nbsp;<span class="var-name">$user</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$username</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$password</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$rpassword</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$firstname</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$lastname</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$email</span>)
8839 + </div>
8840 +
8841 + <ul class="parameters">
8842 + <li>
8843 + <span class="var-type">int</span>
8844 + <span class="var-name">$user</span> </li>
8845 + <li>
8846 + <span class="var-type">string</span>
8847 + <span class="var-name">$username</span> </li>
8848 + <li>
8849 + <span class="var-type">string</span>
8850 + <span class="var-name">$password</span> </li>
8851 + <li>
8852 + <span class="var-type">string</span>
8853 + <span class="var-name">$rpassword</span><span class="var-description">: (re-entered password)</span> </li>
8854 + <li>
8855 + <span class="var-type">string</span>
8856 + <span class="var-name">$firstname</span> </li>
8857 + <li>
8858 + <span class="var-type">string</span>
8859 + <span class="var-name">$lastname</span> </li>
8860 + <li>
8861 + <span class="var-type">string</span>
8862 + <span class="var-name">$email</span> </li>
8863 + </ul>
8864 +
8865 +
8866 +</div>
8867 + </div>
8868 + </div>
8869 +
8870 + <p class="notes" id="credit">
8871 + Documentation generated on Mon, 8 Nov 2004 13:43:05 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
8872 + </p>
8873 + </div></body>
8874 +</html>
8875 \ No newline at end of file
8876
8877 diff --git a/docs/mirror/lib/_php_lib_util_php.html b/docs/mirror/lib/_php_lib_util_php.html
8878 new file mode 100644
8879 index 0000000..98baab8
8880 --- /dev/null
8881 +++ b/docs/mirror/lib/_php_lib_util_php.html
8882 @@ -0,0 +1,369 @@
8883 +<?xml version="1.0" encoding="iso-8859-1"?>
8884 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
8885 + <html xmlns="http://www.w3.org/1999/xhtml">
8886 + <head>
8887 + <!-- template designed by Marco Von Ballmoos -->
8888 + <title>Docs for page util.php</title>
8889 + <link rel="stylesheet" href="../../media/stylesheet.css" />
8890 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
8891 + </head>
8892 + <body>
8893 + <div class="page-body">
8894 +<h2 class="file-name">/php/lib/util.php</h2>
8895 +
8896 +<a name="sec-description"></a>
8897 +<div class="info-box">
8898 + <div class="info-box-title">Description</div>
8899 + <div class="nav-bar">
8900 + <span class="disabled">Description</span> |
8901 + <a href="#sec-functions">Functions</a>
8902 + </div>
8903 + <div class="info-box-body">
8904 + <!-- ========== Info from phpDoc block ========= -->
8905 +<p class="short-description">Utility funcs.</p>
8906 +
8907 + </div>
8908 +</div>
8909 +
8910 +
8911 +
8912 +
8913 +
8914 + <a name="sec-functions"></a>
8915 + <div class="info-box">
8916 + <div class="info-box-title">Functions</div>
8917 + <div class="nav-bar">
8918 + <a href="#sec-description">Description</a> |
8919 + <span class="disabled">Functions</span>
8920 + </div>
8921 + <div class="info-box-body">
8922 + <a name="functionarray_order_by" id="functionarray_order_by"><!-- --></a>
8923 +<div class="evenrow">
8924 +
8925 + <div>
8926 + <span class="method-title">array_order_by</span> (line <span class="line-number">198</span>)
8927 + </div>
8928 +
8929 + <!-- ========== Info from phpDoc block ========= -->
8930 +<p class="short-description">Sort a two dimensional array based on a 'column' key</p>
8931 + <ul class="tags">
8932 + <li><span class="field">return:</span> the original array on argument errors, the sorted array on success</li>
8933 + </ul>
8934 +
8935 + <div class="method-signature">
8936 + <span class="method-result">array</span>
8937 + <span class="method-name">
8938 + array_order_by
8939 + </span>
8940 + (<span class="var-type">array</span>&nbsp;<span class="var-name">&$array</span>, [<span class="var-type">mixed</span>&nbsp;<span class="var-name">$key</span> = <span class="var-default">null</span>], [<span class="var-type">mixed</span>&nbsp;<span class="var-name">$order</span> = <span class="var-default">null</span>], [<span class="var-type">bool</span>&nbsp;<span class="var-name">$retain_keys</span> = <span class="var-default">TRUE</span>], [<span class="var-type">bool</span>&nbsp;<span class="var-name">$case_sensitive</span> = <span class="var-default">FALSE</span>])
8941 + </div>
8942 +
8943 + <ul class="parameters">
8944 + <li>
8945 + <span class="var-type">array</span>
8946 + <span class="var-name">$array</span><span class="var-description">: the array to be sorted</span> </li>
8947 + <li>
8948 + <span class="var-type">mixed</span>
8949 + <span class="var-name">$key</span><span class="var-description">: the column key to be used for sorting, an array of keys are also acceptable</span> </li>
8950 + <li>
8951 + <span class="var-type">mixed</span>
8952 + <span class="var-name">$order</span><span class="var-description">: the order of the sort, either 'asc' (ascending) or 'desc' (descending), can also be an array (with matching array keys to the $key param)</span> </li>
8953 + <li>
8954 + <span class="var-type">bool</span>
8955 + <span class="var-name">$retain_keys</span><span class="var-description">: option to retain the original keys; default to true</span> </li>
8956 + <li>
8957 + <span class="var-type">bool</span>
8958 + <span class="var-name">$case_sensitive</span><span class="var-description">: option for a case sensitive sort; default to false</span> </li>
8959 + </ul>
8960 +
8961 +
8962 +</div>
8963 +<a name="functiondebug_r" id="functiondebug_r"><!-- --></a>
8964 +<div class="oddrow">
8965 +
8966 + <div>
8967 + <span class="method-title">debug_r</span> (line <span class="line-number">98</span>)
8968 + </div>
8969 +
8970 + <!-- ========== Info from phpDoc block ========= -->
8971 +<p class="short-description">Print out an varible enclosed by &amp;lt;pre&amp;gt; tags</p>
8972 +
8973 + <div class="method-signature">
8974 + <span class="method-result">void</span>
8975 + <span class="method-name">
8976 + debug_r
8977 + </span>
8978 + (<span class="var-type">mixed</span>&nbsp;<span class="var-name">&$var</span>)
8979 + </div>
8980 +
8981 + <ul class="parameters">
8982 + <li>
8983 + <span class="var-type">mixed</span>
8984 + <span class="var-name">$var</span><span class="var-description">: the variable to print by print_r</span> </li>
8985 + </ul>
8986 +
8987 +
8988 +</div>
8989 +<a name="functionemptify_in_array" id="functionemptify_in_array"><!-- --></a>
8990 +<div class="evenrow">
8991 +
8992 + <div>
8993 + <span class="method-title">emptify_in_array</span> (line <span class="line-number">131</span>)
8994 + </div>
8995 +
8996 + <!-- ========== Info from phpDoc block ========= -->
8997 +<p class="short-description">This recursive function empty values in an 'multi-dimensional' array.</p>
8998 + <ul class="tags">
8999 + <li><span class="field">return:</span> false if an empty needle passed in, else a copy of the array with needle values replaced with empty strings</li>
9000 + </ul>
9001 +
9002 + <div class="method-signature">
9003 + <span class="method-result">mixed</span>
9004 + <span class="method-name">
9005 + emptify_in_array
9006 + </span>
9007 + (<span class="var-type">mixed</span>&nbsp;<span class="var-name">$array</span>, <span class="var-type">mixed</span>&nbsp;<span class="var-name">$needle</span>)
9008 + </div>
9009 +
9010 + <ul class="parameters">
9011 + <li>
9012 + <span class="var-type">mixed</span>
9013 + <span class="var-name">$needle</span><span class="var-description">: it accepts just one value or an array of values</span> </li>
9014 + </ul>
9015 +
9016 +
9017 +</div>
9018 +<a name="functionmicrotime_float" id="functionmicrotime_float"><!-- --></a>
9019 +<div class="oddrow">
9020 +
9021 + <div>
9022 + <span class="method-title">microtime_float</span> (line <span class="line-number">12</span>)
9023 + </div>
9024 +
9025 + <!-- ========== Info from phpDoc block ========= -->
9026 +<p class="short-description">determine float value of now</p>
9027 + <ul class="tags">
9028 + <li><span class="field">return:</span> value of current time in seconds</li>
9029 + </ul>
9030 +
9031 + <div class="method-signature">
9032 + <span class="method-result">float</span>
9033 + <span class="method-name">
9034 + microtime_float
9035 + </span>
9036 + ()
9037 + </div>
9038 +
9039 +
9040 +
9041 +</div>
9042 +<a name="functionpassword_gen" id="functionpassword_gen"><!-- --></a>
9043 +<div class="evenrow">
9044 +
9045 + <div>
9046 + <span class="method-title">password_gen</span> (line <span class="line-number">110</span>)
9047 + </div>
9048 +
9049 + <!-- ========== Info from phpDoc block ========= -->
9050 +<p class="short-description">Generate a random string good for passwords</p>
9051 + <ul class="tags">
9052 + <li><span class="field">return:</span> password</li>
9053 + </ul>
9054 +
9055 + <div class="method-signature">
9056 + <span class="method-result">string</span>
9057 + <span class="method-name">
9058 + password_gen
9059 + </span>
9060 + ([<span class="var-type">in</span>&nbsp;<span class="var-name">$len</span> = <span class="var-default">6</span>])
9061 + </div>
9062 +
9063 + <ul class="parameters">
9064 + <li>
9065 + <span class="var-type">in</span>
9066 + <span class="var-name">$len</span><span class="var-description">: the length of the password string</span> </li>
9067 + </ul>
9068 +
9069 +
9070 +</div>
9071 +<a name="functionrecord_exists" id="functionrecord_exists"><!-- --></a>
9072 +<div class="oddrow">
9073 +
9074 + <div>
9075 + <span class="method-title">record_exists</span> (line <span class="line-number">158</span>)
9076 + </div>
9077 +
9078 + <!-- ========== Info from phpDoc block ========= -->
9079 +<p class="short-description">This function checks for the existence of a particular row in a particular table matching a value.</p>
9080 +<p class="description"><p>Use this with libdb, unless you want lots of problems. :)</p></p>
9081 +
9082 + <div class="method-signature">
9083 + <span class="method-result">void</span>
9084 + <span class="method-name">
9085 + record_exists
9086 + </span>
9087 + (<span class="var-type">string</span>&nbsp;<span class="var-name">$table</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$column</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$val</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$extra</span> = <span class="var-default">NULL</span>])
9088 + </div>
9089 +
9090 + <ul class="parameters">
9091 + <li>
9092 + <span class="var-type">string</span>
9093 + <span class="var-name">$table</span><span class="var-description">: name of table</span> </li>
9094 + <li>
9095 + <span class="var-type">string</span>
9096 + <span class="var-name">$column</span><span class="var-description">: name of column containing value to match</span> </li>
9097 + <li>
9098 + <span class="var-type">string</span>
9099 + <span class="var-name">$val</span><span class="var-description">: value to match against database (goes in WHERE clause)</span> </li>
9100 + <li>
9101 + <span class="var-type">string</span>
9102 + <span class="var-name">$extra</span><span class="var-description">: (optional) any AND or ORDER BY or LIMIT or anything you want to add.</span> </li>
9103 + </ul>
9104 +
9105 +
9106 +</div>
9107 +<a name="functionset_error" id="functionset_error"><!-- --></a>
9108 +<div class="evenrow">
9109 +
9110 + <div>
9111 + <span class="method-title">set_error</span> (line <span class="line-number">61</span>)
9112 + </div>
9113 +
9114 + <!-- ========== Info from phpDoc block ========= -->
9115 +<p class="short-description">Add an error message to SESSION['errors'] array.</p>
9116 +<p class="description"><p>The $_SESSION['errors'] array stores error messages.</p></p>
9117 +
9118 + <div class="method-signature">
9119 + <span class="method-result">void</span>
9120 + <span class="method-name">
9121 + set_error
9122 + </span>
9123 + ([<span class="var-type">string</span>&nbsp;<span class="var-name">$str</span> = <span class="var-default">null</span>])
9124 + </div>
9125 +
9126 + <ul class="parameters">
9127 + <li>
9128 + <span class="var-type">string</span>
9129 + <span class="var-name">$str</span><span class="var-description">: message to add (optional)</span> </li>
9130 + </ul>
9131 +
9132 +
9133 +</div>
9134 +<a name="functionset_msg" id="functionset_msg"><!-- --></a>
9135 +<div class="oddrow">
9136 +
9137 + <div>
9138 + <span class="method-title">set_msg</span> (line <span class="line-number">23</span>)
9139 + </div>
9140 +
9141 + <!-- ========== Info from phpDoc block ========= -->
9142 +<p class="short-description">Add a message to SESSION['messages'] array.</p>
9143 +<p class="description"><p>The $_SESSION['messages'] array stores general or success messages.</p></p>
9144 +
9145 + <div class="method-signature">
9146 + <span class="method-result">void</span>
9147 + <span class="method-name">
9148 + set_msg
9149 + </span>
9150 + ([<span class="var-type">string</span>&nbsp;<span class="var-name">$str</span> = <span class="var-default">null</span>])
9151 + </div>
9152 +
9153 + <ul class="parameters">
9154 + <li>
9155 + <span class="var-type">string</span>
9156 + <span class="var-name">$str</span><span class="var-description">: message to add (optional)</span> </li>
9157 + </ul>
9158 +
9159 +
9160 +</div>
9161 +<a name="functionshow_error" id="functionshow_error"><!-- --></a>
9162 +<div class="evenrow">
9163 +
9164 + <div>
9165 + <span class="method-title">show_error</span> (line <span class="line-number">74</span>)
9166 + </div>
9167 +
9168 + <!-- ========== Info from phpDoc block ========= -->
9169 +<p class="short-description">Show errors messages.</p>
9170 +<p class="description"><p>Iterates through $_SESSION['errors'] and displays them in a ul.</p></p>
9171 +
9172 + <div class="method-signature">
9173 + <span class="method-result">void</span>
9174 + <span class="method-name">
9175 + show_error
9176 + </span>
9177 + ([<span class="var-type">string</span>&nbsp;<span class="var-name">$class</span> = <span class="var-default">'error'</span>])
9178 + </div>
9179 +
9180 + <ul class="parameters">
9181 + <li>
9182 + <span class="var-type">string</span>
9183 + <span class="var-name">$class</span><span class="var-description">: css class for message style</span> </li>
9184 + </ul>
9185 +
9186 +
9187 +</div>
9188 +<a name="functionshow_msg" id="functionshow_msg"><!-- --></a>
9189 +<div class="oddrow">
9190 +
9191 + <div>
9192 + <span class="method-title">show_msg</span> (line <span class="line-number">36</span>)
9193 + </div>
9194 +
9195 + <!-- ========== Info from phpDoc block ========= -->
9196 +<p class="short-description">Show messages.</p>
9197 +<p class="description"><p>Iterates through $_SESSION['messages'] and displays them in a ul.</p></p>
9198 +
9199 + <div class="method-signature">
9200 + <span class="method-result">void</span>
9201 + <span class="method-name">
9202 + show_msg
9203 + </span>
9204 + ([<span class="var-type">string</span>&nbsp;<span class="var-name">$class</span> = <span class="var-default">'msg'</span>])
9205 + </div>
9206 +
9207 + <ul class="parameters">
9208 + <li>
9209 + <span class="var-type">string</span>
9210 + <span class="var-name">$class</span><span class="var-description">: css class for message style</span> </li>
9211 + </ul>
9212 +
9213 +
9214 +</div>
9215 +<a name="functionshow_tabs" id="functionshow_tabs"><!-- --></a>
9216 +<div class="evenrow">
9217 +
9218 + <div>
9219 + <span class="method-title">show_tabs</span> (line <span class="line-number">173</span>)
9220 + </div>
9221 +
9222 + <!-- ========== Info from phpDoc block ========= -->
9223 +<p class="short-description">Show user tabs, based on an array.</p>
9224 +
9225 + <div class="method-signature">
9226 + <span class="method-result">void</span>
9227 + <span class="method-name">
9228 + show_tabs
9229 + </span>
9230 + (<span class="var-type">array</span>&nbsp;<span class="var-name">$tabs</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$current</span>)
9231 + </div>
9232 +
9233 + <ul class="parameters">
9234 + <li>
9235 + <span class="var-type">array</span>
9236 + <span class="var-name">$tabs</span><span class="var-description">: array of tabs (name=&gt;href)</span> </li>
9237 + <li>
9238 + <span class="var-type">string</span>
9239 + <span class="var-name">$current</span><span class="var-description">: name of tab to highlight</span> </li>
9240 + </ul>
9241 +
9242 +
9243 +</div>
9244 + </div>
9245 + </div>
9246 +
9247 + <p class="notes" id="credit">
9248 + Documentation generated on Mon, 8 Nov 2004 13:43:06 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
9249 + </p>
9250 + </div></body>
9251 +</html>
9252 \ No newline at end of file
9253
9254 diff --git a/docs/mirror/pub/_php_index_php.html b/docs/mirror/pub/_php_index_php.html
9255 new file mode 100644
9256 index 0000000..3546d7f
9257 --- /dev/null
9258 +++ b/docs/mirror/pub/_php_index_php.html
9259 @@ -0,0 +1,75 @@
9260 +<?xml version="1.0" encoding="iso-8859-1"?>
9261 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
9262 + <html xmlns="http://www.w3.org/1999/xhtml">
9263 + <head>
9264 + <!-- template designed by Marco Von Ballmoos -->
9265 + <title>Docs for page index.php</title>
9266 + <link rel="stylesheet" href="../../media/stylesheet.css" />
9267 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
9268 + </head>
9269 + <body>
9270 + <div class="page-body">
9271 +<h2 class="file-name">/php/index.php</h2>
9272 +
9273 +<a name="sec-description"></a>
9274 +<div class="info-box">
9275 + <div class="info-box-title">Description</div>
9276 + <div class="nav-bar">
9277 + <span class="disabled">Description</span> |
9278 + <a href="#sec-includes">Includes</a>
9279 + </div>
9280 + <div class="info-box-body">
9281 + <!-- ========== Info from phpDoc block ========= -->
9282 +<p class="short-description">Main handler.</p>
9283 +
9284 + </div>
9285 +</div>
9286 +
9287 +
9288 + <a name="sec-includes"></a>
9289 + <div class="info-box">
9290 + <div class="info-box-title">Includes</div>
9291 + <div class="nav-bar">
9292 + <a href="#sec-description">Description</a> |
9293 + <span class="disabled">Includes</span>
9294 + </div>
9295 + <div class="info-box-body">
9296 + <a name="__/cfg/config_php"><!-- --></a>
9297 +<div class="evenrow">
9298 +
9299 + <div>
9300 + <span class="include-title">
9301 + <span class="include-type">require_once</span>
9302 + (<span class="include-name">'./cfg/config.php'</span>)
9303 + (line <span class="line-number">8</span>)
9304 + </span>
9305 + </div>
9306 +
9307 + <!-- ========== Info from phpDoc block ========= -->
9308 +
9309 +</div>
9310 +<a name="_LIB_/db_php"><!-- --></a>
9311 +<div class="oddrow">
9312 +
9313 + <div>
9314 + <span class="include-title">
9315 + <span class="include-type">require_once</span>
9316 + (<span class="include-name">LIB.'/db.php'</span>)
9317 + (line <span class="line-number">12</span>)
9318 + </span>
9319 + </div>
9320 +
9321 + <!-- ========== Info from phpDoc block ========= -->
9322 +
9323 +</div>
9324 + </div>
9325 + </div>
9326 +
9327 +
9328 +
9329 +
9330 + <p class="notes" id="credit">
9331 + Documentation generated on Mon, 8 Nov 2004 13:43:04 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
9332 + </p>
9333 + </div></body>
9334 +</html>
9335 \ No newline at end of file
9336
9337 diff --git a/docs/packages.html b/docs/packages.html
9338 new file mode 100644
9339 index 0000000..dc8572f
9340 --- /dev/null
9341 +++ b/docs/packages.html
9342 @@ -0,0 +1,30 @@
9343 +<?xml version="1.0" encoding="iso-8859-1"?>
9344 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
9345 + <html xmlns="http://www.w3.org/1999/xhtml">
9346 + <head>
9347 + <!-- template designed by Marco Von Ballmoos -->
9348 + <title></title>
9349 + <link rel="stylesheet" href="media/stylesheet.css" />
9350 + <link rel="stylesheet" href="media/banner.css" />
9351 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
9352 + </head>
9353 + <body>
9354 + <div class="banner">
9355 + <div class="banner-title">mirror</div>
9356 + <div class="banner-menu">
9357 + <table cellpadding="0" cellspacing="0" style="width: 100%">
9358 + <tr>
9359 + <td>
9360 +
9361 + <a href="ric_README.html" target="right">README</a>
9362 +
9363 + </td>
9364 + <td style="width: 2em">&nbsp;</td>
9365 + <td style="text-align: right">
9366 + </td>
9367 + </tr>
9368 + </table>
9369 + </div>
9370 + </div>
9371 + </body>
9372 + </html>
9373 \ No newline at end of file
9374
9375 diff --git a/docs/ric_README.html b/docs/ric_README.html
9376 new file mode 100644
9377 index 0000000..d3d6790
9378 --- /dev/null
9379 +++ b/docs/ric_README.html
9380 @@ -0,0 +1,88 @@
9381 +<?xml version="1.0" encoding="iso-8859-1"?>
9382 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
9383 + <html xmlns="http://www.w3.org/1999/xhtml">
9384 + <head>
9385 + <!-- template designed by Marco Von Ballmoos -->
9386 + <title></title>
9387 + <link rel="stylesheet" href="media/stylesheet.css" />
9388 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
9389 + </head>
9390 + <body>
9391 +
9392 <h1 align="center">README</h1>
9393 +<pre>
9394 +-----------------------
9395 +Mirror Project
9396 +Open Source Lab
9397 +Oregon State University
9398 +-----------------------
9399 +*Coding Standards
9400 +
9401 + http://pear.php.net/manual/en/standards.php
9402 +
9403 +*PHP Documentation
9404 +
9405 + PHP documentation generated by PHP Documentor can be found in /docs. View index.html using file://.
9406 +
9407 +*Configuration
9408 +
9409 + Application configuration is done using define() calls. The configuration script is located in:
9410 + cfg/config-dist.php
9411 +
9412 + Copy this config file to cfg/config.php and the init script (cfg/init.php) will process it as intended.
9413 +
9414 + !! DO NOT store password information in config-dist.php and checkin !!
9415 +
9416 +*Apache
9417 +
9418 + Don't forget to set up raw logs:
9419 + ErrorLog &quot;|/usr/bin/cronolog /var/www/download/logs/%Y%m%d/error.log&quot;
9420 + CustomLog &quot;|/usr/bin/cronolog /var/www/download/logs/%Y%m%d/access.log&quot;
9421 +
9422 + DB-based logging is configurable by enabling the LOGGING constant in config.php.
9423 +
9424 +*DB
9425 +
9426 + DB information is stored in:
9427 + cfg/mirror.sql
9428 +
9429 + DB connections are persistent (msyql_pconnect()). For more info view the PHP manual:
9430 + http://php.oregonstate.edu/mysql_pconnect
9431 + http://php.oregonstate.edu/manual/en/features.persistent-connections.php
9432 +
9433 + The DB server should optimally NOT be localhost (save cycles).
9434 +
9435 +*Questions
9436 +
9437 + Send questions and rants to &lt;mike dot morgan at oregonstate dot edu&gt;
9438 +
9439 +*Output Buffering
9440 +
9441 + This application uses output buffering.
9442 +
9443 + ob_start() is called in inc/header.php.
9444 + ob_end_flush() is called in inc/footer.php.
9445 +
9446 + No browser output (echo, print, etc.) should _ever_ happen outside of these boundaries.
9447 +
9448 +*Permissions
9449 +
9450 + The project directory should be readable by the web server.
9451 +
9452 +*Benchmarking
9453 +
9454 + !! ALL benchmark referencing /index.php should be done using ?print=true. !!
9455 + !! This disables the actual redirects and avoids spamming mirrors. !!
9456 +
9457 +*Developers
9458 +
9459 + Scott Kveton &lt;scott at osuosl dot org&gt;
9460 + Mike Morgan &lt;mike dot morgan at oregonstate dot edu&gt;
9461 + Alex Polvi &lt;polvi at osuosl dot org&gt;
9462 + Danny Robert &lt;robert at osuosl dot org&gt;
9463 +
9464 +</pre>
9465 + <p class="notes" id="credit">
9466 + Documentation generated on Mon, 8 Nov 2004 13:43:03 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
9467 + </p>
9468 + </body>
9469 +</html>
9470 \ No newline at end of file
9471
9472 diff --git a/docs/todolist.html b/docs/todolist.html
9473 new file mode 100644
9474 index 0000000..533190c
9475 --- /dev/null
9476 +++ b/docs/todolist.html
9477 @@ -0,0 +1,25 @@
9478 +<?xml version="1.0" encoding="iso-8859-1"?>
9479 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
9480 + <html xmlns="http://www.w3.org/1999/xhtml">
9481 + <head>
9482 + <!-- template designed by Marco Von Ballmoos -->
9483 + <title>Todo List</title>
9484 + <link rel="stylesheet" href="media/stylesheet.css" />
9485 + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
9486 + </head>
9487 + <body>
9488 +
9489 <div align="center"><h1>Todo List</h1></div>
9490 +<h2>mirror</h2>
9491 +<h3><a href="mirror/lib/_php_lib_auth_php.html">auth.php</a></h3>
9492 +<ul>
9493 + <li>re-enforce one-per-user session limit</li>
9494 +</ul>
9495 +<h3><a href="mirror/lib/_php_lib_mirror_php.html">mirror.php</a></h3>
9496 +<ul>
9497 + <li>add transactions once innodb table types are in place</li>
9498 +</ul>
9499 + <p class="notes" id="credit">
9500 + Documentation generated on Mon, 8 Nov 2004 13:43:06 -0800 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
9501 + </p>
9502 + </body>
9503 +</html>
9504 \ No newline at end of file
9505
9506 diff --git a/php/admin/index.php b/php/admin/index.php
9507 new file mode 100644
9508 index 0000000..8c3db5c
9509 --- /dev/null
9510 +++ b/php/admin/index.php
9511 @@ -0,0 +1,111 @@
9512 +<?php
9513 +/**
9514 + * Regions.
9515 + * @package mirror
9516 + * @subpackage admin
9517 + */
9518 +$protect=1; // protect this page
9519 +require_once('../cfg/init.php');
9520 +
9521 +// add mirror
9522 +if (!empty($_POST['add-submit'])) {
9523 + if (mirror_insert_mirror($_POST['mirror_name'],$_POST['region_id'],$_POST['mirror_baseurl'],$_POST['mirror_rating'])) {
9524 + set_msg('Mirror added successfully.');
9525 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/');
9526 + exit;
9527 + } else {
9528 + set_error('Mirror could not be added because of an unknown error.');
9529 + }
9530 +}
9531 +
9532 +// process actions
9533 +if (!empty($_POST['submit'])) {
9534 + if (!empty($_POST['mirror_id'])) {
9535 + switch($_POST['action']) {
9536 + case 'edit':
9537 + if (!empty($_POST['doit'])) {
9538 + if (mirror_update_mirror($_POST['mirror_id'],$_POST['mirror_name'],$_POST['region_id'],$_POST['mirror_baseurl'],$_POST['mirror_rating'])) {
9539 + set_msg('Mirror updated successfully.');
9540 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/');
9541 + exit;
9542 + } else {
9543 + set_error('Mirror update failed.');
9544 + }
9545 + } else {
9546 + $title = 'Edit Mirror';
9547 + $nav = INC.'/admin_nav.php';
9548 + require_once(HEADER);
9549 + echo '<h2>Edit Mirror</h2>';
9550 + $posts = mirror_get_one_mirror($_POST['mirror_id']);
9551 + form_start();
9552 + include_once(INC.'/forms/mirror.php');
9553 + form_hidden('doit','1');
9554 + form_hidden('action','edit');
9555 + form_hidden('mirror_id',$_POST['mirror_id']);
9556 + form_submit('submit','','button1','Update');
9557 + form_end();
9558 + require_once(FOOTER);
9559 + exit;
9560 + }
9561 + break;
9562 + case 'delete':
9563 + if (mirror_delete_mirror($_POST['mirror_id'])) {
9564 + set_msg('Mirror deleted successfully.');
9565 + } else {
9566 + set_error('Mirror could not be deleted.');
9567 + }
9568 + break;
9569 + case 'toggle':
9570 + if (mirror_toggle($_POST['mirror_id'])) {
9571 + set_msg('Mirror enabled/disabled.');
9572 + } else {
9573 + set_error('Mirror could not be enabled/disabled.');
9574 + }
9575 + }
9576 + } else {
9577 + set_error('You must select a mirror to continue.');
9578 + }
9579 +}
9580 +
9581 +$title = 'Mirrors';
9582 +$nav = INC.'/admin_nav.php';
9583 +require_once(HEADER);
9584 +echo '<h2>Mirrors</h2>';
9585 +
9586 +show_error();
9587 +show_msg();
9588 +
9589 +$mirrors = mirror_get_mirrors();
9590 +
9591 +$_GET['sort']=(!empty($_GET['sort']))?$_GET['sort']:'mirror_active';
9592 +$_GET['order']=(!empty($_GET['order']))?$_GET['order']:'ASC';
9593 +$mirrors=array_order_by($mirrors,$_GET['sort'],$_GET['order']);
9594 +
9595 +$headers = array(
9596 + 'mirror_id'=>'',
9597 + 'mirror_active'=>'Status',
9598 + 'mirror_rating'=>'Rating',
9599 + 'mirror_name'=>'Host Name',
9600 + 'mirror_baseurl'=>'Address',
9601 + 'region_name'=>'Region',
9602 + 'mirror_count'=>'Hits'
9603 +);
9604 +
9605 +$actions = array(
9606 + 'toggle'=>'Enable/Disable',
9607 + 'edit'=>'Edit',
9608 + 'delete'=>'Delete'
9609 +);
9610 +
9611 +form_start();
9612 +show_list($mirrors,$headers,'radio',$actions);
9613 +form_end();
9614 +
9615 +echo '<h2>Add a Mirror</h2>';
9616 +form_start();
9617 +include_once(INC.'/forms/mirror.php');
9618 +form_submit('add-submit','','button1','Add Mirror');
9619 +form_end();
9620 +
9621 +require_once(FOOTER);
9622 +?>
9623
9624 diff --git a/php/admin/locations.php b/php/admin/locations.php
9625 new file mode 100644
9626 index 0000000..f1bb456
9627 --- /dev/null
9628 +++ b/php/admin/locations.php
9629 @@ -0,0 +1,100 @@
9630 +<?php
9631 +/**
9632 + * File locations.
9633 + * @package mirror
9634 + * @subpackage admin
9635 + */
9636 +$protect=1; // protect this page
9637 +require_once('../cfg/init.php');
9638 +
9639 +// add mirror
9640 +if (!empty($_POST['add-submit'])&&!empty($_POST['location_path'])) {
9641 + if (mirror_insert_location($_POST['product_id'],$_POST['os_id'],$_POST['location_path'])) {
9642 + set_msg('Location added successfully.');
9643 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/locations.php');
9644 + exit;
9645 + } else {
9646 + set_error('Location could not be added because of an unknown error.');
9647 + }
9648 +}
9649 +
9650 +// process actions
9651 +if (!empty($_POST['submit'])) {
9652 + if (!empty($_POST['location_id'])) {
9653 + switch($_POST['action']) {
9654 + case 'edit':
9655 + if (!empty($_POST['doit'])) {
9656 + if (mirror_update_location($_POST['location_id'],$_POST['product_id'],$_POST['os_id'],$_POST['location_path'])) {
9657 + set_msg('Location updated successfully.');
9658 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/locations.php');
9659 + exit;
9660 + } else {
9661 + set_error('Location update failed.');
9662 + }
9663 + } else {
9664 + $title = 'Edit Location';
9665 + $nav = INC.'/admin_nav.php';
9666 + require_once(HEADER);
9667 + echo '<h2>Edit Location</h2>';
9668 + $posts = mirror_get_one_location($_POST['location_id']);
9669 + form_start();
9670 + include_once(INC.'/forms/location.php');
9671 + form_hidden('doit','1');
9672 + form_hidden('action','edit');
9673 + form_hidden('location_id',$_POST['location_id']);
9674 + form_submit('submit','','button1','Update');
9675 + form_end();
9676 + require_once(FOOTER);
9677 + exit;
9678 + }
9679 + break;
9680 + case 'delete':
9681 + if (mirror_delete_location($_POST['location_id'])) {
9682 + set_msg('Location deleted successfully.');
9683 + } else {
9684 + set_error('Location could not be deleted.');
9685 + }
9686 + break;
9687 + }
9688 + } else {
9689 + set_error('You must select a mirror to continue.');
9690 + }
9691 +}
9692 +
9693 +$title = 'Locations';
9694 +$nav = INC.'/admin_nav.php';
9695 +require_once(HEADER);
9696 +echo '<h2>Locations</h2>';
9697 +show_error();
9698 +show_msg();
9699 +
9700 +$locations = mirror_get_locations();
9701 +
9702 +$_GET['sort'] = (!empty($_GET['sort']))?$_GET['sort']:'product_name';
9703 +$_GET['order'] = (!empty($_GET['order']))?$_GET['order']:'ASC';
9704 +$locations = array_order_by($locations,$_GET['sort'],$_GET['order']);
9705 +
9706 +$headers = array(
9707 + 'location_id'=>'',
9708 + 'product_name'=>'Product',
9709 + 'os_name'=>'OS',
9710 + 'location_path'=>'Path'
9711 +);
9712 +
9713 +$actions = array(
9714 + 'edit'=>'Edit',
9715 + 'delete'=>'Delete'
9716 +);
9717 +
9718 +form_start();
9719 +show_list($locations,$headers,'radio',$actions);
9720 +form_end();
9721 +
9722 +echo '<h2>Add a Location</h2>';
9723 +form_start();
9724 +include_once(INC.'/forms/location.php');
9725 +form_submit('add-submit','','button1','Add Location');
9726 +form_end();
9727 +
9728 +require_once(FOOTER);
9729 +?>
9730
9731 diff --git a/php/admin/login.php b/php/admin/login.php
9732 new file mode 100644
9733 index 0000000..5e9d4c3
9734 --- /dev/null
9735 +++ b/php/admin/login.php
9736 @@ -0,0 +1,42 @@
9737 +<?php
9738 +/**
9739 + * Admin login.
9740 + * @package mirror
9741 + * @subpackage admin
9742 + */
9743 +require_once('../cfg/init.php');
9744 +require_once(LIB.'/auth.php');
9745 +
9746 +// authenticate
9747 +if (!empty($_POST['submit'])) {
9748 + if ($auth = auth_mysql($_POST['username'],$_POST['password'])) {
9749 + auth_create_session($auth);
9750 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/');
9751 + exit;
9752 + } else {
9753 + $msg = 'Authentication failed. Please check username and password and try again.';
9754 + }
9755 +}
9756 +
9757 +$title='Gentoo Mirror Manager Login';
9758 +$body_tags=' onload="document.getElementById(\'username\').focus();" ';
9759 +require_once(HEADER);
9760 +?>
9761 +<h1>Gentoo Mirror Manager Login</h1>
9762 +<?php echo (!empty($msg))?'<pre>'.$msg.'</pre>':null; ?>
9763 +<form name="form" id="form" method="post" action="./login.php" >
9764 +<div>
9765 + <label for="username">Username:</label>
9766 + <input type="text" name="username" id="username" size="30" maxlength="100" />
9767 +</div>
9768 +<br />
9769 +<div>
9770 + <label for="password">Password:</label>
9771 + <input type="password" name="password" id="password" size="30" maxlength="100" />
9772 +</div>
9773 +<br />
9774 +<input type="submit" name="submit" id="submit" class="button" value="Log In" />
9775 +</form>
9776 +<?php
9777 +require_once(FOOTER);
9778 +?>
9779
9780 diff --git a/php/admin/logout.php b/php/admin/logout.php
9781 new file mode 100644
9782 index 0000000..d980d9d
9783 --- /dev/null
9784 +++ b/php/admin/logout.php
9785 @@ -0,0 +1,12 @@
9786 +<?php
9787 +/**
9788 + * Admin logout.
9789 + * @package mirror
9790 + * @subpackage admin
9791 + */
9792 +require_once('../cfg/init.php');
9793 +require_once(LIB.'/auth.php');
9794 +auth_logout();
9795 +header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/login.php');
9796 +exit;
9797 +?>
9798
9799 diff --git a/php/admin/lstats.php b/php/admin/lstats.php
9800 new file mode 100644
9801 index 0000000..f7f1900
9802 --- /dev/null
9803 +++ b/php/admin/lstats.php
9804 @@ -0,0 +1,59 @@
9805 +<?php
9806 +/**
9807 + * Location Statistics.
9808 + * @package mirror
9809 + * @subpackage admin
9810 + */
9811 +$protect=1; // protect this page
9812 +require_once('../cfg/init.php');
9813 +
9814 +$stats = db_get("
9815 + SELECT
9816 + IF(mirror_location_mirror_map.location_active='0','DISABLED','ok') as location_active,
9817 + mirror_name,
9818 + mirror_baseurl,
9819 + location_path
9820 + FROM
9821 + mirror_mirrors,
9822 + mirror_location_mirror_map,
9823 + mirror_locations
9824 + WHERE
9825 + mirror_mirrors.mirror_id = mirror_location_mirror_map.mirror_id AND
9826 + mirror_locations.location_id = mirror_location_mirror_map.location_id
9827 +",MYSQL_ASSOC);
9828 +
9829 +$_GET['sort']=(!empty($_GET['sort']))?$_GET['sort']:'location_active';
9830 +$_GET['order']=(!empty($_GET['order']))?$_GET['order']:'ASC';
9831 +$stats=array_order_by($stats,$_GET['sort'],$_GET['order']);
9832 +
9833 +$headers = array(
9834 + 'location_active'=>'Status',
9835 + 'mirror_name'=>'Host Name',
9836 + 'mirror_baseurl'=>'Address',
9837 + 'location_path'=>'Path'
9838 +);
9839 +
9840 +// should we export to csv?
9841 +if (!empty($_GET['csv'])) {
9842 + $csv = array();
9843 + $csv[] = $headers;
9844 + foreach ($stats as $row) {
9845 + $csv[] = $row;
9846 + }
9847 + csv_send_csv($csv);
9848 + exit;
9849 +}
9850 +
9851 +$title = 'Location Statistics';
9852 +$nav = INC.'/admin_nav.php';
9853 +require_once(HEADER);
9854 +echo '<h2>Location Statistics</h2>';
9855 +
9856 +echo '<p>This shows whether or not a server is serving up a certain file.</p>';
9857 +
9858 +show_list($stats,$headers,'simple');
9859 +
9860 +echo '<p><a href="./lstats.php?csv=1&amp;sort='.$_GET['sort'].'&amp;order='.$_GET['order'].'">Save this page as CSV &raquo;</a></p>';
9861 +
9862 +require_once(FOOTER);
9863 +?>
9864
9865 diff --git a/php/admin/mirror-list.php b/php/admin/mirror-list.php
9866 new file mode 100644
9867 index 0000000..c161efd
9868 --- /dev/null
9869 +++ b/php/admin/mirror-list.php
9870 @@ -0,0 +1,74 @@
9871 +<?php
9872 +/**
9873 + * Regions.
9874 + * @package mirror
9875 + * @subpackage admin
9876 + */
9877 +$protect=1; // protect this page
9878 +require_once('../cfg/init.php');
9879 +
9880 +if (!empty($_GET['os'])&&!empty($_GET['product'])) {
9881 + // clean in os and product strings
9882 + $os_name = mysql_real_escape_string(trim(strtolower($_GET['os'])));
9883 + $product_name = mysql_real_escape_string(trim(strtolower($_GET['product'])));
9884 + // get os and product IDs
9885 + $os_id = db_name_to_id('mirror_os','os_id','os_name',$os_name);
9886 + $product_id = db_name_to_id('mirror_products','product_id','product_name',$product_name);
9887 +}
9888 +
9889 +if (!empty($_GET['os_id'])&&!empty($_GET['product_id'])) {
9890 +
9891 + $os_id = intval($_GET['os_id']);
9892 + $product_id = intval($_GET['product_id']);
9893 +
9894 +
9895 + $mirrors = db_get("
9896 + SELECT DISTINCT
9897 + mirror_baseurl
9898 + FROM
9899 + mirror_mirrors
9900 + INNER JOIN
9901 + mirror_location_mirror_map
9902 + ON
9903 + mirror_location_mirror_map.mirror_id = mirror_mirrors.mirror_id
9904 + INNER JOIN
9905 + mirror_locations
9906 + ON
9907 + mirror_location_mirror_map.location_id = mirror_locations.location_id
9908 + WHERE
9909 + mirror_locations.os_id = {$os_id} AND
9910 + mirror_locations.product_id = {$product_id} AND
9911 + mirror_location_mirror_map.location_active = '1' AND
9912 + mirror_mirrors.mirror_active = '1'
9913 + ");
9914 +
9915 + header("Content-type: text/plain;");
9916 + foreach ($mirrors as $mirror) {
9917 + echo $mirror['mirror_baseurl']."\n";
9918 + }
9919 + exit;
9920 +
9921 +} else {
9922 +
9923 + $title = 'Mirror Listing';
9924 + require_once(HEADER);
9925 + echo '<h1>Mirror List</h1>';
9926 + echo '<p>Use this form to get a list of all mirrors serving up active files
9927 + for the selected Product/OS.</p>';
9928 + form_start('list','list','get','./mirror-list.php');
9929 + echo '<div>';
9930 + form_label('Product', 'product','label-small');
9931 + form_select('product_id','product','',mirror_get_products_select(),$posts['product_id']);
9932 + echo ' [<a href="./products.php">edit products</a>]';
9933 + echo '</div><br />';
9934 +
9935 + echo '<div>';
9936 + form_label('OS', 'os','label-small');
9937 + form_select('os_id','os','',mirror_get_oss_select(),$posts['os_id']);
9938 + echo ' [<a href="./os.php">edit operating systems</a>]';
9939 + echo '</div><br />';
9940 + form_submit('submit','','button1','Update');
9941 + form_end();
9942 + require_once(FOOTER);
9943 +}
9944 +?>
9945
9946 diff --git a/php/admin/mstats.php b/php/admin/mstats.php
9947 new file mode 100644
9948 index 0000000..5778d16
9949 --- /dev/null
9950 +++ b/php/admin/mstats.php
9951 @@ -0,0 +1,32 @@
9952 +<?php
9953 +/**
9954 + * Mirror Statistics.
9955 + * @package mirror
9956 + * @subpackage admin
9957 + */
9958 +$protect=1; // protect this page
9959 +require_once('../cfg/init.php');
9960 +
9961 +$title = 'Mirror Statistics';
9962 +$nav = INC.'/admin_nav.php';
9963 +require_once(HEADER);
9964 +echo '<h2>Mirror Statistics</h2>';
9965 +
9966 +$stats = mirror_get_mirror_stats();
9967 +
9968 +$_GET['sort']=(!empty($_GET['sort']))?$_GET['sort']:'count';
9969 +$_GET['order']=(!empty($_GET['order']))?$_GET['order']:'DESC';
9970 +$stats=array_order_by($stats,$_GET['sort'],$_GET['order']);
9971 +
9972 +$headers = array(
9973 + 'count'=>'Hits',
9974 + 'mirror_rating'=>'Rating',
9975 + 'mirror_name'=>'Host Name',
9976 + 'mirror_baseurl'=>'Address',
9977 + 'region_name'=>'Region'
9978 +);
9979 +
9980 +show_list($stats,$headers,'simple');
9981 +
9982 +require_once(FOOTER);
9983 +?>
9984
9985 diff --git a/php/admin/os.php b/php/admin/os.php
9986 new file mode 100644
9987 index 0000000..b150245
9988 --- /dev/null
9989 +++ b/php/admin/os.php
9990 @@ -0,0 +1,100 @@
9991 +<?php
9992 +/**
9993 + * Operating Systems.
9994 + * @package mirror
9995 + * @subpackage admin
9996 + */
9997 +$protect=1; // protect this page
9998 +require_once('../cfg/init.php');
9999 +
10000 +// add os
10001 +if (!empty($_POST['add-submit'])&&!empty($_POST['os_name'])) {
10002 + if (mirror_insert_os($_POST['os_name'],$_POST['os_priority'])) {
10003 + set_msg('OS added successfully.');
10004 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/os.php');
10005 + exit;
10006 + } else {
10007 + set_error('OS could not be added because of an unknown error.');
10008 + }
10009 +}
10010 +
10011 +// process actions
10012 +if (!empty($_POST['submit'])) {
10013 + if (!empty($_POST['os_id'])) {
10014 + switch($_POST['action']) {
10015 + case 'edit':
10016 + if (!empty($_POST['doit'])) {
10017 + if (mirror_update_os($_POST['os_id'],$_POST['os_name'],$_POST['os_priority'])) {
10018 + set_msg('OS updated successfully.');
10019 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/os.php');
10020 + exit;
10021 + } else {
10022 + set_error('OS update failed.');
10023 + }
10024 + } else {
10025 + $title = 'Edit OS';
10026 + $nav = INC.'/admin_nav.php';
10027 + require_once(HEADER);
10028 + echo '<h2>Edit OS</h2>';
10029 + $posts = mirror_get_one_os($_POST['os_id']);
10030 + form_start();
10031 + include_once(INC.'/forms/os.php');
10032 + form_hidden('doit','1');
10033 + form_hidden('action','edit');
10034 + form_hidden('os_id',$_POST['os_id']);
10035 + form_submit('submit','','button1','Update');
10036 + form_end();
10037 + require_once(FOOTER);
10038 + exit;
10039 + }
10040 + break;
10041 + case 'delete':
10042 + if (!record_exists('mirror_locations','os_id',$_POST['os_id'])&&mirror_delete_os($_POST['os_id'])) {
10043 + set_msg('OS deleted successfully.');
10044 + } else {
10045 + set_error('OS cannot be deleted because it is being used by a file location.');
10046 + }
10047 + break;
10048 + }
10049 + } else {
10050 + set_error('You must select a os to continue.');
10051 + }
10052 +}
10053 +
10054 +$title = 'Operating Systems';
10055 +$nav = INC.'/admin_nav.php';
10056 +require_once(HEADER);
10057 +echo '<h2>Operating Systems</h1>';
10058 +
10059 +show_error();
10060 +show_msg();
10061 +
10062 +$oss = mirror_get_oss();
10063 +
10064 +$_GET['sort']=(!empty($_GET['sort']))?$_GET['sort']:'os_name';
10065 +$_GET['order']=(!empty($_GET['order']))?$_GET['order']:'ASC';
10066 +$oss=array_order_by($oss,$_GET['sort'],$_GET['order']);
10067 +
10068 +$headers = array(
10069 + 'os_id'=>'',
10070 + 'os_name'=>'OS Name',
10071 + 'os_priority'=>'Priority'
10072 +);
10073 +
10074 +$actions = array(
10075 + 'edit'=>'Edit',
10076 + 'delete'=>'Delete'
10077 +);
10078 +
10079 +form_start();
10080 +show_list($oss,$headers,'radio',$actions);
10081 +form_end();
10082 +
10083 +echo '<h2>Add a OS</h2>';
10084 +form_start();
10085 +include_once(INC.'/forms/os.php');
10086 +form_submit('add-submit','','button1','Add OS');
10087 +form_end();
10088 +
10089 +require_once(FOOTER);
10090 +?>
10091
10092 diff --git a/php/admin/products.php b/php/admin/products.php
10093 new file mode 100644
10094 index 0000000..e93686f
10095 --- /dev/null
10096 +++ b/php/admin/products.php
10097 @@ -0,0 +1,101 @@
10098 +<?php
10099 +/**
10100 + * Products.
10101 + * @package mirror
10102 + * @subpackage admin
10103 + */
10104 +$protect=1; // protect this page
10105 +require_once('../cfg/init.php');
10106 +
10107 +// add product
10108 +if (!empty($_POST['add-submit'])&&!empty($_POST['product_name'])) {
10109 + if (mirror_insert_product($_POST['product_name'],$_POST['product_priority'])) {
10110 + set_msg('Product added successfully.');
10111 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/products.php');
10112 + exit;
10113 + } else {
10114 + set_error('Product could not be added because of an unknown error.');
10115 + }
10116 +}
10117 +
10118 +// process actions
10119 +if (!empty($_POST['submit'])) {
10120 + if (!empty($_POST['product_id'])) {
10121 + switch($_POST['action']) {
10122 + case 'edit':
10123 + if (!empty($_POST['doit'])) {
10124 + if (mirror_update_product($_POST['product_id'],$_POST['product_name'],$_POST['product_priority'])) {
10125 + set_msg('Product updated successfully.');
10126 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/products.php');
10127 + exit;
10128 + } else {
10129 + set_error('Product update failed.');
10130 + }
10131 + } else {
10132 + $title = 'Edit Product';
10133 + $nav = INC.'/admin_nav.php';
10134 + require_once(HEADER);
10135 + echo '<h2>Edit Product</h2>';
10136 + $posts = mirror_get_one_product($_POST['product_id']);
10137 + form_start();
10138 + include_once(INC.'/forms/product.php');
10139 + form_hidden('doit','1');
10140 + form_hidden('action','edit');
10141 + form_hidden('product_id',$_POST['product_id']);
10142 + form_submit('submit','','button1','Update');
10143 + form_end();
10144 + require_once(FOOTER);
10145 + exit;
10146 + }
10147 + break;
10148 + case 'delete':
10149 + if (!record_exists('mirror_locations','product_id',$_POST['product_id'])&&mirror_delete_product($_POST['product_id'])) {
10150 + set_msg('Product deleted successfully.');
10151 + } else {
10152 + set_error('Product cannot be deleted because it is being used by a file location.');
10153 + }
10154 + break;
10155 + }
10156 + } else {
10157 + set_error('You must select a product to continue.');
10158 + }
10159 +}
10160 +
10161 +$title = 'Products';
10162 +$nav = INC.'/admin_nav.php';
10163 +require_once(HEADER);
10164 +echo '<h2>Products</h1>';
10165 +
10166 +show_error();
10167 +show_msg();
10168 +
10169 +$products = mirror_get_products();
10170 +
10171 +$_GET['sort']=(!empty($_GET['sort']))?$_GET['sort']:'product_name';
10172 +$_GET['order']=(!empty($_GET['order']))?$_GET['order']:'ASC';
10173 +$products=array_order_by($products,$_GET['sort'],$_GET['order']);
10174 +
10175 +$headers = array(
10176 + 'product_id'=>'',
10177 + 'product_name'=>'Product Name',
10178 + 'product_priority'=>'Priority',
10179 + 'product_count'=>'Downloads'
10180 +);
10181 +
10182 +$actions = array(
10183 + 'edit'=>'Edit',
10184 + 'delete'=>'Delete'
10185 +);
10186 +
10187 +form_start();
10188 +show_list($products,$headers,'radio',$actions);
10189 +form_end();
10190 +
10191 +echo '<h2>Add a Product</h2>';
10192 +form_start();
10193 +include_once(INC.'/forms/product.php');
10194 +form_submit('add-submit','','button1','Add Product');
10195 +form_end();
10196 +
10197 +require_once(FOOTER);
10198 +?>
10199
10200 diff --git a/php/admin/pstats.php b/php/admin/pstats.php
10201 new file mode 100644
10202 index 0000000..e0b4aff
10203 --- /dev/null
10204 +++ b/php/admin/pstats.php
10205 @@ -0,0 +1,29 @@
10206 +<?php
10207 +/**
10208 + * Product Statistics.
10209 + * @package mirror
10210 + * @subpackage admin
10211 + */
10212 +$protect=1; // protect this page
10213 +require_once('../cfg/init.php');
10214 +
10215 +$title = 'Product Statistics';
10216 +$nav = INC.'/admin_nav.php';
10217 +require_once(HEADER);
10218 +echo '<h2>Product Statistics</h2>';
10219 +
10220 +$stats = mirror_get_product_stats();
10221 +
10222 +$_GET['sort']=(!empty($_GET['sort']))?$_GET['sort']:'count';
10223 +$_GET['order']=(!empty($_GET['order']))?$_GET['order']:'DESC';
10224 +$stats=array_order_by($stats,$_GET['sort'],$_GET['order']);
10225 +
10226 +$headers = array(
10227 + 'count'=>'Hits',
10228 + 'product_name'=>'Product'
10229 +);
10230 +
10231 +show_list($stats,$headers,'simple');
10232 +
10233 +require_once(FOOTER);
10234 +?>
10235
10236 diff --git a/php/admin/regions.php b/php/admin/regions.php
10237 new file mode 100644
10238 index 0000000..f42c0da
10239 --- /dev/null
10240 +++ b/php/admin/regions.php
10241 @@ -0,0 +1,101 @@
10242 +<?php
10243 +/**
10244 + * Regions.
10245 + * @package mirror
10246 + * @subpackage admin
10247 + */
10248 +$protect=1; // protect this page
10249 +require_once('../cfg/init.php');
10250 +
10251 +// add region
10252 +if (!empty($_POST['add-submit'])&&!empty($_POST['region_name'])) {
10253 + if (mirror_insert_region($_POST['region_name'],$_POST['region_priority'])) {
10254 + set_msg('Region added successfully.');
10255 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/regions.php');
10256 + exit;
10257 + } else {
10258 + set_error('Region could not be added because of an unknown error.');
10259 + }
10260 +}
10261 +
10262 +// process actions
10263 +if (!empty($_POST['submit'])) {
10264 + if (!empty($_POST['region_id'])) {
10265 + switch($_POST['action']) {
10266 + case 'edit':
10267 + if (!empty($_POST['doit'])) {
10268 + if (mirror_update_region($_POST['region_id'],$_POST['region_name'],$_POST['region_priority'])) {
10269 + set_msg('Region updated successfully.');
10270 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/regions.php');
10271 + exit;
10272 + } else {
10273 + set_error('Region update failed.');
10274 + }
10275 + } else {
10276 + $title = 'Edit Region';
10277 + $nav = INC.'/admin_nav.php';
10278 + require_once(HEADER);
10279 + echo '<h2>Edit Region</h2>';
10280 + $posts = mirror_get_one_region($_POST['region_id']);
10281 + form_start();
10282 + include_once(INC.'/forms/region.php');
10283 + form_hidden('doit','1');
10284 + form_hidden('action','edit');
10285 + form_hidden('region_id',$_POST['region_id']);
10286 + form_submit('submit','','button1','Update');
10287 + form_end();
10288 + require_once(FOOTER);
10289 + exit;
10290 + }
10291 + break;
10292 + case 'delete':
10293 + if (!record_exists('mirror_mirror_region_map','region_id',$_POST['region_id'])&&mirror_delete_region($_POST['region_id'])) {
10294 + set_msg('Region deleted successfully.');
10295 + } else {
10296 + set_error('Region cannot be deleted because it is linked to a mirror.');
10297 + }
10298 + break;
10299 + }
10300 + } else {
10301 + set_error('You must select a region to continue.');
10302 + }
10303 +}
10304 +
10305 +$title = 'Regions';
10306 +$nav = INC.'/admin_nav.php';
10307 +require_once(HEADER);
10308 +echo '<h2>Regions</h2>';
10309 +
10310 +show_error();
10311 +show_msg();
10312 +
10313 +$regions = mirror_get_regions();
10314 +
10315 +$_GET['sort']=(!empty($_GET['sort']))?$_GET['sort']:'region_name';
10316 +$_GET['order']=(!empty($_GET['order']))?$_GET['order']:'ASC';
10317 +$regions=array_order_by($regions,$_GET['sort'],$_GET['order']);
10318 +
10319 +$headers = array(
10320 + 'region_id'=>'',
10321 + 'region_name'=>'Region Name',
10322 + 'mirrors'=>'Mirrors',
10323 + 'region_priority'=>'Priority'
10324 +);
10325 +
10326 +$actions = array(
10327 + 'edit'=>'Edit',
10328 + 'delete'=>'Delete'
10329 +);
10330 +
10331 +form_start();
10332 +show_list($regions,$headers,'radio',$actions);
10333 +form_end();
10334 +
10335 +echo '<h2>Add a Region</h2>';
10336 +form_start();
10337 +include_once(INC.'/forms/region.php');
10338 +form_submit('add-submit','','button1','Add Region');
10339 +form_end();
10340 +
10341 +require_once(FOOTER);
10342 +?>
10343
10344 diff --git a/php/admin/users.php b/php/admin/users.php
10345 new file mode 100644
10346 index 0000000..3017c49
10347 --- /dev/null
10348 +++ b/php/admin/users.php
10349 @@ -0,0 +1,104 @@
10350 +<?php
10351 +/**
10352 + * Users.
10353 + * @package mirror
10354 + * @subpackage admin
10355 + */
10356 +$protect=1; // protect this page
10357 +require_once('../cfg/init.php');
10358 +
10359 +// add user
10360 +if (!empty($_POST['add-submit'])&&!empty($_POST['username'])&&!empty($_POST['password'])&&!empty($_POST['rpassword'])) {
10361 + if (mirror_insert_user($_POST['username'],$_POST['password'],$_POST['rpassword'],$_POST['user_firstname'],$_POST['user_lastname'],$_POST['user_email'])) {
10362 + set_msg('User added successfully.');
10363 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/users.php');
10364 + exit;
10365 + } else {
10366 + set_error('User could not be added because of an unknown error.');
10367 + }
10368 +}
10369 +
10370 +// process actions
10371 +if (!empty($_POST['submit'])) {
10372 + if (!empty($_POST['user_id'])) {
10373 + switch($_POST['action']) {
10374 + case 'edit':
10375 + if (!empty($_POST['doit'])) {
10376 + if (mirror_update_user($_POST['user_id'],$_POST['username'],$_POST['password'],$_POST['rpassword'],$_POST['user_firstname'],$_POST['user_lastname'],$_POST['user_email'])) {
10377 + set_msg('User updated successfully.');
10378 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/users.php');
10379 + exit;
10380 + } else {
10381 + set_error('User update failed.');
10382 + }
10383 + } else {
10384 + $title = 'Edit User';
10385 + $nav = INC.'/admin_nav.php';
10386 + require_once(HEADER);
10387 + echo '<h2>Edit User</h2>';
10388 + $posts = mirror_get_one_user($_POST['user_id']);
10389 + form_start();
10390 + include_once(INC.'/forms/user.php');
10391 + form_hidden('doit','1');
10392 + form_hidden('action','edit');
10393 + form_hidden('user_id',$_POST['user_id']);
10394 + form_submit('submit','','button1','Update');
10395 + form_end();
10396 + require_once(FOOTER);
10397 + exit;
10398 + }
10399 + break;
10400 + case 'delete':
10401 + if ($_POST['user_id']==$_SESSION['user']['user_id']) {
10402 + set_error('You cannot delete yourself.');
10403 + } elseif (mirror_delete_user($_POST['user_id'])) {
10404 + set_msg('User deleted successfully.');
10405 + } else {
10406 + set_error('User could not be deleted because of an error.');
10407 + }
10408 + break;
10409 + }
10410 + } else {
10411 + set_error('You must select a user to continue.');
10412 + }
10413 +}
10414 +
10415 +$title = 'Users';
10416 +$nav = INC.'/admin_nav.php';
10417 +require_once(HEADER);
10418 +echo '<h2>Users</h2>';
10419 +
10420 +show_error();
10421 +show_msg();
10422 +
10423 +$users = mirror_get_users();
10424 +
10425 +$_GET['sort'] = (!empty($_GET['sort']))?$_GET['sort']:'user_lastname';
10426 +$_GET['order'] = (!empty($_GET['order']))?$_GET['order']:'ASC';
10427 +$users = array_order_by($users,$_GET['sort'],$_GET['order']);
10428 +
10429 +$headers = array(
10430 + 'user_id'=>'',
10431 + 'user_lastname'=>'Last',
10432 + 'user_firstname'=>'First',
10433 + 'user_email'=>'Email',
10434 + 'username'=>'Username'
10435 +);
10436 +
10437 +$actions = array(
10438 + 'edit'=>'Edit',
10439 + 'delete'=>'Delete'
10440 +);
10441 +
10442 +form_start();
10443 +show_list($users,$headers,'radio',$actions);
10444 +form_end();
10445 +
10446 +echo '<h2>Add a User</h2>';
10447 +form_start();
10448 +include_once(INC.'/forms/user.php');
10449 +form_submit('add-submit','','button1','Add User');
10450 +form_end();
10451 +
10452 +require_once(FOOTER);
10453 +?>
10454
10455 diff --git a/php/cfg/admin_init.php b/php/cfg/admin_init.php
10456 new file mode 100644
10457 index 0000000..7d22ab3
10458 --- /dev/null
10459 +++ b/php/cfg/admin_init.php
10460 @@ -0,0 +1,15 @@
10461 +<?php
10462 +/**
10463 + * Admin initialization.
10464 + * @package mirror
10465 + * @subpackage cfg
10466 + */
10467 +require_once(LIB.'/auth.php'); // auth functions
10468 +require_once(LIB.'/forms.php'); // form library
10469 +require_once(LIB.'/list.php'); // list library
10470 +
10471 +if (!auth_is_valid_session()) {
10472 + header('Location: http://'.$_SERVER['HTTP_HOST'].WEBPATH.'/admin/login.php');
10473 + exit;
10474 +}
10475 +?>
10476
10477 diff --git a/php/cfg/config-dist.php b/php/cfg/config-dist.php
10478 new file mode 100644
10479 index 0000000..308e844
10480 --- /dev/null
10481 +++ b/php/cfg/config-dist.php
10482 @@ -0,0 +1,18 @@
10483 +<?php
10484 +/**
10485 + * Mirror configuration document.
10486 + * @package mirror
10487 + * @subpackage cfg
10488 + */
10489 +define('FILEPATH','/var/www/download'); // filepath of root dir
10490 +define('WEBPATH',''); // web path of root dir
10491 +define('LIB',FILEPATH.'/lib'); // path to lib dir
10492 +define('INC',FILEPATH.'/inc'); // path to inc dir
10493 +define('HEADER',INC.'/header.php'); // header document
10494 +define('FOOTER',INC.'/footer.php'); // footer document
10495 +define('DBHOST', ''); // db host
10496 +define('DBNAME', ''); // db name
10497 +define('DBUSER', ''); // db user
10498 +define('DBPASS', ''); // db pass
10499 +define('LOGGING',1); // enable logging? 1=on 0=off
10500 +?>
10501
10502 diff --git a/php/cfg/init.php b/php/cfg/init.php
10503 new file mode 100644
10504 index 0000000..4eb6ed0
10505 --- /dev/null
10506 +++ b/php/cfg/init.php
10507 @@ -0,0 +1,18 @@
10508 +<?php
10509 +/**
10510 + * Init.
10511 + * @package mirror
10512 + * @subpackage cfg
10513 + */
10514 +require_once('config.php'); // config file that defines constants
10515 +require_once(LIB.'/util.php'); // util file for random functions (no SQL here)
10516 +require_once(LIB.'/csv.php'); // util file for random functions (no SQL here)
10517 +$start = microtime_float(); // start timer
10518 +require_once(LIB.'/mirror.php'); // user and admin functions for the mirror app (some SQL)
10519 +require_once(LIB.'/db.php'); // core mysql wrappers used in mirror functions
10520 +db_connect(DBHOST,DBUSER,DBPASS); // open persistent connection to db
10521 +db_select(DBNAME); // select db
10522 +if (!empty($protect)) {
10523 + require_once('admin_init.php');
10524 +}
10525 +?>
10526
10527 diff --git a/php/css/print.css b/php/css/print.css
10528 new file mode 100644
10529 index 0000000..e69de29
10530
10531 diff --git a/php/css/screen.css b/php/css/screen.css
10532 new file mode 100644
10533 index 0000000..e2e67c9
10534 --- /dev/null
10535 +++ b/php/css/screen.css
10536 @@ -0,0 +1,84 @@
10537 +/* nav */
10538 +ul#nav li a {
10539 + font-weight:bold;
10540 +}
10541 +ul#nav li ul li a {
10542 + font-weight:normal;
10543 +}
10544 +.logout {
10545 + color:#f00;
10546 +}
10547 +
10548 +/* forms */
10549 +.label-small {
10550 + display: inline;
10551 + float: left;
10552 + width: 8em;
10553 + padding-right: 1ex;
10554 + text-align:right;
10555 +}
10556 +.label-medium{
10557 + display: inline;
10558 + float: left;
10559 + width: 14em;
10560 + padding-right: 1ex;
10561 + text-align:right;
10562 +}
10563 +.label-large{
10564 + display: inline;
10565 + float: left;
10566 + width: 20em;
10567 + padding-right: 1ex;
10568 + text-align:right;
10569 +}
10570 +.button1 {
10571 + background-color:#9c9;
10572 + cursor:pointer;
10573 +}
10574 +.button1:hover {
10575 + background-color:#fff;
10576 + border:inset 2px #999;
10577 +}
10578 +
10579 +/* lists */
10580 +.list {
10581 + margin-top:.5em;
10582 +}
10583 +.list td {
10584 + padding:.2em;
10585 + text-align:left;
10586 +}
10587 +.list td label {
10588 + border-bottom:1px dashed #999;
10589 + font-weight:normal;
10590 +}
10591 +.list th {
10592 + background:#eee;
10593 + border:1px solid #000;
10594 + font-weight:bold;
10595 + padding:0;
10596 +}
10597 +.list th a {
10598 + display:block;
10599 + padding:.2em 1.2em .2em .2em;
10600 + text-align:left;
10601 +}
10602 +.list th a:hover {
10603 + background-color:#fff;
10604 +}
10605 +.row1 {
10606 + background:#ddd;
10607 +}
10608 +.row2 {
10609 + background:#ccc;
10610 +}
10611 +.row1:hover, .row2:hover {
10612 + background-color:#fff;
10613 +}
10614 +.sort-desc {
10615 + background:#ccf url(../img/up.gif) no-repeat right;
10616 +}
10617 +.sort-asc {
10618 + background:#ccf url(../img/down.gif) no-repeat right;
10619 +}
10620 +
10621
10622 diff --git a/php/images/gridtest.gif b/php/images/gridtest.gif
10623 new file mode 100644
10624 index 0000000..6dd05dc
10625 Binary files /dev/null and b/php/images/gridtest.gif differ
10626
10627 diff --git a/php/images/gtop-www.jpg b/php/images/gtop-www.jpg
10628 new file mode 100644
10629 index 0000000..4122618
10630 Binary files /dev/null and b/php/images/gtop-www.jpg differ
10631
10632 diff --git a/php/img/down.gif b/php/img/down.gif
10633 new file mode 100644
10634 index 0000000..2813965
10635 Binary files /dev/null and b/php/img/down.gif differ
10636
10637 diff --git a/php/img/up.gif b/php/img/up.gif
10638 new file mode 100644
10639 index 0000000..6d5a795
10640 Binary files /dev/null and b/php/img/up.gif differ
10641
10642 diff --git a/php/inc/admin_nav.php b/php/inc/admin_nav.php
10643 new file mode 100644
10644 index 0000000..073ab0a
10645 --- /dev/null
10646 +++ b/php/inc/admin_nav.php
10647 @@ -0,0 +1,27 @@
10648 +<?php
10649 +/**
10650 + * Admin navigation.
10651 + * @package mirror
10652 + * @subpackage inc
10653 + */
10654 +?>
10655 +<div id="side">
10656 +<ul id="nav">
10657 +<li><a href="<?php echo WEBPATH; ?>/admin/logout.php" class="logout" title="Logout to end your session.">&laquo; Logout <?php echo $_SESSION['user']['username']?></a></li>
10658 +<li>
10659 + <a href="<?php echo WEBPATH; ?>/admin/" title="Manage current mirrors.">Mirrors</a>
10660 + <ul>
10661 + <li><a href="<?php echo WEBPATH; ?>/admin/regions.php" title="A region is an area that has a set of mirrors.">Regions</a></li>
10662 + </ul>
10663 +</li>
10664 +<li>
10665 + <a href="<?php echo WEBPATH; ?>/admin/products.php" title="Products (firefox, thunderbird, etc.)">Products</a>
10666 + <ul>
10667 + <li><a href="<?php echo WEBPATH; ?>/admin/locations.php" title="Product file locations based on OS.">File Locations</a></li>
10668 + <li><a href="<?php echo WEBPATH; ?>/admin/os.php" title="Operating systems.">Operating Systems</a></li>
10669 + <li><a href="<?php echo WEBPATH; ?>/admin/lstats.php" title="View location statuses.">Location Statuses</a></li>
10670 + </ul>
10671 +</li>
10672 +<li><a href="<?php echo WEBPATH; ?>/admin/users.php" title="Manage administrator accounts.">Users</a></li>
10673 +</ul>
10674 +</div>
10675
10676 diff --git a/php/inc/footer.php b/php/inc/footer.php
10677 new file mode 100644
10678 index 0000000..efa17e7
10679 --- /dev/null
10680 +++ b/php/inc/footer.php
10681 @@ -0,0 +1,24 @@
10682 +<?php
10683 +/**
10684 + * Footer document.
10685 + * @package mirror
10686 + * @subpackage inc
10687 + */
10688 +?>
10689 +</td></tr></table></td></tr></table>
10690 +<hr class="hide">
10691 +</div>
10692 +<?php
10693 +if (!empty($nav)) {
10694 + echo '</div>';
10695 +}
10696 +?>
10697 +<div id="footer">
10698 +<p class="copyright">Copyright &copy; 2005 The Gentoo Foundation, portions Copyright &copy; 1998-2004 The Mozilla Organization</p>
10699 +</div>
10700 +</div>
10701 +</body>
10702 +</html>
10703 +<?php
10704 +ob_end_flush();
10705 +?>
10706
10707 diff --git a/php/inc/forms/location.php b/php/inc/forms/location.php
10708 new file mode 100644
10709 index 0000000..60e35cb
10710 --- /dev/null
10711 +++ b/php/inc/forms/location.php
10712 @@ -0,0 +1,23 @@
10713 +<?php
10714 +/**
10715 + * File location form.
10716 + * @package mirror
10717 + * @subpackage forms
10718 + */
10719 +echo '<div>';
10720 +form_label('Product', 'product','label-small');
10721 +form_select('product_id','product','',mirror_get_products_select(),$posts['product_id']);
10722 +echo ' [<a href="./products.php">edit products</a>]';
10723 +echo '</div><br />';
10724 +
10725 +echo '<div>';
10726 +form_label('OS', 'os','label-small');
10727 +form_select('os_id','os','',mirror_get_oss_select(),$posts['os_id']);
10728 +echo ' [<a href="./os.php">edit operating systems</a>]';
10729 +echo '</div><br />';
10730 +
10731 +echo '<div>';
10732 +form_label('File Location', 'floc','label-small');
10733 +form_text('location_path', 'floc', '', $posts['location_path'], 30, 100);
10734 +echo '</div><br />';
10735 +?>
10736
10737 diff --git a/php/inc/forms/mirror.php b/php/inc/forms/mirror.php
10738 new file mode 100644
10739 index 0000000..c1e7dcb
10740 --- /dev/null
10741 +++ b/php/inc/forms/mirror.php
10742 @@ -0,0 +1,27 @@
10743 +<?php
10744 +/**
10745 + * Region form.
10746 + * @package mirror
10747 + * @subpackage forms
10748 + */
10749 +echo '<div>';
10750 +form_label('Mirror Name', 'mname','label-small');
10751 +form_text('mirror_name', 'mname', '', $posts['mirror_name'], 30, 100);
10752 +echo '</div><br />';
10753 +
10754 +echo '<div>';
10755 +form_label('Region', 'mregion','label-small');
10756 +form_select('region_id','mregion','',mirror_get_regions_select(),$posts['region_id']);
10757 +echo ' [<a href="./regions.php">edit regions</a>]';
10758 +echo '</div><br />';
10759 +
10760 +echo '<div>';
10761 +form_label('Base URL', 'murl','label-small');
10762 +form_text('mirror_baseurl', 'murl', '', $posts['mirror_baseurl'], 30, 100);
10763 +echo '</div><br />';
10764 +
10765 +echo '<div>';
10766 +form_label('Rating', 'mrating','label-small');
10767 +form_text('mirror_rating', 'mrating', '', $posts['mirror_rating'], 30, 100);
10768 +echo '</div><br />';
10769 +?>
10770
10771 diff --git a/php/inc/forms/os.php b/php/inc/forms/os.php
10772 new file mode 100644
10773 index 0000000..63a7643
10774 --- /dev/null
10775 +++ b/php/inc/forms/os.php
10776 @@ -0,0 +1,16 @@
10777 +<?php
10778 +/**
10779 + * OS form.
10780 + * @package mirror
10781 + * @subpackage forms
10782 + */
10783 +echo '<div>';
10784 +form_label('OS Name', 'oname','label-small');
10785 +form_text('os_name', 'oname', '', $posts['os_name'], 30, 100);
10786 +echo '</div><br />';
10787 +
10788 +echo '<div>';
10789 +form_label('Priority', 'p','label-small');
10790 +form_text('os_priority', 'p', '', $posts['os_priority'], 30, 100);
10791 +echo '</div><br />';
10792 +?>
10793
10794 diff --git a/php/inc/forms/product.php b/php/inc/forms/product.php
10795 new file mode 100644
10796 index 0000000..0dc3c04
10797 --- /dev/null
10798 +++ b/php/inc/forms/product.php
10799 @@ -0,0 +1,16 @@
10800 +<?php
10801 +/**
10802 + * Product form.
10803 + * @package mirror
10804 + * @subpackage forms
10805 + */
10806 +echo '<div>';
10807 +form_label('Product Name', 'pname','label-small');
10808 +form_text('product_name', 'pname', '', $posts['product_name'], 30, 100);
10809 +echo '</div><br />';
10810 +
10811 +echo '<div>';
10812 +form_label('Priority', 'pty','label-small');
10813 +form_text('product_priority', 'pty', '', $posts['product_priority'], 30, 100);
10814 +echo '</div><br />';
10815 +?>
10816
10817 diff --git a/php/inc/forms/region.php b/php/inc/forms/region.php
10818 new file mode 100644
10819 index 0000000..9262809
10820 --- /dev/null
10821 +++ b/php/inc/forms/region.php
10822 @@ -0,0 +1,16 @@
10823 +<?php
10824 +/**
10825 + * Region form.
10826 + * @package mirror
10827 + * @subpackage forms
10828 + */
10829 +echo '<div>';
10830 +form_label('Region Name', 'rname','label-small');
10831 +form_text('region_name', 'rname', '', $posts['region_name'], 30, 100);
10832 +echo '</div><br />';
10833 +
10834 +echo '<div>';
10835 +form_label('Priority', 'rp','label-small');
10836 +form_text('region_priority', 'rp', '', $posts['region_priority'], 30, 100);
10837 +echo '</div><br />';
10838 +?>
10839
10840 diff --git a/php/inc/forms/user.php b/php/inc/forms/user.php
10841 new file mode 100644
10842 index 0000000..bfd92bc
10843 --- /dev/null
10844 +++ b/php/inc/forms/user.php
10845 @@ -0,0 +1,37 @@
10846 +<?php
10847 +/**
10848 + * User form.
10849 + * @package mirror
10850 + * @subpackage forms
10851 + */
10852 +echo '<div>';
10853 +form_label('Username', 'uname','label-small');
10854 +form_text('username', 'uname', '', $posts['username'], 30, 100);
10855 +echo '</div><br />';
10856 +
10857 +echo '<div>';
10858 +form_label('Password', 'password','label-small');
10859 +form_password('password', 'password', '', 30, 100);
10860 +echo '</div><br />';
10861 +
10862 +echo '<div>';
10863 +form_label('Re-enter Password', 'rpassword','label-small');
10864 +form_password('rpassword', 'rpassword', '', 30, 100);
10865 +echo '</div><br />';
10866 +
10867 +echo '<div>';
10868 +form_label('First Name', 'fname','label-small');
10869 +form_text('user_firstname', 'fname', '', $posts['user_firstname'], 30, 100);
10870 +echo '</div><br />';
10871 +
10872 +echo '<div>';
10873 +form_label('Last Name', 'lname','label-small');
10874 +form_text('user_lastname', 'lname', '', $posts['user_lastname'], 30, 100);
10875 +echo '</div><br />';
10876 +
10877 +echo '<div>';
10878 +form_label('Email', 'email','label-small');
10879 +form_text('user_email', 'email', '', $posts['user_email'], 30, 100);
10880 +echo '</div><br />';
10881 +
10882 +?>
10883
10884 diff --git a/php/inc/header.php b/php/inc/header.php
10885 new file mode 100644
10886 index 0000000..dbe97b2
10887 --- /dev/null
10888 +++ b/php/inc/header.php
10889 @@ -0,0 +1,55 @@
10890 +<?php
10891 +/**
10892 + * Header document.
10893 + * @package mirror
10894 + * @subpackage inc
10895 + */
10896 +ob_start();
10897 +?>
10898 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
10899 +<html>
10900 +<head>
10901 +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
10902 +<link rel="home" title="Home" href="http://www.gentoo.org/">
10903 +<link rel="stylesheet" type="text/css" href="http://www.gentoo.org/css/main.css" media="all">
10904 +<link rel="stylesheet" type="text/css" href="<?php echo WEBPATH; ?>/css/screen.css" media="screen">
10905 +
10906 +<link rel="icon" href="http://www.gentoo.org/favicon.ico" type="image/png">
10907 +<title><?php echo $title; ?></title>
10908 +<meta name="robots" content="all">
10909 +<meta name="keywords" content="gentoo linux distribution source compile">
10910 +<?php echo (!empty($extra_headers))?$extra_headers:null?>
10911 +</head>
10912 +<body id="www-mozilla-org" class="secondLevel"<?php echo (!empty($body_tags))?' '.$body_tags.' ':null; ?>>
10913 +<div id="container">
10914 +<div id="header">
10915 +
10916 +<table border="0" width="100%" cellspacing="0" cellpadding="0">
10917 +<tr>
10918 +<td valign="top" height="125" width="1%" bgcolor="#45347b"><a href="/"><img border="0" src="/images/gtop-www.jpg" alt="Gentoo Logo"></a></td>
10919 +<td valign="bottom" align="left" bgcolor="#000000" colspan="2"><p class="menu">
10920 + <H2><font color="#FFFFFF">&nbsp;&nbsp; Gentoo Mirror Management</font></H2>
10921 + </p></td>
10922 +</tr>
10923 +<tr>
10924 +<td valign="top" align="right" width="1%" bgcolor="#dddaec"><table width="100%" cellspacing="0" cellpadding="0" border="0">
10925 +<tr><td height="1%" valign="top" align="right"><img src="/images/gridtest.gif" alt="Gentoo Spaceship"></td></tr>
10926 +<tr><td height="99%" valign="top" align="right"><table cellspacing="0" cellpadding="5" border="0"><tr><td valign="top">
10927 +<p class="altmenu">
10928 +<?php
10929 +if (!empty($nav)) {
10930 + require_once($nav);
10931 +}
10932 +?>
10933 +</p>
10934 +
10935 +<br><br>
10936 +</td></tr></table></td></tr></table>
10937 +</td><td><table><tr><td>&nbsp;&nbsp;</td><td>
10938 +
10939 +</div>
10940 +<div id="mBody">
10941 +<?php
10942 + echo '<div id="mainContent">';
10943 +?>
10944 +
10945
10946 diff --git a/php/inc/nav.php b/php/inc/nav.php
10947 new file mode 100644
10948 index 0000000..e69de29
10949
10950 diff --git a/php/index-list.php b/php/index-list.php
10951 new file mode 100644
10952 index 0000000..1705ee6
10953 --- /dev/null
10954 +++ b/php/index-list.php
10955 @@ -0,0 +1,83 @@
10956 +<?php
10957 +/**
10958 + * Regions.
10959 + * @package mirror
10960 + * @subpackage admin
10961 + */
10962 +require_once('./cfg/init.php');
10963 +require_once(LIB.'/auth.php'); // auth functions
10964 +require_once(LIB.'/forms.php'); // form library
10965 +require_once(LIB.'/list.php'); // list library
10966 +error_reporting(E_GET);
10967 +
10968 +if (!empty($_GET['os'])&&!empty($_GET['product'])) {
10969 + // clean in os and product strings
10970 + $os_name = mysql_real_escape_string(trim(strtolower($_GET['os'])));
10971 + $product_name = mysql_real_escape_string(trim(strtolower($_GET['product'])));
10972 + // get os and product IDs
10973 + $os_id = db_name_to_id('mirror_os','os_id','os_name',$os_name);
10974 + $product_id = db_name_to_id('mirror_products','product_id','product_name',$product_name);
10975 +}
10976 +if (!empty($_GET['os_id'])&&!empty($_GET['product_id'])) {
10977 + $os_id = intval($_GET['os_id']);
10978 + $product_id = intval($_GET['product_id']);
10979 +}
10980 +
10981 +if (!empty($os_id)&&!empty($product_id)) {
10982 +
10983 + $mirrors = db_get("
10984 + SELECT DISTINCT
10985 + mirror_baseurl, location_path
10986 + FROM
10987 + mirror_mirrors
10988 + INNER JOIN
10989 + mirror_location_mirror_map
10990 + ON
10991 + mirror_location_mirror_map.mirror_id = mirror_mirrors.mirror_id
10992 + INNER JOIN
10993 + mirror_locations
10994 + ON
10995 + mirror_location_mirror_map.location_id = mirror_locations.location_id
10996 + WHERE
10997 + mirror_locations.os_id = {$os_id} AND
10998 + mirror_locations.product_id = {$product_id} AND
10999 + mirror_location_mirror_map.location_active = '1' AND
11000 + mirror_mirrors.mirror_active = '1'
11001 + ORDER BY
11002 + mirror_rating DESC, mirror_baseurl
11003 + ");
11004 +
11005 + header("Content-type: text/plain;");
11006 + foreach ($mirrors as $mirror) {
11007 + $b = $mirror['mirror_baseurl'];
11008 + $l = $mirror['location_path'];
11009 + if($l[0] == '/' && substr($b,-1) == '/') {
11010 + $b = substr($b, 0, -1);
11011 + }
11012 + echo $b.$l."\n";
11013 + }
11014 + exit;
11015 +
11016 +} else {
11017 +
11018 + $title = 'Mirror Listing';
11019 + require_once(HEADER);
11020 + echo '<h1>Mirror List</h1>';
11021 + echo '<p>Use this form to get a list of all mirrors serving up active files
11022 + for the selected Product/OS.</p>';
11023 + form_start('list','list','get','./index-list.php');
11024 + echo '<div>';
11025 + form_label('Product', 'product','label-small');
11026 + form_select('product_id','product','',mirror_get_products_select(),$_GET['product_id']);
11027 + echo ' [<a href="./products.php">edit products</a>]';
11028 + echo '</div><br />';
11029 +
11030 + echo '<div>';
11031 + form_label('OS', 'os','label-small');
11032 + form_select('os_id','os','',mirror_get_oss_select(),$_GET['os_id']);
11033 + echo ' [<a href="./os.php">edit operating systems</a>]';
11034 + echo '</div><br />';
11035 + form_submit('submit','','button1','Update');
11036 + form_end();
11037 + require_once(FOOTER);
11038 +}
11039
11040 diff --git a/php/index.php b/php/index.php
11041 new file mode 100644
11042 index 0000000..eacb99e
11043 --- /dev/null
11044 +++ b/php/index.php
11045 @@ -0,0 +1,75 @@
11046 +<?php
11047 +/**
11048 + * Main handler.
11049 + * @package mirror
11050 + * @subpackage pub
11051 + */
11052 +error_reporting(0); // hide all errors
11053 +require_once('./cfg/config.php'); // config file that defines constants
11054 +
11055 +// if we don't have an os, make it windows, playing the odds
11056 +if (empty($_GET['os'])) {
11057 + $_GET['os'] = 'Any';
11058 +}
11059 +
11060 +// do we even have an os or product?
11061 +if (!empty($_GET['os'])&&!empty($_GET['product'])) {
11062 + require_once(LIB.'/db.php'); // core mysql wrappers
11063 + db_connect(DBHOST,DBUSER,DBPASS); // open persistent connection to db
11064 + db_select(DBNAME); // select db
11065 +
11066 + // clean in os and product strings
11067 + $os_name = mysql_real_escape_string(trim(strtolower($_GET['os'])));
11068 + $product_name = mysql_real_escape_string(trim(strtolower($_GET['product'])));
11069 +
11070 + // get os and product IDs
11071 + $os_id = db_name_to_id('mirror_os','os_id','os_name',$os_name);
11072 + $product_id = db_name_to_id('mirror_products','product_id','product_name',$product_name);
11073 +
11074 + // do we have a valid os and product?
11075 + if (!empty($os_id)&&!empty($product_id)) {
11076 + $location = db_get_one("SELECT location_id,location_path FROM mirror_locations WHERE product_id={$product_id} AND os_id={$os_id}");
11077 +
11078 + // did we get a valid location?
11079 + if (!empty($location)) {
11080 + $mirror = db_get_one("SELECT mirror_mirrors.mirror_id,mirror_baseurl FROM mirror_mirrors, mirror_location_mirror_map WHERE mirror_mirrors.mirror_id = mirror_location_mirror_map.mirror_id AND mirror_location_mirror_map.location_id = {$location['location_id']} AND mirror_active='1' AND location_active ='1' ORDER BY rand()*(1/mirror_rating)");
11081 +
11082 + // did we get a valid mirror?
11083 + if (!empty($mirror)) {
11084 +
11085 + // if logging is enabled, insert log
11086 + if (LOGGING) {
11087 + db_query("UPDATE mirror_mirrors SET mirror_count=mirror_count+1 WHERE mirror_id={$mirror['mirror_id']}");
11088 + db_query("UPDATE mirror_products SET product_count=product_count+1 WHERE product_id={$product_id}");
11089 + }
11090 +
11091 + // LANGUAGE HACK
11092 + if (!empty($_GET['lang'])) {
11093 +//// $location['location_path'] = str_replace('x86',$_GET['lang'],$location['location_path']);
11094 + $location['location_path'] = str_replace('en-US',$_GET['lang'],$location['location_path']);
11095 + }
11096 +
11097 + // BitTorrent HACK - robbat2
11098 + if (!empty($_GET['extra'])) {
11099 + $extra = $_GET['extra'];
11100 + $location['location_path'] .= ereg_replace('\?.*|&.*','',$extra);
11101 + }
11102 +
11103 + // if we are just testing, then just print and exit.
11104 + if (!empty($_GET['print'])) {
11105 + print('Location: '.$mirror['mirror_baseurl'].$location['location_path']);
11106 + exit;
11107 + }
11108 +
11109 + // otherwise, by default, redirect them and exit
11110 + header('Location: '.$mirror['mirror_baseurl'].$location['location_path']);
11111 + exit;
11112 + }
11113 + }
11114 + }
11115 +}
11116 +
11117 +// if we get here, the request was invalid; redirect to mozilla home
11118 +header('Location: http://www.gentoo.org/');
11119 +exit;
11120 +?>
11121
11122 diff --git a/php/index.php.orig b/php/index.php.orig
11123 new file mode 100644
11124 index 0000000..9cc7791
11125 --- /dev/null
11126 +++ b/php/index.php.orig
11127 @@ -0,0 +1,79 @@
11128 +<?php
11129 +/**
11130 + * Main handler.
11131 + * @package mirror
11132 + * @subpackage pub
11133 + */
11134 +error_reporting(0); // hide all errors
11135 +require_once('./cfg/config.php'); // config file that defines constants
11136 +
11137 +// if we don't have an os, make it windows, playing the odds
11138 +if (empty($_GET['os'])) {
11139 + $_GET['os'] = 'Any';
11140 +}
11141 +
11142 +// do we even have an os or product?
11143 +if (!empty($_GET['os'])&&!empty($_GET['product'])) {
11144 + require_once(LIB.'/db.php'); // core mysql wrappers
11145 + db_connect(DBHOST,DBUSER,DBPASS); // open persistent connection to db
11146 + db_select(DBNAME); // select db
11147 +
11148 + // clean in os and product strings
11149 + $os_name = mysql_real_escape_string(trim(strtolower($_GET['os'])));
11150 + $product_name = mysql_real_escape_string(trim(strtolower($_GET['product'])));
11151 +
11152 + printf("osname=%s<br />\nprname=%s<br />\n",$os_name,$product_name);
11153 +
11154 + // get os and product IDs
11155 + $os_id = db_name_to_id('mirror_os','os_id','os_name',$os_name);
11156 + $product_id = db_name_to_id('mirror_products','product_id','product_name',$product_name);
11157 +
11158 + printf("osid=%s<br />\nprid=%s<br />\n",$os_id,$product_id);
11159 +
11160 + // do we have a valid os and product?
11161 + if (!empty($os_id)&&!empty($product_id)) {
11162 + $location = db_get_one("SELECT location_id,location_path FROM mirror_locations WHERE product_id={$product_id} AND os_id={$os_id}");
11163 +
11164 + // did we get a valid location?
11165 + if (!empty($location)) {
11166 + $mirror = db_get_one("SELECT mirror_mirrors.mirror_id,mirror_baseurl FROM mirror_mirrors, mirror_location_mirror_map WHERE mirror_mirrors.mirror_id = mirror_location_mirror_map.mirror_id AND mirror_location_mirror_map.location_id = {$location['location_id']} AND mirror_active='1' AND location_active ='1' ORDER BY rand()*(1/mirror_rating)");
11167 +
11168 + // did we get a valid mirror?
11169 + if (!empty($mirror)) {
11170 +
11171 + // if logging is enabled, insert log
11172 + if (LOGGING) {
11173 + db_query("UPDATE mirror_mirrors SET mirror_count=mirror_count+1 WHERE mirror_id={$mirror['mirror_id']}");
11174 + db_query("UPDATE mirror_products SET product_count=product_count+1 WHERE product_id={$product_id}");
11175 + }
11176 +
11177 + // LANGUAGE HACK
11178 + if (!empty($_GET['lang'])) {
11179 +//// $location['location_path'] = str_replace('x86',$_GET['lang'],$location['location_path']);
11180 + $location['location_path'] = str_replace('en-US',$_GET['lang'],$location['location_path']);
11181 + }
11182 +
11183 + // BitTorrent HACK - robbat2
11184 + if (!empty($_GET['extra'])) {
11185 + $extra = $_GET['extra'];
11186 + $location['location_path'] .= ereg_replace('\?.*|&.*','',$extra);
11187 + }
11188 +
11189 + // if we are just testing, then just print and exit.
11190 + if (!empty($_GET['print'])) {
11191 + print('Location: '.$mirror['mirror_baseurl'].$location['location_path']);
11192 + exit;
11193 + }
11194 +
11195 + // otherwise, by default, redirect them and exit
11196 + header('Location: '.$mirror['mirror_baseurl'].$location['location_path']);
11197 + exit;
11198 + }
11199 + }
11200 + }
11201 +}
11202 +
11203 +// if we get here, the request was invalid; redirect to mozilla home
11204 +header('Location: http://www.gentoo.org/');
11205 +exit;
11206 +?>
11207
11208 diff --git a/php/lib/auth.php b/php/lib/auth.php
11209 new file mode 100644
11210 index 0000000..f03db32
11211 --- /dev/null
11212 +++ b/php/lib/auth.php
11213 @@ -0,0 +1,75 @@
11214 +<?php
11215 +/**
11216 + * Home-cooked auth libraries - because PEAR is fat.
11217 + * @package mirror
11218 + * @subpackage lib
11219 + * @todo re-enforce one-per-user session limit
11220 + */
11221 +
11222 +/**
11223 + * Check admin session against sessions table in database.
11224 + * @return bool
11225 + */
11226 +function auth_is_valid_session()
11227 +{
11228 + if (!empty($_COOKIE['mozilla-mirror-admin'])) { // check cookie
11229 + $res = db_query("SELECT * FROM mirror_sessions WHERE session_id = '{$_COOKIE['mozilla-mirror-admin']}'"); // check db for id
11230 + if ($res && db_numrows($res)>0) {
11231 + $buf = db_fetch($res,MYSQL_ASSOC);
11232 + // comment line below to disable gc and allow multiple sessions per username
11233 + db_query("DELETE FROM mirror_sessions WHERE username='{$buf['username']}' AND session_id != '{$_COOKIE['mozilla-mirror-admin']}'"); // garbage collection
11234 + $user = db_fetch(db_query("SELECT * FROM mirror_users WHERE username='{$buf['username']}'"),MYSQL_ASSOC);
11235 + if (empty($_SESSION)) {
11236 + auth_create_session($user); // if session isn't started, create it and push user data
11237 + }
11238 + return true;
11239 + }
11240 + }
11241 + return false;
11242 +}
11243 +
11244 +/**
11245 + * Authentication a user.
11246 + * @param string $username
11247 + * @param string $password
11248 + * @return array|bool array containing user data or false on failure
11249 + */
11250 +function auth_mysql($username,$password)
11251 +{
11252 + if (empty($username)||empty($password)) {
11253 + return false;
11254 + }
11255 + $username = trim(strip_tags(addslashes($username)));
11256 + $password = trim(strip_tags(addslashes($password)));
11257 + $res = db_query("SELECT * FROM mirror_users WHERE username='{$username}' AND password=MD5('{$password}')");
11258 + if ($res && db_numrows($res)>0) {
11259 + return db_fetch($res,MYSQL_ASSOC);
11260 + } else {
11261 + return false;
11262 + }
11263 +}
11264 +
11265 +/**
11266 + * Start a valid session.
11267 + * @param array $user array containing user information.
11268 + */
11269 +function auth_create_session($user,$secure=0)
11270 +{
11271 + session_name('mozilla-mirror-admin');
11272 + session_set_cookie_params(0,'/',$_SERVER['HTTP_HOST'],$secure);
11273 + session_start();
11274 + db_query("INSERT INTO mirror_sessions(session_id,username) VALUES('".session_id()."','{$user['username']}')");
11275 + $_SESSION['user']=$user;
11276 +}
11277 +
11278 +/**
11279 + * Logout.
11280 + */
11281 +function auth_logout()
11282 +{
11283 + // comment line below to keep gc from deleting other sessions for this user
11284 + db_query("DELETE FROM mirror_sessions WHERE session_id='{$_COOKIE['mozilla-mirror-admin']}' OR username='{$_SESSION['user']['username']}'");
11285 + $_COOKIE = array();
11286 + $_SESSION = array();
11287 +}
11288 +?>
11289
11290 diff --git a/php/lib/csv.php b/php/lib/csv.php
11291 new file mode 100644
11292 index 0000000..e98d37c
11293 --- /dev/null
11294 +++ b/php/lib/csv.php
11295 @@ -0,0 +1,216 @@
11296 +<?php
11297 +/**
11298 + * Functions that take a db result and export it to CSV.
11299 + * Usage example:
11300 + * <code>
11301 + * if ($_GET['csv'])
11302 + * {
11303 + * $res=db_query("SELECT * FROM fic_courses");
11304 + * csv_send_csv($res);
11305 + * exit;
11306 + * }
11307 + * </code>
11308 + * @package libs
11309 + * @subpackage csv
11310 + * @author Richard Faaberg <faabergr@×××××××××.edu>
11311 + * @author Mike Morgan <mike.morgan@×××××××××××.edu>
11312 + * @copyright Central Web Services, Oregon State University
11313 + */
11314 +
11315 +/**
11316 + * @param resource $res MySQL resource / result
11317 + * @return array $ret_val array of CSV rows, parsed properly (false if $res is not resource)
11318 + */
11319 +function csv_export_to_csv($res)
11320 +{
11321 + // parse all results, format for CSV
11322 + while ( $buf=db_fetch($res,MYSQL_ASSOC) )
11323 + {
11324 + // get the keys (headers), if not already done
11325 + if ( empty($heads) )
11326 + {
11327 + $heads=array_keys($buf);
11328 + foreach ($heads as $key=>$val)
11329 + {
11330 + $heads[$key]=csv_add_quotes(csv_fix_quotes($val));
11331 + }
11332 + $heads=implode(',',$heads);
11333 + $csv[]=$heads."\n";
11334 + }
11335 + // fix inner quotes, add outer quotes for all values
11336 + $row=csv_array_to_csv($buf);
11337 + $csv[]=$row."\n";
11338 + }
11339 + return $csv;
11340 +}
11341 +
11342 +/**
11343 + * Use a resource or two dimensional array, then send the CSV results to user.
11344 + * @param mixed $res MySQL resource / result, or a two dimensional array
11345 + * @param string $name name of the export file
11346 + * @return bool true if file sent, false otherwise
11347 + */
11348 +function csv_send_csv($res,$name=null)
11349 +{
11350 + // set name of the export file
11351 + $filename=(is_null($name))?'export-'.date('Y-m-d').'.csv':$name.'.csv';
11352 + // check for valid resource
11353 + if ( is_resource($res) )
11354 + {
11355 + $csv=csv_export_to_csv($res);
11356 + }
11357 + elseif( is_array($res) && !empty($res) )
11358 + {
11359 + foreach ($res as $row)
11360 + {
11361 + if ( !is_array($row) )
11362 + ;
11363 + else
11364 + $csv[] = csv_array_to_csv($row)."\n";
11365 + }
11366 + }
11367 +
11368 + if ( is_array($csv) )
11369 + {
11370 + // stream csv to user
11371 + header("Content-type: application/x-csv");
11372 + header('Content-disposition: inline; filename="'.$filename.'"');
11373 + header('Cache-Control: private');
11374 + header('Pragma: public');
11375 + foreach ($csv as $row)
11376 + {
11377 + echo $row;
11378 + }
11379 + return true;
11380 + }
11381 +
11382 + return false;
11383 +}
11384 +
11385 +/**
11386 + * Replace quotes inside of a field with double quotes, which is something CSV requires.
11387 + * @param string $string unquoted quotes
11388 + * @return string $string quoted quotes
11389 + */
11390 +function csv_fix_quotes($string)
11391 +{
11392 + return preg_replace('/"/','""',$string);
11393 +}
11394 +
11395 +/**
11396 + * Replace line breaks with commas trailed by a space.
11397 + * @param string $string string containing line breaks
11398 + * @param string string without line breaks
11399 + */
11400 +function csv_fix_line_breaks($string)
11401 +{
11402 + return preg_replace('/(\n\r|\r)/','\n',$string);
11403 +}
11404 +
11405 +/**
11406 + * Replaces instances of double quotes in a string with a single quote.
11407 + * @param string $string the string to perform the replacement on
11408 + * @return string the string with "" replaced by "
11409 + */
11410 +function csv_unfix_quotes($string)
11411 +{
11412 + return preg_replace('/""/', '"', $string);
11413 +}
11414 +
11415 +/**
11416 + * Place quotes outside of every field, which inherently solves space, line break issues.
11417 + * @param string $string
11418 + * @return string $string with quotes around it
11419 + */
11420 +function csv_add_quotes($string)
11421 +{
11422 + return '"'.$string.'"';
11423 +}
11424 +
11425 +/**
11426 + * Removes quotes from the beginning and the end of a string.
11427 + * @param string $string the string to remove the quotes from
11428 + * @return string the string, sans quotes at the beginning and end
11429 + */
11430 +function csv_remove_quotes($string)
11431 +{
11432 + $pattern = "/^\"(.*)\"$/";
11433 + $replacement = "$1";
11434 + return preg_replace($pattern, $replacement, $string);
11435 +}
11436 +
11437 +/**
11438 + * Convert an array into a CSV string with quotes around each value.
11439 + * @param array $array
11440 + * @return string the values in $array surrounded by quotes and separated by commas
11441 + */
11442 +function csv_array_to_csv($array)
11443 +{
11444 + $csv_arr = array();
11445 + foreach ($array as $value)
11446 + {
11447 + $csv_arr[]=csv_add_quotes(csv_fix_quotes(csv_fix_line_breaks($value)));
11448 + }
11449 + $csv_string=implode(',',$csv_arr);
11450 +
11451 + return $csv_string;
11452 +}
11453 +
11454 +/**
11455 + * Convert a CSV string into an array.
11456 + * Please use sparingly - this creates temp files
11457 + * @param string $string the CSV string
11458 + * @return array the elements from the CSV string in an array
11459 + */
11460 +function csv_csv_to_array($string)
11461 +{
11462 + $return = array();
11463 + $length = strlen($string);
11464 +
11465 + // create a temp file and write the string to it
11466 + $tmpfname = tempnam('/tmp', 'csvlib');
11467 + $fh = fopen($tmpfname, 'w');
11468 + fwrite($fh, $string);
11469 + fclose($fh);
11470 +
11471 + // open the file for csv parsing
11472 + $csvh = fopen($tmpfname, 'r');
11473 + while (($arraydata = fgetcsv($csvh, $length, ',')) !== false)
11474 + {
11475 + $return = array_merge($return, $arraydata);
11476 + }
11477 +
11478 + fclose($csvh);
11479 + unlink($tmpfname);
11480 +
11481 + return $return;
11482 +}
11483 +
11484 +/**
11485 + * Read a CSV file into a two dimensional array
11486 + * It returns all the rows in the file, so if the first row are headers, you'd need to take care of that in the returned array
11487 + * @param string $filepath the path to the csv file
11488 + * @param string $delimiter delimiter, default to ','
11489 + * @param string $enclosure enclosure character, default to '"'
11490 + * @return &array the two dimensional array with the csv file content, or an empty if an error occured
11491 + */
11492 +function &csv_csv_file_to_array($filepath, $delimiter=',', $enclosure='"')
11493 +{
11494 + $return = array();
11495 +
11496 + if (!file_exists($filepath) || !is_readable($filepath))
11497 + return $return;
11498 +
11499 + $fh =& fopen($filepath, 'r');
11500 + $size = filesize($filepath)+1;
11501 +
11502 + while ($data =& fgetcsv($fh, $size, $delimiter, $enclosure))
11503 + {
11504 + $return[] = $data;
11505 + }
11506 +
11507 + fclose($fh);
11508 +
11509 + return $return;
11510 +}
11511 +?>
11512
11513 diff --git a/php/lib/db.php b/php/lib/db.php
11514 new file mode 100644
11515 index 0000000..3f9435f
11516 --- /dev/null
11517 +++ b/php/lib/db.php
11518 @@ -0,0 +1,298 @@
11519 +<?php
11520 +/**
11521 + * Minimal wrappers for core PHP mysql_* functions.
11522 + * @package mirror
11523 + * @subpackage lib
11524 + */
11525 +
11526 +/**
11527 + * Connect to a MySQL database server.
11528 + * @param string $host db server, defaults to localhost
11529 + * @param string $user db username
11530 + * @param string $password db password
11531 + * @return resource dbh
11532 + */
11533 +function db_connect($host='localhost',$user=null,$password=null)
11534 +{
11535 + static $dbh = null;
11536 + if (!empty($host) && isset($user) && isset($password)) {
11537 + $dbh = @mysql_connect($host,$user,$password);
11538 + }
11539 + if (is_resource($dbh)) {
11540 + return $dbh;
11541 + }
11542 + else die("Unable to create database connection in db_connect()");
11543 +}
11544 +
11545 +/**
11546 + * Select database.
11547 + * @param string $database name of the database to select
11548 + * @param resource $dbh valid dbh, null if not defined
11549 + * @return bool success of command
11550 + */
11551 +function db_select($database,$dbh=null)
11552 +{
11553 + if(is_resource($dbh)){
11554 + return @mysql_select_db($database);
11555 + }else{
11556 + return @mysql_select_db($database, db_connect());
11557 + }
11558 +
11559 +}
11560 +
11561 +/**
11562 + * Execute a MySQL query.
11563 + * @param string $qry MySQL query
11564 + * @param resource $dbh valid dbh
11565 + */
11566 +function db_query($qry=null,$dbh=null)
11567 +{
11568 + static $result = null;
11569 + if(!is_resource($dbh)) $dbh = db_connect();
11570 + if(is_null($qry))
11571 + {
11572 + if(is_resource($result)) return $result;
11573 + else return false;
11574 + }
11575 + else
11576 + {
11577 + $result = @mysql_query($qry,$dbh);
11578 + return $result;
11579 + }
11580 +}
11581 +
11582 +/**
11583 + * Fetch a row as an array from a result.
11584 + * @param string $result (default to null)
11585 + * @return array
11586 + */
11587 +function db_fetch($result=null,$type=MYSQL_BOTH)
11588 +{
11589 + return (!is_resource($result))? @mysql_fetch_array(db_query()) : @mysql_fetch_array($result,$type);
11590 +}
11591 +
11592 +/**
11593 + * Fetch an array based on a query.
11594 + * @param string $query database query
11595 + * @param int $type result type
11596 + * @param string $col_id if passed it, the values of this column in the result set will be used as the array keys in the returned array
11597 + * @return array $list array of database rows
11598 + * Example of returned array:
11599 + * <code>
11600 + * db_get("SELECT * FROM table",MYSQL_ASSOC);
11601 + * returns...
11602 + * Array
11603 + * (
11604 + * [0] => Array
11605 + * (
11606 + * [id] => 1
11607 + * [field1] => data1
11608 + * [field2] => data2
11609 + * )
11610 + *
11611 + * )
11612 + * </code>
11613 + */
11614 +function db_get($query,$type=MYSQL_BOTH,$col_id=NULL)
11615 +{
11616 + $res = db_query($query);
11617 + $list = array();
11618 + if (is_resource($res) && !is_null($col_id) && ($type == MYSQL_BOTH || $type == MYSQL_ASSOC) && @mysql_num_rows($res) !== 0) {
11619 + $col_test = db_fetch($res,$type);
11620 + @mysql_data_seek($res, 0);
11621 + if (array_key_exists($col_id,$col_test)) {
11622 + while ( $buf = db_fetch($res,$type) ) {
11623 + $list[$buf[$col_id]] = $buf;
11624 + }
11625 + return $list;
11626 + }
11627 + }
11628 + while ( $buf = db_fetch($res,$type) ) {
11629 + $list[] = $buf;
11630 + }
11631 + return $list;
11632 +}
11633 +
11634 +/**
11635 + * Get all of the fieldnames for the specified table.
11636 + * @param string $table name of table to describe
11637 + * @return array array of column names, must be an array
11638 + */
11639 +function db_fieldnames($table)
11640 +{
11641 + $dbh = db_connect();
11642 + $results = db_query("DESCRIBE $table");
11643 + if (is_resource($results))
11644 + {
11645 + while ($buf=db_fetch($results))
11646 + {
11647 + $field_names[] = $buf[0];
11648 + }
11649 + }
11650 + else
11651 + {
11652 + $field_names[] = 0;
11653 + }
11654 + return $field_names;
11655 +}
11656 +
11657 +/**
11658 + * Create a MySQL INSERT statement based on $_POST array generated by form submission.
11659 + * <ul>
11660 + * <li>does not work with mysql functions (PASSWORD, etc.) because there are forced double quotes</li>
11661 + * <li>do not use clean_in() before this, or you'll have double the slashes</li>
11662 + * <li>use the function only when it saves you time, not _always_</li>
11663 + * <li>form items not set will not be processed (unchecked radios, checkboxes) - handle these manually, or don't use the func</li>
11664 + * </ul>
11665 + * @param array $vars array of posts
11666 + * @param string $table name of the table that fields will be inserted into
11667 + * @return string $query resulting MySQL insert string
11668 + */
11669 +function db_makeinsert($vars,$table)
11670 +{
11671 + $dbh = db_connect();
11672 + $fields = db_fieldnames($table);
11673 + foreach ($fields as $field)
11674 + {
11675 + if (get_magic_quotes_gpc) $vars[$field] = stripslashes($vars[$field]);
11676 + $vars[$field] = addslashes($vars[$field]);
11677 + if (isset($vars[$field]))
11678 + {
11679 + isset($q1)?$q1 .= ','.$field:$q1='INSERT INTO '.$table.'('.$field;
11680 + isset($q2)?$q2 .= ",'$vars[$field]'":$q2=" VALUES('$vars[$field]'";
11681 + }
11682 + }
11683 + $q1 .= ')';
11684 + $q2 .= ')';
11685 + $query = $q1.$q2;
11686 + return $query;
11687 +}
11688 +
11689 +/**
11690 + * Create a MySQL REPLACE statement based on $_POST array generated by form submission.
11691 + * <ul>
11692 + * <li>does not work with mysql functions (PASSWORD, etc.) because there are forced double quotes</li>
11693 + * <li>do not use clean_in() before this, or you'll have double the slashes</li>
11694 + * <li>use the function only when it saves you time, not _always_</li>
11695 + * <li>form items not set will not be processed (unchecked radios, checkboxes) - handle these manually, or don't use the func</li>
11696 + * </ul>
11697 + * @param array $vars array of posts
11698 + * @param string $table name of the table that fields will be inserted into
11699 + * @return string $query resulting MySQL insert string
11700 + */
11701 +function db_makereplace($vars,$table)
11702 +{
11703 + $dbh = db_connect();
11704 + $fields = db_fieldnames($table);
11705 + foreach ($fields as $field)
11706 + {
11707 + if (get_magic_quotes_gpc) $vars[$field] = stripslashes($vars[$field]);
11708 + $vars[$field] = addslashes($vars[$field]);
11709 + if (isset($vars[$field]))
11710 + {
11711 + isset($q1)?$q1 .= ','.$field:$q1='REPLACE INTO '.$table.'('.$field;
11712 + isset($q2)?$q2 .= ",'$vars[$field]'":$q2=" VALUES('$vars[$field]'";
11713 + }
11714 + }
11715 + $q1 .= ')';
11716 + $q2 .= ')';
11717 + $query = $q1.$q2;
11718 + return $query;
11719 +}
11720 +
11721 +/**
11722 + * Create a MySQL UPDATE statement based on $_POST array generated by form submission.
11723 + * <ul>
11724 + * <li>does not work with mysql functions (PASSWORD, etc.) because there are forced double quotes</li>
11725 + * <li>do not use clean_in() before this, or you'll have double the slashes</li>
11726 + * <li>use the function only when it saves you time, not _always_</li>
11727 + * <li>form items not set will not be processed (unchecked radios, checkboxes) - handle these manually, or don't use the func</li>
11728 + * </ul>
11729 + * @param array $vars array of posts
11730 + * @param string $table name of the table that fields will be inserted into
11731 + * @param string $where where clause, describing which records are to be updated
11732 + */
11733 +function db_makeupdate($vars,$table,$where)
11734 +{
11735 + $dbh = db_connect();
11736 + $fields = db_fieldnames($table);
11737 + foreach ($fields as $field)
11738 + {
11739 + if (isset($vars[$field]))
11740 + {
11741 + if (get_magic_quotes_gpc()) $vars[$field] = stripslashes($vars[$field]);
11742 + $vars[$field]=addslashes($vars[$field]);
11743 + $q1 = isset($q1)?$q1 .= ' ,'.$field."='$vars[$field]'":'UPDATE '.$table.' set '.$field."='$vars[$field]'";
11744 + }
11745 + }
11746 + $query = $q1.' '.$where;
11747 + return $query;
11748 +}
11749 +
11750 +/**
11751 + * Since PHP's mysql_insert_id() sometimes throws an error, this is the replacement
11752 + * @param resource $dbh optional dbh to get the last inserted id from
11753 + * @return int the return value of MySQL's last_insert_id()
11754 + */
11755 +function db_insert_id($dbh=null)
11756 +{
11757 + if(!is_resource($dbh)) $dbh = db_connect();
11758 + $buf = db_fetch(db_query("SELECT LAST_INSERT_ID()", $dbh));
11759 + return empty($buf[0]) ? false : $buf[0];
11760 +}
11761 +
11762 +/**
11763 + * Determine number of rows in result.
11764 + * @param resource $result mysql result
11765 + * @return int number of rows in query result
11766 + */
11767 +function db_numrows($result=null)
11768 +{
11769 + return (!is_resource($result))? @mysql_num_rows(db_query()) : @mysql_num_rows($result);
11770 +}
11771 +
11772 +/**
11773 + * Close the db connection. If a dbh is not specified, assume the last opened link.
11774 + * @param resource $dbh optional dbh to close
11775 + */
11776 +function db_close($dbh=null)
11777 +{
11778 + return is_resource($dbh)?@mysql_close($dbh):@mysql_close();
11779 +}
11780 +
11781 +/**
11782 + * Get one record.
11783 + * @param string $query query
11784 + * @param int $type result type
11785 + */
11786 +function db_get_one($query,$type=MYSQL_ASSOC) {
11787 + $buf = db_get($query.' LIMIT 1',$type);
11788 + return $buf[0];
11789 +}
11790 +
11791 +/**
11792 + * Get an ID based on name.
11793 + * @param string $table
11794 + * @param string $id_col
11795 + * @param string $name_col
11796 + * @param string $name
11797 + */
11798 +function db_name_to_id($table,$id_col,$name_col,$name)
11799 +{
11800 + $buf = db_get_one("SELECT {$id_col} FROM {$table} WHERE {$name_col} = '{$name}'", MYSQL_NUM);
11801 + return $buf[0];
11802 +}
11803 +
11804 +/**
11805 + * Sets enum booleans to their opposite
11806 + * @param string $table
11807 + * @param string $pri
11808 + * @param string $col
11809 + * @param array $id
11810 + * @return int
11811 + */
11812 +function db_toggle_bool($table, $pri, $col, $id)
11813 +{
11814 + return db_query("UPDATE {$table} SET {$col} = IF({$col} = '1', '0', '1') WHERE {$pri} = {$id}");
11815 +}
11816 +?>
11817
11818 diff --git a/php/lib/db.php.orig b/php/lib/db.php.orig
11819 new file mode 100644
11820 index 0000000..23dd1ea
11821 --- /dev/null
11822 +++ b/php/lib/db.php.orig
11823 @@ -0,0 +1,306 @@
11824 +<?php
11825 +/**
11826 + * Minimal wrappers for core PHP mysql_* functions.
11827 + * @package mirror
11828 + * @subpackage lib
11829 + */
11830 +
11831 +/**
11832 + * Connect to a MySQL database server.
11833 + * @param string $host db server, defaults to localhost
11834 + * @param string $user db username
11835 + * @param string $password db password
11836 + * @return resource dbh
11837 + */
11838 +function db_connect($host='localhost',$user=null,$password=null)
11839 +{
11840 + static $dbh = null;
11841 + if (!empty($host) && isset($user) && isset($password)) {
11842 + $dbh = @mysql_connect($host,$user,$password);
11843 + }
11844 + if (is_resource($dbh)) {
11845 + return $dbh;
11846 + }
11847 + else die("Unable to create database connection in db_connect()");
11848 +}
11849 +
11850 +/**
11851 + * Select database.
11852 + * @param string $database name of the database to select
11853 + * @param resource $dbh valid dbh, null if not defined
11854 + * @return bool success of command
11855 + */
11856 +function db_select($database,$dbh=null)
11857 +{
11858 + if(is_resource($dbh)){
11859 + return @mysql_select_db($database);
11860 + }else{
11861 + return @mysql_select_db($database, db_connect());
11862 + }
11863 +
11864 +}
11865 +
11866 +/**
11867 + * Execute a MySQL query.
11868 + * @param string $qry MySQL query
11869 + * @param resource $dbh valid dbh
11870 + */
11871 +function db_query($qry=null,$dbh=null)
11872 +{
11873 + static $result = null;
11874 + if(!is_resource($dbh)) $dbh = db_connect();
11875 + printf("q:%s dbh=%s\n",$qry,$dbh);
11876 + if(is_null($qry))
11877 + {
11878 + if(is_resource($result)) return $result;
11879 + else return false;
11880 + }
11881 + else
11882 + {
11883 + $result = mysql_query($qry,$dbh);
11884 + return $result;
11885 + }
11886 +}
11887 +
11888 +/**
11889 + * Fetch a row as an array from a result.
11890 + * @param string $result (default to null)
11891 + * @return array
11892 + */
11893 +function db_fetch($result=null,$type=MYSQL_BOTH)
11894 +{
11895 + if(!is_resource($result)) {
11896 + print 'Rerun query"'.$result.'"';
11897 + return @mysql_fetch_array(db_query());
11898 + } else {
11899 + return @mysql_fetch_array($result,$type);
11900 + }
11901 +}
11902 +
11903 +/**
11904 + * Fetch an array based on a query.
11905 + * @param string $query database query
11906 + * @param int $type result type
11907 + * @param string $col_id if passed it, the values of this column in the result set will be used as the array keys in the returned array
11908 + * @return array $list array of database rows
11909 + * Example of returned array:
11910 + * <code>
11911 + * db_get("SELECT * FROM table",MYSQL_ASSOC);
11912 + * returns...
11913 + * Array
11914 + * (
11915 + * [0] => Array
11916 + * (
11917 + * [id] => 1
11918 + * [field1] => data1
11919 + * [field2] => data2
11920 + * )
11921 + *
11922 + * )
11923 + * </code>
11924 + */
11925 +function db_get($query,$type=MYSQL_BOTH,$col_id=NULL)
11926 +{
11927 + $res = db_query($query);
11928 + $list = array();
11929 + if (is_resource($res) && !is_null($col_id) && ($type == MYSQL_BOTH || $type == MYSQL_ASSOC) && @mysql_num_rows($res) !== 0) {
11930 + $col_test = db_fetch($res,$type);
11931 + @mysql_data_seek($res, 0);
11932 + if (array_key_exists($col_id,$col_test)) {
11933 + while ( $buf = db_fetch($res,$type) ) {
11934 + $list[$buf[$col_id]] = $buf;
11935 + }
11936 + return $list;
11937 + }
11938 + }
11939 + while ( $buf = db_fetch($res,$type) ) {
11940 + $list[] = $buf;
11941 + }
11942 + return $list;
11943 +}
11944 +
11945 +/**
11946 + * Get all of the fieldnames for the specified table.
11947 + * @param string $table name of table to describe
11948 + * @return array array of column names, must be an array
11949 + */
11950 +function db_fieldnames($table)
11951 +{
11952 + $dbh = db_connect();
11953 + $results = db_query("DESCRIBE $table");
11954 + if (is_resource($results))
11955 + {
11956 + while ($buf=db_fetch($results))
11957 + {
11958 + $field_names[] = $buf[0];
11959 + }
11960 + }
11961 + else
11962 + {
11963 + $field_names[] = 0;
11964 + }
11965 + return $field_names;
11966 +}
11967 +
11968 +/**
11969 + * Create a MySQL INSERT statement based on $_POST array generated by form submission.
11970 + * <ul>
11971 + * <li>does not work with mysql functions (PASSWORD, etc.) because there are forced double quotes</li>
11972 + * <li>do not use clean_in() before this, or you'll have double the slashes</li>
11973 + * <li>use the function only when it saves you time, not _always_</li>
11974 + * <li>form items not set will not be processed (unchecked radios, checkboxes) - handle these manually, or don't use the func</li>
11975 + * </ul>
11976 + * @param array $vars array of posts
11977 + * @param string $table name of the table that fields will be inserted into
11978 + * @return string $query resulting MySQL insert string
11979 + */
11980 +function db_makeinsert($vars,$table)
11981 +{
11982 + $dbh = db_connect();
11983 + $fields = db_fieldnames($table);
11984 + foreach ($fields as $field)
11985 + {
11986 + if (get_magic_quotes_gpc) $vars[$field] = stripslashes($vars[$field]);
11987 + $vars[$field] = addslashes($vars[$field]);
11988 + if (isset($vars[$field]))
11989 + {
11990 + isset($q1)?$q1 .= ','.$field:$q1='INSERT INTO '.$table.'('.$field;
11991 + isset($q2)?$q2 .= ",'$vars[$field]'":$q2=" VALUES('$vars[$field]'";
11992 + }
11993 + }
11994 + $q1 .= ')';
11995 + $q2 .= ')';
11996 + $query = $q1.$q2;
11997 + return $query;
11998 +}
11999 +
12000 +/**
12001 + * Create a MySQL REPLACE statement based on $_POST array generated by form submission.
12002 + * <ul>
12003 + * <li>does not work with mysql functions (PASSWORD, etc.) because there are forced double quotes</li>
12004 + * <li>do not use clean_in() before this, or you'll have double the slashes</li>
12005 + * <li>use the function only when it saves you time, not _always_</li>
12006 + * <li>form items not set will not be processed (unchecked radios, checkboxes) - handle these manually, or don't use the func</li>
12007 + * </ul>
12008 + * @param array $vars array of posts
12009 + * @param string $table name of the table that fields will be inserted into
12010 + * @return string $query resulting MySQL insert string
12011 + */
12012 +function db_makereplace($vars,$table)
12013 +{
12014 + $dbh = db_connect();
12015 + $fields = db_fieldnames($table);
12016 + foreach ($fields as $field)
12017 + {
12018 + if (get_magic_quotes_gpc) $vars[$field] = stripslashes($vars[$field]);
12019 + $vars[$field] = addslashes($vars[$field]);
12020 + if (isset($vars[$field]))
12021 + {
12022 + isset($q1)?$q1 .= ','.$field:$q1='REPLACE INTO '.$table.'('.$field;
12023 + isset($q2)?$q2 .= ",'$vars[$field]'":$q2=" VALUES('$vars[$field]'";
12024 + }
12025 + }
12026 + $q1 .= ')';
12027 + $q2 .= ')';
12028 + $query = $q1.$q2;
12029 + return $query;
12030 +}
12031 +
12032 +/**
12033 + * Create a MySQL UPDATE statement based on $_POST array generated by form submission.
12034 + * <ul>
12035 + * <li>does not work with mysql functions (PASSWORD, etc.) because there are forced double quotes</li>
12036 + * <li>do not use clean_in() before this, or you'll have double the slashes</li>
12037 + * <li>use the function only when it saves you time, not _always_</li>
12038 + * <li>form items not set will not be processed (unchecked radios, checkboxes) - handle these manually, or don't use the func</li>
12039 + * </ul>
12040 + * @param array $vars array of posts
12041 + * @param string $table name of the table that fields will be inserted into
12042 + * @param string $where where clause, describing which records are to be updated
12043 + */
12044 +function db_makeupdate($vars,$table,$where)
12045 +{
12046 + $dbh = db_connect();
12047 + $fields = db_fieldnames($table);
12048 + foreach ($fields as $field)
12049 + {
12050 + if (isset($vars[$field]))
12051 + {
12052 + if (get_magic_quotes_gpc()) $vars[$field] = stripslashes($vars[$field]);
12053 + $vars[$field]=addslashes($vars[$field]);
12054 + $q1 = isset($q1)?$q1 .= ' ,'.$field."='$vars[$field]'":'UPDATE '.$table.' set '.$field."='$vars[$field]'";
12055 + }
12056 + }
12057 + $query = $q1.' '.$where;
12058 + return $query;
12059 +}
12060 +
12061 +/**
12062 + * Since PHP's mysql_insert_id() sometimes throws an error, this is the replacement
12063 + * @param resource $dbh optional dbh to get the last inserted id from
12064 + * @return int the return value of MySQL's last_insert_id()
12065 + */
12066 +function db_insert_id($dbh=null)
12067 +{
12068 + if(!is_resource($dbh)) $dbh = db_connect();
12069 + $buf = db_fetch(db_query("SELECT LAST_INSERT_ID()", $dbh));
12070 + return empty($buf[0]) ? false : $buf[0];
12071 +}
12072 +
12073 +/**
12074 + * Determine number of rows in result.
12075 + * @param resource $result mysql result
12076 + * @return int number of rows in query result
12077 + */
12078 +function db_numrows($result=null)
12079 +{
12080 + return (!is_resource($result))? @mysql_num_rows(db_query()) : @mysql_num_rows($result);
12081 +}
12082 +
12083 +/**
12084 + * Close the db connection. If a dbh is not specified, assume the last opened link.
12085 + * @param resource $dbh optional dbh to close
12086 + */
12087 +function db_close($dbh=null)
12088 +{
12089 + return is_resource($dbh)?@mysql_close($dbh):@mysql_close();
12090 +}
12091 +
12092 +/**
12093 + * Get one record.
12094 + * @param string $query query
12095 + * @param int $type result type
12096 + */
12097 +function db_get_one($query,$type=MYSQL_ASSOC) {
12098 + $buf = db_get($query.' LIMIT 1',$type);
12099 + return $buf[0];
12100 +}
12101 +
12102 +/**
12103 + * Get an ID based on name.
12104 + * @param string $table
12105 + * @param string $id_col
12106 + * @param string $name_col
12107 + * @param string $name
12108 + */
12109 +function db_name_to_id($table,$id_col,$name_col,$name)
12110 +{
12111 + $q = "SELECT {$id_col} FROM {$table} WHERE {$name_col} = '{$name}'";
12112 + print 'Query: '.$q."<br />\n";
12113 + $buf = db_get_one($q, MYSQL_NUM);
12114 + return $buf[0];
12115 +}
12116 +
12117 +/**
12118 + * Sets enum booleans to their opposite
12119 + * @param string $table
12120 + * @param string $pri
12121 + * @param string $col
12122 + * @param array $id
12123 + * @return int
12124 + */
12125 +function db_toggle_bool($table, $pri, $col, $id)
12126 +{
12127 + return db_query("UPDATE {$table} SET {$col} = IF({$col} = '1', '0', '1') WHERE {$pri} = {$id}");
12128 +}
12129 +?>
12130
12131 diff --git a/php/lib/forms.php b/php/lib/forms.php
12132 new file mode 100644
12133 index 0000000..0317949
12134 --- /dev/null
12135 +++ b/php/lib/forms.php
12136 @@ -0,0 +1,659 @@
12137 +<?php
12138 +/**
12139 + * Form functions for handling form input, output, and markup.
12140 + * @package mirror
12141 + * @subpackage lib
12142 + */
12143 +
12144 +/**
12145 + * Cleans a string or an array of strings for HTML presentation.
12146 + * @param mixed $str dirty
12147 + * @param bool $slashes default to false, this parameter indicate if stripslashes is desired, usually use for magic qoutes
12148 + * @return mixed $str cleaned for HTML
12149 + */
12150 +function clean_out($str, $slashes=FALSE)
12151 +{
12152 + if (is_array($str))
12153 + {
12154 + foreach ($str as $key => $val)
12155 + {
12156 + $str[$key] =& clean_out($val, $slashes);
12157 + }
12158 + }
12159 + else
12160 + {
12161 + if ($slashes)
12162 + $str =& trim(htmlentities(stripslashes($str)));
12163 + else
12164 + $str =& trim(htmlentities($str));
12165 + }
12166 +
12167 + return $str;
12168 +}
12169 +
12170 +/**
12171 + * Cleans a string or an array of strings for DB input.
12172 + * @param mixed $str dirty
12173 + * @param bool $single_quote add single quotes around the string, optional
12174 + * @param bool $decode run html_entity_decode(), optional
12175 + * @return mixed $ret slashes added, if necessary
12176 + */
12177 +function clean_in($str, $single_quotes=FALSE, $decode=FALSE)
12178 +{
12179 + if (is_array($str))
12180 + {
12181 + foreach ($str as $key => $val)
12182 + {
12183 + $str[$key] =& clean_in($val, $single_quotes);
12184 + }
12185 + }
12186 + else
12187 + {
12188 + if (get_magic_quotes_gpc() === 1)
12189 + {
12190 + $str =& trim($str);
12191 + }
12192 + else
12193 + {
12194 + $str =& addslashes(trim($str));
12195 + }
12196 + if ($single_quotes) {
12197 + $str = "'" . $str . "'";
12198 + }
12199 + if ($decode) {
12200 + html_entity_decode($str);
12201 + }
12202 + }
12203 + return $str;
12204 +}
12205 +
12206 +/**
12207 + * Get calendar days in array format.
12208 + * @param int $month numeric representation of month (optional) default is empty, accepted range value is 1-12 inclusive, this affects the total number of days in given month
12209 + * @param int $year the year (optional) default is empty, this affects the total number of days in given month
12210 + * @return array $days days from 1->[28-31] (zero-filled)
12211 + */
12212 +function array_days($month='',$year='')
12213 +{
12214 + $days = Array();
12215 + $num = 1;
12216 +
12217 + // get total number of days of a particular month if given a month and year
12218 + if (!empty($month) && !empty($year) && is_numeric($month)
12219 + && is_numeric($year) && $month > 0 && $month < 13)
12220 + {
12221 + $days_inmonth = (int) date("t", strtotime($year."-".$month."-01"));
12222 + }
12223 + else
12224 + $days_inmonth = 31;
12225 +
12226 + while ($num <= $days_inmonth)
12227 + {
12228 + // zero-fill
12229 + if ($num < 10) $num = "0$num";
12230 + else $num = "$num";
12231 + $days[$num] = $num;
12232 + $num++;
12233 + }
12234 + return $days;
12235 +}
12236 +
12237 +/**
12238 + * Get calendar months in array format.
12239 + * @return array $months months from 01-12 (zero-filled)
12240 + */
12241 +function array_months()
12242 +{
12243 + $months=array(
12244 + '01' => 'Jan',
12245 + '02' => 'Feb',
12246 + '03' => 'Mar',
12247 + '04' => 'Apr',
12248 + '05' => 'May',
12249 + '06' => 'Jun',
12250 + '07' => 'Jul',
12251 + '08' => 'Aug',
12252 + '09' => 'Sep',
12253 + '10' => 'Oct',
12254 + '11' => 'Nov',
12255 + '12' => 'Dec',
12256 + );
12257 + return $months;
12258 +}
12259 +
12260 +/**
12261 + * Get calendar years in array format.
12262 + * @param int $num number of years to display (optional) default is 5, negative numbers change direction of array
12263 + * @param int $year starting year (optional) default is this year
12264 + * @return array $years years
12265 + */
12266 +function array_years($num=5,$year='')
12267 +{
12268 + $years=Array();
12269 + $year=($year==null)?date('Y'):$year;
12270 + if ($num>0)
12271 + {
12272 + while ($num > 0)
12273 + {
12274 + $years[$year] = $year;
12275 + $year--;
12276 + $num--;
12277 + }
12278 + }
12279 + elseif ($num<0)
12280 + {
12281 + while ($num < 0)
12282 + {
12283 + $years[$year] = $year;
12284 + $year++;
12285 + $num++;
12286 + }
12287 + }
12288 + return $years;
12289 +}
12290 +
12291 +/**
12292 + * Get calendar hours in array format.
12293 + * @return array $hours hours (zero-filled)
12294 + */
12295 +function array_hours()
12296 +{
12297 + $hours=array(
12298 + '07' => '7 am',
12299 + '08' => '8 am',
12300 + '09' => '9 am',
12301 + '10' => '10 am',
12302 + '11' => '11 am',
12303 + '12' => '12 pm',
12304 + '13' => '1 pm',
12305 + '14' => '2 pm',
12306 + '15' => '3 pm',
12307 + '16' => '4 pm',
12308 + '17' => '5 pm',
12309 + '18' => '6 pm',
12310 + '19' => '7 pm',
12311 + '20' => '8 pm',
12312 + '21' => '9 pm',
12313 + '22' => '10 pm',
12314 + );
12315 + return $hours;
12316 +}
12317 +
12318 +/**
12319 + * Get array of minutes.
12320 + * @param int $interval interval between minutes (optional) default is 15
12321 + * @return array $minutes minutes (zero-filled)
12322 + */
12323 +function array_minutes($interval=15)
12324 +{
12325 + $minutes=array();
12326 + $count=$interval;
12327 + for ($i=0;$i<60;$i+=$interval)
12328 + {
12329 + $tmp=($i<10)?'0'.$i:$i;
12330 + $minutes[$tmp]=$tmp;
12331 + }
12332 + return $minutes;
12333 +}
12334 +
12335 +/**
12336 + * Get array of states.
12337 + * @return array $states states (abbr=>fullname)
12338 + */
12339 +function array_states()
12340 +{
12341 + $states=array (
12342 + 'AL' => 'Alabama',
12343 + 'AK' => 'Alaska',
12344 + 'AS' => 'American Samoa',
12345 + 'AZ' => 'Arizona',
12346 + 'AR' => 'Arkansas',
12347 + 'CA' => 'California',
12348 + 'CO' => 'Colorado',
12349 + 'CT' => 'Connecticut',
12350 + 'DE' => 'Delaware',
12351 + 'DC' => 'District of Columbia',
12352 + 'FM' => 'Federated States of Micronesia',
12353 + 'FL' => 'Florida',
12354 + 'GA' => 'Georgia',
12355 + 'GU' => 'Guam',
12356 + 'HI' => 'Hawaii',
12357 + 'ID' => 'Idaho',
12358 + 'IL' => 'Illinois',
12359 + 'IN' => 'Indiana',
12360 + 'IA' => 'Iowa',
12361 + 'KS' => 'Kansas',
12362 + 'KY' => 'Kentucky',
12363 + 'LA' => 'Louisiana',
12364 + 'ME' => 'Maine',
12365 + 'MH' => 'Marshall Islands',
12366 + 'MD' => 'Maryland',
12367 + 'MA' => 'Massachusetts',
12368 + 'MI' => 'Michigan',
12369 + 'MN' => 'Minnesota',
12370 + 'MS' => 'Mississippi',
12371 + 'MO' => 'Missouri',
12372 + 'MT' => 'Montana',
12373 + 'NE' => 'Nebraska',
12374 + 'NV' => 'Nevada',
12375 + 'NH' => 'New Hampshire',
12376 + 'NJ' => 'New Jersey',
12377 + 'NM' => 'New Mexico',
12378 + 'NY' => 'New York',
12379 + 'NC' => 'North Carolina',
12380 + 'ND' => 'North Dakota',
12381 + 'MP' => 'Northern Mariana Islands',
12382 + 'OH' => 'Ohio',
12383 + 'OK' => 'Oklahoma',
12384 + 'OR' => 'Oregon',
12385 + 'PW' => 'Palau',
12386 + 'PA' => 'Pennsylvania',
12387 + 'PR' => 'Puerto Rico',
12388 + 'RI' => 'Rhode Island',
12389 + 'SC' => 'South Carolina',
12390 + 'SD' => 'South Dakota',
12391 + 'TN' => 'Tennessee',
12392 + 'TX' => 'Texas',
12393 + 'UT' => 'Utah',
12394 + 'VT' => 'Vermont',
12395 + 'VI' => 'Virgin Islands',
12396 + 'VA' => 'Virginia',
12397 + 'WA' => 'Washington',
12398 + 'WV' => 'West Virginia',
12399 + 'WI' => 'Wisconsin',
12400 + 'WY' => 'Wyoming'
12401 + );
12402 + return $states;
12403 +}
12404 +
12405 +/**
12406 + * Writes the beginning form tag.
12407 + * @param string $name form name
12408 + * @param string $class class name
12409 + * @param string $method method (post or get)
12410 + * @param string $action action
12411 + */
12412 +function form_start($name='form', $class=null, $method='post', $action=null, $extra=null)
12413 +{
12414 + $query_string = (empty($_SERVER['QUERY_STRING'])) ? '' : '?'.htmlentities($_SERVER['QUERY_STRING']);
12415 + $action = (empty($action)) ? $_SERVER['PHP_SELF'].$query_string : $action;
12416 + echo "\n";
12417 + echo "<form name=\"$name\" id=\"$name\"";
12418 + echo ($class) ? " class=\"$class\"" : '';
12419 + echo " method=\"$method\" action=\"$action\" $extra>";
12420 +}
12421 +
12422 +/**
12423 + * Writes the ending form tag.
12424 + */
12425 +function form_end()
12426 +{
12427 + echo "\n".'</form>';
12428 +}
12429 +
12430 +/**
12431 + * Writes a form input label.
12432 + * @param string $text label text
12433 + * @param string $for id of corresponding field
12434 + * @param string $class class css class of label
12435 + * @param string $extra any extra parameters (optional)
12436 + */
12437 +function form_label($text=null, $for=null, $class=null, $extra=null)
12438 +{
12439 + if ($extra) {$extra = ' '.$extra;}
12440 + echo "\n";
12441 + echo '<label';
12442 + echo ($for) ? " for=\"$for\"" : '';
12443 + echo ($class) ? " class=\"$class\"" : '';
12444 + echo "$extra>$text</label>";
12445 +}
12446 +
12447 +/**
12448 + * Writes a text input.
12449 + * @param string $name name of field
12450 + * @param string $id id of field, must be unique per page
12451 + * @param string $css css class
12452 + * @param string $value value
12453 + * @param int $size size of field
12454 + * @param int $maxlength maxlength of field
12455 + * @param string $extra any extra parameters (optional)
12456 + */
12457 +function form_text($name, $id=null, $class=null, $value=null, $size='30', $maxlength='100', $extra=null)
12458 +{
12459 + if ($extra) {$extra = ' '.$extra;}
12460 + echo '<input type="text" name="'.$name.'"';
12461 + echo ($id) ? " id=\"$id\"" : '';
12462 + echo ($class) ? " class=\"$class\"" : '';
12463 + echo ($value) ? " value=\"$value\"" : '';
12464 + echo " size=\"$size\" maxlength=\"$maxlength\"$extra />";
12465 +}
12466 +
12467 +/**
12468 + * Writes a password input.
12469 + * @param string $name name of field
12470 + * @param string $id id of field, must be unique per page
12471 + * @param string $css css class
12472 + * @param int $size size of field (optional) default is 30
12473 + * @param int $maxlength maxlength of field (optional)
12474 + * @param string $extra any extra parameters (optional)
12475 + */
12476 +function form_password($name, $id=null, $class=null, $size='30', $maxlength='100', $extra=null)
12477 +{
12478 + if ($extra) {$extra = ' '.$extra; }
12479 + echo "\n";
12480 + echo "<input type=\"password\" name=\"$name\"";
12481 + echo ($id) ? " id=\"$id\"" : '';
12482 + echo ($class) ? " class=\"$class\"" : '';
12483 + echo " size=\"$size\" maxlength=\"$maxlength\"$extra />";
12484 +}
12485 +
12486 +/**
12487 + * Writes a checkbox input.
12488 + * @param string $name name of field
12489 + * @param string $id id of field, must be unique per page
12490 + * @param string $class css class
12491 + * @param string $value value
12492 + * @param bool $checked checked?
12493 + * @param string $extra any extra parameters (optional)
12494 + */
12495 +function form_checkbox($name, $id=null, $class=null, $value=null, $checked=0, $extra=null)
12496 +{
12497 + if ($extra) {$extra = ' '.$extra;}
12498 + if ($checked == 1)
12499 + {
12500 + echo "\n";
12501 + echo "<input type=\"checkbox\" name=\"$name\"";
12502 + echo ($id) ? " id=\"$id\"" : '';
12503 + echo ($class) ? " class=\"$class\"" : '';
12504 + echo ($value) ? " value=\"$value\"" : '';
12505 + echo " checked=\"checked\"$extra />";
12506 + }
12507 + else
12508 + {
12509 + echo "\n";
12510 + echo "<input type=\"checkbox\" name=\"$name\"";
12511 + echo ($id) ? " id=\"$id\"" : '';
12512 + echo ($class) ? " class=\"$class\"" : '';
12513 + echo ($value) ? " value=\"$value\"" : '';
12514 + echo "$extra />";
12515 + }
12516 +}
12517 +
12518 +/**
12519 + * Writes a radio input.
12520 + * @param string $name name of field
12521 + * @param string $id id of field, must be unique per page
12522 + * @param string $class css class
12523 + * @param string $value value
12524 + * @param bool $checked checked?
12525 + * @param string $extra any extra parameters (optional)
12526 + */
12527 +function form_radio($name, $id=null, $class=null, $value=null, $checked=0, $extra=null)
12528 +{
12529 + if ($extra) { $extra = ' '.$extra; }
12530 + if ($checked == 1)
12531 + {
12532 + echo "\n";
12533 + echo "<input type=\"radio\" name=\"$name\"";
12534 + echo ($id) ? " id=\"$id\"" : '';
12535 + echo ($class) ? " class=\"$class\"" : '';
12536 + echo ($value) ? " value=\"$value\"" : '';
12537 + echo " checked=\"checked\"$extra />";
12538 + }
12539 + else
12540 + {
12541 + echo "\n";
12542 + echo "<input type=\"radio\" name=\"$name\"";
12543 + echo ($id) ? " id=\"$id\"" : '';
12544 + echo ($class) ? " class=\"$class\"" : '';
12545 + echo ($value) ? " value=\"$value\"" : '';
12546 + echo "$extra />";
12547 + }
12548 +}
12549 +
12550 +/**
12551 + * Writes a submit input.
12552 + * @param string $id the id attribute
12553 + * @param string $name name name of field
12554 + * @param string $class css class
12555 + * @param string $value value (button text)
12556 + * @param string $extra any extra parameters (optional)
12557 + */
12558 +function form_submit($name, $id=null, $class=null, $value='Submit', $extra=null)
12559 +{
12560 + if ($extra) {$extra = ' '.$extra;}
12561 + echo "\n";
12562 + echo "<input type=\"submit\" name=\"$name\"";
12563 + echo ($id) ? " id=\"$id\"" : '';
12564 + echo ($class) ? " class=\"$class\"" : '';
12565 + echo " value=\"$value\"$extra />";
12566 +}
12567 +
12568 +/**
12569 + * Writes a reset input.
12570 + * @param string $name name of field
12571 + * @param string $class css class
12572 + * @param string $value value (button text)
12573 + * @param string $extra any extra parameters (optional)
12574 + */
12575 +function form_reset($name, $class=null, $value='Reset', $extra=null)
12576 +{
12577 + if ($extra) {$extra = ' '.$extra;}
12578 + echo "\n";
12579 + echo "<input type=\"reset\" name=\"$name\" id=\"$name\"";
12580 + echo ($class) ? " class=\"$class\"" : '';
12581 + echo " value=\"$value\"$extra />";
12582 +}
12583 +
12584 +/**
12585 + * Writes a hidden field.
12586 + * @param string $name name of field
12587 + * @param string $value value
12588 + * @param string $extra any extra parameters (optional)
12589 + */
12590 +function form_hidden($name, $value=null, $extra=null)
12591 +{
12592 + if ($extra) {$extra = ' '.$extra;}
12593 + echo "\n";
12594 + echo "<input type=\"hidden\" name=\"$name\"";
12595 + echo ($value) ? " value=\"$value\"" : '';
12596 + echo "$extra />";
12597 +}
12598 +
12599 +/**
12600 + * Writes a select list with options.
12601 + * @param string $name name of field
12602 + * @param string $id id of field, must be unique per page
12603 + * @param string $class css class
12604 + * @param array $options possible options, usually pulled from db, or array_* funcs
12605 + * @param string $selected if the value matches, it is selected
12606 + *
12607 + * Multiple selects based on sets come out of a database as val,val,val
12608 + * so the explode was intended to create the instance of an array based
12609 + * on the string regardless of whether or not it has val,val,val.
12610 + *
12611 + * @param string $extra any extra parameters (optional)
12612 + */
12613 +function form_select($name, $id=null, $class=null, $options=null, $selected=null, $extra=null)
12614 +{
12615 + if ($extra) {$extra = ' '.$extra;}
12616 + if (!empty($selected))
12617 + {
12618 + $selected = explode(',',$selected);
12619 + foreach ($selected as $key=>$val) {$selected[$key]=trim($val);}
12620 + }
12621 + echo "\n";
12622 + echo "<select name=\"$name\"";
12623 + echo ($id) ? " id=\"$id\"" : '';
12624 + echo ($class) ? " class=\"$class\"" : '';
12625 + echo "$extra>";
12626 + if (is_array($options))
12627 + {
12628 + foreach ($options as $key=>$val)
12629 + {
12630 + if (!empty($selected) && in_array($key, $selected))
12631 + echo "\n\t".'<option value="'.$key.'" selected="selected">'.$val.'</option>';
12632 + else
12633 + echo "\n\t".'<option value="'.$key.'">'.$val.'</option>';
12634 + }
12635 + }
12636 + echo "\n".'</select>';
12637 +}
12638 +
12639 +/**
12640 + * Writes a textarea
12641 + * @param string $name name of field
12642 + * @param string $id id of field, must be unique per page
12643 + * @param string $class css class
12644 + * @param int $rows number of rows (height)
12645 + * @param int $cols number of cols (width)
12646 + * @param string $value value of field
12647 + * @param string $extra any extra parameters
12648 + */
12649 +function form_textarea($name, $id=null, $class=null, $rows='6', $cols='50', $value=null, $extra=null)
12650 +{
12651 + if ($extra) {$extra = ' '.$extra;}
12652 + echo "\n";
12653 + echo "<textarea name=\"$name\"";
12654 + echo ($id) ? " id=\"$id\"" : '';
12655 + echo ($class) ? " class=\"$class\"" : '';
12656 + echo " rows=\"$rows\" cols=\"$cols\"";
12657 + echo "$extra>$value</textarea>";
12658 +}
12659 +
12660 +/**
12661 + * Fix dates for form display, or proper db entry
12662 + * @param array $dates array of date field names
12663 + * @param array $datetimes array of datetime field names
12664 + * @param int $way 1 is done after a post, 2 is done when selecting for forms
12665 + * @param array $orig for way 2, the array we need to add the separated date values to (usually $posts)
12666 + * @return mixed null, or the original array modified to have separated date values for the forms
12667 + */
12668 +function form_array_fix_dates($dates,$datetimes,$way=1,$orig='')
12669 +{
12670 + if($way==1)
12671 + {
12672 + if (is_array($dates))
12673 + {
12674 + foreach ($dates as $date)
12675 + {
12676 + $_POST[$date]=form_array_get_date($date);
12677 + }
12678 + }
12679 + if (is_array($datetimes))
12680 + {
12681 + foreach ($datetimes as $datetime)
12682 + {
12683 + $_POST[$datetime]=form_array_get_datetime($datetime);
12684 + }
12685 + }
12686 + }
12687 + elseif ($way==2)
12688 + {
12689 + if (is_array($dates))
12690 + {
12691 + foreach ($dates as $date)
12692 + {
12693 + list(${date.'_year'},${date.'_month'},${date.'_day'})=explode('-',$orig[$date]);
12694 + $orig[$date.'_year']=${date.'_year'};
12695 + $orig[$date.'_month']=${date.'_month'};
12696 + $orig[$date.'_day']=${date.'_day'};
12697 + }
12698 + }
12699 + if (is_array($datetimes))
12700 + {
12701 + foreach ($datetimes as $datetime)
12702 + {
12703 + $buf=explode(' ',$orig[$datetime]);
12704 + $date=explode('-',$buf[0]);
12705 + $time=explode(':',$buf[1]);
12706 + $orig[$datetime.'_year']=$date[0];
12707 + $orig[$datetime.'_month']=$date[1];
12708 + $orig[$datetime.'_day']=$date[2];
12709 + $orig[$datetime.'_hour']=$time[0];
12710 + $orig[$datetime.'_minute']=$time[1];
12711 + }
12712 + }
12713 + return $orig;
12714 + }
12715 +}
12716 +
12717 +/**
12718 + * Get put a date back together after a POST.
12719 + * @param string $field name of post index of date field
12720 + * @param int $key index of form array that the field value belongs to
12721 + * @return array $date repaired date, as an array that corresponds to the form
12722 + */
12723 +function form_array_get_date($field)
12724 +{
12725 + $keys=array_keys($_POST[$field.'_year']);
12726 + foreach ($keys as $key)
12727 + {
12728 + $date[$key]=$_POST[$field.'_year'][$key].'-'.$_POST[$field.'_month'][$key].'-'.$_POST[$field.'_day'][$key];
12729 + }
12730 + return $date;
12731 +}
12732 +
12733 +/**
12734 + * Get put a datetime back together after a POST.
12735 + * @param string $field name of post index of datetime field
12736 + * @param int $key index of form array that the field value belongs to
12737 + * @return array $datetime repaired datetime, as an array that corresponds to the form
12738 + */
12739 +function form_array_get_datetime($field)
12740 +{
12741 + $keys=array_keys($_POST[$field.'_year']);
12742 + foreach ($keys as $key)
12743 + {
12744 + $datetime[$key]=$_POST[$field.'_year'][$key].'-'.$_POST[$field.'_month'][$key].'-'.$_POST[$field.'_day'][$key].' '.$_POST[$field.'_hour'][$key].':'.$_POST[$field.'_minute'][$key];
12745 + }
12746 + return $datetime;
12747 +}
12748 +
12749 +/**
12750 + * Validates email addresses
12751 + * @param string $email
12752 + * @returns bool
12753 + */
12754 +function is_email_address($email)
12755 +{
12756 + return preg_match("/^ *[0-9a-zA-Z]+[-_\.0-9a-zA-Z]*@([0-9a-zA-Z]+[-\.0-9a-zA-Z]+)+\.[a-zA-Z]+ *$/", $email);
12757 +}
12758 +
12759 +/**
12760 + * Validates phone number
12761 + * @param string $phone
12762 + * @returns bool
12763 + */
12764 +function is_phone_number($phone)
12765 +{
12766 + return preg_match("/^ *((1[- \.]?((\([0-9]{3}\))|([0-9]{3}))[- \.]?)|((((\([0-9]{3}\))|([0-9]{3}))[- \.]?)?))[0-9]{3}[- \.]?[0-9]{4} *$/", $phone);
12767 +}
12768 +
12769 +/**
12770 + * Returns http:// and the string if the string does not begin with http://
12771 + * @param string $url
12772 + * @returns string
12773 + */
12774 +function url_out($url)
12775 +{
12776 + return (preg_match("#^http://#", $url)) ? trim($url) : 'http://'.trim($url);
12777 +}
12778 +
12779 +/**
12780 + * Take a db_get result and return an array of options.
12781 + * @param array $data db_get result
12782 + * @param string $val_col column containing the value for each option
12783 + * @param string $name_col column containing the text
12784 + * @return array $options array of options ($val=>$text)
12785 + */
12786 +function db_get_to_options($data,$val_col,$name_col)
12787 +{
12788 + $options=array();
12789 + foreach ($data as $row)
12790 + {
12791 + $options[$row[$val_col]]=$row[$name_col];
12792 + }
12793 + return $options;
12794 +}
12795 +?>
12796
12797 diff --git a/php/lib/geo.php b/php/lib/geo.php
12798 new file mode 100644
12799 index 0000000..bd80744
12800 --- /dev/null
12801 +++ b/php/lib/geo.php
12802 @@ -0,0 +1,69 @@
12803 +<?php
12804 +/**
12805 + * Functions for netgeo lookups.
12806 + * @package mirror
12807 + * @subpackage lib
12808 + */
12809 +
12810 +/**
12811 + * Calculate the distance between two geo points.
12812 + * @param int $lat1 latitude of first point
12813 + * @param int $lon1 longitude of first point
12814 + * @param int $lat2 latitude of second point
12815 + * @param int $lon2 longitude of second point
12816 + * @return int $distance rounded distance in _km_ between these points
12817 + */
12818 +function geo_get_distance($lat1,$lon1,$lat2,$lon2)
12819 +{
12820 + return null;
12821 +}
12822 +
12823 +/**
12824 + * Query NetGeo based on API and parse results.
12825 + * @param string $ip an IP address
12826 + * @param string $method lookup method, based on NetGeo API.
12827 + * @return array|false array containing results or false on failure
12828 + */
12829 +function geo_query($ip,$method='getRecord')
12830 +{
12831 + $raw = strip_tags(file_get_contents(GEO_URL.'?target='.$ip.'&method='.$method));
12832 + $lines = array_slice(explode("\n",$raw),5);
12833 + array_pop($lines);
12834 + foreach ($lines as $row)
12835 + {
12836 + $buf = preg_split('/:\s*/',$row);
12837 + $data[$buf[0]] = $buf[1];
12838 + }
12839 + return $data;
12840 +}
12841 +
12842 +/**
12843 + * Get longitude and latitude of an IP.
12844 + * @param string $ip an IP address
12845 + * @return array|false array containing results or false on failure
12846 + */
12847 +function geo_get_coordinates($ip)
12848 +{
12849 + return ($data = geo_query($ip,'getLatLong'))?array('lat'=>$data['LAT'],'long'=>$data['LONG']):false;
12850 +}
12851 +
12852 +/**
12853 + * Get complete record based on IP.
12854 + * @param string $ip an IP address
12855 + * @return array|false array containing results or false on failure
12856 + */
12857 +function geo_get_record($ip)
12858 +{
12859 + return ($data = geo_query($ip,'getRecord'))?$data:false;
12860 +}
12861 +
12862 +/**
12863 + * Get country of an IP.
12864 + * @param string $ip an IP address
12865 + * @return string|false array containing results or false on failure
12866 + */
12867 +function geo_get_country($ip)
12868 +{
12869 + return ($data = geo_query($ip,'getCountry'))?$data['COUNTRY']:false;
12870 +}
12871 +?>
12872
12873 diff --git a/php/lib/list.php b/php/lib/list.php
12874 new file mode 100644
12875 index 0000000..5deb5e9
12876 --- /dev/null
12877 +++ b/php/lib/list.php
12878 @@ -0,0 +1,391 @@
12879 +<?php
12880 +/**
12881 + * List functions for lists of values.
12882 + * @package mirror
12883 + * @subpackage lib
12884 + * @author Mike Morgan <mike.morgan@×××××××××××.edu>
12885 + *
12886 + * Usage example:
12887 + * <code>
12888 + * $orderby=get_order();
12889 + * $query="SELECT * FROM fic_courses $orderby";
12890 + * $courses=db_get($query,MYSQL_ASSOC);
12891 + * $headers=array(
12892 + * 'course_id'=>'',
12893 + * 'title'=>'Course Title',
12894 + * 'date_start_course'=>'Start',
12895 + * 'date_end_course'=>'End',
12896 + * 'date_start_reg'=>'Reg Starts',
12897 + * 'date_end_reg'=>'Reg Ends',
12898 + * 'active'=>'Active?',
12899 + * 'entry_date'=>'Created'
12900 + * );
12901 + * show_list($courses,$headers);
12902 + * </code>
12903 + *
12904 + * Accompanying CSS for table output:
12905 + * <code>
12906 + * .list
12907 + * {
12908 + * border:1px solid #999;
12909 + * }
12910 + * .list th
12911 + * {
12912 + * background:#eee;
12913 + * border:1px solid #000;
12914 + * font-weight:bold;
12915 + * }
12916 + * .list th a
12917 + * {
12918 + * display:block;
12919 + * padding:0 14px;
12920 + * }
12921 + * .list th a:hover
12922 + * {
12923 + * background-color:#fff;
12924 + * }
12925 + * .row1
12926 + * {
12927 + * background:#ddd;
12928 + * }
12929 + * .row2
12930 + * {
12931 + * background:#ccc;
12932 + * }
12933 + * .row1:hover, .row2:hover
12934 + * {
12935 + * background-color:#fec;
12936 + * }
12937 + * .current-sort
12938 + * {
12939 + * background:#fda;
12940 + * }
12941 + * .sort-desc
12942 + * {
12943 + * background:#fec url(../img/up.gif) no-repeat right;
12944 + * }
12945 + * .sort-asc
12946 + * {
12947 + * background:#fec url(../img/down.gif) no-repeat right;
12948 + * }
12949 + * </code>
12950 +
12951 + * Accompanying JavaScript for select all / inverse:
12952 + * <code>
12953 + * <script type="text/javascript">
12954 + * //<!--
12955 + * function selectAll(formObj,invert)
12956 + * {
12957 + * for (var i=0;i < formObj.elements.length;i++)
12958 + * {
12959 + * fldObj = formObj.elements[i];
12960 + * if (fldObj.type == 'checkbox')
12961 + * {
12962 + * if (invert==1)
12963 + * {
12964 + * fldObj.checked = (fldObj.checked) ? false : true;
12965 + * }
12966 + * else
12967 + * {
12968 + * fldObj.checked = true;
12969 + * }
12970 + * }
12971 + * }
12972 + * }
12973 + * //-->
12974 + * </script>
12975 + * </code>
12976 + */
12977 +
12978 +/**
12979 + * Show a list of values, for forms.
12980 + * @param array $list associative array
12981 + * @param array $headers column name => column title (for table heads)
12982 + * @param string $type checkbox, radio, simple
12983 + * @param array $array actions to display in actions select list
12984 + * @param string $form_id id of form holding list
12985 + * @param bool $sortable whether or not to show sortable column headers (links in th's)
12986 + * @param array|string $selected if type is checkbox, array otherwise string with one val
12987 + */
12988 +function show_list($list,$headers,$type='checkbox',$actions=null,$form_id=null,$sortable=true,$selected=null)
12989 +{
12990 + if ( is_array($list) && count($list)>0 && is_array($headers) )
12991 + {
12992 + if ( $type!='simple' && !empty($_GET['sort']) && !empty($_GET['order']) )
12993 + {
12994 + form_hidden('sort',$_GET['sort']);
12995 + form_hidden('order',$_GET['order']);
12996 + }
12997 + echo "\n".'<table class="list">';
12998 + show_headers($headers,$type,$sortable);
12999 + echo "\n".'<tbody>';
13000 + foreach ($list as $row)
13001 + {
13002 + show_row($headers,$row,$type,$count++,$selected);
13003 + }
13004 + echo "\n".'</tbody>';
13005 + echo "\n".'</table>';
13006 + if ($type=='checkbox')
13007 + {
13008 +echo <<<js
13009 +<script type="text/javascript">
13010 +//<!--
13011 +function list_select(formObj,invert)
13012 +{
13013 + for (var i=0;i < formObj.elements.length;i++)
13014 + {
13015 + fldObj = formObj.elements[i];
13016 + if (fldObj.type == 'checkbox')
13017 + {
13018 + if (invert==1)
13019 + {
13020 + fldObj.checked = (fldObj.checked) ? false : true;
13021 + }
13022 + else
13023 + {
13024 + fldObj.checked = true;
13025 + }
13026 + }
13027 + }
13028 +}
13029 +//-->
13030 +</script>
13031 +js;
13032 + echo "\n".'<p><input type="button" name="selectall" onclick="list_select(this.form,0);" class="button2" value="Select All"/> <input type="button" name="selectall" onclick="list_select(this.form,1);" class="button2" value="Invert"/></p>';
13033 + }
13034 + if ($type=='radio'||$type='checkbox-small')
13035 + {
13036 + echo '<br />';
13037 + }
13038 + if (is_array($actions)&&$type!='simple')
13039 + {
13040 + if (count($actions) == 1) {
13041 + $actions = array_values($actions);
13042 + echo '<p>';
13043 + form_submit('submit','submit','button1',$actions[0].' &raquo;');
13044 + echo '</p>';
13045 + } else {
13046 + echo '<p>';
13047 + echo '<label for="action">With selected: </label>';
13048 + form_select('action','action','text2',$actions,'');
13049 + form_submit('submit','submit','button1','Go &raquo;');
13050 + echo '</p>';
13051 + }
13052 + }
13053 + }
13054 + elseif ( !is_array($headers) )
13055 + {
13056 + echo "\n".'<h1>FIX HEADERS ARRAY</h1>';
13057 + }
13058 + else
13059 + {
13060 + echo "\n".'<p>No records found.</p>';
13061 + }
13062 +}
13063 +
13064 +/**
13065 + * Show table headers.
13066 + * @param array $headers column name => column title (for table heads)
13067 + * @param string $type type of list that is being shown
13068 + * @param bool $sortable whether or not to show sortable column headers (links in th's)
13069 + */
13070 +function show_headers($headers,$type,$sortable=true)
13071 +{
13072 + echo "\n".'<thead><tr>';
13073 + $sort=$_GET['sort'];
13074 + $order=get_order();
13075 + $count=0;
13076 + foreach ($headers as $col=>$title)
13077 + {
13078 + if ( !empty($sort) && !empty($order) )
13079 + {
13080 + if ($col==$sort && $order=='ASC')
13081 + {
13082 + $a_class=' class="sort-asc current-sort" ';
13083 + }
13084 + elseif ($col==$sort && $order=='DESC')
13085 + {
13086 + $a_class=' class="sort-desc current-sort" ';
13087 + }
13088 + else
13089 + {
13090 + $a_class=null;
13091 + }
13092 + }
13093 + if ($type!='simple'&&$count==0)
13094 + {
13095 + echo "\n".'<th> </th>';
13096 + next;
13097 + }
13098 + elseif($sortable)
13099 + {
13100 + $qs = array();
13101 + foreach ($_GET as $qn=>$qv) { $qs[$qn] = $qv; } // existing query string variables
13102 + $qs['sort'] = $col; // add/replace sort to query string
13103 + $qs['order'] = $order; // add/replace order by to query string
13104 + foreach ($qs as $qn=>$qv) { $querystring[] = $qn.'='.$qv; } // existing query string variables
13105 + echo "\n".'<th><a '.$a_class.'href="'.$_SERVER['PHP_SELF'].'?'.implode('&amp;',$querystring).'">'.$title.'</a></th>';
13106 + unset($qs);
13107 + unset($querystring);
13108 + }
13109 + else
13110 + {
13111 + echo "\n".'<th>'.$title.'</th>';
13112 + }
13113 + $count++;
13114 + }
13115 + echo "\n".'</tr></thead>';
13116 +}
13117 +
13118 +/**
13119 + * Show table data.
13120 + * @param array $headers column name => column title (for knowing which ones to display)
13121 + * @param array $row table row, assoc
13122 + * @param string $type type of table, determines first column, which could be an input
13123 + * @param array|string $selected selected items; if type is checkbox, array otherwise string with one val
13124 + */
13125 +function show_row($headers,$row,$type,$num=null,$selected=null)
13126 +{
13127 + $indexes=array_keys($headers);
13128 + $idname = $indexes[0];
13129 + $count=0;
13130 + $tr_class=($num%2)?' class="row1" ':' class="row2" ';
13131 + echo "\n".'<tr'.$tr_class.'>';
13132 + foreach ($indexes as $index)
13133 + {
13134 + $row[$index]=clean_out($row[$index]);
13135 + if ($type!='simple'&&$count==0)
13136 + {
13137 + $id=preg_replace('/[^[:alnum:]]/', '', $index).$row[$index];
13138 + if ($type=='checkbox'||$type=='checkbox-small')
13139 + {
13140 + echo "\n".'<td>';
13141 + form_checkbox($idname.'[]',$id,null,$row[$index],(is_array($selected) && in_array($row[$index], $selected)));
13142 + echo "\n".'</td>';
13143 + }
13144 + elseif ($type=='radio')
13145 + {
13146 + echo "\n".'<td>';
13147 + form_radio($idname,$id,null,$row[$index], ($row[$index] == $selected));
13148 + echo "\n".'</td>';
13149 + }
13150 + }
13151 + else
13152 + {
13153 + echo ($type=='simple')?"\n".'<td>'.$row[$index].'</td>':"\n".'<td><label for="'.$id.'">'.$row[$index].'</label></td>';
13154 + }
13155 + $count++;
13156 + }
13157 + echo "\n".'</tr>';
13158 +}
13159 +
13160 +/**
13161 + * Determine current sort order.
13162 + */
13163 +function get_order()
13164 +{
13165 + return ($_GET['order']=='ASC')?'DESC':'ASC';
13166 +}
13167 +
13168 +/**
13169 + * Determine whether or not list is currently sorted.
13170 + * @param string $method which http method to check for sort information
13171 + * @return mixed cleaned orderby clause based on saved sort information or null if no orderby is set in the defined method
13172 + */
13173 +function get_orderby($method='get')
13174 +{
13175 + if ( $method=='get' && !empty($_GET['sort']) && !empty($_GET['order']) )
13176 + {
13177 + $sort=clean_in($_GET['sort']);
13178 + $order=clean_in($_GET['order']);
13179 + return " ORDER BY $sort $order ";
13180 + }
13181 + elseif ( $method=='post' && !empty($_POST['sort']) && !empty($_POST['order']) )
13182 + {
13183 + $sort=clean_in($_POST['sort']);
13184 + $order=clean_in($_POST['order']);
13185 + return " ORDER BY $sort $order ";
13186 + }
13187 + elseif ( $method=='session' && !empty($_SESSION['sort']) && !empty($_SESSION['order']) )
13188 + {
13189 + $sort=clean_in($_SESSION['sort']);
13190 + $order=clean_in($_SESSION['order']);
13191 + return " ORDER BY $sort $order ";
13192 + }
13193 + else return null;
13194 +}
13195 +
13196 +/**
13197 + * Parses $_POST for ids, shows edit forms for each id with populated data.
13198 + * <ul>
13199 + * <li>name will be used to retrieve an _array_ from $_POST of the same name</li>
13200 + * <li>the form will be an include, with $posts[col_name] as the default for all values</li>
13201 + * <li>try to keep your query simple (no crazy sorting, etc.) -- we're talking one record at a time here anyway</li>
13202 + * </ul>
13203 + * Example:
13204 + * <code>
13205 + * list_edit_ids('course_id','../forms/course.php','SELECT * FROM fic_courses','1');
13206 + * </code>
13207 + * @param string $name name of id field
13208 + * @param string $form path to form to be used to items
13209 + * @param string $q_front front half of query
13210 + * @param string $q_where where statement
13211 + * @param array $dates array of date field names, so they can be fixed for forms
13212 + * @param array $datetimes array of datetime field names, so they can be fixed for forms
13213 + */
13214 +function list_edit_ids($name,$form,$q_front,$q_where='1',$dates=null,$datetimes=null)
13215 +{
13216 + if ( !empty($_SESSION[$name]) && is_array($_SESSION[$name]) )
13217 + {
13218 + $ids=implode(',',$_SESSION[$name]);
13219 + $orderby=get_orderby('session');
13220 + $query=$q_front.' WHERE '.$q_where." AND $name IN($ids) ".$orderby;
13221 + $records=db_get($query);
13222 + form_start($name);
13223 + foreach ($records as $record)
13224 + {
13225 + echo "\n".'<div class="record">';
13226 + $record=form_array_fix_dates($dates,$datetimes,2,$record);
13227 + foreach ($record as $key=>$val)
13228 + {
13229 + $posts[$key]=clean_out($val);
13230 + }
13231 + include($form);
13232 + echo "\n".'<div class="record-submit">';
13233 + form_submit('submit', '', 'button1');
13234 + echo "\n".'</div>';
13235 + echo "\n".'</div>';
13236 + }
13237 + form_end();
13238 + }
13239 + else
13240 + {
13241 + echo '<p>You must select a record. <a href="javascript:history.back();">Go back</a>.</p>';
13242 + }
13243 +}
13244 +
13245 +/**
13246 + * Process a submitted list_edit_ids form.
13247 + * @param array $name array of primary ids posted from the form, these are vital to the WHERE clause of the UPDATE statements.
13248 + * @param string $table name of table being affected
13249 + */
13250 +function list_update_ids($name,$table)
13251 +{
13252 + $keys=array_keys($_POST[$name]);
13253 + foreach ($keys as $index)
13254 + {
13255 + foreach ($_POST as $key=>$val)
13256 + {
13257 + if ($key!='submit')
13258 + {
13259 + $posts[$index][$key]=$val[$index];
13260 + }
13261 + }
13262 + }
13263 + foreach ($posts as $dataset)
13264 + {
13265 + $query=db_makeupdate($dataset,$table," WHERE $name='".$dataset[$name]."' ");
13266 + db_query($query);
13267 + }
13268 +}
13269 +?>
13270
13271 diff --git a/php/lib/mirror.php b/php/lib/mirror.php
13272 new file mode 100644
13273 index 0000000..a618a86
13274 --- /dev/null
13275 +++ b/php/lib/mirror.php
13276 @@ -0,0 +1,531 @@
13277 +<?php
13278 +/**
13279 + * Application functions. Dependent on lib/db.php!
13280 + * @package mirror
13281 + * @subpackage lib
13282 + * @todo add transactions once innodb table types are in place
13283 + */
13284 +
13285 +/**
13286 + * Get an alpha-list of regions for select list.
13287 + * @return array $regions
13288 + */
13289 +function mirror_get_regions_select()
13290 +{
13291 + $regions = db_get("SELECT region_id,region_name FROM mirror_regions ORDER BY region_name ASC",MYSQL_ASSOC);
13292 + foreach ($regions as $region) {
13293 + $retval[$region['region_id']]=$region['region_name'];
13294 + }
13295 + return $retval;
13296 +}
13297 +
13298 +/**
13299 + * Get an priority-list of regions for select list.
13300 + * @return array $regions
13301 + */
13302 +function mirror_get_regions_select_priority()
13303 +{
13304 + $regions = db_get("SELECT region_id,region_name FROM mirror_regions ORDER BY region_priority ASC",MYSQL_ASSOC);
13305 + foreach ($regions as $region) {
13306 + $retval[$region['region_id']]=$region['region_name'];
13307 + }
13308 + return $retval;
13309 +}
13310 +
13311 +/**
13312 + * Insert region.
13313 + * @param string $name
13314 + * @param int $priority
13315 + * @return bool
13316 + */
13317 +function mirror_insert_region($name,$priority)
13318 +{
13319 + return db_query("INSERT INTO mirror_regions(region_name,region_priority) VALUES('{$name}',{$priority})");
13320 +}
13321 +
13322 +/**
13323 + * Update region.
13324 + * @param int $id
13325 + * @param string $name
13326 + * @param int $priority
13327 + * @return bool
13328 + */
13329 +function mirror_update_region($id,$name,$priority)
13330 +{
13331 + return db_query("UPDATE mirror_regions SET region_name='{$name}',region_priority={$priority} WHERE region_id={$id}");
13332 +}
13333 +
13334 +/**
13335 + * Get one region.
13336 + * @param int $id
13337 + * @return array
13338 + */
13339 +function mirror_get_one_region($id)
13340 +{
13341 + return db_get_one("SELECT * FROM mirror_regions WHERE region_id = {$id}");
13342 +}
13343 +
13344 +/**
13345 + * Delete a region.
13346 + * @param int $id
13347 + * @return bool
13348 + */
13349 +function mirror_delete_region($id)
13350 +{
13351 + return db_query("DELETE FROM mirror_regions WHERE region_id={$id}");
13352 +}
13353 +
13354 +/**
13355 + * Get an alpha-list of mirrors for select list.
13356 + * @return array $mirrors
13357 + */
13358 +function mirror_get_mirrors_select()
13359 +{
13360 + $mirrors = db_get("SELECT mirror_id,mirror_name FROM mirror_mirrors ORDER BY mirror_name ASC",MYSQL_ASSOC);
13361 + foreach ($mirrors as $mirror) {
13362 + $retval[$mirror['mirror_id']]=$mirror['mirror_name'];
13363 + }
13364 + return $retval;
13365 +}
13366 +
13367 +/**
13368 + * Get regions.
13369 + * @return array
13370 + */
13371 +function mirror_get_regions()
13372 +{
13373 + return db_get("
13374 + SELECT
13375 + mirror_regions.*,
13376 + COUNT(mirror_id) as mirrors
13377 + FROM
13378 + mirror_regions
13379 + LEFT JOIN
13380 + mirror_mirror_region_map
13381 + ON
13382 + mirror_regions.region_id = mirror_mirror_region_map.region_id
13383 + GROUP BY
13384 + mirror_regions.region_id
13385 + ",MYSQL_ASSOC);
13386 +}
13387 +
13388 +/**
13389 + * Insert mirror.
13390 + * @param string $name
13391 + * @param int $region_id
13392 + * @param string $baseurl
13393 + * @param int $rating
13394 + * @return bool
13395 + */
13396 +function mirror_insert_mirror($name,$region_id,$baseurl,$rating)
13397 +{
13398 + return (db_query("INSERT INTO mirror_mirrors(mirror_name,mirror_baseurl,mirror_rating) VALUES('{$name}','{$baseurl}','{$rating}')") && db_query("INSERT INTO mirror_mirror_region_map(mirror_id,region_id) VALUES('".db_insert_id()."','$region_id')"))?true:false;
13399 +}
13400 +
13401 +/**
13402 + * Update mirror.
13403 + * @param string $name
13404 + * @param int $region_id
13405 + * @param string $baseurl
13406 + * @param int $rating
13407 + * @return bool
13408 + */
13409 +function mirror_update_mirror($id,$name,$region_id,$baseurl,$rating)
13410 +{
13411 + return (db_query("UPDATE mirror_mirrors SET mirror_name='{$name}',mirror_baseurl='{$baseurl}',mirror_rating='{$rating}' WHERE mirror_id={$id}") && db_query("UPDATE mirror_mirror_region_map SET region_id={$region_id} WHERE mirror_id={$id}"))?true:false;
13412 +}
13413 +
13414 +/**
13415 + * Delete mirror.
13416 + * @return bool
13417 + */
13418 +function mirror_delete_mirror($mirror_id)
13419 +{
13420 + return (db_query("DELETE FROM mirror_mirrors WHERE mirror_id={$mirror_id}")&&db_query("DELETE FROM mirror_mirror_region_map WHERE mirror_id={$mirror_id}"))?true:false;
13421 +}
13422 +
13423 +/**
13424 + * Get one mirror record.
13425 + * @param int $mirror_id
13426 + * @return array mirror information
13427 + */
13428 +function mirror_get_one_mirror($mirror_id)
13429 +{
13430 + return db_get_one("SELECT mirror_mirrors.*,region_id FROM mirror_mirrors,mirror_mirror_region_map WHERE mirror_mirrors.mirror_id={$mirror_id} AND mirror_mirrors.mirror_id=mirror_mirror_region_map.mirror_id");
13431 +}
13432 +
13433 +/**
13434 + * Get list of mirrors.
13435 + * @return array
13436 + */
13437 +function mirror_get_mirrors()
13438 +{
13439 + return db_get("
13440 + SELECT
13441 + mirror_mirrors.*,
13442 + IF(mirror_mirrors.mirror_active='0','DISABLED','ok') as mirror_active,
13443 + region_name
13444 + FROM
13445 + mirror_mirrors,
13446 + mirror_regions,
13447 + mirror_mirror_region_map
13448 + WHERE
13449 + mirror_regions.region_id = mirror_mirror_region_map.region_id AND
13450 + mirror_mirrors.mirror_id = mirror_mirror_region_map.mirror_id
13451 + ",MYSQL_ASSOC);
13452 +}
13453 +
13454 +/**
13455 + * Insert product.
13456 + * @param string $name
13457 + * @param int $priority
13458 + * @return bool
13459 + */
13460 +function mirror_insert_product($name,$priority)
13461 +{
13462 + return db_query("INSERT INTO mirror_products(product_name,product_priority) VALUES('{$name}',{$priority})");
13463 +}
13464 +
13465 +/**
13466 + * Update product.
13467 + * @param int $id
13468 + * @param string $name
13469 + * @param int $priority
13470 + * @return bool
13471 + */
13472 +function mirror_update_product($id,$name,$priority)
13473 +{
13474 + return db_query("UPDATE mirror_products SET product_name='{$name}',product_priority={$priority} WHERE product_id={$id}");
13475 +}
13476 +
13477 +/**
13478 + * Get one product.
13479 + * @param int $id
13480 + * @return array
13481 + */
13482 +function mirror_get_one_product($id)
13483 +{
13484 + return db_get_one("SELECT * FROM mirror_products WHERE product_id = {$id}");
13485 +}
13486 +
13487 +/**
13488 + * Delete a product.
13489 + * @param int $id
13490 + * @return bool
13491 + */
13492 +function mirror_delete_product($id)
13493 +{
13494 + return db_query("DELETE FROM mirror_products WHERE product_id={$id}");
13495 +}
13496 +
13497 +/**
13498 + * Get products.
13499 + * @return array
13500 + */
13501 +function mirror_get_products()
13502 +{
13503 + return db_get("
13504 + SELECT
13505 + *
13506 + FROM
13507 + mirror_products
13508 + ",MYSQL_ASSOC);
13509 +}
13510 +
13511 +/**
13512 + * Insert os.
13513 + * @param string $name
13514 + * @param int $priority
13515 + * @return bool
13516 + */
13517 +function mirror_insert_os($name,$priority)
13518 +{
13519 + return db_query("INSERT INTO mirror_os(os_name,os_priority) VALUES('{$name}',{$priority})");
13520 +}
13521 +
13522 +/**
13523 + * Update os.
13524 + * @param int $id
13525 + * @param string $name
13526 + * @param int $priority
13527 + * @return bool
13528 + */
13529 +function mirror_update_os($id,$name,$priority)
13530 +{
13531 + return db_query("UPDATE mirror_os SET os_name='{$name}',os_priority={$priority} WHERE os_id={$id}");
13532 +}
13533 +
13534 +/**
13535 + * Get one os.
13536 + * @param int $id
13537 + * @return array
13538 + */
13539 +function mirror_get_one_os($id)
13540 +{
13541 + return db_get_one("SELECT * FROM mirror_os WHERE os_id = {$id}");
13542 +}
13543 +
13544 +/**
13545 + * Delete a os.
13546 + * @param int $id
13547 + * @return bool
13548 + */
13549 +function mirror_delete_os($id)
13550 +{
13551 + return db_query("DELETE FROM mirror_os WHERE os_id={$id}");
13552 +}
13553 +
13554 +/**
13555 + * Get operating systems.
13556 + * @return array
13557 + */
13558 +function mirror_get_oss()
13559 +{
13560 + return db_get("
13561 + SELECT
13562 + *
13563 + FROM
13564 + mirror_os
13565 + ",MYSQL_ASSOC);
13566 +}
13567 +
13568 +/**
13569 + * Get an alpha-list of operating systems for select list.
13570 + * @return array $oss
13571 + */
13572 +function mirror_get_oss_select()
13573 +{
13574 + $oss = db_get("SELECT os_id,os_name FROM mirror_os ORDER BY os_name ASC",MYSQL_ASSOC);
13575 + foreach ($oss as $os) {
13576 + $retval[$os['os_id']]=$os['os_name'];
13577 + }
13578 + return $retval;
13579 +}
13580 +
13581 +/**
13582 + * Get an priority-list of operating systems for select list.
13583 + * @return array $oss
13584 + */
13585 +function mirror_get_oss_select_priority()
13586 +{
13587 + $oss = db_get("SELECT os_id,os_name FROM mirror_os ORDER BY os_priority ASC",MYSQL_ASSOC);
13588 + foreach ($oss as $os) {
13589 + $retval[$os['os_id']]=$os['os_name'];
13590 + }
13591 + return $retval;
13592 +}
13593 +
13594 +/**
13595 + * Get an alpha-list of products for select list.
13596 + * @return array $products
13597 + */
13598 +function mirror_get_products_select()
13599 +{
13600 + $products = db_get("SELECT product_id,product_name FROM mirror_products ORDER BY product_name ASC",MYSQL_ASSOC);
13601 + foreach ($products as $product) {
13602 + $retval[$product['product_id']]=$product['product_name'];
13603 + }
13604 + return $retval;
13605 +}
13606 +
13607 +/**
13608 + * Get an priority-list of operating systems for select list.
13609 + * @return array $oss
13610 + */
13611 +function mirror_get_products_select_priority()
13612 +{
13613 + $products = db_get("SELECT product_id,product_name FROM mirror_products ORDER BY product_priority ASC",MYSQL_ASSOC);
13614 + foreach ($products as $product) {
13615 + $retval[$product['product_id']]=$product['product_name'];
13616 + }
13617 + return $retval;
13618 +}
13619 +
13620 +/**
13621 + * Insert a new location.
13622 + * @param int $product
13623 + * @param int $os
13624 + * @param string $path
13625 + * @return bool
13626 + */
13627 +function mirror_insert_location($product,$os,$path)
13628 +{
13629 + return db_query("INSERT INTO mirror_locations(product_id,os_id,location_path) VALUES({$product},{$os},'{$path}')");
13630 +}
13631 +
13632 +/**
13633 + * Update a location.
13634 + * @param int $location
13635 + * @param int $product
13636 + * @param int $os
13637 + * @param string $path
13638 + * @return bool
13639 + */
13640 +function mirror_update_location($location,$product,$os,$path)
13641 +{
13642 + return db_query("UPDATE mirror_locations SET product_id={$product},os_id={$os},location_path='{$path}' WHERE location_id={$location}");
13643 +}
13644 +
13645 +/**
13646 + * Delete a location.
13647 + * @param int $id
13648 + * @return bool
13649 + */
13650 +function mirror_delete_location($id)
13651 +{
13652 + return db_query("DELETE FROM mirror_locations WHERE location_id={$id}");
13653 +}
13654 +
13655 +/**
13656 + * Get locations.
13657 + * @return array $locations array containing all location information.
13658 + */
13659 +function mirror_get_locations()
13660 +{
13661 + return db_get("
13662 + SELECT
13663 + location_id,
13664 + product_name,
13665 + os_name,
13666 + location_path
13667 + FROM
13668 + mirror_locations,
13669 + mirror_products,
13670 + mirror_os
13671 + WHERE
13672 + mirror_locations.product_id = mirror_products.product_id AND
13673 + mirror_locations.os_id = mirror_os.os_id
13674 + ");
13675 +}
13676 +
13677 +/**
13678 + * Get one location.
13679 + * @param int $id
13680 + * @return array
13681 + */
13682 +function mirror_get_one_location($id)
13683 +{
13684 + return db_get_one("SELECT * FROM mirror_locations WHERE location_id = {$id}");
13685 +}
13686 +
13687 +/**
13688 + * Insert a new user.
13689 + * @param string $username
13690 + * @param string $password
13691 + * @param string $rpassword (re-entered password)
13692 + * @param string $firstname
13693 + * @param string $lastname
13694 + * @param string $email
13695 + * @return bool
13696 + */
13697 +function mirror_insert_user($username,$password,$rpassword,$firstname,$lastname,$email)
13698 +{
13699 + if ($password==$rpassword) {
13700 + return db_query("INSERT INTO mirror_users(username,password,user_firstname,user_lastname,user_email) VALUES('{$username}',MD5('{$password}'),'{$firstname}','{$lastname}','{$email}')");
13701 + } else {
13702 + set_error('User could not be added because passwords did not match.');
13703 + }
13704 +}
13705 +
13706 +/**
13707 + * Update a user.
13708 + * @param int $user
13709 + * @param string $username
13710 + * @param string $password
13711 + * @param string $rpassword (re-entered password)
13712 + * @param string $firstname
13713 + * @param string $lastname
13714 + * @param string $email
13715 + * @return bool
13716 + */
13717 +function mirror_update_user($user,$username,$password,$rpassword,$firstname,$lastname,$email)
13718 +{
13719 + $query = ($password==$rpassword&&!empty($password))?"UPDATE mirror_users SET username='{$username}',password=MD5('{$password}'),user_firstname='{$firstname}',user_lastname='{$lastname}',user_email='{$email}' WHERE user_id={$user}":"UPDATE mirror_users SET username='{$username}',user_firstname='{$firstname}',user_lastname='{$lastname}',user_email='{$email}' WHERE user_id={$user}";
13720 + return db_query($query);
13721 +}
13722 +
13723 +/**
13724 + * Delete a user.
13725 + * @param int $id
13726 + * @return bool
13727 + */
13728 +function mirror_delete_user($id)
13729 +{
13730 + return db_query("DELETE FROM mirror_users WHERE user_id={$id}");
13731 +}
13732 +
13733 +/**
13734 + * Get users.
13735 + * @return array $users array containing all user information.
13736 + */
13737 +function mirror_get_users()
13738 +{
13739 + return db_get("SELECT * FROM mirror_users");
13740 +}
13741 +
13742 +/**
13743 + * Get one user.
13744 + * @param int $id
13745 + * @return array
13746 + */
13747 +function mirror_get_one_user($id)
13748 +{
13749 + return db_get_one("SELECT * FROM mirror_users WHERE user_id = {$id}");
13750 +}
13751 +
13752 +/**
13753 + * Enable or disable a mirror.
13754 + * @param int $mirror
13755 + * @return bool
13756 + */
13757 +function mirror_toggle($mirror)
13758 +{
13759 + return (db_toggle_bool('mirror_mirrors','mirror_id','mirror_active',$mirror))?true:false;
13760 +}
13761 +
13762 +/**
13763 + * Get mirror statistics.
13764 + * @return array $stats
13765 + */
13766 +function mirror_get_mirror_stats()
13767 +{
13768 + return db_get("
13769 + SELECT
13770 + *,
13771 + COUNT(mirror_log.mirror_id) as count
13772 + FROM
13773 + mirror_mirrors,
13774 + mirror_log,
13775 + mirror_regions,
13776 + mirror_mirror_region_map
13777 + WHERE
13778 + mirror_log.mirror_id = mirror_mirrors.mirror_id AND
13779 + mirror_mirrors.mirror_id = mirror_mirror_region_map.mirror_id AND
13780 + mirror_regions.region_id = mirror_mirror_region_map.region_id
13781 + GROUP BY
13782 + mirror_log.mirror_id
13783 + ");
13784 +}
13785 +
13786 +/**
13787 + * Get product statistics.
13788 + * @return array $stats
13789 + */
13790 +function mirror_get_product_stats()
13791 +{
13792 + return db_get("
13793 + SELECT
13794 + *,
13795 + COUNT(mirror_locations.product_id) as count
13796 + FROM
13797 + mirror_log,
13798 + mirror_locations,
13799 + mirror_products
13800 + WHERE
13801 + mirror_log.location_id = mirror_locations.location_id AND
13802 + mirror_locations.product_id = mirror_products.product_id
13803 + GROUP BY
13804 + mirror_locations.product_id
13805 + ");
13806 +}
13807 +?>
13808
13809 diff --git a/php/lib/util.php b/php/lib/util.php
13810 new file mode 100644
13811 index 0000000..af64fbb
13812 --- /dev/null
13813 +++ b/php/lib/util.php
13814 @@ -0,0 +1,322 @@
13815 +<?php
13816 +/**
13817 + * Utility funcs.
13818 + * @package mirror
13819 + * @subpackage lib
13820 + */
13821 +
13822 +/**
13823 + * determine float value of now
13824 + * @return float value of current time in seconds
13825 + */
13826 +function microtime_float()
13827 +{
13828 + list($usec, $sec) = explode(" ", microtime());
13829 + return ((float)$usec + (float)$sec);
13830 +}
13831 +
13832 +/**
13833 + * Add a message to SESSION['messages'] array.
13834 + * The $_SESSION['messages'] array stores general or success messages.
13835 + * @param string $str message to add (optional)
13836 + */
13837 +function set_msg($str=null)
13838 +{
13839 + if (!empty($str))
13840 + {
13841 + $_SESSION['messages'][]=$str;
13842 + }
13843 +}
13844 +
13845 +/**
13846 + * Show messages.
13847 + * Iterates through $_SESSION['messages'] and displays them in a ul.
13848 + * @param string $class css class for message style
13849 + */
13850 +function show_msg($class='msg')
13851 +{
13852 + if (is_array($_SESSION['messages']) && count($_SESSION['messages']) > 0)
13853 + {
13854 + echo ($class !== NULL) ? '<div class="'.$class.'">' : '';
13855 + echo '<ul>';
13856 + foreach ($_SESSION['messages'] as $message)
13857 + echo '<li>'.$message.'</li>';
13858 + echo '</ul>';
13859 + echo ($class !== NULL) ? '</div>' : '';
13860 + $ret = count($_SESSION['messages']);
13861 + }
13862 + else
13863 + {
13864 + $ret = 0;
13865 + }
13866 + unset($_SESSION['messages']);
13867 + return $ret;
13868 +}
13869 +
13870 +/**
13871 + * Add an error message to SESSION['errors'] array.
13872 + * The $_SESSION['errors'] array stores error messages.
13873 + * @param string $str message to add (optional)
13874 + */
13875 +function set_error($str=null)
13876 +{
13877 + if (!empty($str))
13878 + {
13879 + $_SESSION['errors'][]=$str;
13880 + }
13881 +}
13882 +
13883 +/**
13884 + * Show errors messages.
13885 + * Iterates through $_SESSION['errors'] and displays them in a ul.
13886 + * @param string $class css class for message style
13887 + */
13888 +function show_error($class='error')
13889 +{
13890 + if (@is_array($_SESSION['errors']) && count($_SESSION['errors']) > 0)
13891 + {
13892 + echo '<div class="'.$class.'">';
13893 + echo '<ul>';
13894 + foreach ($_SESSION['errors'] as $error)
13895 + echo '<li>'.$error.'</li>';
13896 + echo '</ul>';
13897 + echo '</div>';
13898 + $ret = count($_SESSION['errors']);
13899 + unset($_SESSION['errors']);
13900 + }
13901 + else
13902 + {
13903 + $ret = 0;
13904 + }
13905 + return $ret;
13906 +}
13907 +
13908 +/**
13909 + * Print out an varible enclosed by &lt;pre&gt; tags
13910 + * @param mixed $var the variable to print by print_r
13911 + */
13912 +function debug_r(&$var)
13913 +{
13914 + echo '<pre>';
13915 + print_r($var);
13916 + echo '</pre>';
13917 +}
13918 +
13919 +/**
13920 + * Generate a random string good for passwords
13921 + * @param in $len the length of the password string
13922 + * @return string password
13923 + */
13924 +function password_gen($len=6)
13925 +{
13926 +
13927 + $set = array( '0','1','2','3','4','5','6','7','8','9','a','e','i','o','u','y','b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z' );
13928 + $pw = '';
13929 +
13930 + while (strlen($pw) <= $len)
13931 + {
13932 + // random alphanum
13933 + $char = $set[array_rand($set)];
13934 + $pw .= $char;
13935 + }
13936 +
13937 + return $pw;
13938 +}
13939 +
13940 +/**
13941 + * This recursive function empty values in an 'multi-dimensional' array.
13942 + * @param mixed $needle it accepts just one value or an array of values
13943 + * @return mixed false if an empty needle passed in, else a copy of the array with needle values replaced with empty strings
13944 + */
13945 +function emptify_in_array($array, $needle)
13946 +{
13947 + if ($needle == '')
13948 + return FALSE;
13949 +
13950 + foreach ($array as $key=>$val)
13951 + {
13952 + if (is_array($val))
13953 + $array[$key] = emptify_in_array($val, $needle);
13954 + elseif (is_array($needle) && in_array($val, $needle))
13955 + $array[$key] = '';
13956 + elseif ($val === $needle)
13957 + $array[$key] = '';
13958 + }
13959 +
13960 + return $array;
13961 +}
13962 +
13963 +/**
13964 + * This function checks for the existence of a particular row in a particular table matching a value.
13965 + * Use this with libdb, unless you want lots of problems. :)
13966 + * @param string $table name of table
13967 + * @param string $column name of column containing value to match
13968 + * @param string $val value to match against database (goes in WHERE clause)
13969 + * @param string $extra (optional) any AND or ORDER BY or LIMIT or anything you want to add.
13970 + * @ret bool if a match exists, return true -- otherwise return false
13971 + */
13972 +function record_exists($table,$column,$val,$extra=NULL)
13973 +{
13974 + $result = db_query("SELECT * FROM {$table} WHERE {$column}='{$val}' {$extra}");
13975 + if ($result&&mysql_num_rows($result)>0)
13976 + {
13977 + return true;
13978 + }
13979 + return false;
13980 +}
13981 +
13982 +/**
13983 + * Show user tabs, based on an array.
13984 + * @param array $tabs array of tabs (name=>href)
13985 + * @param string $current name of tab to highlight
13986 + */
13987 +function show_tabs($tabs,$current)
13988 +{
13989 + if ( is_array($tabs) )
13990 + {
13991 + echo "\n".'<div id="tabs"><ul>';
13992 + foreach ( $tabs as $key=>$val )
13993 + {
13994 + if ( strtolower($key) == $current)
13995 + echo "\n".'<li class="active-tab"><a href="'.$val.'">'.$key.'</a></li>';
13996 + else
13997 + echo "\n".'<li><a href="'.$val.'">'.$key.'</a></li>';
13998 + }
13999 + echo "\n".'</ul></div>';
14000 + }
14001 +}
14002 +
14003 +/**
14004 + * Sort a two dimensional array based on a 'column' key
14005 + * @param array $array the array to be sorted
14006 + * @param mixed $key the column key to be used for sorting, an array of keys are also acceptable
14007 + * @param mixed $order the order of the sort, either 'asc' (ascending) or 'desc' (descending), can also be an array (with matching array keys to the $key param)
14008 + * @param bool $retain_keys option to retain the original keys; default to true
14009 + * @param bool $case_sensitive option for a case sensitive sort; default to false
14010 + * @return array the original array on argument errors, the sorted array on success
14011 + */
14012 +function array_order_by(&$array, $key=null, $order=null, $retain_keys=TRUE, $case_sensitive=FALSE)
14013 +{
14014 + if (is_array($key) && count($key)==1)
14015 + {
14016 + $temp = each($key);
14017 + $key = $temp['value'];
14018 + $order = $order[$temp['key']];
14019 + unset($temp);
14020 + }
14021 +
14022 + if (is_array($key))
14023 + {
14024 + if (!is_array($order))
14025 + {
14026 + $order = array();
14027 + }
14028 + if (count($key) > count($order))
14029 + {
14030 + $order = array_pad($order, count($key), 'asc');
14031 + }
14032 +
14033 + // sort it according to the first key
14034 + $temp_sort_key = reset($key);
14035 + $temp_order_val = $order[key($key)];
14036 + $return_arr = array_order_by($array, $temp_sort_key, $temp_order_val, $retain_keys, $case_sensitive);
14037 +
14038 + // set up the arrays for the 'inner', next recursion
14039 + $key_copy = $key;
14040 + $order_copy = $order;
14041 + unset($key_copy[key($key)]);
14042 + unset($order_copy[key($key)]);
14043 +
14044 + // get the sorting column's value in the first row
14045 + $temp = current($return_arr);
14046 + $temp_prev_sort_val = $temp[$temp_sort_key];
14047 + unset($temp);
14048 +
14049 + $temp_return_arr = array();
14050 + $temp_partial_array = array();
14051 +
14052 + foreach ($return_arr as $return_arr_key=>$return_arr_val)
14053 + {
14054 + if ($return_arr_val[$temp_sort_key] == $temp_prev_sort_val)
14055 + {
14056 + $temp_partial_array[$return_arr_key] = $return_arr_val;
14057 + }
14058 + else
14059 + {
14060 + if ($retain_keys)
14061 + {
14062 + $temp_return_arr = $temp_return_arr + array_order_by($temp_partial_array, $key_copy, $order_copy, $retain_keys, $case_sensitive);
14063 + }
14064 + else
14065 + {
14066 + $temp = array_order_by($temp_partial_array, $key_copy, $order_copy, $retain_keys, $case_sensitive);
14067 + foreach ($temp as $temp_val)
14068 + {
14069 + $temp_return_arr[] = $temp_val;
14070 + }
14071 + unset($temp);
14072 + }
14073 + $temp_prev_sort_val = $return_arr_val[$temp_sort_key];
14074 + $temp_partial_array = array();
14075 + $temp_partial_array[$return_arr_key] = $return_arr_val;
14076 + }
14077 + }
14078 +
14079 + // important! if the last n $temp_prev_sort_val has the same value, then they aren't sorted and added to the temp array
14080 + if (count($return_arr) > count($temp_return_arr))
14081 + {
14082 + if ($retain_keys)
14083 + {
14084 + $temp_return_arr = $temp_return_arr + array_order_by($temp_partial_array, $key_copy, $order_copy, $retain_keys, $case_sensitive);
14085 + }
14086 + else
14087 + {
14088 + $temp = array_order_by($temp_partial_array, $key_copy, $order_copy, $retain_keys, $case_sensitive);
14089 + foreach ($temp as $temp_val)
14090 + {
14091 + $temp_return_arr[] = $temp_val;
14092 + }
14093 + unset($temp);
14094 + }
14095 + }
14096 +
14097 + return $temp_return_arr;
14098 + }
14099 +
14100 + if (empty($array) || is_null($key))
14101 + return $array;
14102 +
14103 + if (!array_key_exists($key, reset($array)))
14104 + return $array;
14105 +
14106 + $order =& strtolower($order);
14107 + if ($order == '' || ($order != 'asc' && $order != 'desc'))
14108 + $order = 'asc';
14109 +
14110 + // construct an array that will be used to order the keys
14111 + foreach($array as $row_key => $row)
14112 + {
14113 + $x[$row_key] = $row[$key];
14114 + }
14115 +
14116 + if ($case_sensitive)
14117 + natsort($x);
14118 + else
14119 + natcasesort($x);
14120 +
14121 + if ($order == 'desc')
14122 + $x =& array_reverse($x, TRUE);
14123 +
14124 + // now use those keys to order the original array
14125 + foreach($x as $row_key => $uselessvalue)
14126 + {
14127 + if ($retain_keys)
14128 + $return_arr[$row_key] =& $array[$row_key];
14129 + else
14130 + $return_arr[] =& $array[$row_key];
14131 + }
14132 +
14133 + return $return_arr;
14134 +}
14135 +
14136 +?>
14137
14138 diff --git a/php/mozilla.js b/php/mozilla.js
14139 new file mode 100644
14140 index 0000000..90ae99d
14141 --- /dev/null
14142 +++ b/php/mozilla.js
14143 @@ -0,0 +1,22 @@
14144 +function getDownloadURLForLanguage(aABCD, aPlatform)
14145 +{
14146 + var url = "http://download.mozilla.org/?product=firefox&os=";
14147 +
14148 + switch (aPlatform) {
14149 + case PLATFORM_WINDOWS:
14150 + url += "win";
14151 + break;
14152 + case PLATFORM_LINUX:
14153 + url += "linux";
14154 + break;
14155 + case PLATFORM_MACOSX:
14156 + url += "osx";
14157 + if (aABCD == "ja-JP")
14158 + aABCD = "ja-JPM";
14159 + break;
14160 + default:
14161 + return "http://www.mozilla.org/products/firefox/all.html";
14162 + }
14163 +
14164 + return url + "&lang=" + aABCD;
14165 +}
14166
14167 diff --git a/php/rss/download-counts.php b/php/rss/download-counts.php
14168 new file mode 100644
14169 index 0000000..4559647
14170 --- /dev/null
14171 +++ b/php/rss/download-counts.php
14172 @@ -0,0 +1,55 @@
14173 +<?php
14174 +/**
14175 + * RSS 2.0 feed for download counts.
14176 + * @package mirror
14177 + * @subpackage rss
14178 + */
14179 +
14180 +require_once('../cfg/config.php'); // config file
14181 +require_once(LIB.'/db.php'); // core mysql wrappers
14182 +
14183 +db_connect(DBHOST,DBUSER,DBPASS); // open persistent connection to db
14184 +db_select(DBNAME); // select db
14185 +
14186 +// get download counts per product
14187 +$data = db_get("SELECT * FROM mirror_products ORDER BY product_name");
14188 +
14189 +// time to go at the end of each item
14190 +$now = date('G',time());
14191 +
14192 +// content headers, replace Content-type if already set
14193 +header('Content-type: text/xml', true);
14194 +echo '<?xml version="1.0"?>'."\n\n";
14195 +
14196 +// doctype
14197 +echo '<rdf:RDF'."\n";
14198 +echo ' xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'."\n";
14199 +echo ' xmlns="http://purl.org/rss/1.0/">'."\n\n";
14200 +
14201 +// channel details
14202 +echo '<channel rdf:about="http://bouncer.gentoo.org/rss/download-counts.php">'."\n";
14203 +echo ' <title>Gentoo Download Counts</title>'."\n";
14204 +echo ' <link>http://www.gentoo.org/</link>'."\n";
14205 +echo ' <description>Gentoo product download counts pulled from Bouncer database.</description> '."\n";
14206 +
14207 +// item listing
14208 +echo ' <items>'."\n";
14209 +echo ' <rdf:Seq>'."\n";
14210 +foreach ($data as $product) {
14211 + echo ' <rdf:li rdf:resource="http://bouncer.gentoo.org/?product='.$product['product_name'].'&amp;lastmod='.$now.'"/>'."\n";
14212 +}
14213 +echo ' </rdf:Seq>'."\n";
14214 +echo ' </items>'."\n";
14215 +echo '</channel>'."\n\n";
14216 +
14217 +// item details
14218 +foreach ($data as $product) {
14219 + echo '<item rdf:about="http://bouncer.gentoo.org/?product='.$product['product_name'].'&amp;lastmod='.$now.'">'."\n";
14220 + echo ' <title>'.$product['product_name'].'</title>'."\n";
14221 + echo ' <description>'.$product['product_count'].'</description>'."\n";
14222 + echo ' <link>http://bouncer.gentoo.org/?product='.$product['product_name'].'&amp;lastmod='.$now.'</link>'."\n";
14223 + echo '</item>'."\n";
14224 +}
14225 +
14226 +echo "\n".'</rdf:RDF>';
14227 +?>