aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/admin/admin_functions.php152
-rw-r--r--modules/admin/blocks/functions.php173
-rw-r--r--modules/admin/blocks/index.php59
-rw-r--r--modules/admin/images/addnewarticle.pngbin0 -> 6420 bytes
-rw-r--r--modules/admin/images/addnewpage.pngbin0 -> 7511 bytes
-rw-r--r--modules/admin/images/announcement.pngbin0 -> 9409 bytes
-rw-r--r--modules/admin/images/calendar.pngbin0 -> 10174 bytes
-rw-r--r--modules/admin/images/editfiles.pngbin0 -> 7336 bytes
-rw-r--r--modules/admin/images/editpage.pngbin0 -> 7775 bytes
-rw-r--r--modules/admin/images/file_doc.pngbin0 -> 6993 bytes
-rw-r--r--modules/admin/images/file_pdf.pngbin0 -> 7336 bytes
-rw-r--r--modules/admin/images/file_rtf.pngbin0 -> 6958 bytes
-rw-r--r--modules/admin/images/file_word.pngbin0 -> 9196 bytes
-rw-r--r--modules/admin/images/photogallery.pngbin0 -> 9687 bytes
-rw-r--r--modules/admin/index.php73
-rw-r--r--modules/admin/operation.php53
-rw-r--r--modules/admin/pages/functions.php227
-rw-r--r--modules/admin/pages/index.php68
-rw-r--r--modules/download/index.php134
-rw-r--r--modules/index/index.php36
-rw-r--r--modules/news/categories/3rdIDnews.pngbin0 -> 50631 bytes
-rw-r--r--modules/news/categories/marnemessenger.pngbin0 -> 20793 bytes
-rw-r--r--modules/news/functions.php259
-rw-r--r--modules/news/images/avatar.pngbin0 -> 6617 bytes
-rw-r--r--modules/news/images/comment_arrow.pngbin0 -> 264 bytes
-rw-r--r--modules/news/index.php84
-rw-r--r--modules/news/style.css234
-rw-r--r--modules/newsreel/images/slidenavbg.pngbin0 -> 3152 bytes
-rw-r--r--modules/newsreel/images/slidenavbg2.pngbin0 -> 2898 bytes
-rw-r--r--modules/newsreel/images/slidenavbg3.pngbin0 -> 2885 bytes
-rw-r--r--modules/newsreel/index.php113
-rw-r--r--modules/newsreel/slides/arma2move.pngbin0 -> 409863 bytes
-rw-r--r--modules/newsreel/slides/newsite.pngbin0 -> 251441 bytes
-rw-r--r--modules/newsreel/slides/recruitmentGT.pngbin0 -> 277092 bytes
-rw-r--r--modules/newsreel/slides/teamwork.pngbin0 -> 83906 bytes
-rw-r--r--modules/newsreel/style.css25
-rw-r--r--modules/page/index.php96
-rw-r--r--modules/rudi/admin/includes/admin.class.php121
-rw-r--r--modules/rudi/admin/index.php21
-rw-r--r--modules/rudi/admin/views/view.addsoldier.php3
-rw-r--r--modules/rudi/admin/views/view.admin.php20
-rw-r--r--modules/rudi/admin/views/view.deletesoldier.php3
-rw-r--r--modules/rudi/admin/views/view.modifysoldier.php35
-rw-r--r--modules/rudi/footer.php8
-rw-r--r--modules/rudi/header.php6
-rw-r--r--modules/rudi/images/flags/australia.gifbin0 -> 655 bytes
-rw-r--r--modules/rudi/images/flags/canada.gifbin0 -> 1940 bytes
-rw-r--r--modules/rudi/images/flags/canada1.gifbin0 -> 1005 bytes
-rw-r--r--modules/rudi/images/flags/germany.gifbin0 -> 162 bytes
-rw-r--r--modules/rudi/images/flags/index.html0
-rw-r--r--modules/rudi/images/flags/israel.gifbin0 -> 237 bytes
-rw-r--r--modules/rudi/images/flags/japan.gifbin0 -> 224 bytes
-rw-r--r--modules/rudi/images/flags/korea.gifbin0 -> 674 bytes
-rw-r--r--modules/rudi/images/flags/mexico.gifbin0 -> 983 bytes
-rw-r--r--modules/rudi/images/flags/russia.gifbin0 -> 257 bytes
-rw-r--r--modules/rudi/images/flags/uk.gifbin0 -> 1119 bytes
-rw-r--r--modules/rudi/images/flags/usa.gifbin0 -> 1533 bytes
-rw-r--r--modules/rudi/images/medals/3IDESM.jpgbin0 -> 12629 bytes
-rw-r--r--modules/rudi/images/medals/ACM.jpgbin0 -> 12028 bytes
-rw-r--r--modules/rudi/images/medals/ADSM.jpgbin0 -> 12639 bytes
-rw-r--r--modules/rudi/images/medals/AE-AMCM.jpgbin0 -> 14193 bytes
-rw-r--r--modules/rudi/images/medals/AGCM.jpgbin0 -> 12108 bytes
-rw-r--r--modules/rudi/images/medals/BS.jpgbin0 -> 12344 bytes
-rw-r--r--modules/rudi/images/medals/DSC.jpgbin0 -> 19490 bytes
-rw-r--r--modules/rudi/images/medals/EAM.jpgbin0 -> 11842 bytes
-rw-r--r--modules/rudi/images/medals/EAMECM.jpgbin0 -> 13003 bytes
-rw-r--r--modules/rudi/images/medals/LOM.jpgbin0 -> 10799 bytes
-rw-r--r--modules/rudi/images/medals/MUC.jpgbin0 -> 26501 bytes
-rw-r--r--modules/rudi/images/medals/PH.jpgbin0 -> 10743 bytes
-rw-r--r--modules/rudi/images/medals/SM.jpgbin0 -> 12488 bytes
-rw-r--r--modules/rudi/images/medals/SS.jpgbin0 -> 13053 bytes
-rw-r--r--modules/rudi/images/medals/WWIIAOM.jpgbin0 -> 10647 bytes
-rw-r--r--modules/rudi/images/medals/WWIIVM.jpgbin0 -> 13154 bytes
-rw-r--r--modules/rudi/images/medals/armedforcesservice.jpgbin0 -> 19029 bytes
-rw-r--r--modules/rudi/images/medals/armyachievement.jpgbin0 -> 17037 bytes
-rw-r--r--modules/rudi/images/medals/armycommendation.jpgbin0 -> 16781 bytes
-rw-r--r--modules/rudi/images/medals/armyservice.jpgbin0 -> 17708 bytes
-rw-r--r--modules/rudi/images/medals/bronzestar.jpgbin0 -> 17801 bytes
-rw-r--r--modules/rudi/images/medals/cib1.gifbin0 -> 4135 bytes
-rw-r--r--modules/rudi/images/medals/cib2.gifbin0 -> 4719 bytes
-rw-r--r--modules/rudi/images/medals/cib3.gifbin0 -> 5002 bytes
-rw-r--r--modules/rudi/images/medals/cib4.gifbin0 -> 4357 bytes
-rw-r--r--modules/rudi/images/medals/cod2duc.jpgbin0 -> 17220 bytes
-rw-r--r--modules/rudi/images/medals/cod4duc.jpgbin0 -> 18868 bytes
-rw-r--r--modules/rudi/images/medals/codduc.jpgbin0 -> 26590 bytes
-rw-r--r--modules/rudi/images/medals/drill_instructor_badge.gifbin0 -> 4746 bytes
-rw-r--r--modules/rudi/images/medals/dsm.jpgbin0 -> 18088 bytes
-rw-r--r--modules/rudi/images/medals/esm.jpgbin0 -> 18453 bytes
-rw-r--r--modules/rudi/images/medals/exempattendance.jpgbin0 -> 14790 bytes
-rw-r--r--modules/rudi/images/medals/goodconduct.jpgbin0 -> 17653 bytes
-rw-r--r--modules/rudi/images/medals/gwotem.jpgbin0 -> 18528 bytes
-rw-r--r--modules/rudi/images/medals/gwotsm.jpgbin0 -> 17209 bytes
-rw-r--r--modules/rudi/images/medals/index.html-old0
-rw-r--r--modules/rudi/images/medals/legionofmerit.jpgbin0 -> 17265 bytes
-rw-r--r--modules/rudi/images/medals/nationaldefense.jpgbin0 -> 18323 bytes
-rw-r--r--modules/rudi/images/medals/ncoprofdev.jpgbin0 -> 18456 bytes
-rw-r--r--modules/rudi/images/medals/oak_leaf_clusters.jpgbin0 -> 12575 bytes
-rw-r--r--modules/rudi/images/medals/purpleheart.jpgbin0 -> 16352 bytes
-rw-r--r--modules/rudi/images/medals/silverstar.jpgbin0 -> 19028 bytes
-rw-r--r--modules/rudi/images/medals/soldiers.jpgbin0 -> 18626 bytes
-rw-r--r--modules/rudi/images/medals/valor_device.pngbin0 -> 6257 bytes
-rw-r--r--modules/rudi/images/ranks/large/1LT.pngbin0 -> 4093 bytes
-rw-r--r--modules/rudi/images/ranks/large/1SG.pngbin0 -> 16484 bytes
-rw-r--r--modules/rudi/images/ranks/large/1stLT.gifbin0 -> 1661 bytes
-rw-r--r--modules/rudi/images/ranks/large/2LT.pngbin0 -> 4663 bytes
-rw-r--r--modules/rudi/images/ranks/large/2ndLT.gifbin0 -> 1836 bytes
-rw-r--r--modules/rudi/images/ranks/large/CPL.pngbin0 -> 8911 bytes
-rw-r--r--modules/rudi/images/ranks/large/CPT.pngbin0 -> 6166 bytes
-rw-r--r--modules/rudi/images/ranks/large/CSM.pngbin0 -> 17079 bytes
-rw-r--r--modules/rudi/images/ranks/large/General.gifbin0 -> 2273 bytes
-rw-r--r--modules/rudi/images/ranks/large/LTGeneral.gifbin0 -> 2470 bytes
-rw-r--r--modules/rudi/images/ranks/large/MSG.pngbin0 -> 15886 bytes
-rw-r--r--modules/rudi/images/ranks/large/MajorGeneral.gifbin0 -> 2916 bytes
-rw-r--r--modules/rudi/images/ranks/large/PFC.pngbin0 -> 8658 bytes
-rw-r--r--modules/rudi/images/ranks/large/PV2.pngbin0 -> 6713 bytes
-rw-r--r--modules/rudi/images/ranks/large/PVT.gifbin0 -> 163 bytes
-rw-r--r--modules/rudi/images/ranks/large/SFC.pngbin0 -> 14884 bytes
-rw-r--r--modules/rudi/images/ranks/large/SGT.pngbin0 -> 10469 bytes
-rw-r--r--modules/rudi/images/ranks/large/SMG.pngbin0 -> 16852 bytes
-rw-r--r--modules/rudi/images/ranks/large/SPC.pngbin0 -> 8416 bytes
-rw-r--r--modules/rudi/images/ranks/large/SSG.pngbin0 -> 12772 bytes
-rw-r--r--modules/rudi/images/ranks/large/brigadier.gifbin0 -> 3494 bytes
-rw-r--r--modules/rudi/images/ranks/large/captain.gifbin0 -> 2908 bytes
-rw-r--r--modules/rudi/images/ranks/large/colonel.gifbin0 -> 4565 bytes
-rw-r--r--modules/rudi/images/ranks/large/index.html0
-rw-r--r--modules/rudi/images/ranks/large/ltc.gifbin0 -> 3767 bytes
-rw-r--r--modules/rudi/images/ranks/large/major.gifbin0 -> 3674 bytes
-rw-r--r--modules/rudi/images/ranks/small/1LT.pngbin0 -> 3330 bytes
-rw-r--r--modules/rudi/images/ranks/small/1SG.pngbin0 -> 6368 bytes
-rw-r--r--modules/rudi/images/ranks/small/2LT.pngbin0 -> 3425 bytes
-rw-r--r--modules/rudi/images/ranks/small/CPL.pngbin0 -> 4421 bytes
-rw-r--r--modules/rudi/images/ranks/small/CPT.pngbin0 -> 4232 bytes
-rw-r--r--modules/rudi/images/ranks/small/CSM.pngbin0 -> 6456 bytes
-rw-r--r--modules/rudi/images/ranks/small/General.gifbin0 -> 2273 bytes
-rw-r--r--modules/rudi/images/ranks/small/LtGeneral.gifbin0 -> 2395 bytes
-rw-r--r--modules/rudi/images/ranks/small/MSG.pngbin0 -> 6292 bytes
-rw-r--r--modules/rudi/images/ranks/small/MajorGeneral.gifbin0 -> 1668 bytes
-rw-r--r--modules/rudi/images/ranks/small/PFC.pngbin0 -> 4372 bytes
-rw-r--r--modules/rudi/images/ranks/small/PV2.pngbin0 -> 3882 bytes
-rw-r--r--modules/rudi/images/ranks/small/SFC.pngbin0 -> 5939 bytes
-rw-r--r--modules/rudi/images/ranks/small/SGT.pngbin0 -> 4870 bytes
-rw-r--r--modules/rudi/images/ranks/small/SMG.pngbin0 -> 6336 bytes
-rw-r--r--modules/rudi/images/ranks/small/SPC.pngbin0 -> 4312 bytes
-rw-r--r--modules/rudi/images/ranks/small/SSG.pngbin0 -> 5457 bytes
-rw-r--r--modules/rudi/images/ranks/small/brigadier.gifbin0 -> 1259 bytes
-rw-r--r--modules/rudi/images/ranks/small/index.html0
-rw-r--r--modules/rudi/images/ranks/small/pvt.gifbin0 -> 78 bytes
-rw-r--r--modules/rudi/images/ranks/small/rank-1stlieutenant.gifbin0 -> 1151 bytes
-rw-r--r--modules/rudi/images/ranks/small/rank-2ndlieutenant.gifbin0 -> 1081 bytes
-rw-r--r--modules/rudi/images/ranks/small/rank-captain.gifbin0 -> 799 bytes
-rw-r--r--modules/rudi/images/ranks/small/rank-colonel.gifbin0 -> 1654 bytes
-rw-r--r--modules/rudi/images/ranks/small/rank-ltcolonel.gifbin0 -> 1560 bytes
-rw-r--r--modules/rudi/images/ranks/small/rank-major.gifbin0 -> 1546 bytes
-rw-r--r--modules/rudi/images/ranks/small/rank-private.gifbin0 -> 163 bytes
-rw-r--r--modules/rudi/images/uniform/ACoia.pngbin0 -> 287047 bytes
-rw-r--r--modules/rudi/images/uniform/BBell.pngbin0 -> 295153 bytes
-rw-r--r--modules/rudi/images/uniform/BChu.pngbin0 -> 304564 bytes
-rw-r--r--modules/rudi/images/uniform/BLevine.pngbin0 -> 298243 bytes
-rw-r--r--modules/rudi/images/uniform/BSegal.pngbin0 -> 303105 bytes
-rw-r--r--modules/rudi/images/uniform/DHolson.pngbin0 -> 291465 bytes
-rw-r--r--modules/rudi/images/uniform/EOConnell.pngbin0 -> 304203 bytes
-rw-r--r--modules/rudi/images/uniform/GTownsend.pngbin0 -> 305424 bytes
-rw-r--r--modules/rudi/images/uniform/IBailey.pngbin0 -> 303549 bytes
-rw-r--r--modules/rudi/images/uniform/JBottheim.pngbin0 -> 296613 bytes
-rw-r--r--modules/rudi/images/uniform/JHunkeler.pngbin0 -> 309740 bytes
-rw-r--r--modules/rudi/images/uniform/JMelnyk.pngbin0 -> 287114 bytes
-rw-r--r--modules/rudi/images/uniform/JRobinson.pngbin0 -> 292311 bytes
-rw-r--r--modules/rudi/images/uniform/KGrimes.pngbin0 -> 301461 bytes
-rw-r--r--modules/rudi/images/uniform/KJohnson.pngbin0 -> 288935 bytes
-rw-r--r--modules/rudi/images/uniform/LTrimble.pngbin0 -> 302003 bytes
-rw-r--r--modules/rudi/images/uniform/MLula.pngbin0 -> 311178 bytes
-rw-r--r--modules/rudi/images/uniform/MMark.pngbin0 -> 301887 bytes
-rw-r--r--modules/rudi/images/uniform/MMcClellan.pngbin0 -> 302019 bytes
-rw-r--r--modules/rudi/images/uniform/NGiroux.pngbin0 -> 305035 bytes
-rw-r--r--modules/rudi/images/uniform/NMartini.pngbin0 -> 305571 bytes
-rw-r--r--modules/rudi/images/uniform/NPuckett.pngbin0 -> 299669 bytes
-rw-r--r--modules/rudi/images/uniform/PBurris.pngbin0 -> 303770 bytes
-rw-r--r--modules/rudi/images/uniform/PPederson.pngbin0 -> 289002 bytes
-rw-r--r--modules/rudi/images/uniform/RLeahy.pngbin0 -> 308970 bytes
-rw-r--r--modules/rudi/images/uniform/RThomas.pngbin0 -> 300869 bytes
-rw-r--r--modules/rudi/images/uniform/SCorsaro.pngbin0 -> 300741 bytes
-rw-r--r--modules/rudi/images/uniform/ZBarrett.pngbin0 -> 304753 bytes
-rw-r--r--modules/rudi/images/uniform/bailey.jpgbin0 -> 60466 bytes
-rw-r--r--modules/rudi/images/uniform/barrett.jpgbin0 -> 70034 bytes
-rw-r--r--modules/rudi/images/uniform/bell.jpgbin0 -> 89556 bytes
-rw-r--r--modules/rudi/images/uniform/blackburn.jpgbin0 -> 127799 bytes
-rw-r--r--modules/rudi/images/uniform/blanchette.jpgbin0 -> 176352 bytes
-rw-r--r--modules/rudi/images/uniform/bottheim.jpgbin0 -> 122813 bytes
-rw-r--r--modules/rudi/images/uniform/brooks.jpgbin0 -> 139006 bytes
-rw-r--r--modules/rudi/images/uniform/brown.jpgbin0 -> 209348 bytes
-rw-r--r--modules/rudi/images/uniform/burris copy.jpgbin0 -> 128430 bytes
-rw-r--r--modules/rudi/images/uniform/burris.jpgbin0 -> 170023 bytes
-rw-r--r--modules/rudi/images/uniform/bursik.jpgbin0 -> 52778 bytes
-rw-r--r--modules/rudi/images/uniform/chu.jpgbin0 -> 169405 bytes
-rw-r--r--modules/rudi/images/uniform/clark.jpgbin0 -> 60546 bytes
-rw-r--r--modules/rudi/images/uniform/clayton.jpgbin0 -> 129211 bytes
-rw-r--r--modules/rudi/images/uniform/cooke.jpgbin0 -> 139618 bytes
-rw-r--r--modules/rudi/images/uniform/corsaro.jpgbin0 -> 136146 bytes
-rw-r--r--modules/rudi/images/uniform/cpl.jpgbin0 -> 207981 bytes
-rw-r--r--modules/rudi/images/uniform/dalia.jpgbin0 -> 200603 bytes
-rw-r--r--modules/rudi/images/uniform/ditzel.jpgbin0 -> 90225 bytes
-rw-r--r--modules/rudi/images/uniform/donovan.jpgbin0 -> 55378 bytes
-rw-r--r--modules/rudi/images/uniform/dubin.jpgbin0 -> 120375 bytes
-rw-r--r--modules/rudi/images/uniform/duvall.jpgbin0 -> 115170 bytes
-rw-r--r--modules/rudi/images/uniform/enlisted.jpgbin0 -> 155373 bytes
-rw-r--r--modules/rudi/images/uniform/freeman.jpgbin0 -> 122388 bytes
-rw-r--r--modules/rudi/images/uniform/frey.jpgbin0 -> 70129 bytes
-rw-r--r--modules/rudi/images/uniform/fsgt.jpgbin0 -> 211080 bytes
-rw-r--r--modules/rudi/images/uniform/gaskin.jpgbin0 -> 168069 bytes
-rw-r--r--modules/rudi/images/uniform/geary.jpgbin0 -> 61536 bytes
-rw-r--r--modules/rudi/images/uniform/giles.jpgbin0 -> 167319 bytes
-rw-r--r--modules/rudi/images/uniform/giroux.jpgbin0 -> 165155 bytes
-rw-r--r--modules/rudi/images/uniform/goodrich.jpgbin0 -> 213503 bytes
-rw-r--r--modules/rudi/images/uniform/gwizdala.jpgbin0 -> 57733 bytes
-rw-r--r--modules/rudi/images/uniform/hallock.jpgbin0 -> 205399 bytes
-rw-r--r--modules/rudi/images/uniform/higgins.jpgbin0 -> 137833 bytes
-rw-r--r--modules/rudi/images/uniform/holson.jpgbin0 -> 208445 bytes
-rw-r--r--modules/rudi/images/uniform/hornung.jpgbin0 -> 216193 bytes
-rw-r--r--modules/rudi/images/uniform/hunkeler.jpgbin0 -> 139385 bytes
-rw-r--r--modules/rudi/images/uniform/index.html0
-rw-r--r--modules/rudi/images/uniform/jimenez.jpgbin0 -> 60891 bytes
-rw-r--r--modules/rudi/images/uniform/kenkel.jpgbin0 -> 139392 bytes
-rw-r--r--modules/rudi/images/uniform/killian.jpgbin0 -> 119028 bytes
-rw-r--r--modules/rudi/images/uniform/leahy.jpgbin0 -> 147709 bytes
-rw-r--r--modules/rudi/images/uniform/levine.jpgbin0 -> 90020 bytes
-rw-r--r--modules/rudi/images/uniform/litton.jpgbin0 -> 164532 bytes
-rw-r--r--modules/rudi/images/uniform/luker.jpgbin0 -> 209352 bytes
-rw-r--r--modules/rudi/images/uniform/lula.jpgbin0 -> 113012 bytes
-rw-r--r--modules/rudi/images/uniform/madden.jpgbin0 -> 137781 bytes
-rw-r--r--modules/rudi/images/uniform/manary.jpgbin0 -> 122837 bytes
-rw-r--r--modules/rudi/images/uniform/mark.jpgbin0 -> 209527 bytes
-rw-r--r--modules/rudi/images/uniform/mcclellan.jpgbin0 -> 127886 bytes
-rw-r--r--modules/rudi/images/uniform/mirman.jpgbin0 -> 206348 bytes
-rw-r--r--modules/rudi/images/uniform/moncayo.jpgbin0 -> 211235 bytes
-rw-r--r--modules/rudi/images/uniform/nowlan.jpgbin0 -> 163725 bytes
-rw-r--r--modules/rudi/images/uniform/oconnell.jpgbin0 -> 90383 bytes
-rw-r--r--modules/rudi/images/uniform/officer.jpgbin0 -> 222067 bytes
-rw-r--r--modules/rudi/images/uniform/officer1.jpgbin0 -> 172545 bytes
-rw-r--r--modules/rudi/images/uniform/papp.jpgbin0 -> 215683 bytes
-rw-r--r--modules/rudi/images/uniform/patterson.jpgbin0 -> 210126 bytes
-rw-r--r--modules/rudi/images/uniform/pfc.jpgbin0 -> 58556 bytes
-rw-r--r--modules/rudi/images/uniform/pfc3service copy.jpgbin0 -> 109070 bytes
-rw-r--r--modules/rudi/images/uniform/poole.jpgbin0 -> 209348 bytes
-rw-r--r--modules/rudi/images/uniform/puckett.jpgbin0 -> 119529 bytes
-rw-r--r--modules/rudi/images/uniform/pvt.jpgbin0 -> 205709 bytes
-rw-r--r--modules/rudi/images/uniform/schneider.jpgbin0 -> 209348 bytes
-rw-r--r--modules/rudi/images/uniform/scott.jpgbin0 -> 52769 bytes
-rw-r--r--modules/rudi/images/uniform/segal.jpgbin0 -> 210897 bytes
-rw-r--r--modules/rudi/images/uniform/severyns.jpgbin0 -> 124894 bytes
-rw-r--r--modules/rudi/images/uniform/sgt.jpgbin0 -> 208875 bytes
-rw-r--r--modules/rudi/images/uniform/sokolowski.jpgbin0 -> 214274 bytes
-rw-r--r--modules/rudi/images/uniform/sosa.jpgbin0 -> 110679 bytes
-rw-r--r--modules/rudi/images/uniform/ssgt.jpgbin0 -> 209565 bytes
-rw-r--r--modules/rudi/images/uniform/test.gifbin0 -> 86068 bytes
-rw-r--r--modules/rudi/images/uniform/test_enlisted.jpgbin0 -> 56855 bytes
-rw-r--r--modules/rudi/images/uniform/thomas.jpgbin0 -> 134105 bytes
-rw-r--r--modules/rudi/images/uniform/townsend.jpgbin0 -> 93443 bytes
-rw-r--r--modules/rudi/images/uniform/townsend_OLD.jpgbin0 -> 101441 bytes
-rw-r--r--modules/rudi/images/uniform/trimble.jpgbin0 -> 140085 bytes
-rw-r--r--modules/rudi/images/uniform/whiting.jpgbin0 -> 172716 bytes
-rw-r--r--modules/rudi/images/uniform/williams.jpgbin0 -> 43310 bytes
-rw-r--r--modules/rudi/images/uniform/wubbena.jpgbin0 -> 195067 bytes
-rw-r--r--modules/rudi/images/uniform/young.jpgbin0 -> 205423 bytes
-rw-r--r--modules/rudi/images/units/2ndPlatoon.gifbin0 -> 21561 bytes
-rw-r--r--modules/rudi/images/units/BCT.jpgbin0 -> 67560 bytes
-rw-r--r--modules/rudi/images/units/HQ.gifbin0 -> 22251 bytes
-rw-r--r--modules/rudi/images/units/index.html0
-rw-r--r--modules/rudi/images/units/rocky.gifbin0 -> 11614 bytes
-rw-r--r--modules/rudi/images/weapons/M16a4.jpgbin0 -> 10601 bytes
-rw-r--r--modules/rudi/images/weapons/M203-1.jpgbin0 -> 49023 bytes
-rw-r--r--modules/rudi/images/weapons/M21.jpgbin0 -> 5114 bytes
-rw-r--r--modules/rudi/images/weapons/M249.jpgbin0 -> 45857 bytes
-rw-r--r--modules/rudi/images/weapons/M9.jpgbin0 -> 32248 bytes
-rw-r--r--modules/rudi/images/weapons/USP.jpgbin0 -> 29611 bytes
-rw-r--r--modules/rudi/images/weapons/index.html0
-rw-r--r--modules/rudi/images/weapons/m14.jpgbin0 -> 12745 bytes
-rw-r--r--modules/rudi/images/weapons/m40a3.jpgbin0 -> 47209 bytes
-rw-r--r--modules/rudi/images/weapons/m4a1.jpgbin0 -> 9504 bytes
-rw-r--r--modules/rudi/images/weapons/m67-grenade.jpgbin0 -> 15227 bytes
-rw-r--r--modules/rudi/images/weapons/m84.jpgbin0 -> 24936 bytes
-rw-r--r--modules/rudi/includes/common.class.php927
-rw-r--r--modules/rudi/includes/debug.php80
-rw-r--r--modules/rudi/includes/index.html0
-rw-r--r--modules/rudi/includes/information.class.php34
-rw-r--r--modules/rudi/includes/rudi.css71
-rw-r--r--modules/rudi/includes/sql.class.php90
-rw-r--r--modules/rudi/index.php106
-rw-r--r--modules/rudi/views/view.awards.php81
-rw-r--r--modules/rudi/views/view.drills.php122
-rw-r--r--modules/rudi/views/view.information.php20
-rw-r--r--modules/rudi/views/view.platoon.php22
-rw-r--r--modules/rudi/views/view.profile.php175
-rw-r--r--modules/rudi/views/view.ranks.php37
-rw-r--r--modules/rudi/views/view.roster.php23
-rw-r--r--modules/rudi/views/view.unit.php22
-rw-r--r--modules/tsviewer/index.php46
296 files changed, 3859 insertions, 0 deletions
diff --git a/modules/admin/admin_functions.php b/modules/admin/admin_functions.php
new file mode 100644
index 0000000..6c2b394
--- /dev/null
+++ b/modules/admin/admin_functions.php
@@ -0,0 +1,152 @@
+<?php
+/**
+ * Bayonet Content Management System
+ * Copyright (C) 2008 Joseph Hunkeler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+ /*
+if(!defined("ADMIN_FILE"))
+{
+ die("Access denied.");
+ return;
+}
+
+function is_loggedin()
+{
+ $id = session_id();
+ if($id == "")
+ {
+ header("location: index.php");
+ return false;
+ }
+ return true;
+}
+
+function login()
+{
+ global $db;
+
+ if(isset($_SESSION['username']) || isset($_SESSION['password']))
+ {
+ return true;
+ }
+
+ if(isset($_POST['processed']))
+ {
+ $username = addslashes($_POST['username']);
+ $password = addslashes($_POST['password']);
+ $password = crypt(md5($password),'iamnotadirtywhorebitch');
+ $result = $db->Query("SELECT * FROM bayonet_users WHERE username = '$username' AND password = '$password'");
+ $rows = $db->Rows($result);
+
+ if($rows > 0)
+ {
+ $_SESSION['username'] = stripslashes($username);
+ $_SESSION['password'] = stripslashes($password);
+ return true;
+ }
+ else
+ {
+ ReportError("Login incorrect.");
+ return false;
+ }
+
+ }
+ else
+ {
+ echo "<form action=\"\" method=\"post\">\n";
+ OpenTable();
+ echo "<tr><th colspan=\"2\">Administrative Login</th></tr>\n";
+
+ echo "<tr><td><table width=\"5\" align=\"center\">\n
+ <tr><th style=\"text-align:right;\">Username</th><td><input size=\"20\" type=\"text\" name=\"username\"></td></tr>\n
+ <tr><th style=\"text-align:right;\">Password</th><td><input size=\"20\" type=\"password\" name=\"password\"></td></tr>\n
+ <tr><th colspan=\"2\" align=\"right\"><input type=\"Submit\" name=\"processed\" value=\"Submit\"></th></tr></td></tr>\n
+ </table>\n";
+ CloseTable();
+ echo "</form>\n";
+ return false;
+ }
+}
+
+function logout()
+{
+ session_unset();
+ session_destroy();
+}
+*/
+/**
+ * CompileAdmin()
+ *
+ * because we want to have a horizontal display of options, we need to have
+ * the data separated by arrays. the data is processed into single tables, and is
+ * echoed in realtime. we checked to make sure they were arrays, but there is no
+ * checking to make sure the data passed is not malicious in nature.
+ *
+ * @param mixed $head
+ * @param mixed $body
+ * @return
+ */
+ /*
+function CompileAdmin($head,$body)
+{
+ /*if we were not passed arrays, then say goodbye
+ if(!is_array($head) || !is_array($body))
+ {
+ echo "must be array\n";
+ return;
+ }
+
+ echo "<table class=\"cleartable\" width=\"100%\">";
+ echo "<tr style=\"text-align:center; height:90px;\">";
+
+ $num = 1;
+ foreach($body as $td)
+ {
+ echo "<td class=\"center\" style=\"width:25%;\">$td</td>\n";
+ if($num%4 == 0){
+ echo "</tr><tr style=\"text-align:center; height:90px;\">";
+ }
+ $num++;
+ }
+ echo "</tr></table>\n";
+}
+
+
+ * OpenTable()
+ *
+ * The administration OpenTable() function requires an argument to define
+ * the header title. It may be wise to replace the standard OpenTable() function
+ * with this one... that's alot of code to unfuck though.
+ *
+ * @param mixed $title
+ * @return
+
+function OpenTable_Ex($title)
+{
+ echo "<table align=\"center\"><tr><th>{$title}</th></tr><tr><td>";
+}
+
+
+ * CloseTable()
+ *
+ * @return
+
+function CloseTable_Ex()
+{
+ echo "</td></tr></table>";
+}
+ */
+?> \ No newline at end of file
diff --git a/modules/admin/blocks/functions.php b/modules/admin/blocks/functions.php
new file mode 100644
index 0000000..0138839
--- /dev/null
+++ b/modules/admin/blocks/functions.php
@@ -0,0 +1,173 @@
+<?php
+/**
+ * Bayonet Content Management System
+ * Copyright (C) 2008 Joseph Hunkeler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+function ListBlocks()
+{
+ global $db;
+ $result = $db->Query("SELECT * FROM bayonet_blocks");
+ $blocks = $db->Fetch();
+
+ echo "<table align=\"center\"><tr><th colspan=\"3\">Existing Blocks</th></tr>";
+ foreach($blocks as $block)
+ {
+ echo "<tr><td>{$block['weight']} : {$block['dir_name']}</td><td><a href=\"?load=admin&op=blocks&edit={$block['block_id']}\">Edit</a></td><td><a href=\"?load=admin&op=blocks&delete={$block['block_id']}\">Delete</a></td></tr>";
+ }
+ echo "</table>";
+}
+
+function NewBlock()
+{
+ global $db;
+ if(isset($_POST['processed']))
+ {
+ //Secure our data to prevent injection attacks.
+ $weight = addslashes($_POST['weight']);
+ $dir_name = addslashes($_POST['dir_name']);
+ $position = addslashes($_POST['position']);
+ $active = addslashes($_POST['active']);
+
+ if(empty($weight) || empty($dir_name) || empty($position))
+ {
+ echo "You must fill everything out before proceeding.";
+ return;
+ }
+ //Update the database with the new data.
+ $db->Query("INSERT INTO bayonet_blocks SET weight = '$weight', dir_name = '$dir_name', position = '$position', active = '$active'");
+ //die, because we have completed what we wanted to do.
+ echo "New block, '$dir_name', at position '$weight' added.\n";
+ return;
+ }
+
+ ?>
+ <form action="<?php $_SERVER['PHP_SELF']?>" method="post">
+ <table align="center">
+ <tr><th>Weight</th><td><input type="text" name="weight" value="<?php echo $block['weight'] ?>"></td></tr>
+ <tr><th>Position</th><td><input type="text" name="position" value="<?php echo $block['position'] ?>"></td></tr>
+ <tr><th>Directory Name</th><td><input type="text" name="dir_name" value="<?php echo $block['dir_name'] ?>"></td>
+ <tr><th>Active</th><td>
+ <select name="active">
+ <option value="1">Yes</option>
+ <option value="0">No</option>
+ </select></td>
+ <tr><th colspan="2"><input type="submit" name="processed" value="Submit"></th></tr>
+ </table>
+ </form>
+ <?php
+}
+
+function GetActive($block_id, &$active)
+{
+ $options = array(1 => 'Yes',0 => 'No');
+ foreach($options as $option => $value)
+ {
+ $selected = NULL;
+ if($active == $option)
+ {
+ $selected = "selected";
+ }
+ echo "<option " . $selected . " value=\"". $option ."\">" . $value . "</option>\n";
+ }
+
+
+}
+
+function EditBlock($block_id)
+{
+ global $db;
+ if(isset($_POST['processed']))
+ {
+ //Secure our data to prevent injection attacks.
+ $weight = addslashes($_POST['weight']);
+ $dir_name = addslashes($_POST['dir_name']);
+ $position = addslashes($_POST['position']);
+ $active = addslashes($_POST['active']);
+
+ if(empty($weight) || empty($dir_name) || empty($position))
+ {
+ echo "You must fill everything out before proceeding.";
+ return;
+ }
+
+ //Update the database with the new data.
+ $db->Query("UPDATE bayonet_blocks SET weight = '$weight', dir_name = '$dir_name', position = '$position', active = '$active' WHERE block_id = '$block_id'");
+ //$isActive = $active ? "IS" : "IS NOT";
+ echo "Block, '$dir_name', at position '$weight' has been edited.\n";
+ //die, because we have completed what we wanted to do.
+ return;
+ }
+
+ //Grab the page from the database according to the $page_id passed to the function.
+ // {{{ XXX: FIXME -- Re-write this
+ /*
+ $result = $db->Query("SELECT weight,dir_name,position,active FROM bayonet_blocks WHERE block_id = '$block_id'");
+ while(($row = $db->Fetch($result))!=false)
+ {
+ //We only want one row, so we don't have to $block[]... No foreach necessary.
+ $block = $row;
+ }
+ */
+ // }}}
+ ?>
+ <form action="<?php $_SERVER['PHP_SELF']?>" method="post">
+ <table align="center">
+ <tr><th>Weight</th><td><input type="text" name="weight" value="<?php echo $block['weight'] ?>"></td></tr>
+ <tr><th>Position</th><td><input type="text" name="position" value="<?php echo $block['position'] ?>"></td></tr>
+ <tr><th>Directory Name</th><td><input type="text" name="dir_name" value="<?php echo $block['dir_name'] ?>"></td>
+ <tr><th>Active</th><td>
+ <select name="active">
+ <?php GetActive($block_id, $block['active']) ?>
+ </select>
+ </td>
+
+ <tr><th colspan="2"><input type="submit" name="processed" value="Submit"></th></tr>
+ </table>
+ </form>
+ <?php
+}
+
+function DeleteBlock($block_id)
+{
+ global $db;
+
+ $result = $db->Query("SELECT dir_name FROM bayonet_blocks WHERE block_id = '$block_id'");
+ $block = $db->Fetch($result);
+
+ if(isset($_POST['proceed']))
+ {
+ echo "Block '{$block['dir_name']}', was deleted.";
+ $db->Query("DELETE FROM bayonet_blocks WHERE block_id = '$block_id' LIMIT 1");
+ return;
+ }
+ if(isset($_POST['cancel']))
+ {
+ echo "User cancelled deletion of page: '{$block['dir_name']}'";
+ return;
+ }
+
+ ?>
+ <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
+ <table align="center">
+ <th>Are you SURE you want to delete the block titled: '<?php echo $block['dir_name']?>'?</th>
+ <tr><th><button name="proceed">Yes</button>&nbsp;&nbsp;&nbsp;<button name="cancel">No</button></th></tr>
+ </table>
+ </form>
+ <?php
+}
+
+?>
diff --git a/modules/admin/blocks/index.php b/modules/admin/blocks/index.php
new file mode 100644
index 0000000..6dac3d2
--- /dev/null
+++ b/modules/admin/blocks/index.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Bayonet Content Management System
+ * Copyright (C) 2008 Joseph Hunkeler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * This file administers the site blocks.
+ *
+ * -weight
+ * -directory name
+ */
+
+if(!defined("ADMIN_FILE"))
+{
+ die("Access denied.");
+}
+
+
+include $basedir.'blocks/functions.php';
+
+if(isset($_GET['edit']))
+{
+ $block_id = $_GET['edit'];
+ EditBlock($block_id);
+ return;
+}
+
+if(isset($_GET['delete']))
+{
+ $block_id = $_GET['delete'];
+ DeleteBlock($block_id);
+ return;
+}
+
+if(isset($_GET['create']))
+{
+ NewBlock();
+ return;
+}
+
+echo "<table align=\"center\" width=\"200px\"><tr><th>".LinkInternal('Create a Block','?load=admin&op=blocks&create=true')."</th></tr></table>";
+
+ListBlocks();
+
+?> \ No newline at end of file
diff --git a/modules/admin/images/addnewarticle.png b/modules/admin/images/addnewarticle.png
new file mode 100644
index 0000000..0e29960
--- /dev/null
+++ b/modules/admin/images/addnewarticle.png
Binary files differ
diff --git a/modules/admin/images/addnewpage.png b/modules/admin/images/addnewpage.png
new file mode 100644
index 0000000..c60c68c
--- /dev/null
+++ b/modules/admin/images/addnewpage.png
Binary files differ
diff --git a/modules/admin/images/announcement.png b/modules/admin/images/announcement.png
new file mode 100644
index 0000000..c70591d
--- /dev/null
+++ b/modules/admin/images/announcement.png
Binary files differ
diff --git a/modules/admin/images/calendar.png b/modules/admin/images/calendar.png
new file mode 100644
index 0000000..86b9861
--- /dev/null
+++ b/modules/admin/images/calendar.png
Binary files differ
diff --git a/modules/admin/images/editfiles.png b/modules/admin/images/editfiles.png
new file mode 100644
index 0000000..500e206
--- /dev/null
+++ b/modules/admin/images/editfiles.png
Binary files differ
diff --git a/modules/admin/images/editpage.png b/modules/admin/images/editpage.png
new file mode 100644
index 0000000..ab3fd58
--- /dev/null
+++ b/modules/admin/images/editpage.png
Binary files differ
diff --git a/modules/admin/images/file_doc.png b/modules/admin/images/file_doc.png
new file mode 100644
index 0000000..b1da1ef
--- /dev/null
+++ b/modules/admin/images/file_doc.png
Binary files differ
diff --git a/modules/admin/images/file_pdf.png b/modules/admin/images/file_pdf.png
new file mode 100644
index 0000000..500e206
--- /dev/null
+++ b/modules/admin/images/file_pdf.png
Binary files differ
diff --git a/modules/admin/images/file_rtf.png b/modules/admin/images/file_rtf.png
new file mode 100644
index 0000000..39304c1
--- /dev/null
+++ b/modules/admin/images/file_rtf.png
Binary files differ
diff --git a/modules/admin/images/file_word.png b/modules/admin/images/file_word.png
new file mode 100644
index 0000000..3011f00
--- /dev/null
+++ b/modules/admin/images/file_word.png
Binary files differ
diff --git a/modules/admin/images/photogallery.png b/modules/admin/images/photogallery.png
new file mode 100644
index 0000000..a161a55
--- /dev/null
+++ b/modules/admin/images/photogallery.png
Binary files differ
diff --git a/modules/admin/index.php b/modules/admin/index.php
new file mode 100644
index 0000000..fc379ea
--- /dev/null
+++ b/modules/admin/index.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Bayonet Content Management System
+ * Copyright (C) 2008 Joseph Hunkeler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+ /*
+ if(!defined("MODULE_FILE"))
+ {
+ die("Access denied.");
+ }
+
+ define("ADMIN_FILE",'admin_file');
+ include 'admin_functions.php';
+
+ if($_GET['op'] == 'logout')
+ {
+ logout();
+ }
+
+ if(login())
+ {
+ //this is so dirty... sigh.
+ if(is_loggedin())
+ {
+ ?>
+ <!-- Add id="wrapper" for full height -->
+ <table align="center" width="90%" >
+ <tr><td><div style="text-align:right"><a href="?load=admin&op=logout">Logout, <?php echo $_SESSION['username']?></a></div></td></tr>
+ <tr><td>
+
+ <div class="maincontent">
+ <fieldset>
+ <legend>Administrative Tools:</legend>
+ <?php
+ $th = array('Blocks','Pages');
+ $td = array(
+ //LinkInternal('Blocks','?load=admin&op=blocks'),
+ LinkInternal('<img src="images/editpage.png" /><br />Manage Pages','?load=admin&op=pages'),
+ LinkInternal('<img src="images/navigation.png" /><br />Edit Navigation','?load=admin'),
+ LinkInternal('<img src="images/announcement.png" /><br />Edit Announcements','?load=admin'),
+ LinkInternal('<img src="images/calendar.png" /><br />Manage Events','?load=admin'),
+ LinkInternal('<img src="images/photogallery.png" /><br />Manage Galleries', '?load=admin')
+
+ );
+
+ //render administration table
+ CompileAdmin($th,$td);
+ ?>
+ </fieldset>
+
+ </td></tr>
+ <tr><td><div style="text-align:center"><?php include 'operation.php' ?></div></td></tr>
+
+ </table>
+ </div>
+ <?php )
+ }
+ } */
+
+?> \ No newline at end of file
diff --git a/modules/admin/operation.php b/modules/admin/operation.php
new file mode 100644
index 0000000..2c66ff4
--- /dev/null
+++ b/modules/admin/operation.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Bayonet Content Management System
+ * Copyright (C) 2008 Joseph Hunkeler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+ /*
+if(!defined("ADMIN_FILE"))
+{
+ die("Access denied.");
+ return;
+}
+
+if(!isset($_GET['op']))
+{
+ echo "<center>No operation selected</center>\n";
+ return;
+}
+
+$op = $_GET['op'];
+$basedir = 'modules/admin/';
+
+if(file_exists($basedir))
+{
+ if(file_exists($basedir . $op))
+ {
+ include $basedir . $op . '/index.php';
+ }
+ else
+ {
+ ReportError("Administrative operation '$op' does not exist.");
+ }
+}
+else
+{
+ ReportError("Administrative base directory path does not exist.");
+}
+
+
+*/
+?> \ No newline at end of file
diff --git a/modules/admin/pages/functions.php b/modules/admin/pages/functions.php
new file mode 100644
index 0000000..fc97ffc
--- /dev/null
+++ b/modules/admin/pages/functions.php
@@ -0,0 +1,227 @@
+<?php
+/**
+ * Bayonet Content Management System
+ * Copyright (C) 2008 Joseph Hunkeler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * Note to anyone feeling the need to edit this file...
+ * You MUST declare $db as global inside your functions in order access MySQL from here.
+ */
+
+function ListArticles($pageid){
+
+ global $db;
+ $result = $db->Query("SELECT article_id,title FROM bayonet_articles WHERE `page_id` = $pageid ORDER BY `weight`");
+ $articles = $db->Fetch($result);
+
+ echo "<table class=\"cleartable\" width=\"100%\" cellspacing=\"0\">";
+
+ if(count($articles)==0){
+ echo "<tr><td>There are no articles posted on this page.<br /></td></tr></table>";
+ return;
+ }
+ foreach($articles as $article)
+ {
+ if($_GET['aid'] == $article['article_id'])
+ echo '<tr style="background-color:#c1c1c1; height:30px;">';
+ else
+ echo '<tr style="height:30px;">';
+ ?>
+
+ <td>^</td>
+ <td style="text-align:center; text-overflow:ellipsis; overflow:hidden;">
+ <a href="?load=admin&op=pages&edit=<?php echo $pageid; ?>&aid=<?php echo $article['article_id']?>"><?php echo $article['title']; ?></a>
+ </td>
+ <td>v</td>
+ </tr>
+
+ <?php
+ }
+
+ echo "</table>";
+
+
+
+}
+
+function EditArticle($article_id){
+
+ global $db;
+ //Grab the page from the database according to the $article_id passed to the function.
+ // {{{ XXX: FIXME -- Needs to be re-written
+ /*
+ $result = $db->Query("SELECT title,text FROM bayonet_articles WHERE article_id = '$article_id'");
+ while(($row = $db->Fetch($result))!=false)
+ {
+ //We only want one row, so we don't have to $article[]... No foreach necessary.
+ $article = $row;
+ }
+ */
+ // }}}
+ ?>
+ <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
+ <table class="cleartable">
+ <tr><td>
+ <input type="text" name="title" value="<?php echo $article['title'] ?>" maxlength="50" size="30" />
+ <input type="submit" name="processed" value="Submit Changes" />
+ </td></tr>
+ <tr><td><textarea id="markItUp" rows="30" cols="80" name="text"><?php echo $article['text'] ?></textarea></td></tr>
+ </table>
+ </form>
+ <?php
+}
+
+function ListPages($pid = NULL)
+{
+ global $db;
+ $pages = $db->Query("SELECT page_id,title FROM bayonet_pages");
+
+ echo 'Select page: <select id="pagenames" onchange="gotoEditPage(this.id)">';
+ echo '<option value="0">-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-&nbsp;-</option>';
+ //echo "<table align=\"center\"><tr><th colspan=\"3\">Existing Pages</th></tr>";
+
+
+ foreach($pages as $page)
+ {
+ if($pid == $page['page_id'])
+ echo "<option value=\"{$page['page_id']}\" selected>{$page['title']}</option>";
+ else
+ echo "<option value=\"{$page['page_id']}\">{$page['title']}</option>";
+ }
+ echo '</select>';
+ // echo "</table>";
+}
+
+function NewPage()
+{
+ global $db;
+ if(isset($_POST['processed']))
+ {
+ //Secure our data to prevent injection attacks.
+ $title = addslashes($_POST['title']);
+ $text = addslashes($_POST['text']);
+ if(empty($title) || empty($text))
+ {
+ echo "You must fill everything out before proceeding.";
+ return;
+ }
+
+ //Update the database with the new data.
+ $db->Query("INSERT INTO bayonet_pages SET title = '$title', text = '$text'");
+ echo "New page, '$title', has been added.\n";
+ //die, because we have completed what we wanted to do.
+ return;
+ }
+
+ ?>
+ <h3>Add New Page</h3>
+ <form action="<?php $_SERVER['PHP_SELF']?>" method="post">
+ <table>
+ <tr><th>Title</th><td><input type="text" name="title" value="<?php echo $page['title'] ?>" /></td></tr>
+ <tr><th>Text</th><td><textarea id="markItUp" rows="30" cols="80" name="text"><?php echo $page['text'] ?></textarea></td>
+ <tr><th colspan="2"><input type="submit" name="processed" value="Submit" /></th></tr>
+ </table>
+ </form>
+ <?php
+}
+
+function EditPage($page_id)
+{
+ global $db;
+ $page_id = addslashes($page_id);
+
+ // If the user has submitted, then process their request.
+ if(isset($_POST['processed']))
+ {
+ //Secure our data to prevent injection attacks.
+ $title = addslashes($_POST['title']);
+ $text = addslashes($_POST['text']);
+ if(empty($title) || empty($text))
+ {
+ echo "You must fill everything out before proceeding.";
+ return;
+ }
+
+ //Update the database with the new data.
+ $db->Query("UPDATE bayonet_pages SET title = '$title', text = '$text' WHERE page_id = '$page_id'");
+ echo "Page, '$title', has been edited.\n";
+ //die, because we have completed what we wanted to do.
+ return;
+ }
+
+ $aid = $_GET['aid'];
+?>
+ <table width="100%">
+ <tr>
+ <td><?php ListPages($page_id); ?></td>
+ <td><?php echo LinkInternal('<img src="images/view.gif" />&nbsp;View this Page','?load=page&id='.$page_id); ?></td>
+ <td class="right"><?php echo LinkInternal('<img src="images/delete.gif" />&nbsp;Delete this Page','?load=admin&op=pages&delete='.$page_id); ?></td>
+ </tr>
+ </table>
+ <hr />
+ <table class="cleartable" width="100%" style="height:95%;" cellspacing="0">
+ <tr>
+ <td style="vertical-align:top;">
+ <?php ListArticles($page_id); ?>
+ </td>
+ <td style="width:589px; vertical-align:top; border-left:1px solid #848484;">
+ <?php
+ //if article is set then EditArticle();
+ if($aid > 0){
+ EditArticle($aid);
+ }
+ ?>
+ </td>
+ </tr>
+ </table>
+ <?php
+}
+
+function DeletePage($page_id)
+{
+ global $db;
+
+ $result = $db->Query("SELECT title FROM bayonet_pages WHERE page_id = '$page_id'");
+ $page = $db->Fetch($result);
+
+ if(isset($_POST['proceed']))
+ {
+ echo "Page '{$page['title']}', was deleted.";
+ $db->Query("DELETE FROM bayonet_pages WHERE page_id = '$page_id' LIMIT 1");
+ return;
+ }
+ if(isset($_POST['cancel']))
+ {
+ echo "User cancelled deletion of page: '{$page['title']}'";
+ return;
+ }
+ if($page_id == 1){
+ echo "You can not delete the home page.";
+ return;
+ }
+
+ ?>
+ <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
+ <table>
+ <th>Are you SURE you want to delete the page titled: '<?php echo $page['title']?>'?</th>
+ <tr><th><button name="proceed">Yes</button>&nbsp;&nbsp;&nbsp;<button name="cancel">No</button></th></tr>
+ </table>
+ </form>
+ <?php
+}
+
+?>
diff --git a/modules/admin/pages/index.php b/modules/admin/pages/index.php
new file mode 100644
index 0000000..0fb6cff
--- /dev/null
+++ b/modules/admin/pages/index.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Bayonet Content Management System
+ * Copyright (C) 2008 Joseph Hunkeler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+ ?>
+
+ <div class="maincontent">
+ <fieldset style="height:500px">
+ <legend>Manage Pages:</legend>
+<?php
+
+if(!defined("ADMIN_FILE"))
+{
+ die("Access denied.");
+}
+
+include $basedir.'pages/functions.php';
+
+if(isset($_GET['edit']))
+{
+ $page_id = $_GET['edit'];
+ EditPage($page_id);
+ return;
+}
+
+if(isset($_GET['delete']))
+{
+ $page_id = $_GET['delete'];
+ DeletePage($page_id);
+ return;
+}
+
+if(isset($_GET['create']))
+{
+ $create = $_GET['create'];
+ if($create)
+ {
+ NewPage();
+ return;
+ }
+}
+?>
+
+ <table width="100%">
+ <tr>
+ <td><?php ListPages(); ?></td>
+ <td class="right">
+ <?php echo LinkInternal('<img src="images/add.gif" />&nbsp;Create a Page','?load=admin&op=pages&create=true'); ?>
+ </td>
+
+ <tr>
+ </table>
+ </fieldset>
+</div>
diff --git a/modules/download/index.php b/modules/download/index.php
new file mode 100644
index 0000000..b819e8d
--- /dev/null
+++ b/modules/download/index.php
@@ -0,0 +1,134 @@
+<?php
+/**
+ * Bayonet Content Management System
+ * Copyright (C) 2008 Joseph Hunkeler & Evan O'Connell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if(!defined("MODULE_FILE"))
+{
+ die("Access denied...");
+}
+
+function getCategoryList()
+{
+ global $db;
+ $query = sprintf("SELECT category_id, title FROM bayonet_downloads_categories");
+ $result = $db->Query($query);
+ $categories = $db->Fetch($result);
+
+ return $categories;
+}
+
+function getCategoryName($category)
+{
+ global $db;
+ if(!filter_var($category, FILTER_VALIDATE_INT))
+ return array();
+
+ $query = sprintf("SELECT category_id, title FROM bayonet_downloads_categories WHERE category_id = %d", (int)$category);
+ $result = $db->Query($query);
+ $data = $db->FetchRow($result);
+
+ return $data['title'];
+ //return is_array($data) ? $data : array();
+}
+
+function getCategoryFiles($category)
+{
+ global $db;
+ $query = sprintf("SELECT ca.category_id, ca.title AS category, dl.name, dl.filename, dl.description FROM bayonet_downloads_categories AS ca LEFT OUTER JOIN bayonet_downloads AS dl ON dl.category_id = ca.category_id WHERE ca.category_id = %d", (int)$category);
+
+ $result = $db->Query($query);
+ $downloads = $db->FetchArray($result);
+ decho('downloads data');
+ decho($downloads);
+ decho('downloads data done');
+
+ return $downloads;
+}
+
+global $db;
+$downloads = NULL;
+$download_relative_path = "modules/" . basename(dirname(__FILE__)) . "/files/";
+$download_absolute_path = dirname(__FILE__) . "/files/";
+
+$category = $_GET['category'];
+if(isset($category) && !filter_var($category, FILTER_VALIDATE_INT))
+{
+ ReportHack("Purposely invalid category entry.");
+ return;
+}
+
+$downloads = getCategoryFiles($category);
+decho($downloads);
+
+OpenContent();
+echo "<div class=\"contentHeading\">Categories</div>\n";
+echo "<div class=\"content\">\n";
+
+$categoryList = getCategoryList();
+
+ foreach($categoryList as $categoryListItem)
+ {
+ echo "<p>";
+ echo LinkModule("download", "&amp;category={$categoryListItem['category_id']}",$categoryListItem['title']);
+ echo "</p>\n";
+ }
+
+
+echo "</div>\n</div>\n";
+CloseContent();
+
+echo "<br/>"; //spacer between div tags
+
+if(isset($category))
+{
+ OpenContent();
+ echo "<div class=\"contentHeading\">" . getCategoryName($category) . "</div>\n";
+ echo "<div class=\"content\">\n";
+
+ OpenContent();
+ echo "<div class=\"contentHeading\">Files</div>\n";
+ echo "<div class=\"content\">\n";
+
+ if(empty($downloads))
+ {
+ echo "No downloads available.\n";
+ return;
+ }
+
+ foreach($downloads as $file)
+ {
+ $download_full_path = $download_absolute_path . $file['filename'];
+
+ if(!file_exists($download_full_path)) $broken = "(Broken link detected)";
+ echo "<p>";
+ echo LinkInternal($file['name'], $file['filename'], $download_relative_path) . " $broken<br/>\n";
+ echo "<b>Filename:</b> {$file['filename']}<br/>\n";
+ printf("<b>Size:</b> %.2fKB<br/>\n", filesize($download_full_path) / 1024);
+ echo "<b>MD5 Hash:</b> " . md5_file($download_full_path) . "<br/>\n";
+ echo "<b>Description:</b> {$file['description']}<br/>\n";
+ echo "</p>";
+
+ }
+ //logQueueFlush(FORCE);
+
+ echo "</div>\n</div>";
+ echo "</div>\n</div>";
+}
+ CloseContent();
+CloseContent();
+?>
diff --git a/modules/index/index.php b/modules/index/index.php
new file mode 100644
index 0000000..54c8dbd
--- /dev/null
+++ b/modules/index/index.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * MODULE - INDEX >>
+ * This page is a module that displays multiple modules
+ * Database should store a list of module names in the order they are to be displayed
+ * This should be fairly simple to produce -- Dont forget to set this as the default
+ * in the config.php array
+ *
+ */
+
+define('INDEX_MODULE', true);
+
+$result = $db->Query("SELECT `dir_name` FROM `bayonet_modules` ORDER BY `weight` ASC");
+$modules = $db->Fetch($result);
+foreach($modules as $module)
+{
+ $indexModules[] = $module['dir_name'];
+}
+
+foreach($indexModules as $module)
+{
+ if(file_exists("modules/" . $module))
+ {
+ include 'modules/' . $module . '/index.php';
+ decho("Index module loaded: '$module'");
+ }
+ else
+ {
+ OpenContent();
+ ReportError("Cannot load module '{$module}' directory.<br>\n");
+ CloseContent();
+ }
+ echo "<br />";
+}
+
+?>
diff --git a/modules/news/categories/3rdIDnews.png b/modules/news/categories/3rdIDnews.png
new file mode 100644
index 0000000..e31a7f5
--- /dev/null
+++ b/modules/news/categories/3rdIDnews.png
Binary files differ
diff --git a/modules/news/categories/marnemessenger.png b/modules/news/categories/marnemessenger.png
new file mode 100644
index 0000000..691129e
--- /dev/null
+++ b/modules/news/categories/marnemessenger.png
Binary files differ
diff --git a/modules/news/functions.php b/modules/news/functions.php
new file mode 100644
index 0000000..f3505df
--- /dev/null
+++ b/modules/news/functions.php
@@ -0,0 +1,259 @@
+<?php
+/**
+ * Bayonet Content Management System
+ * Copyright (C) 2008 Joseph Hunkeler & Evan O'Connell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ /**
+ * getNewsComments($id)
+ * Function getting an array of comments for posted news
+ * @param id - news_id cooresponding to `bayonet_news`
+ * @return - associative array of comments
+ */
+function getNewsComments($id){
+
+ global $db;
+ $result = $db->Query("SELECT c.comment_id, c.news_id, c.author_id, c.message, c.date, u.username AS author, u.avatar as avatar ".
+ "FROM `bayonet_news_comments` AS c ".
+ "LEFT OUTER JOIN `mybb_users` AS u ON u.uid = c.author_id ".
+ "WHERE c.news_id = '$id' ".
+ "ORDER BY date ASC");
+ $comments = $db->Fetch($result);
+ /*
+ while(($row = $db->Fetch($result)) != false)
+ {
+ $comments[] = $row;
+ }
+
+ $db->Free($result);
+ */
+ return $comments;
+}
+
+ /**
+ * displayComments($data)
+ * Function that takes an array of comments and displays them in html
+ * @param data - associative array of comments from the database
+ */
+function displayComments($data){
+
+ date_default_timezone_set("America/New_York");
+ OpenContent();
+ ?>
+
+ <div id="comments">
+ <table width="100%">
+ <tr>
+ <td><h2>User Comments</h2></td>
+ <td style="text-align:right"><a href="#add">Add Yours</a></td>
+ </tr>
+ </table>
+ <ol class="comment_list parent">
+
+ <?php
+ foreach($data as $comment)
+ {
+ ?>
+ <li id="comment-<?php echo $comment['comment_id']; ?>">
+ <div class="comment_wrap">
+
+ <div class="comment_author">
+ <?php
+ if(!empty($comment['avatar'])){
+ echo "<img src=\"{$comment['avatar']}\" height=\"80px\" />";
+ }else{
+ echo "<img src=\"modules/news/images/avatar.png\" />";
+ }
+ ?>
+ <p>
+ <?php
+ if($comment['author_id']>0){
+ echo "<a href=\"{$comment['author_id']}\">{$comment['author']}</a>";
+ }else{
+ echo "Guest";
+ }
+ ?>
+
+ <span><?php echo date('F jS', strtotime($comment['date'])); ?></span>
+ </p>
+ </div>
+
+ <div class="single_comment">
+ <img src="modules/news/images/comment_arrow.png" class="comment_arrow" />
+ <p> <?php echo bbcode_format($comment['message']); ?></p>
+
+ </div>
+
+ </div>
+ </li>
+
+ <?php
+ }
+ echo "</ol>";
+
+ commentForm();
+
+ CloseContent();
+}
+
+ /**
+ * getNumOfComments($id)
+ * Function that gets the number of comments a news post has
+ * @param id - news_id cooresponding to `bayonet_news`
+ */
+function getNumOfComments($id){
+
+ global $db;
+ $result = $db->Query("SELECT `comment_id` FROM `bayonet_news_comments` WHERE `news_id` = '$id'");
+
+ return $db->Rows($result);
+}
+
+ /**
+ * getNumOfComments($id)
+ * Function that gets the desired news from the database and returns it as an array
+ * @param id - (optional) news_id cooresponding to `bayonet_news`
+ */
+function getNews($id = NULL, $limit = NULL, $index = 0){
+
+ global $db;
+ $query = "SELECT n.news_id, n.title, n.message, n.date, n.category_id, u.username AS author, c.name AS catname, c.image AS catimage ".
+ "FROM `bayonet_news` AS n ".
+ "INNER JOIN `bayonet_news_categories` AS c ON c.category_id = n.category_id ".
+ "LEFT OUTER JOIN `mybb_users` AS u ON u.uid = n.author_id ";
+ if(isset($id)){
+ $query = $query."WHERE n.news_id = '$id' ";
+ }else{
+ $query = $query."ORDER BY date DESC";
+ if($index > 0)
+ $query = $query." LIMIT $index, $limit";
+ else if($limit !=NULL)
+ $query = $query." LIMIT $limit";
+ }
+ decho($query);
+ $result = $db->Query($query);
+ $data = $db->Fetch($result);
+
+ return $data;
+}
+
+ /**
+ * displayNews($data)
+ * Function that takes an array of news and displays it as html
+ * @param data - associative array of news from the database
+ */
+function displayNews($data){
+
+ date_default_timezone_set("America/New_York");
+
+
+ if(empty($data)){
+ ReportError("Sorry, we found no news using these parameters.");
+ echo "<br />";
+ }
+
+
+ foreach($data as $news)
+ {
+ $numComments = getNumOfComments($news['news_id']);
+
+ OpenContent(); ?>
+
+ <div class="contentHeading">
+ <table width="100%">
+ <tr>
+ <td style="text-align:left;"><?php echo $news['title']; ?></td>
+ <td style="text-align:right;">Posted by: <?php echo $news['author']; ?></td>
+ </tr>
+ </table>
+ </div>
+ <div class="content">
+ <img src="modules/news/categories/<?php echo $news['catimage']; ?>" alt="<?php echo $news['catname']; ?>" align="right" />
+ <?php echo bbcode_format($news['message']); ?>
+ </div>
+ <div class="contentFooter">
+ <table width="100%">
+ <tr>
+ <td style="text-align:left;">
+ View Comments: <a href="<?php echo $_SERVER['PHP_SELF']; ?>?load=news&amp;id=<?php echo $news['news_id']; ?>"><?php echo $numComments;?> Comments</a>
+ </td>
+ <td style="text-align:right;">Posted on: <?php echo date('D M j, Y g:i a T', strtotime($news['date'])); ?></td>
+ </tr>
+ </table>
+ </div>
+
+ <?php
+ CloseContent();
+ echo "<br />";
+
+ }
+}
+
+/** This was coded on Coda with a MacBook Pro **/
+function commentForm(){
+
+ global $db;
+
+ if(isset($_POST['processed']))
+ {
+ $comment = stripslashes($_POST['comment']);
+ $author_id = stripslashes($_POST['author']);
+
+ echo "Author: {$author_id}<br />Comment: {$comment}<br />";
+ echo "Your comment has been processed. Please wait.<br />";
+ }
+
+ $cur_user_id = 0; //testing variable, until i get the login system working for this
+
+ $logged_in = false;
+?>
+<a name="add"></a>
+<h2>Add Your Comment</h2>
+
+ <ol class="comment_form_wrap">
+ <li>
+ <img src="modules/news/images/comment_arrow.png" class="textarea_arrow" />
+ <div class="comment_author">
+ <?php
+ if($avatar!=""){
+ echo "<img src=\"{$avatar}\" height=\"80px\" />";
+ }else{
+ echo "<img src=\"modules/news/images/avatar.png\" />";
+ }
+ ?>
+ <p>
+ <?php
+ if($logged_in){
+ echo $username;
+ }else{
+ echo "Guest";
+ }
+ ?>
+ <br /><span><?php echo date('F jS', time()); ?></span></p>
+ </div>
+ <form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST" id="comment_form">
+ <!-- <fieldset> -->
+ <textarea name="comment" id="comment" rows="8" cols="10" tabindex="1" class="input textarea required"></textarea>
+ <input type="hidden" value="<?php echo $cur_user_id; ?>" name="author" />
+ <input type="submit" value="Add Comment" name="processed" />
+ <!-- </fieldset> -->
+ </form>
+ </li>
+ </ol>
+
+<?php
+}
+?>
diff --git a/modules/news/images/avatar.png b/modules/news/images/avatar.png
new file mode 100644
index 0000000..825197a
--- /dev/null
+++ b/modules/news/images/avatar.png
Binary files differ
diff --git a/modules/news/images/comment_arrow.png b/modules/news/images/comment_arrow.png
new file mode 100644
index 0000000..0962f4f
--- /dev/null
+++ b/modules/news/images/comment_arrow.png
Binary files differ
diff --git a/modules/news/index.php b/modules/news/index.php
new file mode 100644
index 0000000..1dfd98a
--- /dev/null
+++ b/modules/news/index.php
@@ -0,0 +1,84 @@
+<link rel="stylesheet" type="text/css" href="modules/news/style.css" media="screen"/>
+<?php
+/**
+ * Bayonet Content Management System
+ * Copyright (C) 2008 Joseph Hunkeler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if(!defined("MODULE_FILE"))
+{
+ die('Access Denied.');
+}
+
+include 'modules/news/functions.php';
+
+$logged_id = 2;
+
+if(!defined('INDEX_MODULE')){
+ $page_num = 1;
+ $page_num = $_GET['page']; //get variable for page number
+
+ $page_num --; //so the $index can be calculated easier while keeping [1,n] page numbers
+
+ $limit = 3; //number of items per page
+ $index = $page_num * $limit;
+
+}else{
+ //only do the limit
+ $limit = 3;
+}
+
+if(isset($_GET['id']))
+{
+ $news_id = $_GET['id'];
+ displayNews(getNews($news_id));
+ displayComments(getNewsComments($news_id));
+ return;
+}
+else
+{
+ $news = getNews(null, $limit, $index);
+ displayNews($news);
+ OpenContent();
+ if(defined('INDEX_MODULE')){
+?>
+ <div style="float:right;">
+ <a href="?load=news">Read All</a>&nbsp;
+ </div>
+
+<?php
+ }else{
+ if($page_num > 0)
+ echo "&nbsp;<a href=\"?load=news&page={$page_num}\">More Recent News</a>";
+
+ decho("count: ".count($news));
+ if(count($news) == $limit){
+?>
+ <div style="float:right;">
+ <a href="?load=news&page=<?php echo ($page_num+2); ?>">Older News</a>&nbsp;
+ </div>
+<?php
+ }
+ }
+ echo "<div class=\"clear\"></div>";
+ CloseContent();
+ return;
+}
+
+
+
+
+?> \ No newline at end of file
diff --git a/modules/news/style.css b/modules/news/style.css
new file mode 100644
index 0000000..fe98982
--- /dev/null
+++ b/modules/news/style.css
@@ -0,0 +1,234 @@
+ /*********************************
+ ** Comment Styles **
+ *********************************/
+
+ div.comment_author a, div.comment_author a:visited {
+ font-size: 10px;
+ font-family: verdana;
+ color:#3666ba;
+ }
+
+ div.comment_author a:hover, div.comment_author a:visited:hover {
+ font-size: 10px;
+ font-family: verdana;
+ color:#42423d;
+ }
+
+/* Comments */
+#comments {
+ background: #ededed;
+ padding: 25px 25px;
+ padding-top:0px;
+ border: 1px solid #dcdddd;
+ color: #42423d;
+}
+#comments a {
+ text-decoration: none;
+}
+#comments_wrap h3 {
+ font-size: 22px;
+ font-weight: normal;
+ margin: 0px;
+ padding-bottom: 20px;
+ margin-top: 10px;
+}
+#comments_wrap h3 a, #comments_wrap h3 a:hover {
+ color: #242323;
+ text-decoration: none;
+}
+#comments_wrap .get_avatar {
+ color: #a7a7a7;
+ font-size: 10px;
+ letter-spacing: -1px;
+ padding-top: 10px;
+}
+#comments ol.parent {
+ padding-bottom: 25px
+}
+#comments ol {
+ margin: 0px;
+ padding: 0px;
+ padding-left: 120px;
+}
+#comments ol li {
+ list-style: none;
+ padding: 0px;
+ margin: 10px 0px;
+ padding-top: 1px;
+}
+#comments span.comment-reply {
+ position: absolute;
+ bottom: 10px;
+ left: 20px;
+ font-size: 10px;
+ text-transform: uppercase;
+}
+#comments .comment_wrap {
+ position: relative;
+ background: #fff;
+ border: 1px solid #dcdddd;
+}
+#comments .single_comment {
+ padding: 20px;
+ padding-bottom: 60px;
+ color: #42423d;
+}
+#comments .comment_arrow {
+ position: absolute;
+ top: 20px;
+ left: -32px;
+}
+#comments .comment_author {
+ position: absolute;
+ left: -120px;
+ width: 100px;
+ color: #8d8d8d;
+ font-size: 10px;
+ line-height: 14px;
+}
+#comments .comment_author span {
+ display: block;
+}
+#comments .children {
+ padding-left: 0px;
+ border-left: 1px solid #ced0d0;
+}
+#comments .children li {
+ padding-left: 25px;
+ background: url(images/comment_li_bg.gif) no-repeat 0px 25px;
+}
+#comments .children .comment_wrap {
+ background: #f8f8f8;
+ border: 1px solid #d3d5d5;
+}
+#comments .children .comment_arrow {
+ display: none;
+}
+#comments .children .comment_author {
+ position: absolute;
+ left: auto;
+ right: 20px;
+ bottom: 10px;
+ width: 200px;
+ height: 40px;
+}
+#comments .children .comment_author p {
+ position: absolute;
+ right: 50px;
+ bottom: -20px;
+ text-align: right;
+}
+#comments .children .comment_author span {
+ display: block;
+}
+#comments .children .comment_author img {
+ width: 40px;
+ height: 40px;
+ float: right;
+}
+/* Comments Form */
+#respond {
+ position: relative;
+}
+#comments .comment_form_wrap {
+ position: relative;
+ padding-left: 120px;
+}
+#comments .parent .comment_form_wrap {
+ position: relative;
+ padding-left: 0px;
+}
+#comments .textarea_arrow {
+ position: absolute;
+ top: 25px;
+ left: 89px;
+}
+#comments .children .textarea_arrow,
+#comments .parent .textarea_arrow {
+ display: none;
+}
+#comments .comment_form_wrap .comment_author {
+ position: absolute;
+ left: 0px;
+}
+#comments .children .comment_form_wrap {
+ position: relative;
+ padding-left: 0px;
+}
+#comments .children .comment_form_wrap .comment_author,
+#comments .parent .comment_form_wrap .comment_author,
+#comments .children .form_header,
+#comments .parent .form_header {
+ display: none;
+}
+#comments .input {
+ width: 456px;
+ padding: 4px 5px;
+ background: #fff;
+ border: 1px solid #ced0d0;
+ color: #5f6565;
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+ display: block;
+ margin-bottom: 10px;
+}
+#comments .children .input {
+ width: 431px;
+}
+#comments .textarea {
+ padding-top: 20px;
+ padding-left: 20px;
+ width: 448px;
+ max-width: 468px;
+ height: 135px;
+ font-size: 12px;
+ color: #5f6565;
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+}
+#comments .children .textarea {
+ width: 423px;
+}
+#comments #submit_comment {
+ width: 12.0em;
+ height: 3.0em;
+ float: right;
+ margin-right: 7px;
+ margin-top: 10px;
+}
+#wpUserLinks_form #submit_comment {
+ width: 12.0em;
+ height: 3.0em;
+ margin-top: 10px;
+}
+#comments .inputerror {
+ border-color: #555;
+}
+#cancel-comment-reply {
+ float: left;
+ width: 120px;
+ height: 30px;
+ margin-top: 8px;
+}
+#cancel-comment-reply-link {
+ background: #fdfdfd url(images/button_bg.png) repeat-x 0 100%;
+ border: 1px solid #bbbbbb;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 9px;
+ text-transform: uppercase;
+ height: 22px;
+ width: 70px;
+ text-align: center;
+ padding-bottom: 2px;
+ letter-spacing: -0.05em;
+ cursor: pointer;
+ display: block;
+ line-height: 22px;
+}
+*+html #cancel-comment-reply-link {
+ height: 22px;
+ padding-bottom: 0px;
+}
+#cancel-comment-reply-link:hover {
+ color: #232323;
+ background: #eeeeee url(images/button_bg_hover.png) repeat-x 0 100%;
+ text-decoration: none;
+}
diff --git a/modules/newsreel/images/slidenavbg.png b/modules/newsreel/images/slidenavbg.png
new file mode 100644
index 0000000..6e3a726
--- /dev/null
+++ b/modules/newsreel/images/slidenavbg.png
Binary files differ
diff --git a/modules/newsreel/images/slidenavbg2.png b/modules/newsreel/images/slidenavbg2.png
new file mode 100644
index 0000000..8b9f612
--- /dev/null
+++ b/modules/newsreel/images/slidenavbg2.png
Binary files differ
diff --git a/modules/newsreel/images/slidenavbg3.png b/modules/newsreel/images/slidenavbg3.png
new file mode 100644
index 0000000..a027d26
--- /dev/null
+++ b/modules/newsreel/images/slidenavbg3.png
Binary files differ
diff --git a/modules/newsreel/index.php b/modules/newsreel/index.php
new file mode 100644
index 0000000..f45f2f5
--- /dev/null
+++ b/modules/newsreel/index.php
@@ -0,0 +1,113 @@
+<!-- START News Reel -->
+<link rel="stylesheet" type="text/css" href="modules/newsreel/style.css" media="screen"/>
+<?php OpenContent(); ?>
+<script type="text/javascript">
+
+var current = "0";
+var stop = false;
+var slide=new Array(); //declares a new array called banner
+var x=0; //loop control and array counting variable
+var timing=7000; //value is in milliseconds, used for 3 seconds on each image
+<?php
+ global $db;
+ $x=0;
+
+ $result = $db->Query("SELECT * FROM `bayonet_newsreel` WHERE `visible`= 1 ORDER BY `weight` ASC LIMIT 0,6");
+ //$get_slides = mysql_query("SELECT * FROM `news_slideshow` WHERE `visible`=1");
+ $row = $db->fetch($result);
+
+ foreach($row as $slide){
+ echo 'slide['.$x.']=new Image();';
+ echo 'slide['.$x.'].src="modules/newsreel/slides/'.$slide['src'].'";';
+ if($x==0){
+ $startSRC=$slide['src'];
+ }
+ $x++;
+ }
+ $width = 100/$x;
+?>
+
+ function changeStart()
+ {
+ document.getElementById(0).style.backgroundImage="url(modules/newsreel/images/slidenavbg2.png)";
+
+ }
+
+ function mouseOverBG(id, image)
+ {
+ if(id!=current){
+ document.getElementById(id).style.backgroundImage="url(modules/newsreel/images/slidenavbg3.png)";
+ document.getElementById(id).style.color="#3666ba";
+ document.body.style.cursor = 'pointer';
+ }
+ }
+
+ function mouseOutBG(id, image)
+ {
+ if(id!=current){
+ document.getElementById(id).style.backgroundImage="url(modules/newsreel/images/slidenavbg.png)";
+ document.getElementById(id).style.color="white";
+ document.body.style.cursor = 'default';
+ }
+ }
+ function nextSlide(num, clicked)
+ {
+ if(num!=current){
+ document.myBanner.src=slide[num].src;
+ document.getElementById(num).style.backgroundImage="url(modules/newsreel/images/slidenavbg2.png)";
+ document.getElementById(current).style.backgroundImage="url(modules/newsreel/images/slidenavbg.png)";
+ document.getElementById(num).style.color="white";
+ document.body.style.cursor = 'default';
+ current=num;
+ if(clicked){
+ stop=true;
+ }
+ }
+
+ }
+ function playBanner()
+ {
+ if(!stop){
+ if(document.images)
+ {
+ if(document.myBanner.complete)
+ {
+ nextSlide(x,false)
+ x++;
+ }
+ if(x==<?php echo $x; ?>){
+ x=0;
+ }
+ var timerId=setTimeout("playBanner()", timing);
+ }
+ }
+ }
+ function init_Slides(){
+ changeStart();
+ playBanner();
+ }
+
+window.onload = init_Slides; //starts the reels movement
+
+
+</script>
+
+<div class="content1"><div class="content2">
+ <img src="modules/newsreel/slides/<?php echo $startSRC; ?>" name="myBanner" alt="newsreel" />
+ <table border="0" cellspacing="0" cellpadding="0" style="height:21px;" width="100%">
+ <tr>
+<?php
+$y=0;
+ $result = $db->Query("SELECT * FROM `bayonet_newsreel` WHERE `visible`= 1 ORDER BY `weight` ASC LIMIT 0, 6");
+ $row = $db->Fetch($result);
+
+ foreach($row as $link){
+ echo "<td id=\"{$y}\" width=\"{$width}%\" class=\"slidenav\" onclick=\"javascript:nextSlide(this.id, true); return false;\" onmouseover=\"javascript:mouseOverBG(this.id); return false;\" onmouseout=\"javascript:mouseOutBG(this.id); return false;\">{$link['title']}</td>\n";
+ $y++;
+ }
+?>
+ </tr>
+ </table>
+</div></div>
+<?php CloseContent(); ?>
+<!-- END News Reel --> \ No newline at end of file
diff --git a/modules/newsreel/slides/arma2move.png b/modules/newsreel/slides/arma2move.png
new file mode 100644
index 0000000..6bffbae
--- /dev/null
+++ b/modules/newsreel/slides/arma2move.png
Binary files differ
diff --git a/modules/newsreel/slides/newsite.png b/modules/newsreel/slides/newsite.png
new file mode 100644
index 0000000..b2d2b69
--- /dev/null
+++ b/modules/newsreel/slides/newsite.png
Binary files differ
diff --git a/modules/newsreel/slides/recruitmentGT.png b/modules/newsreel/slides/recruitmentGT.png
new file mode 100644
index 0000000..c74ae8c
--- /dev/null
+++ b/modules/newsreel/slides/recruitmentGT.png
Binary files differ
diff --git a/modules/newsreel/slides/teamwork.png b/modules/newsreel/slides/teamwork.png
new file mode 100644
index 0000000..99f760b
--- /dev/null
+++ b/modules/newsreel/slides/teamwork.png
Binary files differ
diff --git a/modules/newsreel/style.css b/modules/newsreel/style.css
new file mode 100644
index 0000000..bdea21c
--- /dev/null
+++ b/modules/newsreel/style.css
@@ -0,0 +1,25 @@
+ /*********************************
+ ** Newsreel Styles **
+ *********************************/
+ /* background-image uses a relative path from the stylesheet.. odd */
+
+
+ table.slideshow {
+ border-top:1px #ffffff solid;
+ /*background-image:url(slidebg.png);*/
+ vertical-align:baseline;
+ width:100%;
+ height:100%;
+ }
+ table.slideshow td {
+ color:white;
+ }
+ td.slidenav {
+ text-align:center;
+ font-size:11pt;
+ line-height: 1.4;
+ background-image:url("images/slidenavbg.png");
+ background-color: #333333;
+ vertical-align:text-bottom;
+ border-right:1px solid #333333;
+ }
diff --git a/modules/page/index.php b/modules/page/index.php
new file mode 100644
index 0000000..5b943ce
--- /dev/null
+++ b/modules/page/index.php
@@ -0,0 +1,96 @@
+<?php
+/**
+ * Bayonet Content Management System
+ * Copyright (C) 2008 Joseph Hunkeler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+define("MODULE_FAIL", "You cannot access this module directly.<br/>\n",true);
+
+if(!defined("MODULE_FILE"))
+{
+ die(MODULE_FAIL);
+}
+
+global $db;
+
+/**
+ * List available pages.
+ * Only right now I don't know if the _pages table has been deprecated.
+ * I'm confused. -jhunk
+ */
+if(isset($_GET['list']))
+{
+ if($_GET['list'] == "true")
+ {
+ $results = $db->Query("SELECT title, page_id FROM bayonet_articles");
+ $pages = $db->Fetch($results);
+
+ OpenContent();
+ echo "<div class=\"contentHeading\">Page Map</div>";
+ echo "<div class=\"content\">";
+ echo "<ul>";
+ foreach($pages as $page)
+ {
+ echo "<li>" . LinkPage($page['page_id'], $page['title']) . "</li>";
+ }
+ echo "</ul>";
+ echo "</div>";
+ CloseContent();
+
+ /* Kill module execution to prevent odd page results */
+ return;
+ }
+}
+
+if(!isset($_GET['id']))
+{
+ //ReportError("No page has been requested.<br>\n");
+ // return 1;
+ $id = 1; //makes it so that the default page is the home page
+}else{
+ $id = $_GET['id'];
+}
+
+// {{{ XXX: FIXME -- Needs to be re-written
+
+$result = $db->Query("SELECT u.username AS author, p.page_created, p.title, p.text FROM `bayonet_pages` AS p LEFT OUTER JOIN `bayonet_users` AS u ON u.user_id = p.author_id WHERE p.page_id = '$id'");
+$proceed = $db->Rows($result);
+
+if($proceed > 0)
+{
+ $page = $db->FetchRow($result);
+ OpenContent();
+
+ echo "<div class=\"contentHeading\">{$page['title']}</div>";
+ echo "<div class=\"content\">";
+ //echo "<h3>".$article['title']."</h3>";
+ echo bbcode_format($page['text']);
+ echo "</div>";
+ echo "</div>";
+
+ CloseContent();
+
+ ?>
+ <?php // echo bbcode_format($page['text']) ?>
+ <!-- <tr><th><?php echo $page['author'] ?></th></tr> -->
+ <?php
+}
+else
+{
+ ReportError("Page does not exist.<br>\n");
+}
+
+?>
diff --git a/modules/rudi/admin/includes/admin.class.php b/modules/rudi/admin/includes/admin.class.php
new file mode 100644
index 0000000..fee79c9
--- /dev/null
+++ b/modules/rudi/admin/includes/admin.class.php
@@ -0,0 +1,121 @@
+<?php
+/*
+class Rank
+{
+ public function __toString()
+ {
+ return $this->longname;
+ }
+}
+
+class Award
+{
+ public function __toString()
+ {
+ return $this->name;
+ }
+}
+*/
+
+class AdminCommon extends RUDI_Common
+{
+ public function __construct()
+ {
+ parent::__construct();
+ $this->Update();
+ }
+
+ public function getRanks()
+ {
+ $result = $this->db->Query("SELECT * FROM rudi_ranks");
+ while(($row = $this->db->FetchObject($result,'Rank'))!=false)
+ {
+ $ranks[] = $row;
+ }
+
+ return $ranks;
+ }
+
+ public function getAwards()
+ {
+ $result = $this->db->Query("SELECT * FROM rudi_awards");
+ while(($row = $this->db->FetchObject($result,'Award'))!=false)
+ {
+ $awards[] = $row;
+ }
+
+ return $awards;
+ }
+}
+
+class AdminAdd
+{
+ protected $db, $link, $id;
+ public $data;
+
+ public function __construct()
+ {
+ if(is_null($id))
+ {
+ decho("No ID");
+ return;
+ }
+ $this->id = $id;
+
+ $this->db = new RUDI_SQL();
+ $this->link = $this->db->Connect('localhost','hunkeler','proball');
+ $this->db->Select_db('rudi');
+
+ //$result = $this->db->Query("INSERT INTO rudi_unit_members VALUES()");
+ //$name = $this->db->FetchArray($result);
+
+ echo "Current soldier selected: '{$name['last_name']}, {$name['first_name']}'";
+ }
+
+ public function __set($var, $val)
+ {
+ //echo "UPDATE rudi_unit_members SET $var = '$val';";
+ //mysql_query("UPDATE rudi_unit_members SET $var = '$val';");
+ $this->id = addslashes($this->id);
+ $this->db->Query("UPDATE rudi_unit_members SET $var = '$val' WHERE member_id = '{$this->id}';");
+ }
+}
+
+class AdminModify
+{
+ protected $db, $link, $id;
+ public $data;
+
+ public function __construct($id)
+ {
+ if(is_null($id))
+ {
+ decho("No ID");
+ return;
+ }
+ else
+ {
+ decho(get_class($this) . "received: $id" );
+ }
+ $this->id = $id;
+
+ $this->db = new RUDI_SQL();
+ $this->link = $this->db->Connect('localhost','hunkeler','proball');
+ $this->db->Select_db('rudi');
+
+ $result = $this->db->Query("SELECT last_name, first_name FROM rudi_unit_members WHERE member_id = '$id'");
+ $name = $this->db->FetchArray($result);
+
+ echo "Current soldier selected: '{$name['last_name']}, {$name['first_name']}'";
+ }
+
+ public function __set($var, $val)
+ {
+ //echo "UPDATE rudi_unit_members SET $var = '$val';";
+ //mysql_query("UPDATE rudi_unit_members SET $var = '$val';");
+ $this->id = addslashes($this->id);
+ $this->db->Query("UPDATE rudi_unit_members SET $var = '$val' WHERE member_id = '{$this->id}';");
+ }
+}
+
+?> \ No newline at end of file
diff --git a/modules/rudi/admin/index.php b/modules/rudi/admin/index.php
new file mode 100644
index 0000000..33d9cd1
--- /dev/null
+++ b/modules/rudi/admin/index.php
@@ -0,0 +1,21 @@
+<?php
+
+//include '../includes/debug.php';
+//include '../includes/sql.class.php';
+//include '../includes/common.class.php';
+include 'includes/admin.class.php';
+//include '../header.php';
+
+ob_start();
+$common = new AdminCommon();
+include 'views/view.admin.php';
+
+if(isset($_GET['soldier']) && $_GET['soldier'] == 'modify')
+{
+ include 'views/view.modifysoldier.php';
+
+}
+
+//include '../footer.php';
+ob_flush();
+?> \ No newline at end of file
diff --git a/modules/rudi/admin/views/view.addsoldier.php b/modules/rudi/admin/views/view.addsoldier.php
new file mode 100644
index 0000000..370b232
--- /dev/null
+++ b/modules/rudi/admin/views/view.addsoldier.php
@@ -0,0 +1,3 @@
+<?php
+
+?> \ No newline at end of file
diff --git a/modules/rudi/admin/views/view.admin.php b/modules/rudi/admin/views/view.admin.php
new file mode 100644
index 0000000..d05e5b1
--- /dev/null
+++ b/modules/rudi/admin/views/view.admin.php
@@ -0,0 +1,20 @@
+<?php
+
+?>
+<html>
+<head>
+<title>RUDI Administration</title>
+</head>
+
+<body>
+ <table>
+ <tr><th>RUDI Administration</th></tr>
+ <table cellpadding="5">
+ <tr><th>Soldiers</th><th>Awards</th><th>Ranks</th></tr>
+ <tr><td><a href="?load=rudi&admin&soldier=add">Add</a></td><td><a href="?load=rudi&admin&award=add">Add</a></td><td><a href="?load=rudi&admin&rank=add">Add</a></td></tr>
+ <tr><td>Modify</td><td>Modify</td><td>Modify</td></tr>
+ <tr><td>Delete</td><td>Delete</td><td>Delete</td></tr>
+ </table>
+ </table>
+</body>
+</html>
diff --git a/modules/rudi/admin/views/view.deletesoldier.php b/modules/rudi/admin/views/view.deletesoldier.php
new file mode 100644
index 0000000..370b232
--- /dev/null
+++ b/modules/rudi/admin/views/view.deletesoldier.php
@@ -0,0 +1,3 @@
+<?php
+
+?> \ No newline at end of file
diff --git a/modules/rudi/admin/views/view.modifysoldier.php b/modules/rudi/admin/views/view.modifysoldier.php
new file mode 100644
index 0000000..83449b8
--- /dev/null
+++ b/modules/rudi/admin/views/view.modifysoldier.php
@@ -0,0 +1,35 @@
+
+<?php
+if(isset($_POST['id']))
+{
+ $id = $_POST['id'];
+ //unset($_POST);
+ $modify = new AdminModify((int)$id);
+ $edit =& $common->data[(int)$id];
+}
+?>
+
+<form method="POST">
+<select name="id">
+<?php foreach($common->data as $member):?>
+ <option value="<?php echo $member->member_id ?>" <?php if(!is_null($id) && $id == $member->member_id) echo ' selected '; ?>><?php echo $member->name ?></option>
+<?php endforeach; ?>
+</select>
+<button value="Select">Select</button>
+</form>
+
+<form action="" method="GET">
+<table>
+<tr><th>Modify Soldier</th></tr>
+<tr><th>Last Name</th><td><input type="text" name="last" value="<?php echo $edit->last_name ?>" /></td></tr>
+<tr><th>First Name</th><td><input type="text" value="<?php echo $edit->first_name ?>" /></td></tr>
+<tr><th>Rank</th><td><select name="rank">
+<?php foreach($common->getRanks() as $ranks): ?>
+ <option value="<?php echo $ranks->rank_id ?>"><?php echo $ranks ?></option>
+<?php endforeach; ?>
+</select></td></tr>
+<tr><th colspan="2"><input type="submit" value="submit"/></th></tr>
+</table>
+</form>
+
+<?php decho($_POST); decho($common->data[$id]); //decho($common->getRanks())?> \ No newline at end of file
diff --git a/modules/rudi/footer.php b/modules/rudi/footer.php
new file mode 100644
index 0000000..f827d01
--- /dev/null
+++ b/modules/rudi/footer.php
@@ -0,0 +1,8 @@
+<?php
+$real = sprintf("%.2fkb", memory_get_usage() / 1024);
+$peak = sprintf("%.2fkb", memory_get_peak_usage() / 1024);
+?>
+
+<center><?php echo "Connections: $db_connections | Queries: $db_queries | Fetches: $db_fetches | Released: $db_frees | Memory: (real): $real (peak): $peak"?></center>
+</body>
+</html> \ No newline at end of file
diff --git a/modules/rudi/header.php b/modules/rudi/header.php
new file mode 100644
index 0000000..47c5ffa
--- /dev/null
+++ b/modules/rudi/header.php
@@ -0,0 +1,6 @@
+<html>
+<head>
+<title>RUDI</title>
+<!-- <link rel="stylesheet" type="text/css" href="includes/rudi.css" /> -->
+</head>
+<body>
diff --git a/modules/rudi/images/flags/australia.gif b/modules/rudi/images/flags/australia.gif
new file mode 100644
index 0000000..0fe9a53
--- /dev/null
+++ b/modules/rudi/images/flags/australia.gif
Binary files differ
diff --git a/modules/rudi/images/flags/canada.gif b/modules/rudi/images/flags/canada.gif
new file mode 100644
index 0000000..bbc51a6
--- /dev/null
+++ b/modules/rudi/images/flags/canada.gif
Binary files differ
diff --git a/modules/rudi/images/flags/canada1.gif b/modules/rudi/images/flags/canada1.gif
new file mode 100644
index 0000000..777c3b7
--- /dev/null
+++ b/modules/rudi/images/flags/canada1.gif
Binary files differ
diff --git a/modules/rudi/images/flags/germany.gif b/modules/rudi/images/flags/germany.gif
new file mode 100644
index 0000000..5e9767f
--- /dev/null
+++ b/modules/rudi/images/flags/germany.gif
Binary files differ
diff --git a/modules/rudi/images/flags/index.html b/modules/rudi/images/flags/index.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/modules/rudi/images/flags/index.html
diff --git a/modules/rudi/images/flags/israel.gif b/modules/rudi/images/flags/israel.gif
new file mode 100644
index 0000000..e726eb7
--- /dev/null
+++ b/modules/rudi/images/flags/israel.gif
Binary files differ
diff --git a/modules/rudi/images/flags/japan.gif b/modules/rudi/images/flags/japan.gif
new file mode 100644
index 0000000..11efbf7
--- /dev/null
+++ b/modules/rudi/images/flags/japan.gif
Binary files differ
diff --git a/modules/rudi/images/flags/korea.gif b/modules/rudi/images/flags/korea.gif
new file mode 100644
index 0000000..b534115
--- /dev/null
+++ b/modules/rudi/images/flags/korea.gif
Binary files differ
diff --git a/modules/rudi/images/flags/mexico.gif b/modules/rudi/images/flags/mexico.gif
new file mode 100644
index 0000000..bc8b7c7
--- /dev/null
+++ b/modules/rudi/images/flags/mexico.gif
Binary files differ
diff --git a/modules/rudi/images/flags/russia.gif b/modules/rudi/images/flags/russia.gif
new file mode 100644
index 0000000..5b78932
--- /dev/null
+++ b/modules/rudi/images/flags/russia.gif
Binary files differ
diff --git a/modules/rudi/images/flags/uk.gif b/modules/rudi/images/flags/uk.gif
new file mode 100644
index 0000000..fd3c469
--- /dev/null
+++ b/modules/rudi/images/flags/uk.gif
Binary files differ
diff --git a/modules/rudi/images/flags/usa.gif b/modules/rudi/images/flags/usa.gif
new file mode 100644
index 0000000..08a1933
--- /dev/null
+++ b/modules/rudi/images/flags/usa.gif
Binary files differ
diff --git a/modules/rudi/images/medals/3IDESM.jpg b/modules/rudi/images/medals/3IDESM.jpg
new file mode 100644
index 0000000..2574626
--- /dev/null
+++ b/modules/rudi/images/medals/3IDESM.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/ACM.jpg b/modules/rudi/images/medals/ACM.jpg
new file mode 100644
index 0000000..e56c0e4
--- /dev/null
+++ b/modules/rudi/images/medals/ACM.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/ADSM.jpg b/modules/rudi/images/medals/ADSM.jpg
new file mode 100644
index 0000000..cfa47a0
--- /dev/null
+++ b/modules/rudi/images/medals/ADSM.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/AE-AMCM.jpg b/modules/rudi/images/medals/AE-AMCM.jpg
new file mode 100644
index 0000000..42ed6de
--- /dev/null
+++ b/modules/rudi/images/medals/AE-AMCM.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/AGCM.jpg b/modules/rudi/images/medals/AGCM.jpg
new file mode 100644
index 0000000..81d1882
--- /dev/null
+++ b/modules/rudi/images/medals/AGCM.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/BS.jpg b/modules/rudi/images/medals/BS.jpg
new file mode 100644
index 0000000..8dad4f4
--- /dev/null
+++ b/modules/rudi/images/medals/BS.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/DSC.jpg b/modules/rudi/images/medals/DSC.jpg
new file mode 100644
index 0000000..d84b801
--- /dev/null
+++ b/modules/rudi/images/medals/DSC.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/EAM.jpg b/modules/rudi/images/medals/EAM.jpg
new file mode 100644
index 0000000..ea0e4b6
--- /dev/null
+++ b/modules/rudi/images/medals/EAM.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/EAMECM.jpg b/modules/rudi/images/medals/EAMECM.jpg
new file mode 100644
index 0000000..e7f3867
--- /dev/null
+++ b/modules/rudi/images/medals/EAMECM.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/LOM.jpg b/modules/rudi/images/medals/LOM.jpg
new file mode 100644
index 0000000..5f6e8a3
--- /dev/null
+++ b/modules/rudi/images/medals/LOM.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/MUC.jpg b/modules/rudi/images/medals/MUC.jpg
new file mode 100644
index 0000000..4567112
--- /dev/null
+++ b/modules/rudi/images/medals/MUC.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/PH.jpg b/modules/rudi/images/medals/PH.jpg
new file mode 100644
index 0000000..4375275
--- /dev/null
+++ b/modules/rudi/images/medals/PH.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/SM.jpg b/modules/rudi/images/medals/SM.jpg
new file mode 100644
index 0000000..09de8d0
--- /dev/null
+++ b/modules/rudi/images/medals/SM.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/SS.jpg b/modules/rudi/images/medals/SS.jpg
new file mode 100644
index 0000000..d8599cf
--- /dev/null
+++ b/modules/rudi/images/medals/SS.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/WWIIAOM.jpg b/modules/rudi/images/medals/WWIIAOM.jpg
new file mode 100644
index 0000000..ff40ef8
--- /dev/null
+++ b/modules/rudi/images/medals/WWIIAOM.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/WWIIVM.jpg b/modules/rudi/images/medals/WWIIVM.jpg
new file mode 100644
index 0000000..1256371
--- /dev/null
+++ b/modules/rudi/images/medals/WWIIVM.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/armedforcesservice.jpg b/modules/rudi/images/medals/armedforcesservice.jpg
new file mode 100644
index 0000000..14080b6
--- /dev/null
+++ b/modules/rudi/images/medals/armedforcesservice.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/armyachievement.jpg b/modules/rudi/images/medals/armyachievement.jpg
new file mode 100644
index 0000000..ed35298
--- /dev/null
+++ b/modules/rudi/images/medals/armyachievement.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/armycommendation.jpg b/modules/rudi/images/medals/armycommendation.jpg
new file mode 100644
index 0000000..20861e1
--- /dev/null
+++ b/modules/rudi/images/medals/armycommendation.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/armyservice.jpg b/modules/rudi/images/medals/armyservice.jpg
new file mode 100644
index 0000000..52d7cfe
--- /dev/null
+++ b/modules/rudi/images/medals/armyservice.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/bronzestar.jpg b/modules/rudi/images/medals/bronzestar.jpg
new file mode 100644
index 0000000..0cf5fa7
--- /dev/null
+++ b/modules/rudi/images/medals/bronzestar.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/cib1.gif b/modules/rudi/images/medals/cib1.gif
new file mode 100644
index 0000000..a9e01d6
--- /dev/null
+++ b/modules/rudi/images/medals/cib1.gif
Binary files differ
diff --git a/modules/rudi/images/medals/cib2.gif b/modules/rudi/images/medals/cib2.gif
new file mode 100644
index 0000000..258f909
--- /dev/null
+++ b/modules/rudi/images/medals/cib2.gif
Binary files differ
diff --git a/modules/rudi/images/medals/cib3.gif b/modules/rudi/images/medals/cib3.gif
new file mode 100644
index 0000000..c9ddbfc
--- /dev/null
+++ b/modules/rudi/images/medals/cib3.gif
Binary files differ
diff --git a/modules/rudi/images/medals/cib4.gif b/modules/rudi/images/medals/cib4.gif
new file mode 100644
index 0000000..4634756
--- /dev/null
+++ b/modules/rudi/images/medals/cib4.gif
Binary files differ
diff --git a/modules/rudi/images/medals/cod2duc.jpg b/modules/rudi/images/medals/cod2duc.jpg
new file mode 100644
index 0000000..099ca27
--- /dev/null
+++ b/modules/rudi/images/medals/cod2duc.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/cod4duc.jpg b/modules/rudi/images/medals/cod4duc.jpg
new file mode 100644
index 0000000..aad4498
--- /dev/null
+++ b/modules/rudi/images/medals/cod4duc.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/codduc.jpg b/modules/rudi/images/medals/codduc.jpg
new file mode 100644
index 0000000..566f81b
--- /dev/null
+++ b/modules/rudi/images/medals/codduc.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/drill_instructor_badge.gif b/modules/rudi/images/medals/drill_instructor_badge.gif
new file mode 100644
index 0000000..c7d7f83
--- /dev/null
+++ b/modules/rudi/images/medals/drill_instructor_badge.gif
Binary files differ
diff --git a/modules/rudi/images/medals/dsm.jpg b/modules/rudi/images/medals/dsm.jpg
new file mode 100644
index 0000000..b90e927
--- /dev/null
+++ b/modules/rudi/images/medals/dsm.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/esm.jpg b/modules/rudi/images/medals/esm.jpg
new file mode 100644
index 0000000..2dbbcca
--- /dev/null
+++ b/modules/rudi/images/medals/esm.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/exempattendance.jpg b/modules/rudi/images/medals/exempattendance.jpg
new file mode 100644
index 0000000..8b6354b
--- /dev/null
+++ b/modules/rudi/images/medals/exempattendance.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/goodconduct.jpg b/modules/rudi/images/medals/goodconduct.jpg
new file mode 100644
index 0000000..77277cd
--- /dev/null
+++ b/modules/rudi/images/medals/goodconduct.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/gwotem.jpg b/modules/rudi/images/medals/gwotem.jpg
new file mode 100644
index 0000000..e92cc80
--- /dev/null
+++ b/modules/rudi/images/medals/gwotem.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/gwotsm.jpg b/modules/rudi/images/medals/gwotsm.jpg
new file mode 100644
index 0000000..479ca32
--- /dev/null
+++ b/modules/rudi/images/medals/gwotsm.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/index.html-old b/modules/rudi/images/medals/index.html-old
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/modules/rudi/images/medals/index.html-old
diff --git a/modules/rudi/images/medals/legionofmerit.jpg b/modules/rudi/images/medals/legionofmerit.jpg
new file mode 100644
index 0000000..2e52648
--- /dev/null
+++ b/modules/rudi/images/medals/legionofmerit.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/nationaldefense.jpg b/modules/rudi/images/medals/nationaldefense.jpg
new file mode 100644
index 0000000..8f96df8
--- /dev/null
+++ b/modules/rudi/images/medals/nationaldefense.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/ncoprofdev.jpg b/modules/rudi/images/medals/ncoprofdev.jpg
new file mode 100644
index 0000000..ea564ed
--- /dev/null
+++ b/modules/rudi/images/medals/ncoprofdev.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/oak_leaf_clusters.jpg b/modules/rudi/images/medals/oak_leaf_clusters.jpg
new file mode 100644
index 0000000..1927d46
--- /dev/null
+++ b/modules/rudi/images/medals/oak_leaf_clusters.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/purpleheart.jpg b/modules/rudi/images/medals/purpleheart.jpg
new file mode 100644
index 0000000..07cce39
--- /dev/null
+++ b/modules/rudi/images/medals/purpleheart.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/silverstar.jpg b/modules/rudi/images/medals/silverstar.jpg
new file mode 100644
index 0000000..60669f5
--- /dev/null
+++ b/modules/rudi/images/medals/silverstar.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/soldiers.jpg b/modules/rudi/images/medals/soldiers.jpg
new file mode 100644
index 0000000..5059ad2
--- /dev/null
+++ b/modules/rudi/images/medals/soldiers.jpg
Binary files differ
diff --git a/modules/rudi/images/medals/valor_device.png b/modules/rudi/images/medals/valor_device.png
new file mode 100644
index 0000000..533dde8
--- /dev/null
+++ b/modules/rudi/images/medals/valor_device.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/1LT.png b/modules/rudi/images/ranks/large/1LT.png
new file mode 100644
index 0000000..0e305c1
--- /dev/null
+++ b/modules/rudi/images/ranks/large/1LT.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/1SG.png b/modules/rudi/images/ranks/large/1SG.png
new file mode 100644
index 0000000..9f0c0ee
--- /dev/null
+++ b/modules/rudi/images/ranks/large/1SG.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/1stLT.gif b/modules/rudi/images/ranks/large/1stLT.gif
new file mode 100644
index 0000000..1f5ccce
--- /dev/null
+++ b/modules/rudi/images/ranks/large/1stLT.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/large/2LT.png b/modules/rudi/images/ranks/large/2LT.png
new file mode 100644
index 0000000..15a4fbf
--- /dev/null
+++ b/modules/rudi/images/ranks/large/2LT.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/2ndLT.gif b/modules/rudi/images/ranks/large/2ndLT.gif
new file mode 100644
index 0000000..1762a51
--- /dev/null
+++ b/modules/rudi/images/ranks/large/2ndLT.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/large/CPL.png b/modules/rudi/images/ranks/large/CPL.png
new file mode 100644
index 0000000..f302179
--- /dev/null
+++ b/modules/rudi/images/ranks/large/CPL.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/CPT.png b/modules/rudi/images/ranks/large/CPT.png
new file mode 100644
index 0000000..33846a3
--- /dev/null
+++ b/modules/rudi/images/ranks/large/CPT.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/CSM.png b/modules/rudi/images/ranks/large/CSM.png
new file mode 100644
index 0000000..62f557b
--- /dev/null
+++ b/modules/rudi/images/ranks/large/CSM.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/General.gif b/modules/rudi/images/ranks/large/General.gif
new file mode 100644
index 0000000..7983698
--- /dev/null
+++ b/modules/rudi/images/ranks/large/General.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/large/LTGeneral.gif b/modules/rudi/images/ranks/large/LTGeneral.gif
new file mode 100644
index 0000000..b8f8d7d
--- /dev/null
+++ b/modules/rudi/images/ranks/large/LTGeneral.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/large/MSG.png b/modules/rudi/images/ranks/large/MSG.png
new file mode 100644
index 0000000..fac8139
--- /dev/null
+++ b/modules/rudi/images/ranks/large/MSG.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/MajorGeneral.gif b/modules/rudi/images/ranks/large/MajorGeneral.gif
new file mode 100644
index 0000000..2594e33
--- /dev/null
+++ b/modules/rudi/images/ranks/large/MajorGeneral.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/large/PFC.png b/modules/rudi/images/ranks/large/PFC.png
new file mode 100644
index 0000000..d8d8b5b
--- /dev/null
+++ b/modules/rudi/images/ranks/large/PFC.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/PV2.png b/modules/rudi/images/ranks/large/PV2.png
new file mode 100644
index 0000000..7fcc4d8
--- /dev/null
+++ b/modules/rudi/images/ranks/large/PV2.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/PVT.gif b/modules/rudi/images/ranks/large/PVT.gif
new file mode 100644
index 0000000..ca1c11e
--- /dev/null
+++ b/modules/rudi/images/ranks/large/PVT.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/large/SFC.png b/modules/rudi/images/ranks/large/SFC.png
new file mode 100644
index 0000000..c23f3e8
--- /dev/null
+++ b/modules/rudi/images/ranks/large/SFC.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/SGT.png b/modules/rudi/images/ranks/large/SGT.png
new file mode 100644
index 0000000..165e83c
--- /dev/null
+++ b/modules/rudi/images/ranks/large/SGT.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/SMG.png b/modules/rudi/images/ranks/large/SMG.png
new file mode 100644
index 0000000..9cc03a2
--- /dev/null
+++ b/modules/rudi/images/ranks/large/SMG.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/SPC.png b/modules/rudi/images/ranks/large/SPC.png
new file mode 100644
index 0000000..0f2446e
--- /dev/null
+++ b/modules/rudi/images/ranks/large/SPC.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/SSG.png b/modules/rudi/images/ranks/large/SSG.png
new file mode 100644
index 0000000..e4eecd4
--- /dev/null
+++ b/modules/rudi/images/ranks/large/SSG.png
Binary files differ
diff --git a/modules/rudi/images/ranks/large/brigadier.gif b/modules/rudi/images/ranks/large/brigadier.gif
new file mode 100644
index 0000000..cad7d7a
--- /dev/null
+++ b/modules/rudi/images/ranks/large/brigadier.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/large/captain.gif b/modules/rudi/images/ranks/large/captain.gif
new file mode 100644
index 0000000..c4e9142
--- /dev/null
+++ b/modules/rudi/images/ranks/large/captain.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/large/colonel.gif b/modules/rudi/images/ranks/large/colonel.gif
new file mode 100644
index 0000000..58dc613
--- /dev/null
+++ b/modules/rudi/images/ranks/large/colonel.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/large/index.html b/modules/rudi/images/ranks/large/index.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/modules/rudi/images/ranks/large/index.html
diff --git a/modules/rudi/images/ranks/large/ltc.gif b/modules/rudi/images/ranks/large/ltc.gif
new file mode 100644
index 0000000..d18509e
--- /dev/null
+++ b/modules/rudi/images/ranks/large/ltc.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/large/major.gif b/modules/rudi/images/ranks/large/major.gif
new file mode 100644
index 0000000..761410c
--- /dev/null
+++ b/modules/rudi/images/ranks/large/major.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/small/1LT.png b/modules/rudi/images/ranks/small/1LT.png
new file mode 100644
index 0000000..247c57d
--- /dev/null
+++ b/modules/rudi/images/ranks/small/1LT.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/1SG.png b/modules/rudi/images/ranks/small/1SG.png
new file mode 100644
index 0000000..f9d3f23
--- /dev/null
+++ b/modules/rudi/images/ranks/small/1SG.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/2LT.png b/modules/rudi/images/ranks/small/2LT.png
new file mode 100644
index 0000000..79c03a8
--- /dev/null
+++ b/modules/rudi/images/ranks/small/2LT.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/CPL.png b/modules/rudi/images/ranks/small/CPL.png
new file mode 100644
index 0000000..37d1bdd
--- /dev/null
+++ b/modules/rudi/images/ranks/small/CPL.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/CPT.png b/modules/rudi/images/ranks/small/CPT.png
new file mode 100644
index 0000000..c4c0034
--- /dev/null
+++ b/modules/rudi/images/ranks/small/CPT.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/CSM.png b/modules/rudi/images/ranks/small/CSM.png
new file mode 100644
index 0000000..db19607
--- /dev/null
+++ b/modules/rudi/images/ranks/small/CSM.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/General.gif b/modules/rudi/images/ranks/small/General.gif
new file mode 100644
index 0000000..7983698
--- /dev/null
+++ b/modules/rudi/images/ranks/small/General.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/small/LtGeneral.gif b/modules/rudi/images/ranks/small/LtGeneral.gif
new file mode 100644
index 0000000..6bb0a80
--- /dev/null
+++ b/modules/rudi/images/ranks/small/LtGeneral.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/small/MSG.png b/modules/rudi/images/ranks/small/MSG.png
new file mode 100644
index 0000000..e84bde3
--- /dev/null
+++ b/modules/rudi/images/ranks/small/MSG.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/MajorGeneral.gif b/modules/rudi/images/ranks/small/MajorGeneral.gif
new file mode 100644
index 0000000..ef18ea9
--- /dev/null
+++ b/modules/rudi/images/ranks/small/MajorGeneral.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/small/PFC.png b/modules/rudi/images/ranks/small/PFC.png
new file mode 100644
index 0000000..76b58c0
--- /dev/null
+++ b/modules/rudi/images/ranks/small/PFC.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/PV2.png b/modules/rudi/images/ranks/small/PV2.png
new file mode 100644
index 0000000..1246d25
--- /dev/null
+++ b/modules/rudi/images/ranks/small/PV2.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/SFC.png b/modules/rudi/images/ranks/small/SFC.png
new file mode 100644
index 0000000..7e64830
--- /dev/null
+++ b/modules/rudi/images/ranks/small/SFC.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/SGT.png b/modules/rudi/images/ranks/small/SGT.png
new file mode 100644
index 0000000..0411e49
--- /dev/null
+++ b/modules/rudi/images/ranks/small/SGT.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/SMG.png b/modules/rudi/images/ranks/small/SMG.png
new file mode 100644
index 0000000..e85d54a
--- /dev/null
+++ b/modules/rudi/images/ranks/small/SMG.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/SPC.png b/modules/rudi/images/ranks/small/SPC.png
new file mode 100644
index 0000000..93ff59d
--- /dev/null
+++ b/modules/rudi/images/ranks/small/SPC.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/SSG.png b/modules/rudi/images/ranks/small/SSG.png
new file mode 100644
index 0000000..592fcb3
--- /dev/null
+++ b/modules/rudi/images/ranks/small/SSG.png
Binary files differ
diff --git a/modules/rudi/images/ranks/small/brigadier.gif b/modules/rudi/images/ranks/small/brigadier.gif
new file mode 100644
index 0000000..83e48c6
--- /dev/null
+++ b/modules/rudi/images/ranks/small/brigadier.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/small/index.html b/modules/rudi/images/ranks/small/index.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/modules/rudi/images/ranks/small/index.html
diff --git a/modules/rudi/images/ranks/small/pvt.gif b/modules/rudi/images/ranks/small/pvt.gif
new file mode 100644
index 0000000..13a4916
--- /dev/null
+++ b/modules/rudi/images/ranks/small/pvt.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/small/rank-1stlieutenant.gif b/modules/rudi/images/ranks/small/rank-1stlieutenant.gif
new file mode 100644
index 0000000..579223e
--- /dev/null
+++ b/modules/rudi/images/ranks/small/rank-1stlieutenant.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/small/rank-2ndlieutenant.gif b/modules/rudi/images/ranks/small/rank-2ndlieutenant.gif
new file mode 100644
index 0000000..84b23f1
--- /dev/null
+++ b/modules/rudi/images/ranks/small/rank-2ndlieutenant.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/small/rank-captain.gif b/modules/rudi/images/ranks/small/rank-captain.gif
new file mode 100644
index 0000000..1e6a620
--- /dev/null
+++ b/modules/rudi/images/ranks/small/rank-captain.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/small/rank-colonel.gif b/modules/rudi/images/ranks/small/rank-colonel.gif
new file mode 100644
index 0000000..870d2ff
--- /dev/null
+++ b/modules/rudi/images/ranks/small/rank-colonel.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/small/rank-ltcolonel.gif b/modules/rudi/images/ranks/small/rank-ltcolonel.gif
new file mode 100644
index 0000000..bfc5a79
--- /dev/null
+++ b/modules/rudi/images/ranks/small/rank-ltcolonel.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/small/rank-major.gif b/modules/rudi/images/ranks/small/rank-major.gif
new file mode 100644
index 0000000..c8e142d
--- /dev/null
+++ b/modules/rudi/images/ranks/small/rank-major.gif
Binary files differ
diff --git a/modules/rudi/images/ranks/small/rank-private.gif b/modules/rudi/images/ranks/small/rank-private.gif
new file mode 100644
index 0000000..ca1c11e
--- /dev/null
+++ b/modules/rudi/images/ranks/small/rank-private.gif
Binary files differ
diff --git a/modules/rudi/images/uniform/ACoia.png b/modules/rudi/images/uniform/ACoia.png
new file mode 100644
index 0000000..0e70357
--- /dev/null
+++ b/modules/rudi/images/uniform/ACoia.png
Binary files differ
diff --git a/modules/rudi/images/uniform/BBell.png b/modules/rudi/images/uniform/BBell.png
new file mode 100644
index 0000000..a9bbac9
--- /dev/null
+++ b/modules/rudi/images/uniform/BBell.png
Binary files differ
diff --git a/modules/rudi/images/uniform/BChu.png b/modules/rudi/images/uniform/BChu.png
new file mode 100644
index 0000000..a7d5a5b
--- /dev/null
+++ b/modules/rudi/images/uniform/BChu.png
Binary files differ
diff --git a/modules/rudi/images/uniform/BLevine.png b/modules/rudi/images/uniform/BLevine.png
new file mode 100644
index 0000000..50accbe
--- /dev/null
+++ b/modules/rudi/images/uniform/BLevine.png
Binary files differ
diff --git a/modules/rudi/images/uniform/BSegal.png b/modules/rudi/images/uniform/BSegal.png
new file mode 100644
index 0000000..1c9c0f2
--- /dev/null
+++ b/modules/rudi/images/uniform/BSegal.png
Binary files differ
diff --git a/modules/rudi/images/uniform/DHolson.png b/modules/rudi/images/uniform/DHolson.png
new file mode 100644
index 0000000..b372cf5
--- /dev/null
+++ b/modules/rudi/images/uniform/DHolson.png
Binary files differ
diff --git a/modules/rudi/images/uniform/EOConnell.png b/modules/rudi/images/uniform/EOConnell.png
new file mode 100644
index 0000000..9e46bfd
--- /dev/null
+++ b/modules/rudi/images/uniform/EOConnell.png
Binary files differ
diff --git a/modules/rudi/images/uniform/GTownsend.png b/modules/rudi/images/uniform/GTownsend.png
new file mode 100644
index 0000000..6d6f314
--- /dev/null
+++ b/modules/rudi/images/uniform/GTownsend.png
Binary files differ
diff --git a/modules/rudi/images/uniform/IBailey.png b/modules/rudi/images/uniform/IBailey.png
new file mode 100644
index 0000000..c53fd52
--- /dev/null
+++ b/modules/rudi/images/uniform/IBailey.png
Binary files differ
diff --git a/modules/rudi/images/uniform/JBottheim.png b/modules/rudi/images/uniform/JBottheim.png
new file mode 100644
index 0000000..bd4b964
--- /dev/null
+++ b/modules/rudi/images/uniform/JBottheim.png
Binary files differ
diff --git a/modules/rudi/images/uniform/JHunkeler.png b/modules/rudi/images/uniform/JHunkeler.png
new file mode 100644
index 0000000..06a7dff
--- /dev/null
+++ b/modules/rudi/images/uniform/JHunkeler.png
Binary files differ
diff --git a/modules/rudi/images/uniform/JMelnyk.png b/modules/rudi/images/uniform/JMelnyk.png
new file mode 100644
index 0000000..111291c
--- /dev/null
+++ b/modules/rudi/images/uniform/JMelnyk.png
Binary files differ
diff --git a/modules/rudi/images/uniform/JRobinson.png b/modules/rudi/images/uniform/JRobinson.png
new file mode 100644
index 0000000..f06c78e
--- /dev/null
+++ b/modules/rudi/images/uniform/JRobinson.png
Binary files differ
diff --git a/modules/rudi/images/uniform/KGrimes.png b/modules/rudi/images/uniform/KGrimes.png
new file mode 100644
index 0000000..db03b87
--- /dev/null
+++ b/modules/rudi/images/uniform/KGrimes.png
Binary files differ
diff --git a/modules/rudi/images/uniform/KJohnson.png b/modules/rudi/images/uniform/KJohnson.png
new file mode 100644
index 0000000..496b9fd
--- /dev/null
+++ b/modules/rudi/images/uniform/KJohnson.png
Binary files differ
diff --git a/modules/rudi/images/uniform/LTrimble.png b/modules/rudi/images/uniform/LTrimble.png
new file mode 100644
index 0000000..3d8f2b6
--- /dev/null
+++ b/modules/rudi/images/uniform/LTrimble.png
Binary files differ
diff --git a/modules/rudi/images/uniform/MLula.png b/modules/rudi/images/uniform/MLula.png
new file mode 100644
index 0000000..a674bc2
--- /dev/null
+++ b/modules/rudi/images/uniform/MLula.png
Binary files differ
diff --git a/modules/rudi/images/uniform/MMark.png b/modules/rudi/images/uniform/MMark.png
new file mode 100644
index 0000000..ed5ae93
--- /dev/null
+++ b/modules/rudi/images/uniform/MMark.png
Binary files differ
diff --git a/modules/rudi/images/uniform/MMcClellan.png b/modules/rudi/images/uniform/MMcClellan.png
new file mode 100644
index 0000000..2e7f588
--- /dev/null
+++ b/modules/rudi/images/uniform/MMcClellan.png
Binary files differ
diff --git a/modules/rudi/images/uniform/NGiroux.png b/modules/rudi/images/uniform/NGiroux.png
new file mode 100644
index 0000000..599e39c
--- /dev/null
+++ b/modules/rudi/images/uniform/NGiroux.png
Binary files differ
diff --git a/modules/rudi/images/uniform/NMartini.png b/modules/rudi/images/uniform/NMartini.png
new file mode 100644
index 0000000..e0c15fd
--- /dev/null
+++ b/modules/rudi/images/uniform/NMartini.png
Binary files differ
diff --git a/modules/rudi/images/uniform/NPuckett.png b/modules/rudi/images/uniform/NPuckett.png
new file mode 100644
index 0000000..4d842c8
--- /dev/null
+++ b/modules/rudi/images/uniform/NPuckett.png
Binary files differ
diff --git a/modules/rudi/images/uniform/PBurris.png b/modules/rudi/images/uniform/PBurris.png
new file mode 100644
index 0000000..f64736d
--- /dev/null
+++ b/modules/rudi/images/uniform/PBurris.png
Binary files differ
diff --git a/modules/rudi/images/uniform/PPederson.png b/modules/rudi/images/uniform/PPederson.png
new file mode 100644
index 0000000..c5743f9
--- /dev/null
+++ b/modules/rudi/images/uniform/PPederson.png
Binary files differ
diff --git a/modules/rudi/images/uniform/RLeahy.png b/modules/rudi/images/uniform/RLeahy.png
new file mode 100644
index 0000000..1c36abf
--- /dev/null
+++ b/modules/rudi/images/uniform/RLeahy.png
Binary files differ
diff --git a/modules/rudi/images/uniform/RThomas.png b/modules/rudi/images/uniform/RThomas.png
new file mode 100644
index 0000000..8440cc6
--- /dev/null
+++ b/modules/rudi/images/uniform/RThomas.png
Binary files differ
diff --git a/modules/rudi/images/uniform/SCorsaro.png b/modules/rudi/images/uniform/SCorsaro.png
new file mode 100644
index 0000000..1895adf
--- /dev/null
+++ b/modules/rudi/images/uniform/SCorsaro.png
Binary files differ
diff --git a/modules/rudi/images/uniform/ZBarrett.png b/modules/rudi/images/uniform/ZBarrett.png
new file mode 100644
index 0000000..c9d106b
--- /dev/null
+++ b/modules/rudi/images/uniform/ZBarrett.png
Binary files differ
diff --git a/modules/rudi/images/uniform/bailey.jpg b/modules/rudi/images/uniform/bailey.jpg
new file mode 100644
index 0000000..bcb7bd4
--- /dev/null
+++ b/modules/rudi/images/uniform/bailey.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/barrett.jpg b/modules/rudi/images/uniform/barrett.jpg
new file mode 100644
index 0000000..5d48cf0
--- /dev/null
+++ b/modules/rudi/images/uniform/barrett.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/bell.jpg b/modules/rudi/images/uniform/bell.jpg
new file mode 100644
index 0000000..e3e44c5
--- /dev/null
+++ b/modules/rudi/images/uniform/bell.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/blackburn.jpg b/modules/rudi/images/uniform/blackburn.jpg
new file mode 100644
index 0000000..1b96091
--- /dev/null
+++ b/modules/rudi/images/uniform/blackburn.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/blanchette.jpg b/modules/rudi/images/uniform/blanchette.jpg
new file mode 100644
index 0000000..4a007c2
--- /dev/null
+++ b/modules/rudi/images/uniform/blanchette.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/bottheim.jpg b/modules/rudi/images/uniform/bottheim.jpg
new file mode 100644
index 0000000..924cc75
--- /dev/null
+++ b/modules/rudi/images/uniform/bottheim.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/brooks.jpg b/modules/rudi/images/uniform/brooks.jpg
new file mode 100644
index 0000000..05de36e
--- /dev/null
+++ b/modules/rudi/images/uniform/brooks.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/brown.jpg b/modules/rudi/images/uniform/brown.jpg
new file mode 100644
index 0000000..28e32ef
--- /dev/null
+++ b/modules/rudi/images/uniform/brown.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/burris copy.jpg b/modules/rudi/images/uniform/burris copy.jpg
new file mode 100644
index 0000000..edc6aba
--- /dev/null
+++ b/modules/rudi/images/uniform/burris copy.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/burris.jpg b/modules/rudi/images/uniform/burris.jpg
new file mode 100644
index 0000000..d56c1ae
--- /dev/null
+++ b/modules/rudi/images/uniform/burris.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/bursik.jpg b/modules/rudi/images/uniform/bursik.jpg
new file mode 100644
index 0000000..e4b69a3
--- /dev/null
+++ b/modules/rudi/images/uniform/bursik.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/chu.jpg b/modules/rudi/images/uniform/chu.jpg
new file mode 100644
index 0000000..f548952
--- /dev/null
+++ b/modules/rudi/images/uniform/chu.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/clark.jpg b/modules/rudi/images/uniform/clark.jpg
new file mode 100644
index 0000000..35febd8
--- /dev/null
+++ b/modules/rudi/images/uniform/clark.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/clayton.jpg b/modules/rudi/images/uniform/clayton.jpg
new file mode 100644
index 0000000..87e96b0
--- /dev/null
+++ b/modules/rudi/images/uniform/clayton.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/cooke.jpg b/modules/rudi/images/uniform/cooke.jpg
new file mode 100644
index 0000000..210ef92
--- /dev/null
+++ b/modules/rudi/images/uniform/cooke.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/corsaro.jpg b/modules/rudi/images/uniform/corsaro.jpg
new file mode 100644
index 0000000..d3f084a
--- /dev/null
+++ b/modules/rudi/images/uniform/corsaro.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/cpl.jpg b/modules/rudi/images/uniform/cpl.jpg
new file mode 100644
index 0000000..22c7d84
--- /dev/null
+++ b/modules/rudi/images/uniform/cpl.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/dalia.jpg b/modules/rudi/images/uniform/dalia.jpg
new file mode 100644
index 0000000..8e762c7
--- /dev/null
+++ b/modules/rudi/images/uniform/dalia.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/ditzel.jpg b/modules/rudi/images/uniform/ditzel.jpg
new file mode 100644
index 0000000..7b104dc
--- /dev/null
+++ b/modules/rudi/images/uniform/ditzel.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/donovan.jpg b/modules/rudi/images/uniform/donovan.jpg
new file mode 100644
index 0000000..5102f3c
--- /dev/null
+++ b/modules/rudi/images/uniform/donovan.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/dubin.jpg b/modules/rudi/images/uniform/dubin.jpg
new file mode 100644
index 0000000..ce7313a
--- /dev/null
+++ b/modules/rudi/images/uniform/dubin.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/duvall.jpg b/modules/rudi/images/uniform/duvall.jpg
new file mode 100644
index 0000000..586080b
--- /dev/null
+++ b/modules/rudi/images/uniform/duvall.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/enlisted.jpg b/modules/rudi/images/uniform/enlisted.jpg
new file mode 100644
index 0000000..2007e07
--- /dev/null
+++ b/modules/rudi/images/uniform/enlisted.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/freeman.jpg b/modules/rudi/images/uniform/freeman.jpg
new file mode 100644
index 0000000..4462f88
--- /dev/null
+++ b/modules/rudi/images/uniform/freeman.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/frey.jpg b/modules/rudi/images/uniform/frey.jpg
new file mode 100644
index 0000000..d5e9253
--- /dev/null
+++ b/modules/rudi/images/uniform/frey.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/fsgt.jpg b/modules/rudi/images/uniform/fsgt.jpg
new file mode 100644
index 0000000..91f915e
--- /dev/null
+++ b/modules/rudi/images/uniform/fsgt.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/gaskin.jpg b/modules/rudi/images/uniform/gaskin.jpg
new file mode 100644
index 0000000..2638bca
--- /dev/null
+++ b/modules/rudi/images/uniform/gaskin.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/geary.jpg b/modules/rudi/images/uniform/geary.jpg
new file mode 100644
index 0000000..de111e6
--- /dev/null
+++ b/modules/rudi/images/uniform/geary.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/giles.jpg b/modules/rudi/images/uniform/giles.jpg
new file mode 100644
index 0000000..7b179ba
--- /dev/null
+++ b/modules/rudi/images/uniform/giles.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/giroux.jpg b/modules/rudi/images/uniform/giroux.jpg
new file mode 100644
index 0000000..1e652d7
--- /dev/null
+++ b/modules/rudi/images/uniform/giroux.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/goodrich.jpg b/modules/rudi/images/uniform/goodrich.jpg
new file mode 100644
index 0000000..2804e1f
--- /dev/null
+++ b/modules/rudi/images/uniform/goodrich.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/gwizdala.jpg b/modules/rudi/images/uniform/gwizdala.jpg
new file mode 100644
index 0000000..0cafe8f
--- /dev/null
+++ b/modules/rudi/images/uniform/gwizdala.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/hallock.jpg b/modules/rudi/images/uniform/hallock.jpg
new file mode 100644
index 0000000..851c9b4
--- /dev/null
+++ b/modules/rudi/images/uniform/hallock.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/higgins.jpg b/modules/rudi/images/uniform/higgins.jpg
new file mode 100644
index 0000000..ae4b7f4
--- /dev/null
+++ b/modules/rudi/images/uniform/higgins.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/holson.jpg b/modules/rudi/images/uniform/holson.jpg
new file mode 100644
index 0000000..58c6d49
--- /dev/null
+++ b/modules/rudi/images/uniform/holson.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/hornung.jpg b/modules/rudi/images/uniform/hornung.jpg
new file mode 100644
index 0000000..3964634
--- /dev/null
+++ b/modules/rudi/images/uniform/hornung.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/hunkeler.jpg b/modules/rudi/images/uniform/hunkeler.jpg
new file mode 100644
index 0000000..2775fc5
--- /dev/null
+++ b/modules/rudi/images/uniform/hunkeler.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/index.html b/modules/rudi/images/uniform/index.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/modules/rudi/images/uniform/index.html
diff --git a/modules/rudi/images/uniform/jimenez.jpg b/modules/rudi/images/uniform/jimenez.jpg
new file mode 100644
index 0000000..1081c71
--- /dev/null
+++ b/modules/rudi/images/uniform/jimenez.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/kenkel.jpg b/modules/rudi/images/uniform/kenkel.jpg
new file mode 100644
index 0000000..cfaccf9
--- /dev/null
+++ b/modules/rudi/images/uniform/kenkel.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/killian.jpg b/modules/rudi/images/uniform/killian.jpg
new file mode 100644
index 0000000..d8940e0
--- /dev/null
+++ b/modules/rudi/images/uniform/killian.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/leahy.jpg b/modules/rudi/images/uniform/leahy.jpg
new file mode 100644
index 0000000..5049a76
--- /dev/null
+++ b/modules/rudi/images/uniform/leahy.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/levine.jpg b/modules/rudi/images/uniform/levine.jpg
new file mode 100644
index 0000000..3910fdb
--- /dev/null
+++ b/modules/rudi/images/uniform/levine.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/litton.jpg b/modules/rudi/images/uniform/litton.jpg
new file mode 100644
index 0000000..788bd92
--- /dev/null
+++ b/modules/rudi/images/uniform/litton.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/luker.jpg b/modules/rudi/images/uniform/luker.jpg
new file mode 100644
index 0000000..9c5f723
--- /dev/null
+++ b/modules/rudi/images/uniform/luker.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/lula.jpg b/modules/rudi/images/uniform/lula.jpg
new file mode 100644
index 0000000..a16024a
--- /dev/null
+++ b/modules/rudi/images/uniform/lula.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/madden.jpg b/modules/rudi/images/uniform/madden.jpg
new file mode 100644
index 0000000..2802c01
--- /dev/null
+++ b/modules/rudi/images/uniform/madden.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/manary.jpg b/modules/rudi/images/uniform/manary.jpg
new file mode 100644
index 0000000..921fc43
--- /dev/null
+++ b/modules/rudi/images/uniform/manary.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/mark.jpg b/modules/rudi/images/uniform/mark.jpg
new file mode 100644
index 0000000..beda1b6
--- /dev/null
+++ b/modules/rudi/images/uniform/mark.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/mcclellan.jpg b/modules/rudi/images/uniform/mcclellan.jpg
new file mode 100644
index 0000000..54ba5aa
--- /dev/null
+++ b/modules/rudi/images/uniform/mcclellan.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/mirman.jpg b/modules/rudi/images/uniform/mirman.jpg
new file mode 100644
index 0000000..8b5eb57
--- /dev/null
+++ b/modules/rudi/images/uniform/mirman.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/moncayo.jpg b/modules/rudi/images/uniform/moncayo.jpg
new file mode 100644
index 0000000..659465b
--- /dev/null
+++ b/modules/rudi/images/uniform/moncayo.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/nowlan.jpg b/modules/rudi/images/uniform/nowlan.jpg
new file mode 100644
index 0000000..73a26cd
--- /dev/null
+++ b/modules/rudi/images/uniform/nowlan.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/oconnell.jpg b/modules/rudi/images/uniform/oconnell.jpg
new file mode 100644
index 0000000..2d06f7e
--- /dev/null
+++ b/modules/rudi/images/uniform/oconnell.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/officer.jpg b/modules/rudi/images/uniform/officer.jpg
new file mode 100644
index 0000000..610f869
--- /dev/null
+++ b/modules/rudi/images/uniform/officer.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/officer1.jpg b/modules/rudi/images/uniform/officer1.jpg
new file mode 100644
index 0000000..cef96ee
--- /dev/null
+++ b/modules/rudi/images/uniform/officer1.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/papp.jpg b/modules/rudi/images/uniform/papp.jpg
new file mode 100644
index 0000000..7aa8507
--- /dev/null
+++ b/modules/rudi/images/uniform/papp.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/patterson.jpg b/modules/rudi/images/uniform/patterson.jpg
new file mode 100644
index 0000000..67b10f2
--- /dev/null
+++ b/modules/rudi/images/uniform/patterson.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/pfc.jpg b/modules/rudi/images/uniform/pfc.jpg
new file mode 100644
index 0000000..65f5156
--- /dev/null
+++ b/modules/rudi/images/uniform/pfc.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/pfc3service copy.jpg b/modules/rudi/images/uniform/pfc3service copy.jpg
new file mode 100644
index 0000000..d87f6ec
--- /dev/null
+++ b/modules/rudi/images/uniform/pfc3service copy.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/poole.jpg b/modules/rudi/images/uniform/poole.jpg
new file mode 100644
index 0000000..e3bbb99
--- /dev/null
+++ b/modules/rudi/images/uniform/poole.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/puckett.jpg b/modules/rudi/images/uniform/puckett.jpg
new file mode 100644
index 0000000..3df29db
--- /dev/null
+++ b/modules/rudi/images/uniform/puckett.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/pvt.jpg b/modules/rudi/images/uniform/pvt.jpg
new file mode 100644
index 0000000..11a23be
--- /dev/null
+++ b/modules/rudi/images/uniform/pvt.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/schneider.jpg b/modules/rudi/images/uniform/schneider.jpg
new file mode 100644
index 0000000..bd18cdf
--- /dev/null
+++ b/modules/rudi/images/uniform/schneider.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/scott.jpg b/modules/rudi/images/uniform/scott.jpg
new file mode 100644
index 0000000..e0dc4d6
--- /dev/null
+++ b/modules/rudi/images/uniform/scott.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/segal.jpg b/modules/rudi/images/uniform/segal.jpg
new file mode 100644
index 0000000..e225f83
--- /dev/null
+++ b/modules/rudi/images/uniform/segal.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/severyns.jpg b/modules/rudi/images/uniform/severyns.jpg
new file mode 100644
index 0000000..3778874
--- /dev/null
+++ b/modules/rudi/images/uniform/severyns.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/sgt.jpg b/modules/rudi/images/uniform/sgt.jpg
new file mode 100644
index 0000000..2dd8f0a
--- /dev/null
+++ b/modules/rudi/images/uniform/sgt.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/sokolowski.jpg b/modules/rudi/images/uniform/sokolowski.jpg
new file mode 100644
index 0000000..139b1fc
--- /dev/null
+++ b/modules/rudi/images/uniform/sokolowski.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/sosa.jpg b/modules/rudi/images/uniform/sosa.jpg
new file mode 100644
index 0000000..faec3bb
--- /dev/null
+++ b/modules/rudi/images/uniform/sosa.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/ssgt.jpg b/modules/rudi/images/uniform/ssgt.jpg
new file mode 100644
index 0000000..bca0043
--- /dev/null
+++ b/modules/rudi/images/uniform/ssgt.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/test.gif b/modules/rudi/images/uniform/test.gif
new file mode 100644
index 0000000..11f342b
--- /dev/null
+++ b/modules/rudi/images/uniform/test.gif
Binary files differ
diff --git a/modules/rudi/images/uniform/test_enlisted.jpg b/modules/rudi/images/uniform/test_enlisted.jpg
new file mode 100644
index 0000000..3462978
--- /dev/null
+++ b/modules/rudi/images/uniform/test_enlisted.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/thomas.jpg b/modules/rudi/images/uniform/thomas.jpg
new file mode 100644
index 0000000..6aae1f2
--- /dev/null
+++ b/modules/rudi/images/uniform/thomas.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/townsend.jpg b/modules/rudi/images/uniform/townsend.jpg
new file mode 100644
index 0000000..9f5aa7c
--- /dev/null
+++ b/modules/rudi/images/uniform/townsend.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/townsend_OLD.jpg b/modules/rudi/images/uniform/townsend_OLD.jpg
new file mode 100644
index 0000000..297996e
--- /dev/null
+++ b/modules/rudi/images/uniform/townsend_OLD.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/trimble.jpg b/modules/rudi/images/uniform/trimble.jpg
new file mode 100644
index 0000000..4120e02
--- /dev/null
+++ b/modules/rudi/images/uniform/trimble.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/whiting.jpg b/modules/rudi/images/uniform/whiting.jpg
new file mode 100644
index 0000000..75a009b
--- /dev/null
+++ b/modules/rudi/images/uniform/whiting.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/williams.jpg b/modules/rudi/images/uniform/williams.jpg
new file mode 100644
index 0000000..016f082
--- /dev/null
+++ b/modules/rudi/images/uniform/williams.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/wubbena.jpg b/modules/rudi/images/uniform/wubbena.jpg
new file mode 100644
index 0000000..ab77965
--- /dev/null
+++ b/modules/rudi/images/uniform/wubbena.jpg
Binary files differ
diff --git a/modules/rudi/images/uniform/young.jpg b/modules/rudi/images/uniform/young.jpg
new file mode 100644
index 0000000..9d08f83
--- /dev/null
+++ b/modules/rudi/images/uniform/young.jpg
Binary files differ
diff --git a/modules/rudi/images/units/2ndPlatoon.gif b/modules/rudi/images/units/2ndPlatoon.gif
new file mode 100644
index 0000000..e42b0e6
--- /dev/null
+++ b/modules/rudi/images/units/2ndPlatoon.gif
Binary files differ
diff --git a/modules/rudi/images/units/BCT.jpg b/modules/rudi/images/units/BCT.jpg
new file mode 100644
index 0000000..d667f5d
--- /dev/null
+++ b/modules/rudi/images/units/BCT.jpg
Binary files differ
diff --git a/modules/rudi/images/units/HQ.gif b/modules/rudi/images/units/HQ.gif
new file mode 100644
index 0000000..741d389
--- /dev/null
+++ b/modules/rudi/images/units/HQ.gif
Binary files differ
diff --git a/modules/rudi/images/units/index.html b/modules/rudi/images/units/index.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/modules/rudi/images/units/index.html
diff --git a/modules/rudi/images/units/rocky.gif b/modules/rudi/images/units/rocky.gif
new file mode 100644
index 0000000..8aefa39
--- /dev/null
+++ b/modules/rudi/images/units/rocky.gif
Binary files differ
diff --git a/modules/rudi/images/weapons/M16a4.jpg b/modules/rudi/images/weapons/M16a4.jpg
new file mode 100644
index 0000000..44a1323
--- /dev/null
+++ b/modules/rudi/images/weapons/M16a4.jpg
Binary files differ
diff --git a/modules/rudi/images/weapons/M203-1.jpg b/modules/rudi/images/weapons/M203-1.jpg
new file mode 100644
index 0000000..2deaadb
--- /dev/null
+++ b/modules/rudi/images/weapons/M203-1.jpg
Binary files differ
diff --git a/modules/rudi/images/weapons/M21.jpg b/modules/rudi/images/weapons/M21.jpg
new file mode 100644
index 0000000..ffa1a92
--- /dev/null
+++ b/modules/rudi/images/weapons/M21.jpg
Binary files differ
diff --git a/modules/rudi/images/weapons/M249.jpg b/modules/rudi/images/weapons/M249.jpg
new file mode 100644
index 0000000..72bac7c
--- /dev/null
+++ b/modules/rudi/images/weapons/M249.jpg
Binary files differ
diff --git a/modules/rudi/images/weapons/M9.jpg b/modules/rudi/images/weapons/M9.jpg
new file mode 100644
index 0000000..21434c0
--- /dev/null
+++ b/modules/rudi/images/weapons/M9.jpg
Binary files differ
diff --git a/modules/rudi/images/weapons/USP.jpg b/modules/rudi/images/weapons/USP.jpg
new file mode 100644
index 0000000..43b3d64
--- /dev/null
+++ b/modules/rudi/images/weapons/USP.jpg
Binary files differ
diff --git a/modules/rudi/images/weapons/index.html b/modules/rudi/images/weapons/index.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/modules/rudi/images/weapons/index.html
diff --git a/modules/rudi/images/weapons/m14.jpg b/modules/rudi/images/weapons/m14.jpg
new file mode 100644
index 0000000..b04c3c1
--- /dev/null
+++ b/modules/rudi/images/weapons/m14.jpg
Binary files differ
diff --git a/modules/rudi/images/weapons/m40a3.jpg b/modules/rudi/images/weapons/m40a3.jpg
new file mode 100644
index 0000000..ca8966e
--- /dev/null
+++ b/modules/rudi/images/weapons/m40a3.jpg
Binary files differ
diff --git a/modules/rudi/images/weapons/m4a1.jpg b/modules/rudi/images/weapons/m4a1.jpg
new file mode 100644
index 0000000..5b52fa4
--- /dev/null
+++ b/modules/rudi/images/weapons/m4a1.jpg
Binary files differ
diff --git a/modules/rudi/images/weapons/m67-grenade.jpg b/modules/rudi/images/weapons/m67-grenade.jpg
new file mode 100644
index 0000000..5e40c8c
--- /dev/null
+++ b/modules/rudi/images/weapons/m67-grenade.jpg
Binary files differ
diff --git a/modules/rudi/images/weapons/m84.jpg b/modules/rudi/images/weapons/m84.jpg
new file mode 100644
index 0000000..6f8ae31
--- /dev/null
+++ b/modules/rudi/images/weapons/m84.jpg
Binary files differ
diff --git a/modules/rudi/includes/common.class.php b/modules/rudi/includes/common.class.php
new file mode 100644
index 0000000..2112853
--- /dev/null
+++ b/modules/rudi/includes/common.class.php
@@ -0,0 +1,927 @@
+<?php
+
+define('RUDI_PROFILE_SMALL', true);
+define('RUDI_PROFILE_BIG', false);
+
+class Soldier
+{
+ public function __construct()
+ {
+ decho("Constructing " . get_class($this) . " -> " . $this);
+ }
+
+ public function __destruct()
+ {
+ decho("Destructing " . get_class($this));
+ }
+
+ public function __toString()
+ {
+ return $this->name;
+ }
+}
+
+class Role
+{
+ public function __construct()
+ {
+ decho("Constructing " . get_class($this) . " -> " . $this);
+ }
+
+ public function __destruct()
+ {
+ decho("Destructing " . get_class($this));
+ }
+
+ public function __toString()
+ {
+ return $this->role_name;
+ }
+}
+
+class UnitInfo
+{
+ public function __construct()
+ {
+ decho("Constructing " . get_class($this) . " -> " . $this);
+ }
+
+ public function __destruct()
+ {
+ decho("Destructing " . get_class($this));
+ }
+
+ public function __toString()
+ {
+ return $this->name;
+ }
+}
+
+class Award
+{
+ public function __construct()
+ {
+ decho("Constructing " . get_class($this) . " -> " . $this);
+ }
+
+ public function __destruct()
+ {
+ decho("Destructing " . get_class($this));
+ }
+
+ public function __toString()
+ {
+ return $this->name;
+ }
+}
+
+class AwardClass
+{
+ public function __construct()
+ {
+ decho("Constructing " . get_class($this) . " -> " . $this);
+ }
+
+ public function __destruct()
+ {
+ decho("Destructing " . get_class($this));
+ }
+
+ public function __toString()
+ {
+ return $this->name;
+ }
+}
+
+class Rank
+{
+ public function __construct()
+ {
+ decho("Constructing " . get_class($this) . " -> " . $this);
+ }
+
+ public function __destruct()
+ {
+ decho("Destructing " . get_class($this));
+ }
+
+ public function __toString()
+ {
+ return $this->longname;
+ }
+}
+
+class Drill
+{
+ public $members;
+ public function __construct()
+ {
+ decho("Constructing " . get_class($this) . " -> " . $this);
+ //$this->members = array('Newly constructed');
+ }
+
+ public function __destruct()
+ {
+ decho("Destructing " . get_class($this));
+ }
+
+ public function __toString()
+ {
+ return $this->date;
+ }
+}
+
+class ServiceRecord
+{
+ public function __construct()
+ {
+ decho("Constructing " . get_class($this) . " -> " . $this);
+ }
+
+ public function __destruct()
+ {
+ decho("Destructing " . get_class($this));
+ }
+
+ public function __toString()
+ {
+ return $this->name;
+ }
+}
+
+class AwardRecord
+{
+ public function __construct()
+ {
+ decho("Constructing " . get_class($this) . " -> " . $this);
+ }
+
+ public function __destruct()
+ {
+ decho("Destructing " . get_class($this));
+ }
+
+ public function __toString()
+ {
+ return $this->name;
+ }
+}
+
+class CombatRecord
+{
+ public function __construct()
+ {
+ decho("Constructing " . get_class($this) . " -> " . $this);
+ }
+
+ public function __destruct()
+ {
+ decho("Destructing " . get_class($this));
+ }
+
+ public function __toString()
+ {
+ return $this->name;
+ }
+}
+
+/**
+ * does Stat actually need to exist?
+ */
+class Stat
+{
+
+}
+
+class RUDI_Common
+{
+ protected static $db, $link;
+ protected $images_path;
+ public $data;
+
+ public function __construct()
+ {
+ decho("Constructing " . get_parent_class($this));
+ global $config, $db;
+
+ $this->images_path = $config['rudi']['images_path'];
+ $this->db = $db;
+ }
+
+ public function __destruct()
+ {
+ decho("Destructing " . get_parent_class($this));
+ }
+
+ /**
+ * RUDI_SoldierProfile::date_diff()
+ *
+ * This was posted by stoicnluv@gmail.com at php.net.
+ * This function is assumed to be public domain source code.
+ *
+ * @param mixed $d1
+ * @param mixed $d2
+ * @return
+ */
+ private function date_diff($d1, $d2){
+ $d1 = (is_string($d1) ? strtotime($d1) : $d1);
+ $d2 = (is_string($d2) ? strtotime($d2) : $d2);
+
+ $diff_secs = abs($d1 - $d2);
+ $base_year = min(date("Y", $d1), date("Y", $d2));
+
+ $diff = mktime(0, 0, $diff_secs, 1, 1, $base_year);
+ return array(
+ "years" => date("Y", $diff) - $base_year,
+ "months_total" => (date("Y", $diff) - $base_year) * 12 + date("n", $diff) - 1,
+ "months" => date("n", $diff) - 1,
+ "days_total" => floor($diff_secs / (3600 * 24)),
+ "days" => date("j", $diff) - 1,
+ "hours_total" => floor($diff_secs / 3600),
+ "hours" => date("G", $diff),
+ "minutes_total" => floor($diff_secs / 60),
+ "minutes" => (int) date("i", $diff),
+ "seconds_total" => $diff_secs,
+ "seconds" => (int) date("s", $diff)
+ );
+ }
+
+ /**
+ * RUDI_SoldierProfile::getDiffTime()
+ *
+ * @param mixed $date
+ * @return
+ */
+ protected function getDiffTime($date, $recent = NULL)
+ {
+ if($recent == NULL)
+ {
+ $recent = time();
+ }
+
+ $test = $this->date_diff($date, $recent);
+ $y_mod = NULL;
+ $m_mod = NULL;
+ $d_mod = NULL;
+
+ if($test['years'] > 1 || $test['years'] < 1)
+ $y_mod = 's';
+ if($test['months'] > 1 || $test['months'] < 1)
+ $m_mod = 's';
+ if($test['days'] > 1 && $test['days'] < 1)
+ $d_mod = 's';
+
+ if($test['years'] < 1 && $test['months'] < 1)
+ {
+ return '['. $test['days'] .'] Day' . $d_mod . ' ';
+ }
+ /* This code does not work properly under certain conditions
+ * therefore it is commented, but left for prosterity's sake.
+ elseif($test['days'] < 1)
+ {
+ return 'Less than a day';
+ }*/
+ else
+ {
+ return '[' . $test['years'] . '] Year' . $y_mod . ' [' . $test['months'] . '] Month' . $m_mod . ' ';
+ }
+ }
+
+ protected function evalData($data)
+ {
+ if(is_array($data))
+ return (count($data) < 1) ? true : false;
+ else
+ return $data ? $data : "N/A";
+ }
+
+ protected function getCumulativeStats()
+ {
+ //$stats = array();
+ $result = $this->db->Query("SELECT platoon_id AS id, name FROM rudi_platoons");
+ $stats['platoon'] = $this->db->Rows($result);
+ $result = $this->db->Query("SELECT squad_id AS id, name FROM rudi_squads");
+ $stats['squad'] = $this->db->Rows($result);
+
+ decho($stats['platoon']);
+ decho($stats['squad']);
+
+ return $stats;
+ }
+
+ protected function getMembersOfPlatoon($id)
+ {
+ $query = sprintf("SELECT platoon_id AS id FROM rudi_unit_members WHERE platoon_id = %d", (int)$id);
+ $result = $this->db->Query($query);
+ $members = $this->db->Rows($result);
+
+ return (int)$members;
+ }
+
+ protected function getMembersOfSquad($id)
+ {
+ $query = sprintf("SELECT squad_id AS id FROM rudi_unit_members WHERE squad_id = %d", (int)$id);
+ $result = $this->db->Query($query);
+ $members = $this->db->Rows($result);
+
+ return (int)$members;
+ }
+
+ protected function getSquadMembers($squad_id)
+ {
+ $query = sprintf("SELECT m.last_name,
+ m.first_name,
+ r.shortname AS rank_short
+ FROM rudi_unit_members AS m
+ LEFT OUTER JOIN rudi_ranks AS r ON r.rank_id = m.rank_id WHERE m.squad_id = %d ORDER BY m.rank_id ",
+ (int)$squad_id);
+
+ $result = $this->db->Query($query);
+ $row = $this->db->FetchObject($result,'Soldier');
+
+ return $row;
+ }
+
+ /**
+ * RUDI_Core::getRoles()
+ *
+ * @param mixed $member_id
+ * @param mixed $rank_id
+ * @return
+ */
+ protected function getRoles($member_id, $rank_id)
+ {
+ $data = NULL;
+ $query = sprintf("SELECT r.role_id, r.name AS role_name FROM rudi_roles AS r LEFT OUTER JOIN rudi_roles_container AS rl USING(role_id) INNER JOIN rudi_unit_members AS rm USING(member_id) WHERE rm.member_id = %d AND r.name IS NOT NULL ORDER BY r.role_id ASC",
+ (int)$member_id);
+
+ $result = $this->db->Query($query);
+ $data = $this->db->FetchObject($result,'Role');
+
+ return $data;
+ }
+
+ /*
+ protected function getRoles($member_id, $rank_id)
+ {
+ $query = sprintf(
+ "SELECT r.role_id, "
+ ."r.name AS role_name, "
+ ."c.name AS class_name "
+ ."FROM rudi_classes AS c "
+ ."RIGHT OUTER JOIN rudi_roles AS r ON r.member_id = '%d' "
+ ."LEFT OUTER JOIN rudi_ranks AS a ON a.class_id = c.class_id "
+ ."WHERE a.rank_id = '%d' ORDER BY r.name ASC",
+ mysql_real_escape_string($member_id),
+ mysql_real_escape_string($rank_id)
+ );
+
+// $result = $this->db->Query($query);
+// $data = $this->db->FetchObject($result,'Soldier');
+ $result = $this->db->Query($query);
+ while(($row = $this->db->FetchObject($result,'Soldier'))!=false)
+ {
+ $data[] = $row;
+ }
+ $this->db->Free($result);
+
+ return $data;
+ }
+ */
+
+ //NOT FINISHED :( :(
+ /**
+ * RUDI_Core::getServiceRecord()
+ *
+ * @param mixed $member_id
+ * @return
+ */
+ protected function getServiceRecord($member_id)
+ {
+ $data = NULL;
+ $query = sprintf(
+ "SELECT r.record_id, r.date_added, r.record_note "
+ ."FROM rudi_service_record AS r "
+ ."LEFT OUTER JOIN rudi_unit_members AS m ON m.member_id = r.member_id "
+ ."WHERE r.member_id = %d ORDER BY r.date_added DESC",
+ (int)$member_id);
+
+ $result = $this->db->Query($query);
+ $data = $this->db->FetchObject($result,'ServiceRecord');
+
+ return $data;
+ }
+
+ /**
+ * RUDI_Core::getAwardRecord()
+ *
+ * @param mixed $member_id
+ * @return
+ */
+ protected function getAwardRecord($member_id)
+ {
+ $data = NULL;
+ $query = sprintf(
+ "SELECT r.award_id, r.date_added, r.record_note, a.name AS award_name, a.image "
+ ."FROM rudi_award_record AS r "
+ ."RIGHT OUTER JOIN rudi_awards AS a ON a.award_id = r.award_id "
+ ."LEFT OUTER JOIN rudi_unit_members AS m ON m.member_id = r.member_id "
+ ."WHERE r.member_id = %d ORDER BY r.date_added DESC ",
+ (int)$member_id);
+
+ $result = $this->db->Query($query);
+ $data = $this->db->FetchObject($result,'AwardRecord');
+
+
+ return $data;
+ }
+
+ /**
+ * RUDI_Core::getCombatRecord()
+ *
+ * @param mixed $member_id
+ * @return
+ */
+ protected function getCombatRecord($member_id)
+ {
+ $data = NULL;
+ $query = sprintf(
+ "SELECT c.date, c.status, u1.name, u1.website, u.war_id "
+ ."FROM rudi_combat_record AS c "
+ ."RIGHT OUTER JOIN rudi_war_stats AS u ON u.visit_unit_id = c.visitor_id "
+ ."RIGHT OUTER JOIN rudi_war_units AS u1 ON u1.name "
+ ."LEFT OUTER JOIN rudi_unit_members AS m ON m.member_id = c.member_id "
+ ."WHERE c.member_id = %d ORDER BY c.date DESC ",
+ (int)$member_id);
+
+ $result = $this->db->Query($query);
+ $data = $this->db->FetchObject($result,'CombatRecord');
+
+ return $data;
+ }
+
+ /**
+ * RUDI_Core::getSuperiorUnit()
+ *
+ * @param mixed $id
+ * @return
+ */
+ protected function getSuperiorUnit($id)
+ {
+ $query = sprintf(
+ "SELECT leader_id, "
+ ."CONCAT(m.last_name, \", \", m.first_name) AS name "
+ ."FROM rudi_units AS u "
+ ."RIGHT OUTER JOIN rudi_unit_members AS m ON m.member_id = u.leader_id "
+ ."WHERE u.unit_id = %d ",
+ (int)$id);
+
+ $result = $this->db->Query($query);
+ $data = $this->db->FetchObject($result,'Soldier');
+
+ return $data;
+ }
+
+ /**
+ * RUDI_Core::getSuperiorPlatoon()
+ *
+ * @param mixed $id
+ * @return
+ */
+ protected function getSuperiorPlatoon($id)
+ {
+ $query = sprintf(
+ "SELECT leader_id, "
+ ."CONCAT(m.last_name, \", \", m.first_name) AS name "
+ ."FROM rudi_platoons AS p "
+ ."RIGHT OUTER JOIN rudi_unit_members AS m ON m.member_id = p.leader_id "
+ ."WHERE p.platoon_id = %d ",
+ (int)$id);
+
+ $result = $this->db->Query($query);
+ $data = $this->db->FetchObject($result,'Soldier');
+
+ return $data;
+ }
+
+ /**
+ * RUDI_Core::getSuperiorSquad()
+ *
+ * @param mixed $id
+ * @return
+ */
+ protected function getSuperiorSquad($id)
+ {
+ $query = sprintf(
+ "SELECT leader_id, "
+ ."CONCAT(m.last_name, \", \", m.first_name) AS name "
+ ."FROM rudi_squads AS s "
+ ."RIGHT OUTER JOIN rudi_unit_members AS m ON m.member_id = s.leader_id "
+ ."WHERE s.squad_id = %d ",
+ (int)$id);
+
+ $result = $this->db->Query($query);
+ $data = $this->db->FetchObject($result,'Soldier');
+
+ return $data;
+ }
+
+ /**
+ * RUDI_Core::getSuperiorTeam()
+ *
+ * @param mixed $id
+ * @return
+ */
+ protected function getSuperiorTeam($id)
+ {
+ $query = sprintf(
+ "SELECT leader_id, "
+ ."CONCAT(m.last_name, \", \", m.first_name) AS name "
+ ."FROM rudi_teams AS t "
+ ."RIGHT OUTER JOIN rudi_unit_members AS m ON m.member_id = t.leader_id "
+ ."WHERE t.team_id = %d ",
+ (int)$id);
+
+ $result = $this->db->Query($query);
+ $data = $this->db->FetchObject($result,'Soldier');
+
+ return $data;
+ }
+
+ /**
+ * RUDI_Core::getSuperiorTrue()
+ *
+ * @param mixed $id
+ * @return
+ */
+ protected function getSuperiorTrue($id)
+ {
+ $superior =& $this->data[$id]->superior; //Reference only the data we need to use
+ $name =& $this->data[$id]->name;
+ $leader = NULL; //Set the return value to null
+
+ /** If the data is not null/empty, and is not equaled to the member's name
+ * (to avoid leaders from leading themself) then return the next leader in line.
+ */
+
+ foreach($superior as $tier => $value)
+ {
+ //$tier is 'unit','platoon','squad','team'
+ //$value is the array underneath that has 'name', and 'leader_id'
+
+ if(!empty($value->name) && $value->name != $name)
+ $leader = $value;
+
+ }
+
+ return $leader;
+ }
+
+ /**
+ * RUDI_Core::getUnit()
+ *
+ * @param mixed $id
+ * @return
+ */
+ protected function getRosterUnit($id)
+ {
+ $query = sprintf(
+ "SELECT name "
+ ."FROM rudi_units AS u "
+ ."LEFT OUTER JOIN rudi_unit_members AS m ON m.unit_id = u.unit_id "
+ ."WHERE m.member_id = %d ",
+ (int)$id);
+
+ $result = $this->db->Query($query);
+ $data = $this->db->FetchObject($result,'Soldier');
+
+ return $data;
+ }
+
+ /**
+ * RUDI_Core::getPlatoon()
+ *
+ * @param mixed $id
+ * @return
+ */
+ protected function getRosterPlatoon($id)
+ {
+ $query = sprintf(
+ "SELECT name "
+ ."FROM rudi_platoons AS p "
+ ."LEFT OUTER JOIN rudi_unit_members AS m ON m.platoon_id = p.platoon_id "
+ ."WHERE m.member_id = %d ",
+ (int)$id);
+
+ $result = $this->db->Query($query);
+ $data = $this->db->FetchObject($result,'Soldier');
+
+ return $data;
+ }
+
+ /**
+ * RUDI_Core::getSquad()
+ *
+ * @param mixed $id
+ * @return
+ */
+ protected function getRosterSquad($id)
+ {
+ $query = sprintf(
+ "SELECT last_name "
+ ."FROM rudi_unit_members AS m "
+ ."WHERE m.squad_id = %d ",
+ (int)$id);
+
+ $result = $this->db->Query($query);
+ $data = $this->db->FetchObject($result,'Soldier');
+
+ return $data;
+ }
+
+ /**
+ * RUDI_Core::getTeam()
+ *
+ * @param mixed $id
+ * @return
+ */
+ protected function getRosterTeam($id)
+ {
+ $query = sprintf(
+ "SELECT leader_id, "
+ ."CONCAT(m.last_name, \", \", m.first_name) AS name "
+ ."FROM rudi_teams AS t "
+ ."RIGHT OUTER JOIN rudi_unit_members AS m ON m.member_id = t.leader_id "
+ ."WHERE t.team_id = %d ",
+ (int)$id);
+
+ $result = $this->db->Query($query);
+ $data = $this->db->FetchObject($result,'Soldier');
+
+ return $data;
+ }
+ /**
+ * RUDI_Core::printRoster()
+ *
+ * @param int $unit_id
+ * @param int $leader_id
+ */
+ public function printRoster($unit_id, $leader_id){
+ foreach($this->data as $member){
+ if($member->unit_id == $unit_id && $member->status_id < 4){
+?>
+ <tr>
+ <!-- Rank -->
+ <td class="roster"><img src="<?php echo "modules/rudi/images/ranks/small/{$member->rank_short}.png"; ?>" alt="<?php echo $member->rank_short; ?>" /></td>
+ <!-- Name -->
+ <td class="roster"><a class="rudi_roster" href="?load=rudi&amp;profile=<?php echo $member->member_id ?>"><?php echo $member->last_name . ', ' . $member->first_name; ?></a></td>
+ <!-- Roles -->
+ <td class="roster">
+ <?php
+ decho(count($member->Roles) . ' roles attached to: ' . $member->last_name);
+ for($role = 0; $role < count($member->Roles); ++$role)
+ {
+ if($member->Roles[$role]->role_name)
+ {
+ //decho($role . " = (" . $member->Roles[$role]->role_name . ")");
+
+ echo $member->Roles[$role]->role_name;
+ if($role < count($member->Roles) - 1) echo ', ';
+
+ echo '&nbsp;';
+ }
+ }
+ ?>
+ </td>
+ <!-- Weapon -->
+ <td class="roster"><?php echo $member->weapon_model; ?></td>
+ <!-- Status -->
+ <td class="roster"><?php echo $member->status; ?></td>
+ </tr>
+<?php
+ }
+ }
+ }
+ /**
+ * RUDI_Core::displayUnitsRec()
+ *
+ * @param int $unit_id
+ */
+ public function displayUnitsRec($unit_id){
+ $result = $this->db->Query("SELECT * FROM `rudi_combat_units` WHERE `detachment` = '$unit_id' ORDER BY `weight`");
+ $row = $this->db->FetchObject($result,'UnitInfo');
+ foreach($row as $unit){
+ echo "<tr><th colspan=\"5\">{$unit->name} : {$unit->callsign}</th></tr>";
+ $this->printRoster($unit->unit_id, $unit->leader_id);
+ $this->displayUnitsRec($unit->unit_id);
+ }
+ }
+
+ public function Update($query_t = RUDI_PROFILE_BIG)
+ {
+ decho(get_class($this) . "::" . __FUNCTION__ . "($query_t)");
+ $id = NULL;
+ if(isset($_GET['profile']))
+ {
+ $id = addslashes($_GET['profile']);
+ decho("Update() Profile ID: $id");
+ }
+
+ if($query_t != RUDI_PROFILE_SMALL)
+ {
+ $sql =
+ "SELECT "
+ ."m.email, "
+ ."m.xfire, "
+ ."m.first_name, "
+ ."m.last_name, "
+ ."m.member_id, "
+ ."m.status_id, "
+ ."m.bio, "
+ ."m.image AS member_image, "
+ ."m.location_city, "
+ ."m.location_province, "
+ ."m.primary_mos, "
+ ."r.rank_id, "
+ ."r.image AS rank_image, "
+ ."r.longname AS rank_long, "
+ ."r.shortname AS rank_short, "
+ ."c.name AS position, "
+ ."u.unit_id, "
+ ."u.name AS unit_name, "
+ ."p.platoon_id, "
+ ."p.name AS platoon_name, "
+ ."s.squad_id, "
+ ."s.name AS squad_name, "
+ ."s.leader_id AS squad_leader_id, "
+ ."st.name AS status, "
+ ."st.status_id, "
+ ."t.team_id, "
+ ."t.name AS team_name, "
+ ."t.leader_id AS team_leader_id, "
+ ."w.weapon_id, "
+ ."w.manufacturer AS weapon_manufacturer, "
+ ."w.model AS weapon_model, "
+ ."co.country_id, "
+ ."co.name AS country_name, "
+ ."co.image AS country_image, "
+
+ ."CONCAT(m.last_name, \", \", m.first_name) AS name, "
+ ."CONCAT(m.location_province, \", \", co.name) AS location, "
+ ."CONCAT(w.manufacturer, \" \", w.model) as weapon_name, "
+
+ ."DATE_FORMAT(m.date_enlisted, '%d %b %Y') AS enlist_date, "
+ ."DATE_FORMAT(m.date_promotion, '%d %b %Y') AS promo_date, "
+ ."DATE_FORMAT(m.date_discharged, '%d %b %Y') AS discharge_date, "
+
+ ."m.date_enlisted AS enlist_date_st, "
+ ."m.date_promotion AS promo_date_st, "
+ ."m.date_discharged AS discharge_date_st "
+
+ ."FROM rudi_unit_members AS m "
+ ."LEFT OUTER JOIN rudi_weapons AS w ON w.weapon_id = m.weapon_id "
+ ."LEFT OUTER JOIN rudi_units AS u ON u.unit_id = m.unit_id "
+ ."LEFT OUTER JOIN rudi_squads AS s ON s.squad_id = m.squad_id "
+ ."LEFT OUTER JOIN rudi_teams AS t ON t.team_id = m.team_id "
+ ."LEFT OUTER JOIN rudi_platoons AS p ON p.platoon_id = m.platoon_id "
+ ."LEFT OUTER JOIN rudi_ranks AS r ON r.rank_id = m.rank_id "
+ ."LEFT OUTER JOIN rudi_classes AS c ON c.class_id = r.class_id "
+ ."LEFT OUTER JOIN rudi_statuses AS st ON st.status_id = m.status_id "
+ ."LEFT OUTER JOIN rudi_countries AS co ON co.country_id = m.country_id ";
+ }
+ else //SMALL PROFILE QUERY
+ {
+ $sql =
+ "SELECT "
+ ."m.first_name, "
+ ."m.last_name, "
+ ."m.member_id, "
+ ."m.status_id, "
+ ."m.date_promotion, "
+ ."m.date_enlisted, "
+ ."m.primary_mos, "
+ ."r.rank_id, "
+ ."r.image AS rank_image, "
+ ."r.longname AS rank_long, "
+ ."r.shortname AS rank_short, "
+ ."r.weight AS rank_weight, "
+ ."u.unit_id, "
+ ."u.name AS unit_name, "
+ ."p.platoon_id, "
+ ."p.name AS platoon_name, "
+ ."s.squad_id, "
+ ."s.name AS squad_name, "
+ ."s.leader_id AS squad_leader_id, "
+ ."st.name AS status, "
+ ."st.status_id, "
+ ."t.team_id, "
+ ."t.name AS team_name, "
+ ."w.weapon_id, "
+ ."w.manufacturer AS weapon_manufacturer, "
+ ."w.model AS weapon_model, "
+
+ ."CONCAT(m.last_name, \", \", m.first_name) AS name, "
+ ."CONCAT(w.manufacturer, \" \", w.model) as weapon_name "
+
+ ."FROM rudi_unit_members AS m "
+ ."LEFT OUTER JOIN rudi_weapons AS w ON w.weapon_id = m.weapon_id "
+ ."LEFT OUTER JOIN rudi_combat_units AS u ON u.unit_id = m.cunit_id "
+ ."LEFT OUTER JOIN rudi_squads AS s ON s.squad_id = m.squad_id "
+ ."LEFT OUTER JOIN rudi_teams AS t ON t.team_id = m.team_id "
+ ."LEFT OUTER JOIN rudi_platoons AS p ON p.platoon_id = m.platoon_id "
+ ."LEFT OUTER JOIN rudi_ranks AS r ON r.rank_id = m.rank_id "
+ ."LEFT OUTER JOIN rudi_statuses AS st ON st.status_id = m.status_id ";
+ }
+
+ if(!is_null($id))
+ {
+ $sql .= "WHERE m.member_id = " . (int)$id . " ";
+ }
+
+ $sql .= "ORDER BY r.weight DESC , m.date_promotion ASC, m.date_enlisted ASC";
+ $result = $this->db->Query($sql);
+ $count = 0;
+
+ $row = $this->db->FetchObject($result,'Soldier');
+
+ foreach($row as $member)
+ {
+ $count = $member->member_id;
+ $this->data[$member->member_id] = $member;
+ $this->data[$count]->Roles = $this->getRoles($member->member_id,$member->rank_id);
+ if(is_object($this->data[$count]->Roles))
+ {
+ $this->data[$count]->Roles = array((object)$nothing);
+ }
+
+ if($query_t != RUDI_PROFILE_SMALL)
+ {
+ $this->data[$count]->service_record = $this->getServiceRecord($member->member_id);
+ $this->data[$count]->award_record = $this->getAwardRecord($member->member_id);
+ $this->data[$count]->combat_record = $this->getCombatRecord($member->member_id);
+ $this->data[$count]->superior->unit = $this->getSuperiorUnit($member->unit_id);
+ $this->data[$count]->superior->platoon = $this->getSuperiorPlatoon($member->platoon_id);
+ $this->data[$count]->superior->squad = $this->getSuperiorSquad($member->squad_id);
+ $this->data[$count]->superior->team = $this->getSuperiorTeam($member->team_id);
+ $this->data[$count]->superior_next = $this->getSuperiorTrue($member->member_id);
+ }
+ $count++;
+ }
+
+ return $this->data;
+ }
+
+ protected function getAwards()
+ {
+ $query = "SELECT a.award_id, a.image, a.name, a.description, a.class_id, c.name AS class_name "
+ ."FROM rudi_awards AS a "
+ ."LEFT OUTER JOIN rudi_award_classes AS c ON c.class_id = a.class_id "
+ ."ORDER BY c.class_id, a.award_id ASC";
+ $result = $this->db->Query($query);
+ $row = $this->db->FetchObject($result,'Award');
+ return $row;
+ }
+
+ protected function getAwardClasses()
+ {
+ $query = "SELECT class_id, name FROM rudi_award_classes";
+ $result = $this->db->Query($query);
+ $row = $this->db->FetchObject($result,'AwardClass');
+ return $row;
+ }
+
+ protected function getRanks()
+ {
+ $query = "SELECT rank_id, shortname, longname, image FROM rudi_ranks WHERE active = 1 ORDER BY weight DESC";
+ $result = $this->db->Query($query);
+ $row = $this->db->FetchObject($result,'Rank');
+
+ return $row;
+ }
+/*
+ protected function getDrills($id = NULL)
+ {
+ if(!is_null($id))
+ {
+ $query = sprintf("SELECT rd.drill_id, rd.date, rd.news, rd.notes, dr.performance, dr.excusal, dr.excusal_reason, dr.initiative, m.first_name, m.last_name FROM rudi_drills AS rd
+ LEFT OUTER JOIN rudi_drills_record AS dr ON dr.drill_id = rd.drill_id
+ LEFT OUTER JOIN rudi_unit_members AS m ON m.member_id = dr.member_id
+ LEFT OUTER JOIN rudi_statuses AS st ON st.status_id = m.status_id
+ WHERE rd.drill_id = %d ORDER BY date DESC",
+ (int)$id);
+ }
+ else
+ {
+ $query = "SELECT * FROM rudi_drills ORDER BY date DESC";
+ }
+
+ $result = $this->db->Query($query);
+ $row = $this->db->FetchObject($result,'Drill');
+
+ return $row;
+ }
+*/
+
+}
+
+?> \ No newline at end of file
diff --git a/modules/rudi/includes/debug.php b/modules/rudi/includes/debug.php
new file mode 100644
index 0000000..1f5f382
--- /dev/null
+++ b/modules/rudi/includes/debug.php
@@ -0,0 +1,80 @@
+<?php
+
+if(!defined(NO_ACCESS))
+{
+ ReportError("Access denied.");
+}
+
+define("RUDI_DEBUG",true);
+define("RUDI_DEBUG_LEVEL",true);
+define(NO_REPEAT,'norepeat');
+define(REPEAT,'repeat');
+
+static $last_message = NULL;
+static $last_message_count = 0;
+
+/*
+function decho($message)
+{
+ echo "<pre>\n";
+ if(is_array($message))
+ {
+ print_r($message);
+ }
+ elseif(is_object($message))
+ {
+ var_dump($message);
+ }
+ elseif(is_string($message))
+ {
+ $message = wordwrap($message,80,'<br />');
+ echo "$message\n";
+ }
+ echo "</pre>";
+}
+
+ function decho($message, $flag = NO_REPEAT)
+ {
+ global $last_message, $last_message_count;
+ if($last_message == $message)
+ {
+ if($flag == NO_REPEAT)
+ ++$last_message_count;
+ else
+ $last_message_count = $last_message_count;
+ return;
+ }
+ elseif($last_message != $message)
+ {
+ echo "<pre>";
+ if($last_message_count > 0 && !is_array($last_message) && !is_object($last_message))
+ {
+ echo "Receieved previous message <b>$last_message_count</b> times\n";
+ }
+ else
+ {
+ if(is_array($message))
+ {
+ print_r($message);
+ }
+ elseif(is_object($message))
+ {
+ var_dump($message);
+ }
+ elseif(is_string($message))
+ {
+ $message = wordwrap($message,80,'<br />');
+ echo "$message\n";
+ }
+ }
+ echo "</pre>";
+ $last_message_count = 0;
+ }
+
+ $last_message = $message;
+
+ }
+*/
+
+
+?> \ No newline at end of file
diff --git a/modules/rudi/includes/index.html b/modules/rudi/includes/index.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/modules/rudi/includes/index.html
diff --git a/modules/rudi/includes/information.class.php b/modules/rudi/includes/information.class.php
new file mode 100644
index 0000000..2632675
--- /dev/null
+++ b/modules/rudi/includes/information.class.php
@@ -0,0 +1,34 @@
+<?php
+
+class RUDI_Information extends RUDI_Common
+{
+ public function __construct()
+ {
+ global $db;
+ $this->db = $db;
+ }
+
+ public function Unit($unit_id)
+ {
+ $query = sprintf("SELECT leader_id, name, logo, url, creed, bio
+ FROM rudi_units
+ WHERE unit_id = %d", (int)$unit_id);
+ $result = $this->db->Query($query);
+ $unit = $this->db->FetchObject($result, 'UnitInfo', true);
+ return $unit;
+ }
+
+ public function Platoon($unit_id, $platoon_id)
+ {
+ $query = sprintf("SELECT leader_id, name, logo, creed, bio
+ FROM rudi_platoons
+ WHERE unit_id = %d AND platoon_id = %d", (int)$unit_id, (int)$platoon_id);
+ $result = $this->db->Query($query);
+ $platoon = $this->db->FetchObject($result, 'UnitInfo', true);
+ decho($platoon);
+
+ return $platoon;
+ }
+}
+
+?> \ No newline at end of file
diff --git a/modules/rudi/includes/rudi.css b/modules/rudi/includes/rudi.css
new file mode 100644
index 0000000..8c4ebf2
--- /dev/null
+++ b/modules/rudi/includes/rudi.css
@@ -0,0 +1,71 @@
+table.rudi {
+ /* background: green; */
+}
+/*
+table{
+ border:1px solid #000;
+}
+
+tr{
+ border:1px solid #000;
+}
+
+th{
+ padding:5px;
+ border:1px solid #000;
+}
+
+td{
+ text-align:center;
+ padding:2px;
+ border:1px solid #000;
+} */
+
+table.rudi td.data{
+ text-align:left;
+}
+
+table.rudi th {
+ width:175px;
+ color:white;
+ text-align:center;
+ background:#333;
+ font-family: arial;
+}
+
+table.rudi td {
+ text-align:center;
+ vertical-align: middle;
+ /* border: 1px solid #a1a1a1; */
+}
+
+table.rudi td.roster {
+ text-align:center;
+ vertical-align: middle;
+ border: 1px solid #a1a1a1;
+}
+
+table.rudi th.header {
+ /* table has a 5px padding so everything is 10px bigger than these values */
+ width:100px;
+ height:19px;
+ color: #FFF;
+ background:#333;
+ border: 1px solid #666;
+ font-family: arial, helvetica, sans-serif;
+ font-size:12px;
+}
+
+table.rudi td.info {
+ color: #333;
+ vertical-align: middle;
+ text-align:left;
+ padding-left: 5px;
+ border: 1px solid #666;
+ font-family: arial, helvetica, sans-serif;
+ font-size:12px;
+}
+
+#thin {
+ border:1px outset #333;
+}
diff --git a/modules/rudi/includes/sql.class.php b/modules/rudi/includes/sql.class.php
new file mode 100644
index 0000000..4066684
--- /dev/null
+++ b/modules/rudi/includes/sql.class.php
@@ -0,0 +1,90 @@
+<?php
+
+static $db_queries = 0;
+static $db_connections = 0;
+static $db_frees = 0;
+static $db_fetches = 0;
+
+class RUDI_SQL
+{
+ protected $hostname;
+ public function Connect($hostname, $username, $passwd)
+ {
+ global $db_connections;
+ ++$db_connections;
+
+ $this->hostname = $hostname;
+
+ decho("Connecting ('$hostname')");
+ return mysql_connect($hostname, $username, $passwd);
+ }
+
+ public function Disconnect($link)
+ {
+ decho("Disconnecting ('$link' from '$this->hostname')");
+ //return mysql_close($link);
+ }
+
+ public function Select_db($db)
+ {
+ decho("Selecting database ('$db')");
+ return mysql_select_db($db);
+ }
+
+ public function Query($str)
+ {
+ global $db_queries;
+ ++$db_queries;
+ //decho("Querying ('$str')");
+ return mysql_query($str);
+ }
+
+ public function Free($result)
+ {
+ global $db_frees;
+ ++$db_frees;
+ //decho("Freeing ('$result')");
+ return mysql_free_result($result);
+ }
+
+ public function Fetch($result)
+ {
+ //decho("Fetching ('$result')");
+ return $this->FetchArray($result);
+ }
+
+ public function FetchArray($result)
+ {
+ global $db_fetches;
+ ++$db_fetches;
+ /* Alias Fetch() prefered, so no decho information */
+ return mysql_fetch_array($result,MYSQL_ASSOC);
+ }
+
+ public function FetchObject($result,$class)
+ {
+ global $db_fetches;
+ ++$db_fetches;
+ //decho("Fetching ('$result')");
+ return mysql_fetch_object($result,$class);
+ }
+
+ public function FetchAssoc($result)
+ {
+ global $db_fetches;
+ ++$db_fetches;
+ return mysql_fetch_assoc($result);
+ }
+
+ public function FetchRow($result)
+ {
+ return mysql_fetch_row($result);
+ }
+
+ public function Rows($result)
+ {
+ return mysql_num_rows($result);
+ }
+}
+
+?> \ No newline at end of file
diff --git a/modules/rudi/index.php b/modules/rudi/index.php
new file mode 100644
index 0000000..995c90d
--- /dev/null
+++ b/modules/rudi/index.php
@@ -0,0 +1,106 @@
+<link rel="stylesheet" type="text/css" href="modules/rudi/includes/rudi.css" media="screen"/>
+<?php
+//include 'header.php';
+//include 'includes/debug.php';
+//require 'includes/sql.class.php';
+include_once 'includes/common.class.php';
+include_once 'includes/drills.class.php';
+include_once 'includes/information.class.php';
+
+OpenContent();
+ echo "<div class=\"contentHeading\">RUDI: Realism Unit Data Interface</div>";
+ echo "<div class=\"content\">";
+class RUDI_Gateway extends RUDI_Common
+{
+ protected $awards, $ranks, $drills;
+
+ public function __construct()
+ {
+ decho("Constructing " . get_class($this));
+ parent::__construct();
+
+ if(isset($_GET['admin']))
+ {
+ define('BLOCK_RIGHT_DISABLE','block_right_disable');
+ include 'admin/index.php';
+ return;
+ }
+
+ if(isset($_GET['info']))
+ {
+ $info = new RUDI_Information();
+ OpenTable();
+ echo "<tr><td>\n";
+ include 'views/view.information.php';
+ echo "</tr></td>";
+ CloseTable();
+ return;
+ }
+
+ if(isset($_GET['profile']))
+ {
+ $this->Update();
+
+ OpenTable();
+ echo "<tr><td>\n";
+ include 'views/view.profile.php';
+ echo "</td></tr>";
+ CloseTable();
+ return;
+ }
+ elseif(isset($_GET['show']))
+ {
+ OpenTable();
+ echo "<tr><td>\n";
+ switch($_GET['show'])
+ {
+ case 'awards':
+ $this->awards = $this->getAwards();
+ include 'views/view.awards.php';
+ break;
+ case 'ranks':
+ $this->ranks = $this->getRanks();
+ include 'views/view.ranks.php';
+ break;
+ case 'drills':
+ //$this->drills = $this->getDrills($_GET['id']);
+ $drills = new RUDI_Drills($_GET['id']);
+ include 'views/view.drills.php';
+ break;
+ }
+ echo "</td></tr>";
+ CloseTable();
+ return;
+ }
+ else
+ {
+ $this->Update(RUDI_PROFILE_SMALL);
+ $stats = $this->getCumulativeStats();
+
+ OpenTable();
+ echo "<tr><td>\n";
+ include 'views/view.roster.php';
+ echo "</td></tr>";
+ CloseTable();
+ return;
+ }
+ }
+
+ public function __destruct()
+ {
+ decho("Destructing " . get_class($this));
+ }
+}
+
+ob_start();
+$rudi = new RUDI_Gateway();
+ob_flush();
+ echo "</div>";
+ echo "</div>";
+CloseContent();
+
+//include 'footer.php';
+//decho($test->foo[0]->member_id);
+//$test1 = new Test();
+//$test2 = new Test();
+?> \ No newline at end of file
diff --git a/modules/rudi/views/view.awards.php b/modules/rudi/views/view.awards.php
new file mode 100644
index 0000000..5039e56
--- /dev/null
+++ b/modules/rudi/views/view.awards.php
@@ -0,0 +1,81 @@
+<?php //define('BLOCK_RIGHT_DISABLE','block_right_disable'); ?>
+<?php $medals_path = $this->images_path . "/medals/"; ?>
+
+<html>
+<head>
+ <title>Awards and Medals</title>
+
+<style type="text/css">
+/*th.header {
+ width:175px;
+ background:#333;
+}
+
+td.rudi {
+ text-align: center;
+ vertical-align: middle;
+} */
+</style>
+
+</head>
+<body>
+
+<?php $classes = $this->getAwardClasses(); ?>
+<table class="rudi" align="center" style="width: 100%;">
+
+ <?php
+ $i = 0;
+ $cl = 0;
+ while($cl != count($classes))
+ {
+ echo "<tr>";
+ echo "<th colspan=\"3\">{$classes[$cl]->name}s</th>";
+ echo "</tr>";
+ echo '<th scope="col">Image</th>';
+ echo '<th scope="col" width=\"100px\">Award</th>';
+ echo '<th scope="col">Description</th>';
+
+ foreach($this->awards as $award)
+ {
+ if($classes[$cl]->class_id == $award->class_id)
+ {
+ echo "
+ <tr>
+ <td><img src=\"modules/rudi/images/medals/{$award->image}\" alt=\"{$award->image}\"/></td>
+ <td>{$award->name}&nbsp;</td>
+ <td style=\"text-align:left;\">{$award->description}&nbsp;</td>
+ </tr>";
+ }
+
+ }
+
+ ++$cl;
+ }
+ ?>
+
+</table>
+
+<!-- grr wtf
+ <table align="center" style="width: 100%;">
+ <tr>
+ <th scope="col" class="header" style="width:1px;">Image</th>
+ <th scope="col" class="header" style="width:1px;">Award</th>
+ <th scope="col" class="header">Description</th>
+ </tr>
+
+
+ <?php //foreach($this->awards as $award): ?>
+
+ <tr>
+ <td align='center' class="rudi"><img src="/rudi/images/medals/<?php //echo $award->image; ?>"></img>&nbsp;</td>
+ <td align='center' class="rudi"><?php //echo $award->name; ?>&nbsp;</td>
+ <td align='left'><?php //echo wordwrap($award->description,80,"<br/>"); ?>&nbsp;</td>
+ </tr>
+
+ <?php //endforeach; ?>
+
+
+ </table>
+-->
+</body>
+</html> \ No newline at end of file
diff --git a/modules/rudi/views/view.drills.php b/modules/rudi/views/view.drills.php
new file mode 100644
index 0000000..aa4b30a
--- /dev/null
+++ b/modules/rudi/views/view.drills.php
@@ -0,0 +1,122 @@
+<?php
+
+function back()
+{
+ echo "<a href=\"?load=rudi&amp;show=drills\">Back</a>";
+}
+
+function Rating($val)
+{
+ define('EXCELLENT',100);
+ define('GOOD', 75);
+ define('FAIR', 50);
+ define('POOR', 25);
+ define('TERRIBLE', 0);
+
+ if($val == EXCELLENT)
+ return "Excellent";
+ elseif($val < EXCELLENT && $val >= GOOD)
+ return "Good";
+ elseif($val < GOOD && $val >= POOR)
+ return "Poor";
+ elseif($val < POOR && $val >= TERRIBLE)
+ return "Terrible";
+ else
+ return "Bad Value";
+}
+
+//$this->getMemberAttendance();
+
+OpenContent();
+?>
+<div class="contentHeading">Drills</div>
+<div class="content">
+
+<?php if(isset($_GET['id'])): ?>
+<table cellspacing="20" class="rudi" align="left" style="width: 100%;">
+<tr>
+ <th class="header">News</th>
+</tr>
+
+<tr>
+ <td style="text-align:left;"><?php echo bbcode_format($drills->manifest->news); ?>&nbsp;</td>
+</tr>
+
+<tr>
+ <th class="header">Notes</th>
+</tr>
+
+<tr>
+ <td style="text-align:left;"><?php echo bbcode_format($drills->manifest->notes); ?>&nbsp;</td>
+</tr>
+</table>
+
+<br />
+
+<table class="rudi" align="center" style="width: 100%;">
+<tr>
+ <th class="header">Soldier</th>
+ <th class="header">Performance Rating</th>
+ <th class="header">Initiative Rating</th>
+ <th class="header">Excusal</th>
+ <th class="header">Excusal Reason</th>
+</tr>
+<?php foreach($drills->manifest->members as $member): ?>
+<?php
+ $name = $member->last_name . ', ' . $member->first_name;
+ $pRating = Rating($member->performance);
+ $iRating = Rating($member->initiative);
+?>
+<tr>
+ <td class="rudi"><?php echo $name; ?>&nbsp;</td>
+ <td class="rudi"><?php echo $pRating; ?>&nbsp;</td>
+ <td class="rudi"><?php echo $iRating; ?>&nbsp;</td>
+ <td class="rudi"><?php echo ($member->excusal ? "Yes" : "No"); ?>&nbsp;</td>
+ <td class="rudi"><?php echo $this->evalData($member->excusal_reason); ?>&nbsp;</td>
+</tr>
+<?php endforeach; ?>
+</table>
+ <?php echo "<br/>"; back();
+ decho("DRILL DATA FOR ID({$_GET['id']}) QUERY");
+ decho($drills->manifest);
+ return;
+ ?>
+
+<?php endif; ?>
+
+<table class="rudi" align="center" style="width: 100%;">
+<tr>
+<th class="header">&nbsp;</th>
+<th class="header">Date</th>
+</tr>
+
+<?php foreach($drills->manifest as $drill): ?>
+<tr>
+ <td class="rudi"><a href="?load=rudi&amp;show=drills&amp;id=<?php echo $drill->drill_id; ?>">View</a></td>
+ <td class="rudi"><?php echo $drill->date; ?> </td>
+</tr>
+<?php endforeach; ?>
+</table>
+
+</div>
+<?php
+CloseContent();
+OpenContent();
+?>
+<?php if(isset($_GET['stats']) && $_GET['stats'] == 'true'): ?>
+<div class="contentHeading">Statistics</div>
+<div class="content">
+<?php
+//decho($drills->getMemberAttendanceFull());
+require_once 'view.drills.statistics.php';
+?>
+</div>
+</div>
+
+<?php endif; ?>
+
+<?php
+CloseContent();
+decho('DATA FOR NO ID QUERY');
+decho($drills->manifest);
+?>
diff --git a/modules/rudi/views/view.information.php b/modules/rudi/views/view.information.php
new file mode 100644
index 0000000..a62ba8a
--- /dev/null
+++ b/modules/rudi/views/view.information.php
@@ -0,0 +1,20 @@
+<?php
+$unit_id = $_GET['unit_id'];
+$platoon_id = $_GET['platoon_id'];
+switch($_GET['info'])
+{
+ case 'unit':
+ if(isset($unit_id))
+ include_once 'view.unit.php';
+ break;
+
+ case 'platoon':
+ if(isset($unit_id, $platoon_id))
+ include_once 'view.platoon.php';
+ break;
+
+ default:
+ ReportError('Invalid info entry');
+ return;
+}
+?> \ No newline at end of file
diff --git a/modules/rudi/views/view.platoon.php b/modules/rudi/views/view.platoon.php
new file mode 100644
index 0000000..dbbb455
--- /dev/null
+++ b/modules/rudi/views/view.platoon.php
@@ -0,0 +1,22 @@
+<?php $data = $info->Platoon($unit_id, $platoon_id); ?>
+
+<table align="center">
+ <tr>
+ <th>&nbsp;</th>
+ <td><img src="<?php echo '/cms/modules/rudi/images/units/' . $data->logo; ?>" alt="<?php echo $data->logo; ?>"/></td>
+ </tr>
+ <tr>
+ <th width="25%">Platoon</th>
+ <td><?php echo $data->name; ?></td>
+ </tr>
+ <tr>
+ <th>Creed</th>
+ <td><?php echo $data->creed; ?></td>
+ </tr>
+ <tr>
+ <th valign="top">Biography</th>
+ <td><?php echo $data->bio; ?></td>
+ </tr>
+</table>
+
+<?php decho($data); ?> \ No newline at end of file
diff --git a/modules/rudi/views/view.profile.php b/modules/rudi/views/view.profile.php
new file mode 100644
index 0000000..6135ea4
--- /dev/null
+++ b/modules/rudi/views/view.profile.php
@@ -0,0 +1,175 @@
+<?php
+//define('BLOCK_RIGHT_DISABLE','block_right_disable');
+$member =& $this->data[$_GET['profile']];
+$uniform_image = $member->first_name[0].str_replace(array("'", "\""), "", $member->last_name).".png";
+decho($member);
+define('BLOCK_RIGHT_DISABLE', true);
+?>
+<style type="text/css">
+
+
+</style>
+
+<table class="rudi" width="100%" border="1" align="center" cellpadding="1" cellspacing="0">
+ <tr>
+ <th class="header">Viewing Profile of: <?php echo $member->rank_long . " " . $member->first_name . " " . $member->last_name; ?></th>
+ </tr>
+ <tr>
+ <td><center><img src="modules/rudi/images/uniform/<?php echo $uniform_image; ?>" />&nbsp;</center></td>
+ </tr>
+ <tr>
+ <td><table width="100%" border="0" cellpadding="1">
+ <tr>
+ <td width="20%">
+ <table width="100%" border="0" cellpadding="5" align="center" style="border: 0px;">
+ <tr>
+ <td><center><?php echo $member->primary_mos; ?></center></td>
+ </tr>
+ <tr>
+ <td><center><img src="modules/rudi/images/ranks/large/<?php echo $member->rank_image; ?>" />&nbsp;</center></td>
+ </tr>
+ <tr>
+ <td><center><img src="modules/rudi/images/flags/<?php echo $member->country_image; ?>" />&nbsp;</center></td>
+ </tr>
+ </table>
+ </td>
+ <td width="100%">
+ <table width="100%" border="0" cellpadding="5">
+ <tr>
+ <th class="header" scope="row">Location</th>
+ <td class="info"><?php echo $this->evalData($member->location); ?>&nbsp;</td>
+ <th class="header">Superior</th>
+ <td class="info"><?php
+ if(!is_null($member->superior_next->leader_id))
+ echo "<a href=\"?load=rudi&profile={$member->superior_next->leader_id}\">";
+
+ echo $this->evalData($member->superior_next->name);
+ echo "</a>&nbsp;";
+ ?>
+ </td>
+ </tr>
+ <tr>
+ <th class="header" scope="row">Status</th>
+ <td class="info"><?php echo $this->evalData($member->status); ?>&nbsp;</td>
+ <th class="header">Position</th>
+ <td class="info"><?php echo $this->evalData($member->position); ?>&nbsp;</td>
+ </tr>
+ <tr>
+ <th class="header" scope="row">Unit</th>
+ <td class="info"><?php echo $this->evalData($member->unit_name); ?>&nbsp;</td>
+ <th class="header">Weapon</th>
+ <td class="info"><?php echo $this->evalData($member->weapon_name); ?>&nbsp;</td>
+ </tr>
+ <tr>
+ <th class="header" scope="row">Platoon</th>
+ <td class="info"><?php echo $this->evalData($member->platoon_name); ?>&nbsp;</td>
+ <th class="header" scope="row">Enlisted</th>
+ <td class="info"><?php echo $this->evalData($member->enlist_date); ?>&nbsp;</td>
+ </tr>
+ <tr>
+ <th class="header" scope="row">Squad</th>
+ <td class="info"><?php echo $this->evalData($member->squad_name); ?>&nbsp;</td>
+ <th class="header">Time In Service</th>
+ <?php if($member->discharge_date): ?>
+ <td class="info"><?php echo $this->getDiffTime($member->enlist_date_st, $member->discharge_date); ?>&nbsp;</td>
+ <?php else: ?>
+ <td class="info"><?php echo $this->getDiffTime($member->enlist_date_st); ?></td>
+ <?php endif; ?>
+
+ </tr>
+ <tr>
+ <th class="header">Team</th>
+ <td class="info"><?php echo $this->evalData($member->team_name); ?>&nbsp;</td>
+ <th class="header">Time In Grade</th>
+ <?php if($member->discharge_date): ?>
+ <td class="info"><?php echo $this->getDiffTime($member->promo_date_st, $member->discharge_date); ?>&nbsp;</td>
+ <?php else: ?>
+ <td class="info"><?php echo $this->getDiffTime($member->promo_date_st); ?></td>
+ <?php endif; ?>
+ </tr>
+ <tr>
+ <?php if($member->discharge_date): ?>
+ <td class="info" colspan="2"></td>
+ <th class="header" scope="row">Separated</th>
+ <td class="info"><?php echo $this->evalData($member->discharge_date); ?>&nbsp;</td>
+ <?php endif; ?>
+ </tr>
+
+ </table></td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td><table width="100%" border="0" cellpadding="1" id="thin">
+ <tr>
+ <th class="header" scope="col">Biography</th>
+ </tr>
+ <tr >
+ <td style="text-align:left;"><?php echo $member->bio; ?>&nbsp;</td>
+ </tr>
+ </table>
+
+ &nbsp;
+
+ <table width="100%" border="0" cellpadding="1" id="thin">
+ <tr>
+ <th class="header" scope="col" colspan="3">Service Record</th>
+ </tr>
+ <tr>
+ <?php if($this->evalData($member->service_record)):?>
+ <td>No service record available&nbsp;</td>
+ <?php else:?>
+ <?php foreach($member->service_record as $record): ?>
+ <tr>
+ <th class="header" width="25%"><?php echo date('M j, Y', strtotime($record->date_added)); ?>&nbsp;</th>
+ <td><?php echo $record->record_note; ?>&nbsp;</td>
+ </tr>
+ <?php endforeach; ?>
+ <?php endif; ?>
+ </tr>
+ </table>
+
+ &nbsp;
+
+ <table width="100%" border="0" cellpadding="1" id="thin">
+ <tr>
+ <th class="header" scope="col" colspan="4">Award Record</th>
+ </tr>
+ <tr>
+ <?php if($this->evalData($member->award_record)):?>
+ <td>No award record available&nbsp;</td>
+ <?php else:?>
+ <?php foreach($member->award_record as $record): ?>
+ <tr>
+ <th class="header" width="25%"><?php echo date('M j, Y', strtotime($record->date_added)); ?>&nbsp;</th>
+ <td ><?php echo $this->evalData($record->award_name); ?>&nbsp;</td>
+ <td style="vertical-align:middle;"><center><img src="modules/rudi/images/medals/<?php echo $record->image; ?>"/></center></td>
+ <td width="40%"><?php echo $record->record_note; ?>&nbsp;</td>
+ </tr>
+ <?php endforeach; ?>
+ <?php endif; ?>
+ </tr>
+ </table>
+
+ &nbsp;
+
+ <table width="100%" border="0" cellpadding="1" id="thin">
+ <tr>
+ <th class="header" scope="col" colspan="3">Combat Record</th>
+ </tr>
+ <tr>
+ <?php if($this->evalData($member->combat_record)):?>
+ <td>No combat record available&nbsp;</td>
+ <?php else:?>
+ <?php foreach($member->combat_record as $record): ?>
+ <tr>
+ <th class="header" width="25%"><?php echo date('M j, Y', strtotime($record->date_added)); ?>&nbsp;</th>
+ <td><a href="<?php echo $record->website; ?>"><?php echo $record->name; ?></a>&nbsp;</td>
+ <td><?php echo $record->status; ?>&nbsp;</td>
+ </tr>
+ <?php endforeach; ?>
+ <?php endif; ?>
+ </tr>
+ </table></td>
+ </tr>
+</table> \ No newline at end of file
diff --git a/modules/rudi/views/view.ranks.php b/modules/rudi/views/view.ranks.php
new file mode 100644
index 0000000..4792049
--- /dev/null
+++ b/modules/rudi/views/view.ranks.php
@@ -0,0 +1,37 @@
+<?php //define('BLOCK_RIGHT_DISABLE','block_right_disable'); ?>
+
+<html>
+<head>
+ <title>Awards and Medals</title>
+
+<style type="text/css">
+/*th.header {
+ width:175px;
+ background:#333;
+}
+
+td.rudi {
+ text-align: center;
+ vertical-align: middle;
+} */
+</style>
+
+</head>
+<body>
+
+ <table class="rudi" align="center" style="width: 100%;">
+ <tr>
+ <th scope="col">Image</th>
+ <th scope="col">Rank</th>
+ </tr>
+ <?php foreach($this->ranks as $rank): ?>
+ <tr>
+ <td><img src="<?php echo "modules/rudi/images/ranks/small/{$rank->image}"; ?>" />&nbsp;</td>
+ <td><?php echo $rank->longname; ?>&nbsp;</td>
+ </tr>
+ <?php endforeach; ?>
+
+ </table>
+
+</body>
+</html> \ No newline at end of file
diff --git a/modules/rudi/views/view.roster.php b/modules/rudi/views/view.roster.php
new file mode 100644
index 0000000..c0ee92d
--- /dev/null
+++ b/modules/rudi/views/view.roster.php
@@ -0,0 +1,23 @@
+<table width="100%" class="rudi">
+<?php
+ $result = $this->db->query("SELECT * FROM `rudi_combat_units` WHERE `detachment` = 0");
+ $row = $this->db->fetch($result);
+ foreach($row as $unit){
+ echo "<tr><th colspan=\"5\">{$unit['name']} : {$unit['callsign']}</th></tr>";
+?>
+ <tr>
+ <!-- Table header -->
+ <th class="header">Rank</th>
+ <th class="header">Name</th>
+ <th class="header">Role</th>
+ <th class="header">Weapon</th>
+ <th class="header">Status</th>
+ </tr>
+<?php
+ $this->printRoster($unit['unit_id'], $unit['leader_id']);
+ $this->displayUnitsRec($unit['unit_id']);
+ }
+
+?>
+</table>
+
diff --git a/modules/rudi/views/view.unit.php b/modules/rudi/views/view.unit.php
new file mode 100644
index 0000000..fcc66ac
--- /dev/null
+++ b/modules/rudi/views/view.unit.php
@@ -0,0 +1,22 @@
+<?php $data = $info->Unit($unit_id); ?>
+
+<table align="center">
+ <tr>
+ <th>&nbsp;</th>
+ <td><img src="<?php echo '/cms/modules/rudi/images/units/' . $data->logo; ?>" alt="<?php echo $data->logo; ?>"/></td>
+ </tr>
+ <tr>
+ <th width="25%">Unit</th>
+ <td><?php echo $data->name; ?></td>
+ </tr>
+ <tr>
+ <th>Creed</th>
+ <td><?php echo $data->creed; ?></td>
+ </tr>
+ <tr>
+ <th valign="top">Biography</th>
+ <td><?php echo $data->bio; ?></td>
+ </tr>
+</table>
+
+<?php decho($data); ?> \ No newline at end of file
diff --git a/modules/tsviewer/index.php b/modules/tsviewer/index.php
new file mode 100644
index 0000000..d243fba
--- /dev/null
+++ b/modules/tsviewer/index.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Bayonet Content Management System
+ * Copyright (C) 2008 Joseph Hunkeler
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if(!defined("MODULE_FILE"))
+{
+ echo "Access denied...";
+ return;
+}
+
+$ts = implode('',file("http://www.tsviewer.com/ts_viewer_pur.php?ID=902437&bg=&type=8f8f8f&type_size=11&type_family=5&info=1&channels=1&users=1&type_s_color=000000&type_s_weight=bold&type_s_style=normal&type_s_variant=normal&type_s_decoration=none&type_s_color_h=525284&type_s_weight_h=bold&type_s_style_h=normal&type_s_variant_h=normal&type_s_decoration_h=underline&type_i_color=000000&type_i_weight=normal&type_i_style=normal&type_i_variant=normal&type_i_decoration=none&type_i_color_h=525284&type_i_weight_h=normal&type_i_style_h=normal&type_i_variant_h=normal&type_i_decoration_h=underline&type_c_color=000000&type_c_weight=normal&type_c_style=normal&type_c_variant=normal&type_c_decoration=none&type_c_color_h=525284&type_c_weight_h=normal&type_c_style_h=normal&type_c_variant_h=normal&type_c_decoration_h=underline&type_u_color=000000&type_u_weight=normal&type_u_style=normal&type_u_variant=normal&type_u_decoration=none&type_u_color_h=525284&type_u_weight_h=normal&type_u_style_h=normal&type_u_variant_h=normal&type_u_decoration_h=none"));
+
+$tmp = $ts;
+$tmp = strip_tags($tmp);
+preg_match("/(\d+).(\d+).(\d+).(\d+):(\d+)/", $tmp, $ip);
+
+OpenTable();
+echo "<div class=\"contentHeading\">How to Connect</div>
+<div class=\"content\"><p><b>IP:</b> $ip[0]</p><p><b>Password:</b> Garand</p></div>";
+CloseTable();
+
+OpenTable();
+echo "<div class=\"contentHeading\">Teamspeak Server</div>";
+/*echo "<div style=\"vertical-align:middle; margin-left:40%; margin-right:auto;\">\n";*/
+//echo "<div style=\"width: 30%; margin-left: auto; margin-right: auto;\">\n";
+echo "<div style=\"margin:50px;\">";
+echo $ts;
+echo "</div>\n";
+CloseTable();
+
+?>