diff options
Diffstat (limited to 'modules')
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> <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 Binary files differnew file mode 100644 index 0000000..0e29960 --- /dev/null +++ b/modules/admin/images/addnewarticle.png diff --git a/modules/admin/images/addnewpage.png b/modules/admin/images/addnewpage.png Binary files differnew file mode 100644 index 0000000..c60c68c --- /dev/null +++ b/modules/admin/images/addnewpage.png diff --git a/modules/admin/images/announcement.png b/modules/admin/images/announcement.png Binary files differnew file mode 100644 index 0000000..c70591d --- /dev/null +++ b/modules/admin/images/announcement.png diff --git a/modules/admin/images/calendar.png b/modules/admin/images/calendar.png Binary files differnew file mode 100644 index 0000000..86b9861 --- /dev/null +++ b/modules/admin/images/calendar.png diff --git a/modules/admin/images/editfiles.png b/modules/admin/images/editfiles.png Binary files differnew file mode 100644 index 0000000..500e206 --- /dev/null +++ b/modules/admin/images/editfiles.png diff --git a/modules/admin/images/editpage.png b/modules/admin/images/editpage.png Binary files differnew file mode 100644 index 0000000..ab3fd58 --- /dev/null +++ b/modules/admin/images/editpage.png diff --git a/modules/admin/images/file_doc.png b/modules/admin/images/file_doc.png Binary files differnew file mode 100644 index 0000000..b1da1ef --- /dev/null +++ b/modules/admin/images/file_doc.png diff --git a/modules/admin/images/file_pdf.png b/modules/admin/images/file_pdf.png Binary files differnew file mode 100644 index 0000000..500e206 --- /dev/null +++ b/modules/admin/images/file_pdf.png diff --git a/modules/admin/images/file_rtf.png b/modules/admin/images/file_rtf.png Binary files differnew file mode 100644 index 0000000..39304c1 --- /dev/null +++ b/modules/admin/images/file_rtf.png diff --git a/modules/admin/images/file_word.png b/modules/admin/images/file_word.png Binary files differnew file mode 100644 index 0000000..3011f00 --- /dev/null +++ b/modules/admin/images/file_word.png diff --git a/modules/admin/images/photogallery.png b/modules/admin/images/photogallery.png Binary files differnew file mode 100644 index 0000000..a161a55 --- /dev/null +++ b/modules/admin/images/photogallery.png 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">- - - - - - - -</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" /> View this Page','?load=page&id='.$page_id); ?></td>
+ <td class="right"><?php echo LinkInternal('<img src="images/delete.gif" /> 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> <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" /> 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", "&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 Binary files differnew file mode 100644 index 0000000..e31a7f5 --- /dev/null +++ b/modules/news/categories/3rdIDnews.png diff --git a/modules/news/categories/marnemessenger.png b/modules/news/categories/marnemessenger.png Binary files differnew file mode 100644 index 0000000..691129e --- /dev/null +++ b/modules/news/categories/marnemessenger.png 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&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 Binary files differnew file mode 100644 index 0000000..825197a --- /dev/null +++ b/modules/news/images/avatar.png diff --git a/modules/news/images/comment_arrow.png b/modules/news/images/comment_arrow.png Binary files differnew file mode 100644 index 0000000..0962f4f --- /dev/null +++ b/modules/news/images/comment_arrow.png 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> + </div> + +<?php + }else{ + if($page_num > 0) + echo " <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> + </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 Binary files differnew file mode 100644 index 0000000..6e3a726 --- /dev/null +++ b/modules/newsreel/images/slidenavbg.png diff --git a/modules/newsreel/images/slidenavbg2.png b/modules/newsreel/images/slidenavbg2.png Binary files differnew file mode 100644 index 0000000..8b9f612 --- /dev/null +++ b/modules/newsreel/images/slidenavbg2.png diff --git a/modules/newsreel/images/slidenavbg3.png b/modules/newsreel/images/slidenavbg3.png Binary files differnew file mode 100644 index 0000000..a027d26 --- /dev/null +++ b/modules/newsreel/images/slidenavbg3.png 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 Binary files differnew file mode 100644 index 0000000..6bffbae --- /dev/null +++ b/modules/newsreel/slides/arma2move.png diff --git a/modules/newsreel/slides/newsite.png b/modules/newsreel/slides/newsite.png Binary files differnew file mode 100644 index 0000000..b2d2b69 --- /dev/null +++ b/modules/newsreel/slides/newsite.png diff --git a/modules/newsreel/slides/recruitmentGT.png b/modules/newsreel/slides/recruitmentGT.png Binary files differnew file mode 100644 index 0000000..c74ae8c --- /dev/null +++ b/modules/newsreel/slides/recruitmentGT.png diff --git a/modules/newsreel/slides/teamwork.png b/modules/newsreel/slides/teamwork.png Binary files differnew file mode 100644 index 0000000..99f760b --- /dev/null +++ b/modules/newsreel/slides/teamwork.png 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 Binary files differnew file mode 100644 index 0000000..0fe9a53 --- /dev/null +++ b/modules/rudi/images/flags/australia.gif diff --git a/modules/rudi/images/flags/canada.gif b/modules/rudi/images/flags/canada.gif Binary files differnew file mode 100644 index 0000000..bbc51a6 --- /dev/null +++ b/modules/rudi/images/flags/canada.gif diff --git a/modules/rudi/images/flags/canada1.gif b/modules/rudi/images/flags/canada1.gif Binary files differnew file mode 100644 index 0000000..777c3b7 --- /dev/null +++ b/modules/rudi/images/flags/canada1.gif diff --git a/modules/rudi/images/flags/germany.gif b/modules/rudi/images/flags/germany.gif Binary files differnew file mode 100644 index 0000000..5e9767f --- /dev/null +++ b/modules/rudi/images/flags/germany.gif 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 Binary files differnew file mode 100644 index 0000000..e726eb7 --- /dev/null +++ b/modules/rudi/images/flags/israel.gif diff --git a/modules/rudi/images/flags/japan.gif b/modules/rudi/images/flags/japan.gif Binary files differnew file mode 100644 index 0000000..11efbf7 --- /dev/null +++ b/modules/rudi/images/flags/japan.gif diff --git a/modules/rudi/images/flags/korea.gif b/modules/rudi/images/flags/korea.gif Binary files differnew file mode 100644 index 0000000..b534115 --- /dev/null +++ b/modules/rudi/images/flags/korea.gif diff --git a/modules/rudi/images/flags/mexico.gif b/modules/rudi/images/flags/mexico.gif Binary files differnew file mode 100644 index 0000000..bc8b7c7 --- /dev/null +++ b/modules/rudi/images/flags/mexico.gif diff --git a/modules/rudi/images/flags/russia.gif b/modules/rudi/images/flags/russia.gif Binary files differnew file mode 100644 index 0000000..5b78932 --- /dev/null +++ b/modules/rudi/images/flags/russia.gif diff --git a/modules/rudi/images/flags/uk.gif b/modules/rudi/images/flags/uk.gif Binary files differnew file mode 100644 index 0000000..fd3c469 --- /dev/null +++ b/modules/rudi/images/flags/uk.gif diff --git a/modules/rudi/images/flags/usa.gif b/modules/rudi/images/flags/usa.gif Binary files differnew file mode 100644 index 0000000..08a1933 --- /dev/null +++ b/modules/rudi/images/flags/usa.gif diff --git a/modules/rudi/images/medals/3IDESM.jpg b/modules/rudi/images/medals/3IDESM.jpg Binary files differnew file mode 100644 index 0000000..2574626 --- /dev/null +++ b/modules/rudi/images/medals/3IDESM.jpg diff --git a/modules/rudi/images/medals/ACM.jpg b/modules/rudi/images/medals/ACM.jpg Binary files differnew file mode 100644 index 0000000..e56c0e4 --- /dev/null +++ b/modules/rudi/images/medals/ACM.jpg diff --git a/modules/rudi/images/medals/ADSM.jpg b/modules/rudi/images/medals/ADSM.jpg Binary files differnew file mode 100644 index 0000000..cfa47a0 --- /dev/null +++ b/modules/rudi/images/medals/ADSM.jpg diff --git a/modules/rudi/images/medals/AE-AMCM.jpg b/modules/rudi/images/medals/AE-AMCM.jpg Binary files differnew file mode 100644 index 0000000..42ed6de --- /dev/null +++ b/modules/rudi/images/medals/AE-AMCM.jpg diff --git a/modules/rudi/images/medals/AGCM.jpg b/modules/rudi/images/medals/AGCM.jpg Binary files differnew file mode 100644 index 0000000..81d1882 --- /dev/null +++ b/modules/rudi/images/medals/AGCM.jpg diff --git a/modules/rudi/images/medals/BS.jpg b/modules/rudi/images/medals/BS.jpg Binary files differnew file mode 100644 index 0000000..8dad4f4 --- /dev/null +++ b/modules/rudi/images/medals/BS.jpg diff --git a/modules/rudi/images/medals/DSC.jpg b/modules/rudi/images/medals/DSC.jpg Binary files differnew file mode 100644 index 0000000..d84b801 --- /dev/null +++ b/modules/rudi/images/medals/DSC.jpg diff --git a/modules/rudi/images/medals/EAM.jpg b/modules/rudi/images/medals/EAM.jpg Binary files differnew file mode 100644 index 0000000..ea0e4b6 --- /dev/null +++ b/modules/rudi/images/medals/EAM.jpg diff --git a/modules/rudi/images/medals/EAMECM.jpg b/modules/rudi/images/medals/EAMECM.jpg Binary files differnew file mode 100644 index 0000000..e7f3867 --- /dev/null +++ b/modules/rudi/images/medals/EAMECM.jpg diff --git a/modules/rudi/images/medals/LOM.jpg b/modules/rudi/images/medals/LOM.jpg Binary files differnew file mode 100644 index 0000000..5f6e8a3 --- /dev/null +++ b/modules/rudi/images/medals/LOM.jpg diff --git a/modules/rudi/images/medals/MUC.jpg b/modules/rudi/images/medals/MUC.jpg Binary files differnew file mode 100644 index 0000000..4567112 --- /dev/null +++ b/modules/rudi/images/medals/MUC.jpg diff --git a/modules/rudi/images/medals/PH.jpg b/modules/rudi/images/medals/PH.jpg Binary files differnew file mode 100644 index 0000000..4375275 --- /dev/null +++ b/modules/rudi/images/medals/PH.jpg diff --git a/modules/rudi/images/medals/SM.jpg b/modules/rudi/images/medals/SM.jpg Binary files differnew file mode 100644 index 0000000..09de8d0 --- /dev/null +++ b/modules/rudi/images/medals/SM.jpg diff --git a/modules/rudi/images/medals/SS.jpg b/modules/rudi/images/medals/SS.jpg Binary files differnew file mode 100644 index 0000000..d8599cf --- /dev/null +++ b/modules/rudi/images/medals/SS.jpg diff --git a/modules/rudi/images/medals/WWIIAOM.jpg b/modules/rudi/images/medals/WWIIAOM.jpg Binary files differnew file mode 100644 index 0000000..ff40ef8 --- /dev/null +++ b/modules/rudi/images/medals/WWIIAOM.jpg diff --git a/modules/rudi/images/medals/WWIIVM.jpg b/modules/rudi/images/medals/WWIIVM.jpg Binary files differnew file mode 100644 index 0000000..1256371 --- /dev/null +++ b/modules/rudi/images/medals/WWIIVM.jpg diff --git a/modules/rudi/images/medals/armedforcesservice.jpg b/modules/rudi/images/medals/armedforcesservice.jpg Binary files differnew file mode 100644 index 0000000..14080b6 --- /dev/null +++ b/modules/rudi/images/medals/armedforcesservice.jpg diff --git a/modules/rudi/images/medals/armyachievement.jpg b/modules/rudi/images/medals/armyachievement.jpg Binary files differnew file mode 100644 index 0000000..ed35298 --- /dev/null +++ b/modules/rudi/images/medals/armyachievement.jpg diff --git a/modules/rudi/images/medals/armycommendation.jpg b/modules/rudi/images/medals/armycommendation.jpg Binary files differnew file mode 100644 index 0000000..20861e1 --- /dev/null +++ b/modules/rudi/images/medals/armycommendation.jpg diff --git a/modules/rudi/images/medals/armyservice.jpg b/modules/rudi/images/medals/armyservice.jpg Binary files differnew file mode 100644 index 0000000..52d7cfe --- /dev/null +++ b/modules/rudi/images/medals/armyservice.jpg diff --git a/modules/rudi/images/medals/bronzestar.jpg b/modules/rudi/images/medals/bronzestar.jpg Binary files differnew file mode 100644 index 0000000..0cf5fa7 --- /dev/null +++ b/modules/rudi/images/medals/bronzestar.jpg diff --git a/modules/rudi/images/medals/cib1.gif b/modules/rudi/images/medals/cib1.gif Binary files differnew file mode 100644 index 0000000..a9e01d6 --- /dev/null +++ b/modules/rudi/images/medals/cib1.gif diff --git a/modules/rudi/images/medals/cib2.gif b/modules/rudi/images/medals/cib2.gif Binary files differnew file mode 100644 index 0000000..258f909 --- /dev/null +++ b/modules/rudi/images/medals/cib2.gif diff --git a/modules/rudi/images/medals/cib3.gif b/modules/rudi/images/medals/cib3.gif Binary files differnew file mode 100644 index 0000000..c9ddbfc --- /dev/null +++ b/modules/rudi/images/medals/cib3.gif diff --git a/modules/rudi/images/medals/cib4.gif b/modules/rudi/images/medals/cib4.gif Binary files differnew file mode 100644 index 0000000..4634756 --- /dev/null +++ b/modules/rudi/images/medals/cib4.gif diff --git a/modules/rudi/images/medals/cod2duc.jpg b/modules/rudi/images/medals/cod2duc.jpg Binary files differnew file mode 100644 index 0000000..099ca27 --- /dev/null +++ b/modules/rudi/images/medals/cod2duc.jpg diff --git a/modules/rudi/images/medals/cod4duc.jpg b/modules/rudi/images/medals/cod4duc.jpg Binary files differnew file mode 100644 index 0000000..aad4498 --- /dev/null +++ b/modules/rudi/images/medals/cod4duc.jpg diff --git a/modules/rudi/images/medals/codduc.jpg b/modules/rudi/images/medals/codduc.jpg Binary files differnew file mode 100644 index 0000000..566f81b --- /dev/null +++ b/modules/rudi/images/medals/codduc.jpg diff --git a/modules/rudi/images/medals/drill_instructor_badge.gif b/modules/rudi/images/medals/drill_instructor_badge.gif Binary files differnew file mode 100644 index 0000000..c7d7f83 --- /dev/null +++ b/modules/rudi/images/medals/drill_instructor_badge.gif diff --git a/modules/rudi/images/medals/dsm.jpg b/modules/rudi/images/medals/dsm.jpg Binary files differnew file mode 100644 index 0000000..b90e927 --- /dev/null +++ b/modules/rudi/images/medals/dsm.jpg diff --git a/modules/rudi/images/medals/esm.jpg b/modules/rudi/images/medals/esm.jpg Binary files differnew file mode 100644 index 0000000..2dbbcca --- /dev/null +++ b/modules/rudi/images/medals/esm.jpg diff --git a/modules/rudi/images/medals/exempattendance.jpg b/modules/rudi/images/medals/exempattendance.jpg Binary files differnew file mode 100644 index 0000000..8b6354b --- /dev/null +++ b/modules/rudi/images/medals/exempattendance.jpg diff --git a/modules/rudi/images/medals/goodconduct.jpg b/modules/rudi/images/medals/goodconduct.jpg Binary files differnew file mode 100644 index 0000000..77277cd --- /dev/null +++ b/modules/rudi/images/medals/goodconduct.jpg diff --git a/modules/rudi/images/medals/gwotem.jpg b/modules/rudi/images/medals/gwotem.jpg Binary files differnew file mode 100644 index 0000000..e92cc80 --- /dev/null +++ b/modules/rudi/images/medals/gwotem.jpg diff --git a/modules/rudi/images/medals/gwotsm.jpg b/modules/rudi/images/medals/gwotsm.jpg Binary files differnew file mode 100644 index 0000000..479ca32 --- /dev/null +++ b/modules/rudi/images/medals/gwotsm.jpg 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 Binary files differnew file mode 100644 index 0000000..2e52648 --- /dev/null +++ b/modules/rudi/images/medals/legionofmerit.jpg diff --git a/modules/rudi/images/medals/nationaldefense.jpg b/modules/rudi/images/medals/nationaldefense.jpg Binary files differnew file mode 100644 index 0000000..8f96df8 --- /dev/null +++ b/modules/rudi/images/medals/nationaldefense.jpg diff --git a/modules/rudi/images/medals/ncoprofdev.jpg b/modules/rudi/images/medals/ncoprofdev.jpg Binary files differnew file mode 100644 index 0000000..ea564ed --- /dev/null +++ b/modules/rudi/images/medals/ncoprofdev.jpg diff --git a/modules/rudi/images/medals/oak_leaf_clusters.jpg b/modules/rudi/images/medals/oak_leaf_clusters.jpg Binary files differnew file mode 100644 index 0000000..1927d46 --- /dev/null +++ b/modules/rudi/images/medals/oak_leaf_clusters.jpg diff --git a/modules/rudi/images/medals/purpleheart.jpg b/modules/rudi/images/medals/purpleheart.jpg Binary files differnew file mode 100644 index 0000000..07cce39 --- /dev/null +++ b/modules/rudi/images/medals/purpleheart.jpg diff --git a/modules/rudi/images/medals/silverstar.jpg b/modules/rudi/images/medals/silverstar.jpg Binary files differnew file mode 100644 index 0000000..60669f5 --- /dev/null +++ b/modules/rudi/images/medals/silverstar.jpg diff --git a/modules/rudi/images/medals/soldiers.jpg b/modules/rudi/images/medals/soldiers.jpg Binary files differnew file mode 100644 index 0000000..5059ad2 --- /dev/null +++ b/modules/rudi/images/medals/soldiers.jpg diff --git a/modules/rudi/images/medals/valor_device.png b/modules/rudi/images/medals/valor_device.png Binary files differnew file mode 100644 index 0000000..533dde8 --- /dev/null +++ b/modules/rudi/images/medals/valor_device.png diff --git a/modules/rudi/images/ranks/large/1LT.png b/modules/rudi/images/ranks/large/1LT.png Binary files differnew file mode 100644 index 0000000..0e305c1 --- /dev/null +++ b/modules/rudi/images/ranks/large/1LT.png diff --git a/modules/rudi/images/ranks/large/1SG.png b/modules/rudi/images/ranks/large/1SG.png Binary files differnew file mode 100644 index 0000000..9f0c0ee --- /dev/null +++ b/modules/rudi/images/ranks/large/1SG.png diff --git a/modules/rudi/images/ranks/large/1stLT.gif b/modules/rudi/images/ranks/large/1stLT.gif Binary files differnew file mode 100644 index 0000000..1f5ccce --- /dev/null +++ b/modules/rudi/images/ranks/large/1stLT.gif diff --git a/modules/rudi/images/ranks/large/2LT.png b/modules/rudi/images/ranks/large/2LT.png Binary files differnew file mode 100644 index 0000000..15a4fbf --- /dev/null +++ b/modules/rudi/images/ranks/large/2LT.png diff --git a/modules/rudi/images/ranks/large/2ndLT.gif b/modules/rudi/images/ranks/large/2ndLT.gif Binary files differnew file mode 100644 index 0000000..1762a51 --- /dev/null +++ b/modules/rudi/images/ranks/large/2ndLT.gif diff --git a/modules/rudi/images/ranks/large/CPL.png b/modules/rudi/images/ranks/large/CPL.png Binary files differnew file mode 100644 index 0000000..f302179 --- /dev/null +++ b/modules/rudi/images/ranks/large/CPL.png diff --git a/modules/rudi/images/ranks/large/CPT.png b/modules/rudi/images/ranks/large/CPT.png Binary files differnew file mode 100644 index 0000000..33846a3 --- /dev/null +++ b/modules/rudi/images/ranks/large/CPT.png diff --git a/modules/rudi/images/ranks/large/CSM.png b/modules/rudi/images/ranks/large/CSM.png Binary files differnew file mode 100644 index 0000000..62f557b --- /dev/null +++ b/modules/rudi/images/ranks/large/CSM.png diff --git a/modules/rudi/images/ranks/large/General.gif b/modules/rudi/images/ranks/large/General.gif Binary files differnew file mode 100644 index 0000000..7983698 --- /dev/null +++ b/modules/rudi/images/ranks/large/General.gif diff --git a/modules/rudi/images/ranks/large/LTGeneral.gif b/modules/rudi/images/ranks/large/LTGeneral.gif Binary files differnew file mode 100644 index 0000000..b8f8d7d --- /dev/null +++ b/modules/rudi/images/ranks/large/LTGeneral.gif diff --git a/modules/rudi/images/ranks/large/MSG.png b/modules/rudi/images/ranks/large/MSG.png Binary files differnew file mode 100644 index 0000000..fac8139 --- /dev/null +++ b/modules/rudi/images/ranks/large/MSG.png diff --git a/modules/rudi/images/ranks/large/MajorGeneral.gif b/modules/rudi/images/ranks/large/MajorGeneral.gif Binary files differnew file mode 100644 index 0000000..2594e33 --- /dev/null +++ b/modules/rudi/images/ranks/large/MajorGeneral.gif diff --git a/modules/rudi/images/ranks/large/PFC.png b/modules/rudi/images/ranks/large/PFC.png Binary files differnew file mode 100644 index 0000000..d8d8b5b --- /dev/null +++ b/modules/rudi/images/ranks/large/PFC.png diff --git a/modules/rudi/images/ranks/large/PV2.png b/modules/rudi/images/ranks/large/PV2.png Binary files differnew file mode 100644 index 0000000..7fcc4d8 --- /dev/null +++ b/modules/rudi/images/ranks/large/PV2.png diff --git a/modules/rudi/images/ranks/large/PVT.gif b/modules/rudi/images/ranks/large/PVT.gif Binary files differnew file mode 100644 index 0000000..ca1c11e --- /dev/null +++ b/modules/rudi/images/ranks/large/PVT.gif diff --git a/modules/rudi/images/ranks/large/SFC.png b/modules/rudi/images/ranks/large/SFC.png Binary files differnew file mode 100644 index 0000000..c23f3e8 --- /dev/null +++ b/modules/rudi/images/ranks/large/SFC.png diff --git a/modules/rudi/images/ranks/large/SGT.png b/modules/rudi/images/ranks/large/SGT.png Binary files differnew file mode 100644 index 0000000..165e83c --- /dev/null +++ b/modules/rudi/images/ranks/large/SGT.png diff --git a/modules/rudi/images/ranks/large/SMG.png b/modules/rudi/images/ranks/large/SMG.png Binary files differnew file mode 100644 index 0000000..9cc03a2 --- /dev/null +++ b/modules/rudi/images/ranks/large/SMG.png diff --git a/modules/rudi/images/ranks/large/SPC.png b/modules/rudi/images/ranks/large/SPC.png Binary files differnew file mode 100644 index 0000000..0f2446e --- /dev/null +++ b/modules/rudi/images/ranks/large/SPC.png diff --git a/modules/rudi/images/ranks/large/SSG.png b/modules/rudi/images/ranks/large/SSG.png Binary files differnew file mode 100644 index 0000000..e4eecd4 --- /dev/null +++ b/modules/rudi/images/ranks/large/SSG.png diff --git a/modules/rudi/images/ranks/large/brigadier.gif b/modules/rudi/images/ranks/large/brigadier.gif Binary files differnew file mode 100644 index 0000000..cad7d7a --- /dev/null +++ b/modules/rudi/images/ranks/large/brigadier.gif diff --git a/modules/rudi/images/ranks/large/captain.gif b/modules/rudi/images/ranks/large/captain.gif Binary files differnew file mode 100644 index 0000000..c4e9142 --- /dev/null +++ b/modules/rudi/images/ranks/large/captain.gif diff --git a/modules/rudi/images/ranks/large/colonel.gif b/modules/rudi/images/ranks/large/colonel.gif Binary files differnew file mode 100644 index 0000000..58dc613 --- /dev/null +++ b/modules/rudi/images/ranks/large/colonel.gif 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 Binary files differnew file mode 100644 index 0000000..d18509e --- /dev/null +++ b/modules/rudi/images/ranks/large/ltc.gif diff --git a/modules/rudi/images/ranks/large/major.gif b/modules/rudi/images/ranks/large/major.gif Binary files differnew file mode 100644 index 0000000..761410c --- /dev/null +++ b/modules/rudi/images/ranks/large/major.gif diff --git a/modules/rudi/images/ranks/small/1LT.png b/modules/rudi/images/ranks/small/1LT.png Binary files differnew file mode 100644 index 0000000..247c57d --- /dev/null +++ b/modules/rudi/images/ranks/small/1LT.png diff --git a/modules/rudi/images/ranks/small/1SG.png b/modules/rudi/images/ranks/small/1SG.png Binary files differnew file mode 100644 index 0000000..f9d3f23 --- /dev/null +++ b/modules/rudi/images/ranks/small/1SG.png diff --git a/modules/rudi/images/ranks/small/2LT.png b/modules/rudi/images/ranks/small/2LT.png Binary files differnew file mode 100644 index 0000000..79c03a8 --- /dev/null +++ b/modules/rudi/images/ranks/small/2LT.png diff --git a/modules/rudi/images/ranks/small/CPL.png b/modules/rudi/images/ranks/small/CPL.png Binary files differnew file mode 100644 index 0000000..37d1bdd --- /dev/null +++ b/modules/rudi/images/ranks/small/CPL.png diff --git a/modules/rudi/images/ranks/small/CPT.png b/modules/rudi/images/ranks/small/CPT.png Binary files differnew file mode 100644 index 0000000..c4c0034 --- /dev/null +++ b/modules/rudi/images/ranks/small/CPT.png diff --git a/modules/rudi/images/ranks/small/CSM.png b/modules/rudi/images/ranks/small/CSM.png Binary files differnew file mode 100644 index 0000000..db19607 --- /dev/null +++ b/modules/rudi/images/ranks/small/CSM.png diff --git a/modules/rudi/images/ranks/small/General.gif b/modules/rudi/images/ranks/small/General.gif Binary files differnew file mode 100644 index 0000000..7983698 --- /dev/null +++ b/modules/rudi/images/ranks/small/General.gif diff --git a/modules/rudi/images/ranks/small/LtGeneral.gif b/modules/rudi/images/ranks/small/LtGeneral.gif Binary files differnew file mode 100644 index 0000000..6bb0a80 --- /dev/null +++ b/modules/rudi/images/ranks/small/LtGeneral.gif diff --git a/modules/rudi/images/ranks/small/MSG.png b/modules/rudi/images/ranks/small/MSG.png Binary files differnew file mode 100644 index 0000000..e84bde3 --- /dev/null +++ b/modules/rudi/images/ranks/small/MSG.png diff --git a/modules/rudi/images/ranks/small/MajorGeneral.gif b/modules/rudi/images/ranks/small/MajorGeneral.gif Binary files differnew file mode 100644 index 0000000..ef18ea9 --- /dev/null +++ b/modules/rudi/images/ranks/small/MajorGeneral.gif diff --git a/modules/rudi/images/ranks/small/PFC.png b/modules/rudi/images/ranks/small/PFC.png Binary files differnew file mode 100644 index 0000000..76b58c0 --- /dev/null +++ b/modules/rudi/images/ranks/small/PFC.png diff --git a/modules/rudi/images/ranks/small/PV2.png b/modules/rudi/images/ranks/small/PV2.png Binary files differnew file mode 100644 index 0000000..1246d25 --- /dev/null +++ b/modules/rudi/images/ranks/small/PV2.png diff --git a/modules/rudi/images/ranks/small/SFC.png b/modules/rudi/images/ranks/small/SFC.png Binary files differnew file mode 100644 index 0000000..7e64830 --- /dev/null +++ b/modules/rudi/images/ranks/small/SFC.png diff --git a/modules/rudi/images/ranks/small/SGT.png b/modules/rudi/images/ranks/small/SGT.png Binary files differnew file mode 100644 index 0000000..0411e49 --- /dev/null +++ b/modules/rudi/images/ranks/small/SGT.png diff --git a/modules/rudi/images/ranks/small/SMG.png b/modules/rudi/images/ranks/small/SMG.png Binary files differnew file mode 100644 index 0000000..e85d54a --- /dev/null +++ b/modules/rudi/images/ranks/small/SMG.png diff --git a/modules/rudi/images/ranks/small/SPC.png b/modules/rudi/images/ranks/small/SPC.png Binary files differnew file mode 100644 index 0000000..93ff59d --- /dev/null +++ b/modules/rudi/images/ranks/small/SPC.png diff --git a/modules/rudi/images/ranks/small/SSG.png b/modules/rudi/images/ranks/small/SSG.png Binary files differnew file mode 100644 index 0000000..592fcb3 --- /dev/null +++ b/modules/rudi/images/ranks/small/SSG.png diff --git a/modules/rudi/images/ranks/small/brigadier.gif b/modules/rudi/images/ranks/small/brigadier.gif Binary files differnew file mode 100644 index 0000000..83e48c6 --- /dev/null +++ b/modules/rudi/images/ranks/small/brigadier.gif 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 Binary files differnew file mode 100644 index 0000000..13a4916 --- /dev/null +++ b/modules/rudi/images/ranks/small/pvt.gif diff --git a/modules/rudi/images/ranks/small/rank-1stlieutenant.gif b/modules/rudi/images/ranks/small/rank-1stlieutenant.gif Binary files differnew file mode 100644 index 0000000..579223e --- /dev/null +++ b/modules/rudi/images/ranks/small/rank-1stlieutenant.gif diff --git a/modules/rudi/images/ranks/small/rank-2ndlieutenant.gif b/modules/rudi/images/ranks/small/rank-2ndlieutenant.gif Binary files differnew file mode 100644 index 0000000..84b23f1 --- /dev/null +++ b/modules/rudi/images/ranks/small/rank-2ndlieutenant.gif diff --git a/modules/rudi/images/ranks/small/rank-captain.gif b/modules/rudi/images/ranks/small/rank-captain.gif Binary files differnew file mode 100644 index 0000000..1e6a620 --- /dev/null +++ b/modules/rudi/images/ranks/small/rank-captain.gif diff --git a/modules/rudi/images/ranks/small/rank-colonel.gif b/modules/rudi/images/ranks/small/rank-colonel.gif Binary files differnew file mode 100644 index 0000000..870d2ff --- /dev/null +++ b/modules/rudi/images/ranks/small/rank-colonel.gif diff --git a/modules/rudi/images/ranks/small/rank-ltcolonel.gif b/modules/rudi/images/ranks/small/rank-ltcolonel.gif Binary files differnew file mode 100644 index 0000000..bfc5a79 --- /dev/null +++ b/modules/rudi/images/ranks/small/rank-ltcolonel.gif diff --git a/modules/rudi/images/ranks/small/rank-major.gif b/modules/rudi/images/ranks/small/rank-major.gif Binary files differnew file mode 100644 index 0000000..c8e142d --- /dev/null +++ b/modules/rudi/images/ranks/small/rank-major.gif diff --git a/modules/rudi/images/ranks/small/rank-private.gif b/modules/rudi/images/ranks/small/rank-private.gif Binary files differnew file mode 100644 index 0000000..ca1c11e --- /dev/null +++ b/modules/rudi/images/ranks/small/rank-private.gif diff --git a/modules/rudi/images/uniform/ACoia.png b/modules/rudi/images/uniform/ACoia.png Binary files differnew file mode 100644 index 0000000..0e70357 --- /dev/null +++ b/modules/rudi/images/uniform/ACoia.png diff --git a/modules/rudi/images/uniform/BBell.png b/modules/rudi/images/uniform/BBell.png Binary files differnew file mode 100644 index 0000000..a9bbac9 --- /dev/null +++ b/modules/rudi/images/uniform/BBell.png diff --git a/modules/rudi/images/uniform/BChu.png b/modules/rudi/images/uniform/BChu.png Binary files differnew file mode 100644 index 0000000..a7d5a5b --- /dev/null +++ b/modules/rudi/images/uniform/BChu.png diff --git a/modules/rudi/images/uniform/BLevine.png b/modules/rudi/images/uniform/BLevine.png Binary files differnew file mode 100644 index 0000000..50accbe --- /dev/null +++ b/modules/rudi/images/uniform/BLevine.png diff --git a/modules/rudi/images/uniform/BSegal.png b/modules/rudi/images/uniform/BSegal.png Binary files differnew file mode 100644 index 0000000..1c9c0f2 --- /dev/null +++ b/modules/rudi/images/uniform/BSegal.png diff --git a/modules/rudi/images/uniform/DHolson.png b/modules/rudi/images/uniform/DHolson.png Binary files differnew file mode 100644 index 0000000..b372cf5 --- /dev/null +++ b/modules/rudi/images/uniform/DHolson.png diff --git a/modules/rudi/images/uniform/EOConnell.png b/modules/rudi/images/uniform/EOConnell.png Binary files differnew file mode 100644 index 0000000..9e46bfd --- /dev/null +++ b/modules/rudi/images/uniform/EOConnell.png diff --git a/modules/rudi/images/uniform/GTownsend.png b/modules/rudi/images/uniform/GTownsend.png Binary files differnew file mode 100644 index 0000000..6d6f314 --- /dev/null +++ b/modules/rudi/images/uniform/GTownsend.png diff --git a/modules/rudi/images/uniform/IBailey.png b/modules/rudi/images/uniform/IBailey.png Binary files differnew file mode 100644 index 0000000..c53fd52 --- /dev/null +++ b/modules/rudi/images/uniform/IBailey.png diff --git a/modules/rudi/images/uniform/JBottheim.png b/modules/rudi/images/uniform/JBottheim.png Binary files differnew file mode 100644 index 0000000..bd4b964 --- /dev/null +++ b/modules/rudi/images/uniform/JBottheim.png diff --git a/modules/rudi/images/uniform/JHunkeler.png b/modules/rudi/images/uniform/JHunkeler.png Binary files differnew file mode 100644 index 0000000..06a7dff --- /dev/null +++ b/modules/rudi/images/uniform/JHunkeler.png diff --git a/modules/rudi/images/uniform/JMelnyk.png b/modules/rudi/images/uniform/JMelnyk.png Binary files differnew file mode 100644 index 0000000..111291c --- /dev/null +++ b/modules/rudi/images/uniform/JMelnyk.png diff --git a/modules/rudi/images/uniform/JRobinson.png b/modules/rudi/images/uniform/JRobinson.png Binary files differnew file mode 100644 index 0000000..f06c78e --- /dev/null +++ b/modules/rudi/images/uniform/JRobinson.png diff --git a/modules/rudi/images/uniform/KGrimes.png b/modules/rudi/images/uniform/KGrimes.png Binary files differnew file mode 100644 index 0000000..db03b87 --- /dev/null +++ b/modules/rudi/images/uniform/KGrimes.png diff --git a/modules/rudi/images/uniform/KJohnson.png b/modules/rudi/images/uniform/KJohnson.png Binary files differnew file mode 100644 index 0000000..496b9fd --- /dev/null +++ b/modules/rudi/images/uniform/KJohnson.png diff --git a/modules/rudi/images/uniform/LTrimble.png b/modules/rudi/images/uniform/LTrimble.png Binary files differnew file mode 100644 index 0000000..3d8f2b6 --- /dev/null +++ b/modules/rudi/images/uniform/LTrimble.png diff --git a/modules/rudi/images/uniform/MLula.png b/modules/rudi/images/uniform/MLula.png Binary files differnew file mode 100644 index 0000000..a674bc2 --- /dev/null +++ b/modules/rudi/images/uniform/MLula.png diff --git a/modules/rudi/images/uniform/MMark.png b/modules/rudi/images/uniform/MMark.png Binary files differnew file mode 100644 index 0000000..ed5ae93 --- /dev/null +++ b/modules/rudi/images/uniform/MMark.png diff --git a/modules/rudi/images/uniform/MMcClellan.png b/modules/rudi/images/uniform/MMcClellan.png Binary files differnew file mode 100644 index 0000000..2e7f588 --- /dev/null +++ b/modules/rudi/images/uniform/MMcClellan.png diff --git a/modules/rudi/images/uniform/NGiroux.png b/modules/rudi/images/uniform/NGiroux.png Binary files differnew file mode 100644 index 0000000..599e39c --- /dev/null +++ b/modules/rudi/images/uniform/NGiroux.png diff --git a/modules/rudi/images/uniform/NMartini.png b/modules/rudi/images/uniform/NMartini.png Binary files differnew file mode 100644 index 0000000..e0c15fd --- /dev/null +++ b/modules/rudi/images/uniform/NMartini.png diff --git a/modules/rudi/images/uniform/NPuckett.png b/modules/rudi/images/uniform/NPuckett.png Binary files differnew file mode 100644 index 0000000..4d842c8 --- /dev/null +++ b/modules/rudi/images/uniform/NPuckett.png diff --git a/modules/rudi/images/uniform/PBurris.png b/modules/rudi/images/uniform/PBurris.png Binary files differnew file mode 100644 index 0000000..f64736d --- /dev/null +++ b/modules/rudi/images/uniform/PBurris.png diff --git a/modules/rudi/images/uniform/PPederson.png b/modules/rudi/images/uniform/PPederson.png Binary files differnew file mode 100644 index 0000000..c5743f9 --- /dev/null +++ b/modules/rudi/images/uniform/PPederson.png diff --git a/modules/rudi/images/uniform/RLeahy.png b/modules/rudi/images/uniform/RLeahy.png Binary files differnew file mode 100644 index 0000000..1c36abf --- /dev/null +++ b/modules/rudi/images/uniform/RLeahy.png diff --git a/modules/rudi/images/uniform/RThomas.png b/modules/rudi/images/uniform/RThomas.png Binary files differnew file mode 100644 index 0000000..8440cc6 --- /dev/null +++ b/modules/rudi/images/uniform/RThomas.png diff --git a/modules/rudi/images/uniform/SCorsaro.png b/modules/rudi/images/uniform/SCorsaro.png Binary files differnew file mode 100644 index 0000000..1895adf --- /dev/null +++ b/modules/rudi/images/uniform/SCorsaro.png diff --git a/modules/rudi/images/uniform/ZBarrett.png b/modules/rudi/images/uniform/ZBarrett.png Binary files differnew file mode 100644 index 0000000..c9d106b --- /dev/null +++ b/modules/rudi/images/uniform/ZBarrett.png diff --git a/modules/rudi/images/uniform/bailey.jpg b/modules/rudi/images/uniform/bailey.jpg Binary files differnew file mode 100644 index 0000000..bcb7bd4 --- /dev/null +++ b/modules/rudi/images/uniform/bailey.jpg diff --git a/modules/rudi/images/uniform/barrett.jpg b/modules/rudi/images/uniform/barrett.jpg Binary files differnew file mode 100644 index 0000000..5d48cf0 --- /dev/null +++ b/modules/rudi/images/uniform/barrett.jpg diff --git a/modules/rudi/images/uniform/bell.jpg b/modules/rudi/images/uniform/bell.jpg Binary files differnew file mode 100644 index 0000000..e3e44c5 --- /dev/null +++ b/modules/rudi/images/uniform/bell.jpg diff --git a/modules/rudi/images/uniform/blackburn.jpg b/modules/rudi/images/uniform/blackburn.jpg Binary files differnew file mode 100644 index 0000000..1b96091 --- /dev/null +++ b/modules/rudi/images/uniform/blackburn.jpg diff --git a/modules/rudi/images/uniform/blanchette.jpg b/modules/rudi/images/uniform/blanchette.jpg Binary files differnew file mode 100644 index 0000000..4a007c2 --- /dev/null +++ b/modules/rudi/images/uniform/blanchette.jpg diff --git a/modules/rudi/images/uniform/bottheim.jpg b/modules/rudi/images/uniform/bottheim.jpg Binary files differnew file mode 100644 index 0000000..924cc75 --- /dev/null +++ b/modules/rudi/images/uniform/bottheim.jpg diff --git a/modules/rudi/images/uniform/brooks.jpg b/modules/rudi/images/uniform/brooks.jpg Binary files differnew file mode 100644 index 0000000..05de36e --- /dev/null +++ b/modules/rudi/images/uniform/brooks.jpg diff --git a/modules/rudi/images/uniform/brown.jpg b/modules/rudi/images/uniform/brown.jpg Binary files differnew file mode 100644 index 0000000..28e32ef --- /dev/null +++ b/modules/rudi/images/uniform/brown.jpg diff --git a/modules/rudi/images/uniform/burris copy.jpg b/modules/rudi/images/uniform/burris copy.jpg Binary files differnew file mode 100644 index 0000000..edc6aba --- /dev/null +++ b/modules/rudi/images/uniform/burris copy.jpg diff --git a/modules/rudi/images/uniform/burris.jpg b/modules/rudi/images/uniform/burris.jpg Binary files differnew file mode 100644 index 0000000..d56c1ae --- /dev/null +++ b/modules/rudi/images/uniform/burris.jpg diff --git a/modules/rudi/images/uniform/bursik.jpg b/modules/rudi/images/uniform/bursik.jpg Binary files differnew file mode 100644 index 0000000..e4b69a3 --- /dev/null +++ b/modules/rudi/images/uniform/bursik.jpg diff --git a/modules/rudi/images/uniform/chu.jpg b/modules/rudi/images/uniform/chu.jpg Binary files differnew file mode 100644 index 0000000..f548952 --- /dev/null +++ b/modules/rudi/images/uniform/chu.jpg diff --git a/modules/rudi/images/uniform/clark.jpg b/modules/rudi/images/uniform/clark.jpg Binary files differnew file mode 100644 index 0000000..35febd8 --- /dev/null +++ b/modules/rudi/images/uniform/clark.jpg diff --git a/modules/rudi/images/uniform/clayton.jpg b/modules/rudi/images/uniform/clayton.jpg Binary files differnew file mode 100644 index 0000000..87e96b0 --- /dev/null +++ b/modules/rudi/images/uniform/clayton.jpg diff --git a/modules/rudi/images/uniform/cooke.jpg b/modules/rudi/images/uniform/cooke.jpg Binary files differnew file mode 100644 index 0000000..210ef92 --- /dev/null +++ b/modules/rudi/images/uniform/cooke.jpg diff --git a/modules/rudi/images/uniform/corsaro.jpg b/modules/rudi/images/uniform/corsaro.jpg Binary files differnew file mode 100644 index 0000000..d3f084a --- /dev/null +++ b/modules/rudi/images/uniform/corsaro.jpg diff --git a/modules/rudi/images/uniform/cpl.jpg b/modules/rudi/images/uniform/cpl.jpg Binary files differnew file mode 100644 index 0000000..22c7d84 --- /dev/null +++ b/modules/rudi/images/uniform/cpl.jpg diff --git a/modules/rudi/images/uniform/dalia.jpg b/modules/rudi/images/uniform/dalia.jpg Binary files differnew file mode 100644 index 0000000..8e762c7 --- /dev/null +++ b/modules/rudi/images/uniform/dalia.jpg diff --git a/modules/rudi/images/uniform/ditzel.jpg b/modules/rudi/images/uniform/ditzel.jpg Binary files differnew file mode 100644 index 0000000..7b104dc --- /dev/null +++ b/modules/rudi/images/uniform/ditzel.jpg diff --git a/modules/rudi/images/uniform/donovan.jpg b/modules/rudi/images/uniform/donovan.jpg Binary files differnew file mode 100644 index 0000000..5102f3c --- /dev/null +++ b/modules/rudi/images/uniform/donovan.jpg diff --git a/modules/rudi/images/uniform/dubin.jpg b/modules/rudi/images/uniform/dubin.jpg Binary files differnew file mode 100644 index 0000000..ce7313a --- /dev/null +++ b/modules/rudi/images/uniform/dubin.jpg diff --git a/modules/rudi/images/uniform/duvall.jpg b/modules/rudi/images/uniform/duvall.jpg Binary files differnew file mode 100644 index 0000000..586080b --- /dev/null +++ b/modules/rudi/images/uniform/duvall.jpg diff --git a/modules/rudi/images/uniform/enlisted.jpg b/modules/rudi/images/uniform/enlisted.jpg Binary files differnew file mode 100644 index 0000000..2007e07 --- /dev/null +++ b/modules/rudi/images/uniform/enlisted.jpg diff --git a/modules/rudi/images/uniform/freeman.jpg b/modules/rudi/images/uniform/freeman.jpg Binary files differnew file mode 100644 index 0000000..4462f88 --- /dev/null +++ b/modules/rudi/images/uniform/freeman.jpg diff --git a/modules/rudi/images/uniform/frey.jpg b/modules/rudi/images/uniform/frey.jpg Binary files differnew file mode 100644 index 0000000..d5e9253 --- /dev/null +++ b/modules/rudi/images/uniform/frey.jpg diff --git a/modules/rudi/images/uniform/fsgt.jpg b/modules/rudi/images/uniform/fsgt.jpg Binary files differnew file mode 100644 index 0000000..91f915e --- /dev/null +++ b/modules/rudi/images/uniform/fsgt.jpg diff --git a/modules/rudi/images/uniform/gaskin.jpg b/modules/rudi/images/uniform/gaskin.jpg Binary files differnew file mode 100644 index 0000000..2638bca --- /dev/null +++ b/modules/rudi/images/uniform/gaskin.jpg diff --git a/modules/rudi/images/uniform/geary.jpg b/modules/rudi/images/uniform/geary.jpg Binary files differnew file mode 100644 index 0000000..de111e6 --- /dev/null +++ b/modules/rudi/images/uniform/geary.jpg diff --git a/modules/rudi/images/uniform/giles.jpg b/modules/rudi/images/uniform/giles.jpg Binary files differnew file mode 100644 index 0000000..7b179ba --- /dev/null +++ b/modules/rudi/images/uniform/giles.jpg diff --git a/modules/rudi/images/uniform/giroux.jpg b/modules/rudi/images/uniform/giroux.jpg Binary files differnew file mode 100644 index 0000000..1e652d7 --- /dev/null +++ b/modules/rudi/images/uniform/giroux.jpg diff --git a/modules/rudi/images/uniform/goodrich.jpg b/modules/rudi/images/uniform/goodrich.jpg Binary files differnew file mode 100644 index 0000000..2804e1f --- /dev/null +++ b/modules/rudi/images/uniform/goodrich.jpg diff --git a/modules/rudi/images/uniform/gwizdala.jpg b/modules/rudi/images/uniform/gwizdala.jpg Binary files differnew file mode 100644 index 0000000..0cafe8f --- /dev/null +++ b/modules/rudi/images/uniform/gwizdala.jpg diff --git a/modules/rudi/images/uniform/hallock.jpg b/modules/rudi/images/uniform/hallock.jpg Binary files differnew file mode 100644 index 0000000..851c9b4 --- /dev/null +++ b/modules/rudi/images/uniform/hallock.jpg diff --git a/modules/rudi/images/uniform/higgins.jpg b/modules/rudi/images/uniform/higgins.jpg Binary files differnew file mode 100644 index 0000000..ae4b7f4 --- /dev/null +++ b/modules/rudi/images/uniform/higgins.jpg diff --git a/modules/rudi/images/uniform/holson.jpg b/modules/rudi/images/uniform/holson.jpg Binary files differnew file mode 100644 index 0000000..58c6d49 --- /dev/null +++ b/modules/rudi/images/uniform/holson.jpg diff --git a/modules/rudi/images/uniform/hornung.jpg b/modules/rudi/images/uniform/hornung.jpg Binary files differnew file mode 100644 index 0000000..3964634 --- /dev/null +++ b/modules/rudi/images/uniform/hornung.jpg diff --git a/modules/rudi/images/uniform/hunkeler.jpg b/modules/rudi/images/uniform/hunkeler.jpg Binary files differnew file mode 100644 index 0000000..2775fc5 --- /dev/null +++ b/modules/rudi/images/uniform/hunkeler.jpg 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 Binary files differnew file mode 100644 index 0000000..1081c71 --- /dev/null +++ b/modules/rudi/images/uniform/jimenez.jpg diff --git a/modules/rudi/images/uniform/kenkel.jpg b/modules/rudi/images/uniform/kenkel.jpg Binary files differnew file mode 100644 index 0000000..cfaccf9 --- /dev/null +++ b/modules/rudi/images/uniform/kenkel.jpg diff --git a/modules/rudi/images/uniform/killian.jpg b/modules/rudi/images/uniform/killian.jpg Binary files differnew file mode 100644 index 0000000..d8940e0 --- /dev/null +++ b/modules/rudi/images/uniform/killian.jpg diff --git a/modules/rudi/images/uniform/leahy.jpg b/modules/rudi/images/uniform/leahy.jpg Binary files differnew file mode 100644 index 0000000..5049a76 --- /dev/null +++ b/modules/rudi/images/uniform/leahy.jpg diff --git a/modules/rudi/images/uniform/levine.jpg b/modules/rudi/images/uniform/levine.jpg Binary files differnew file mode 100644 index 0000000..3910fdb --- /dev/null +++ b/modules/rudi/images/uniform/levine.jpg diff --git a/modules/rudi/images/uniform/litton.jpg b/modules/rudi/images/uniform/litton.jpg Binary files differnew file mode 100644 index 0000000..788bd92 --- /dev/null +++ b/modules/rudi/images/uniform/litton.jpg diff --git a/modules/rudi/images/uniform/luker.jpg b/modules/rudi/images/uniform/luker.jpg Binary files differnew file mode 100644 index 0000000..9c5f723 --- /dev/null +++ b/modules/rudi/images/uniform/luker.jpg diff --git a/modules/rudi/images/uniform/lula.jpg b/modules/rudi/images/uniform/lula.jpg Binary files differnew file mode 100644 index 0000000..a16024a --- /dev/null +++ b/modules/rudi/images/uniform/lula.jpg diff --git a/modules/rudi/images/uniform/madden.jpg b/modules/rudi/images/uniform/madden.jpg Binary files differnew file mode 100644 index 0000000..2802c01 --- /dev/null +++ b/modules/rudi/images/uniform/madden.jpg diff --git a/modules/rudi/images/uniform/manary.jpg b/modules/rudi/images/uniform/manary.jpg Binary files differnew file mode 100644 index 0000000..921fc43 --- /dev/null +++ b/modules/rudi/images/uniform/manary.jpg diff --git a/modules/rudi/images/uniform/mark.jpg b/modules/rudi/images/uniform/mark.jpg Binary files differnew file mode 100644 index 0000000..beda1b6 --- /dev/null +++ b/modules/rudi/images/uniform/mark.jpg diff --git a/modules/rudi/images/uniform/mcclellan.jpg b/modules/rudi/images/uniform/mcclellan.jpg Binary files differnew file mode 100644 index 0000000..54ba5aa --- /dev/null +++ b/modules/rudi/images/uniform/mcclellan.jpg diff --git a/modules/rudi/images/uniform/mirman.jpg b/modules/rudi/images/uniform/mirman.jpg Binary files differnew file mode 100644 index 0000000..8b5eb57 --- /dev/null +++ b/modules/rudi/images/uniform/mirman.jpg diff --git a/modules/rudi/images/uniform/moncayo.jpg b/modules/rudi/images/uniform/moncayo.jpg Binary files differnew file mode 100644 index 0000000..659465b --- /dev/null +++ b/modules/rudi/images/uniform/moncayo.jpg diff --git a/modules/rudi/images/uniform/nowlan.jpg b/modules/rudi/images/uniform/nowlan.jpg Binary files differnew file mode 100644 index 0000000..73a26cd --- /dev/null +++ b/modules/rudi/images/uniform/nowlan.jpg diff --git a/modules/rudi/images/uniform/oconnell.jpg b/modules/rudi/images/uniform/oconnell.jpg Binary files differnew file mode 100644 index 0000000..2d06f7e --- /dev/null +++ b/modules/rudi/images/uniform/oconnell.jpg diff --git a/modules/rudi/images/uniform/officer.jpg b/modules/rudi/images/uniform/officer.jpg Binary files differnew file mode 100644 index 0000000..610f869 --- /dev/null +++ b/modules/rudi/images/uniform/officer.jpg diff --git a/modules/rudi/images/uniform/officer1.jpg b/modules/rudi/images/uniform/officer1.jpg Binary files differnew file mode 100644 index 0000000..cef96ee --- /dev/null +++ b/modules/rudi/images/uniform/officer1.jpg diff --git a/modules/rudi/images/uniform/papp.jpg b/modules/rudi/images/uniform/papp.jpg Binary files differnew file mode 100644 index 0000000..7aa8507 --- /dev/null +++ b/modules/rudi/images/uniform/papp.jpg diff --git a/modules/rudi/images/uniform/patterson.jpg b/modules/rudi/images/uniform/patterson.jpg Binary files differnew file mode 100644 index 0000000..67b10f2 --- /dev/null +++ b/modules/rudi/images/uniform/patterson.jpg diff --git a/modules/rudi/images/uniform/pfc.jpg b/modules/rudi/images/uniform/pfc.jpg Binary files differnew file mode 100644 index 0000000..65f5156 --- /dev/null +++ b/modules/rudi/images/uniform/pfc.jpg diff --git a/modules/rudi/images/uniform/pfc3service copy.jpg b/modules/rudi/images/uniform/pfc3service copy.jpg Binary files differnew file mode 100644 index 0000000..d87f6ec --- /dev/null +++ b/modules/rudi/images/uniform/pfc3service copy.jpg diff --git a/modules/rudi/images/uniform/poole.jpg b/modules/rudi/images/uniform/poole.jpg Binary files differnew file mode 100644 index 0000000..e3bbb99 --- /dev/null +++ b/modules/rudi/images/uniform/poole.jpg diff --git a/modules/rudi/images/uniform/puckett.jpg b/modules/rudi/images/uniform/puckett.jpg Binary files differnew file mode 100644 index 0000000..3df29db --- /dev/null +++ b/modules/rudi/images/uniform/puckett.jpg diff --git a/modules/rudi/images/uniform/pvt.jpg b/modules/rudi/images/uniform/pvt.jpg Binary files differnew file mode 100644 index 0000000..11a23be --- /dev/null +++ b/modules/rudi/images/uniform/pvt.jpg diff --git a/modules/rudi/images/uniform/schneider.jpg b/modules/rudi/images/uniform/schneider.jpg Binary files differnew file mode 100644 index 0000000..bd18cdf --- /dev/null +++ b/modules/rudi/images/uniform/schneider.jpg diff --git a/modules/rudi/images/uniform/scott.jpg b/modules/rudi/images/uniform/scott.jpg Binary files differnew file mode 100644 index 0000000..e0dc4d6 --- /dev/null +++ b/modules/rudi/images/uniform/scott.jpg diff --git a/modules/rudi/images/uniform/segal.jpg b/modules/rudi/images/uniform/segal.jpg Binary files differnew file mode 100644 index 0000000..e225f83 --- /dev/null +++ b/modules/rudi/images/uniform/segal.jpg diff --git a/modules/rudi/images/uniform/severyns.jpg b/modules/rudi/images/uniform/severyns.jpg Binary files differnew file mode 100644 index 0000000..3778874 --- /dev/null +++ b/modules/rudi/images/uniform/severyns.jpg diff --git a/modules/rudi/images/uniform/sgt.jpg b/modules/rudi/images/uniform/sgt.jpg Binary files differnew file mode 100644 index 0000000..2dd8f0a --- /dev/null +++ b/modules/rudi/images/uniform/sgt.jpg diff --git a/modules/rudi/images/uniform/sokolowski.jpg b/modules/rudi/images/uniform/sokolowski.jpg Binary files differnew file mode 100644 index 0000000..139b1fc --- /dev/null +++ b/modules/rudi/images/uniform/sokolowski.jpg diff --git a/modules/rudi/images/uniform/sosa.jpg b/modules/rudi/images/uniform/sosa.jpg Binary files differnew file mode 100644 index 0000000..faec3bb --- /dev/null +++ b/modules/rudi/images/uniform/sosa.jpg diff --git a/modules/rudi/images/uniform/ssgt.jpg b/modules/rudi/images/uniform/ssgt.jpg Binary files differnew file mode 100644 index 0000000..bca0043 --- /dev/null +++ b/modules/rudi/images/uniform/ssgt.jpg diff --git a/modules/rudi/images/uniform/test.gif b/modules/rudi/images/uniform/test.gif Binary files differnew file mode 100644 index 0000000..11f342b --- /dev/null +++ b/modules/rudi/images/uniform/test.gif diff --git a/modules/rudi/images/uniform/test_enlisted.jpg b/modules/rudi/images/uniform/test_enlisted.jpg Binary files differnew file mode 100644 index 0000000..3462978 --- /dev/null +++ b/modules/rudi/images/uniform/test_enlisted.jpg diff --git a/modules/rudi/images/uniform/thomas.jpg b/modules/rudi/images/uniform/thomas.jpg Binary files differnew file mode 100644 index 0000000..6aae1f2 --- /dev/null +++ b/modules/rudi/images/uniform/thomas.jpg diff --git a/modules/rudi/images/uniform/townsend.jpg b/modules/rudi/images/uniform/townsend.jpg Binary files differnew file mode 100644 index 0000000..9f5aa7c --- /dev/null +++ b/modules/rudi/images/uniform/townsend.jpg diff --git a/modules/rudi/images/uniform/townsend_OLD.jpg b/modules/rudi/images/uniform/townsend_OLD.jpg Binary files differnew file mode 100644 index 0000000..297996e --- /dev/null +++ b/modules/rudi/images/uniform/townsend_OLD.jpg diff --git a/modules/rudi/images/uniform/trimble.jpg b/modules/rudi/images/uniform/trimble.jpg Binary files differnew file mode 100644 index 0000000..4120e02 --- /dev/null +++ b/modules/rudi/images/uniform/trimble.jpg diff --git a/modules/rudi/images/uniform/whiting.jpg b/modules/rudi/images/uniform/whiting.jpg Binary files differnew file mode 100644 index 0000000..75a009b --- /dev/null +++ b/modules/rudi/images/uniform/whiting.jpg diff --git a/modules/rudi/images/uniform/williams.jpg b/modules/rudi/images/uniform/williams.jpg Binary files differnew file mode 100644 index 0000000..016f082 --- /dev/null +++ b/modules/rudi/images/uniform/williams.jpg diff --git a/modules/rudi/images/uniform/wubbena.jpg b/modules/rudi/images/uniform/wubbena.jpg Binary files differnew file mode 100644 index 0000000..ab77965 --- /dev/null +++ b/modules/rudi/images/uniform/wubbena.jpg diff --git a/modules/rudi/images/uniform/young.jpg b/modules/rudi/images/uniform/young.jpg Binary files differnew file mode 100644 index 0000000..9d08f83 --- /dev/null +++ b/modules/rudi/images/uniform/young.jpg diff --git a/modules/rudi/images/units/2ndPlatoon.gif b/modules/rudi/images/units/2ndPlatoon.gif Binary files differnew file mode 100644 index 0000000..e42b0e6 --- /dev/null +++ b/modules/rudi/images/units/2ndPlatoon.gif diff --git a/modules/rudi/images/units/BCT.jpg b/modules/rudi/images/units/BCT.jpg Binary files differnew file mode 100644 index 0000000..d667f5d --- /dev/null +++ b/modules/rudi/images/units/BCT.jpg diff --git a/modules/rudi/images/units/HQ.gif b/modules/rudi/images/units/HQ.gif Binary files differnew file mode 100644 index 0000000..741d389 --- /dev/null +++ b/modules/rudi/images/units/HQ.gif 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 Binary files differnew file mode 100644 index 0000000..8aefa39 --- /dev/null +++ b/modules/rudi/images/units/rocky.gif diff --git a/modules/rudi/images/weapons/M16a4.jpg b/modules/rudi/images/weapons/M16a4.jpg Binary files differnew file mode 100644 index 0000000..44a1323 --- /dev/null +++ b/modules/rudi/images/weapons/M16a4.jpg diff --git a/modules/rudi/images/weapons/M203-1.jpg b/modules/rudi/images/weapons/M203-1.jpg Binary files differnew file mode 100644 index 0000000..2deaadb --- /dev/null +++ b/modules/rudi/images/weapons/M203-1.jpg diff --git a/modules/rudi/images/weapons/M21.jpg b/modules/rudi/images/weapons/M21.jpg Binary files differnew file mode 100644 index 0000000..ffa1a92 --- /dev/null +++ b/modules/rudi/images/weapons/M21.jpg diff --git a/modules/rudi/images/weapons/M249.jpg b/modules/rudi/images/weapons/M249.jpg Binary files differnew file mode 100644 index 0000000..72bac7c --- /dev/null +++ b/modules/rudi/images/weapons/M249.jpg diff --git a/modules/rudi/images/weapons/M9.jpg b/modules/rudi/images/weapons/M9.jpg Binary files differnew file mode 100644 index 0000000..21434c0 --- /dev/null +++ b/modules/rudi/images/weapons/M9.jpg diff --git a/modules/rudi/images/weapons/USP.jpg b/modules/rudi/images/weapons/USP.jpg Binary files differnew file mode 100644 index 0000000..43b3d64 --- /dev/null +++ b/modules/rudi/images/weapons/USP.jpg 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 Binary files differnew file mode 100644 index 0000000..b04c3c1 --- /dev/null +++ b/modules/rudi/images/weapons/m14.jpg diff --git a/modules/rudi/images/weapons/m40a3.jpg b/modules/rudi/images/weapons/m40a3.jpg Binary files differnew file mode 100644 index 0000000..ca8966e --- /dev/null +++ b/modules/rudi/images/weapons/m40a3.jpg diff --git a/modules/rudi/images/weapons/m4a1.jpg b/modules/rudi/images/weapons/m4a1.jpg Binary files differnew file mode 100644 index 0000000..5b52fa4 --- /dev/null +++ b/modules/rudi/images/weapons/m4a1.jpg diff --git a/modules/rudi/images/weapons/m67-grenade.jpg b/modules/rudi/images/weapons/m67-grenade.jpg Binary files differnew file mode 100644 index 0000000..5e40c8c --- /dev/null +++ b/modules/rudi/images/weapons/m67-grenade.jpg diff --git a/modules/rudi/images/weapons/m84.jpg b/modules/rudi/images/weapons/m84.jpg Binary files differnew file mode 100644 index 0000000..6f8ae31 --- /dev/null +++ b/modules/rudi/images/weapons/m84.jpg 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&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 ' '; + } + } + ?> + </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} </td> + <td style=\"text-align:left;\">{$award->description} </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> </td> + <td align='center' class="rudi"><?php //echo $award->name; ?> </td> + <td align='left'><?php //echo wordwrap($award->description,80,"<br/>"); ?> </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&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); ?> </td> +</tr> + +<tr> + <th class="header">Notes</th> +</tr> + +<tr> + <td style="text-align:left;"><?php echo bbcode_format($drills->manifest->notes); ?> </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; ?> </td> + <td class="rudi"><?php echo $pRating; ?> </td> + <td class="rudi"><?php echo $iRating; ?> </td> + <td class="rudi"><?php echo ($member->excusal ? "Yes" : "No"); ?> </td> + <td class="rudi"><?php echo $this->evalData($member->excusal_reason); ?> </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"> </th> +<th class="header">Date</th> +</tr> + +<?php foreach($drills->manifest as $drill): ?> +<tr> + <td class="rudi"><a href="?load=rudi&show=drills&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> </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; ?>" /> </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; ?>" /> </center></td> + </tr> + <tr> + <td><center><img src="modules/rudi/images/flags/<?php echo $member->country_image; ?>" /> </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); ?> </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> "; + ?> + </td> + </tr> + <tr> + <th class="header" scope="row">Status</th> + <td class="info"><?php echo $this->evalData($member->status); ?> </td> + <th class="header">Position</th> + <td class="info"><?php echo $this->evalData($member->position); ?> </td> + </tr> + <tr> + <th class="header" scope="row">Unit</th> + <td class="info"><?php echo $this->evalData($member->unit_name); ?> </td> + <th class="header">Weapon</th> + <td class="info"><?php echo $this->evalData($member->weapon_name); ?> </td> + </tr> + <tr> + <th class="header" scope="row">Platoon</th> + <td class="info"><?php echo $this->evalData($member->platoon_name); ?> </td> + <th class="header" scope="row">Enlisted</th> + <td class="info"><?php echo $this->evalData($member->enlist_date); ?> </td> + </tr> + <tr> + <th class="header" scope="row">Squad</th> + <td class="info"><?php echo $this->evalData($member->squad_name); ?> </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); ?> </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); ?> </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); ?> </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); ?> </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; ?> </td> + </tr> + </table> + + + + <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 </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)); ?> </th> + <td><?php echo $record->record_note; ?> </td> + </tr> + <?php endforeach; ?> + <?php endif; ?> + </tr> + </table> + + + + <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 </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)); ?> </th> + <td ><?php echo $this->evalData($record->award_name); ?> </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; ?> </td> + </tr> + <?php endforeach; ?> + <?php endif; ?> + </tr> + </table> + + + + <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 </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)); ?> </th> + <td><a href="<?php echo $record->website; ?>"><?php echo $record->name; ?></a> </td> + <td><?php echo $record->status; ?> </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}"; ?>" /> </td> + <td><?php echo $rank->longname; ?> </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> </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(); + +?> |