.
*/
define('RUDI_PROFILE_SMALL', true);
define('RUDI_PROFILE_BIG', false);
define('RUDI_ROSTER_RESERVES', 12);
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 s.title, s.date, s.status, u1.name, u1.website, s.war_id, s.home_score, s.visit_score "
."FROM rudi_combat_record AS c "
."RIGHT OUTER JOIN rudi_war_stats AS s ON s.war_id = c.war_id "
."RIGHT OUTER JOIN rudi_war_units AS u1 ON u1.visitor_id = s.visit_unit_id "
."WHERE c.member_id = %d ORDER BY s.date DESC ",
(int)$member_id);
$result = $this->db->Query($query);
$data = $this->db->FetchObject($result,'CombatRecord');
return $data;
}
/**
* RUDI_Common::getUnitArr()
*
* @param member_id $mID
* @return an array of the member's units orders from Team - Unit with name, id, & leader
*/
function getUnitArr($mID){
$unitArr = array();
$result = $this->db->Query("SELECT * FROM `rudi_unit_members` WHERE `member_id` = $mID LIMIT 1");
$member = $this->db->FetchRow($result);
$curUnit = $member['cunit_id'];
$i = 0;
$subOf = $curUnit;
while($subOf != 0){
$unitID = $subOf;
$result = $this->db->Query("SELECT * FROM `rudi_combat_units` WHERE `unit_id` = $subOf LIMIT 1");
$data = $this->db->fetch($result);
foreach($data as $units){
$subOf = $units['detachment'];
$leader = $units['leader_id'];
$name = $units['name'];
}
$unitArr[$i]['unit_id'] = $unitID;
$unitArr[$i]['leader_id'] = $leader;
$unitArr[$i]['name'] = $name;
// echo "Unit ID: ".$unitArr[$i]['unit_id']."
Name: ".$unitArr[$i]['name']."
Leader ID: ".$unitArr[$i]['leader_id']."
";
$i++;
}
return array_reverse($unitArr);
}
/**
* 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::getSuperior($unit_id)
*
* @param mixed $unit_id
* @return
*/
protected function getSuperior($id)
{
$leader = NULL;
$unit_id = $this->data[$id]->unit_id;
$result = $this->db->Query("SELECT `leader_id`, `detachment` FROM `rudi_combat_units` WHERE `unit_id` = '$unit_id' LIMIT 1");
$row = $this->db->FetchRow($result);
$detachment = $row['detachment'];
$leader_id = $row['leader_id'];
if($leader_id == $id){
$leader_id = 0;
}
while($leader_id == 0){
if($detachment == 0){
break;
}
$result = $this->db->Query("SELECT `leader_id`, `detachment` FROM `rudi_combat_units` WHERE `unit_id` = '$detachment' LIMIT 1");
$row = $this->db->FetchRow($result);
$detachment = $row['detachment'];
$leader_id = $row['leader_id'];
}
if($leader_id != 0){
$result = $this->db->Query("SELECT CONCAT(r.shortname, ' ', m.last_name) AS name FROM rudi_unit_members AS m LEFT OUTER JOIN rudi_ranks AS r ON r.rank_id = m.rank_id WHERE m.member_id = '$leader_id' LIMIT 1");
$row = $this->db->FetchRow($result);
$leader->name = $row['name'];
$leader->leader_id = $leader_id;
}
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){
$num = 0;
foreach($this->data as $member){
if($member->unit_id == $unit_id && $member->status_id < 3){
decho($member);
if($num%2==0){
echo "