public static function get($id) { global $db; $query = "SELECT * FROM `student_leaves_of_absence` where `id`=" . $db->qstr($id); $result = $db->GetRow($query); if ($result) { $fr = LeaveOfAbsence::fromArray($result); return $fr; } }
public static function get(User $user) { global $db; $user_id = $user->getID(); $query = "SELECT * FROM `student_leaves_of_absence` WHERE `user_id` = " . $db->qstr($user_id); $results = $db->getAll($query); $frs = array(); if ($results) { foreach ($results as $result) { $fr = LeaveOfAbsence::fromArray($result); $frs[] = $fr; } return new self($frs); } }
public function __construct($user, $member) { // leadership notifications if ($user->role > 1) { // expired or pending leaves of absence if (LeaveOfAbsence::count_expired($member->game_id) > 0 || LeaveOfAbsence::count_pending($member->game_id) > 0) { array_push($this->messages, "<div class='alert alert-warning'><i class='fa fa-clock-o fa-lg'></i> There are leaves of absence that require your attention <a href='manage/leaves-of-absence' class='alert-link'>Manage Leaves of Absence</a></div>"); } } // division CO / XO if ($user->role > 2) { if (count(Division::findUnassigned($member->game_id))) { array_push($this->messages, "<div class=\"alert alert-warning\"><i class=\"fa fa-exclamation-circle\"></i> Your division has unassigned members. Visit your division page to resolve this.</div>"); } } if (!User::isValidated()) { array_push($this->messages, "<div class='alert alert-info'><i class='fa fa-envelope fa-lg'></i> Your account email has not been verified. <a href='#' class='alert-link send-email-validation' data-email='{$user->email}'>Send Validation</a></div>"); } }
public function generate() { // header $division_structure = "[table='align:center,width: {$this->info_width}']"; $division_structure .= "[tr][td]"; // banner $division_structure .= "[center][img]http://puu.sh/kGjU9/4f331d1a99.jpg[/img][/center]\r\n"; /** * ------division leaders----- */ $division_structure .= "\r\n\r\n[center][size=5][color={$this->div_name_color}][b][i][u]Division Leaders[/u][/i][/b][/color][/size][/center]\r\n"; $division_structure .= "[center][size=4]"; $division_leaders = Division::findDivisionLeaders($this->game_id); foreach ($division_leaders as $player) { $player_name = Rank::convert($player->rank_id)->abbr . " " . $player->forum_name; $aod_url = Member::createAODlink(array('member_id' => $player->member_id, 'forum_name' => $player_name, 'color' => $this->division_leaders_color)); $division_structure .= "{$aod_url} - {$player->position_desc}\r\n"; } $division_structure .= "[/size][/center]\r\n\r\n"; /** * -----general sergeants----- */ $division_structure .= "[center][size=3][color={$this->platoon_pos_color}]General Sergeants[/color]\r\n"; $general_sergeants = Division::findGeneralSergeants($this->game_id); foreach ($general_sergeants as $player) { $player_name = Rank::convert($player->rank_id)->abbr . " " . $player->forum_name; $aod_url = Member::createAODlink(array('member_id' => $player->member_id, 'forum_name' => $player_name)); $division_structure .= "{$aod_url}\r\n"; } $division_structure .= "[/size][/center]"; $division_structure .= "[/td][/tr][/table]"; /** * ---------platoons---------- */ $division_structure .= "\r\n\r\n[table='align:center,width: {$this->players_width}']"; $platoons = $this->platoons; $i = 1; foreach ($platoons as $platoon) { $countMembers = Platoon::countPlatoon($platoon->id); if ($i == 1) { $division_structure .= "[tr]"; $division_structure .= "[td]"; } else { $division_structure .= "[td]"; } $division_structure .= "[size=5]{$platoon->name}[/size]\r\n\r\n"; // Legion Commander $player = Member::findByMemberId($platoon->leader_id); // is a Legion Commander assigned? if ($platoon->leader_id != 0) { $player_name = Rank::convert($player->rank_id)->abbr . " " . $player->forum_name; $aod_url = Member::createAODlink(array('member_id' => $player->member_id, 'forum_name' => $player_name, 'color' => $this->platoon_leaders_color)); $division_structure .= "[size=3][color={$this->platoon_pos_color}]Legion Commander[/color]\r\n{$aod_url}[/size]\r\n\r\n"; } else { $division_structure .= "[size=3][color={$this->platoon_pos_color}]Legion Commander[/color]\r\n[color={$this->platoon_leaders_color}]TBA[/color][/size]\r\n\r\n"; } // Regimental Leaders $squads = Squad::findAll($this->game_id, $platoon->id); foreach ($squads as $squad) { if ($squad->leader_id != 0) { $squad_leader = Member::findById($squad->leader_id); $player_name = Rank::convert($squad_leader->rank_id)->abbr . " " . $squad_leader->forum_name; $aod_url = Member::createAODlink(array('member_id' => $squad_leader->member_id, 'forum_name' => $player_name, 'color' => $this->squad_leaders_color)); $division_structure .= "[size=3][color={$this->platoon_pos_color}]Regimental Leader[/color]\r\n{$aod_url}[/size]\r\n\r\n"; $division_structure .= "[size=1]"; // direct recruits $recruits = arrayToObject(Member::findRecruits($squad_leader->member_id, $squad_leader->platoon_id, $squad->id, true)); if (count((array) $recruits)) { $division_structure .= "[list=1]"; foreach ($recruits as $player) { $player_name = Rank::convert($player->rank_id)->abbr . " " . $player->forum_name; $aod_url = Member::createAODlink(array('member_id' => $player->member_id, 'forum_name' => $player_name)); $division_structure .= "[*]{$aod_url}\r\n"; } $division_structure .= "[/list]"; } } else { $division_structure .= "[size=3][color={$this->platoon_pos_color}]Regimental Leader[/color]\r\n[color={$this->squad_leaders_color}]TBA[/color][/size]\r\n"; $division_structure .= "[size=1]"; } $division_structure .= "\r\n"; // squad members $squadMembers = arrayToObject(Squad::findSquadMembers($squad->id, true, $squad_leader->member_id)); if (count((array) $squadMembers)) { foreach ($squadMembers as $player) { $player_name = Rank::convert($player->rank_id)->abbr . " " . $player->forum_name; $aod_url = Member::createAODlink(array('member_id' => $player->member_id, 'forum_name' => $player_name)); $division_structure .= "{$aod_url}\r\n"; } } $division_structure .= "[/size]\r\n"; } $division_structure .= "\r\n\r\n"; if ($i % $this->num_columns == 0) { $division_structure .= "[/td][/tr][tr]"; } $division_structure .= "[/td]"; $i++; } // end last platoon $division_structure .= "[/tr][/table]\r\n\r\n"; /** * --------part timers-------- */ $i = 1; // header $division_structure .= "\r\n[table='align:center,width: {$this->info_width}']"; $division_structure .= "[tr][td]\r\n[center][size=3][color={$this->platoon_pos_color}][b]Part Time Members[/b][/color][/size][/center][/td][/tr]"; $division_structure .= "[/table]\r\n\r\n"; // players $division_structure .= "[table='align:center,width: {$this->info_width}']"; $division_structure .= "[tr][td]"; $partTimers = PartTime::find_all($this->game_id); foreach ($partTimers as $player) { if ($i % 20 == 0) { $division_structure .= "[/td][td]"; } $aod_url = Member::createAODlink(array('member_id' => $player->member_id, 'forum_name' => "AOD_" . $player->forum_name)); $division_structure .= "{$aod_url}\r\n"; $i++; } $division_structure .= "[/td]"; $division_structure .= "[/tr][/table]\r\n\r\n"; /** * -----------LOAS------------ */ if (count((array) LeaveOfAbsence::find_all($this->game_id))) { $i = 1; // header $division_structure .= "\r\n[table='align:center,width: {$this->info_width}']"; $division_structure .= "[tr][td]\r\n[center][size=3][color={$this->platoon_pos_color}][b]Leaves of Absence[/b][/color][/size][/center][/td][/tr]"; $division_structure .= "[/table]\r\n\r\n"; // players $division_structure .= "[table='align:center,width: {$this->info_width}']"; $loas = LeaveOfAbsence::find_all($this->game_id); foreach ($loas as $player) { $date_end = strtotime($player->date_end) < strtotime('now') ? "[COLOR='#FF0000']Expired " . formatTime(strtotime($player->date_end)) . "[/COLOR]" : date("M d, Y", strtotime($player->date_end)); $profile = Member::findByMemberId($player->member_id); $aod_url = Member::createAODlink(array('member_id' => $player->member_id, 'forum_name' => "AOD_" . $profile->forum_name)); $division_structure .= "[tr][td]{$aod_url}[/td][td]{$date_end}[/td][td]{$player->reason}[/td][/tr]"; $i++; } $division_structure .= "[/table]"; } $this->content = $division_structure; }
public static function isOnLeave($member_id) { $params = LeaveOfAbsence::hasLOA($member_id); if (count($params)) { return true; } else { return false; } }
public function generate() { // header $division_structure = "[table='width: {$this->info_width}']"; $division_structure .= "[tr][td]"; // banner $division_structure .= "[center][img]http://i.imgur.com/iWpjGZG.png[/img][/center]\r\n"; /** * ------division leaders----- */ $division_structure .= "\r\n\r\n[center][size=5][color={$this->div_name_color}][b][i][u]Division Leaders[/u][/i][/b][/color][/size][/center]\r\n"; $division_structure .= "[center][size=4]"; $division_leaders = Division::findDivisionLeaders($this->game_id); foreach ($division_leaders as $leader) { $leader_name = Rank::convert($leader->rank_id)->abbr . " " . $leader->forum_name; $memberHandle = MemberHandle::findHandle($leader->id, $this->division->primary_handle); $leader->handle = $memberHandle->handle_value; $aod_url = "[url=" . CLANAOD . $leader->member_id . "]"; $bl_url = "[url=" . $memberHandle->url . $leader->handle . "][BL][/url]"; $division_structure .= "{$aod_url}[color={$this->division_leaders_color}]{$leader_name}[/url] {$bl_url}[/color] - {$leader->position_desc}\r\n"; } $division_structure .= "[/size][/center]\r\n\r\n"; /** * -----general sergeants----- */ $genSgts = Division::findGeneralSergeants($this->game_id); $division_structure .= "[center][size=3][color={$this->platoon_pos_color}]General Sergeants[/color]\r\n"; foreach ($genSgts as $sgt) { $sgt_name = Rank::convert($sgt->rank_id)->abbr . " " . $sgt->forum_name; $memberHandle = MemberHandle::findHandle($sgt->id, $this->division->primary_handle); $sgt->handle = $memberHandle->handle_value; $aod_url = "[url=" . CLANAOD . $sgt->member_id . "]"; $bl_url = "[url=" . $memberHandle->url . $sgt->handle . "][BL][/url]"; $division_structure .= "{$aod_url}{$sgt_name}[/url] {$bl_url}\r\n"; } $division_structure .= "[/size][/center]"; $division_structure .= "[/td][/tr][/table]"; /** * ---------platoons---------- */ $division_structure .= "\r\n\r\n[table='width: {$this->players_width}']"; $platoons = $this->platoons; $i = 1; foreach ($platoons as $platoon) { $countMembers = Platoon::countPlatoon($platoon->id); if ($i == 1) { $division_structure .= "[tr]"; $division_structure .= "[td]"; } else { $division_structure .= "[td]"; } $division_structure .= "[size=5][color={$this->platoon_num_color}]" . ordsuffix($i) . " Platoon[/color][/size] \r\n[i][size=3]{$platoon->name} [/size][/i]\r\n\r\n"; // platoon leaders $leader = Member::findByMemberId($platoon->leader_id); if ($platoon->leader_id != 0) { $memberHandle = MemberHandle::findHandle($leader->id, $this->division->primary_handle); $leader->handle = $memberHandle->handle_value; $aod_url = "[url=" . CLANAOD . $leader->member_id . "]"; $bl_url = "[url=" . $memberHandle->url . $leader->handle . "][BL][/url]"; $leader_name = Rank::convert($leader->rank_id)->abbr . " " . ucwords($leader->forum_name); $division_structure .= "{$aod_url}[size=3][color={$this->platoon_pos_color}]Platoon Leader[/color]\r\n[color={$this->platoon_leaders_color}]{$leader_name}[/color][/url] {$bl_url}[/size]\r\n\r\n"; } else { $division_structure .= "[size=3][color={$this->platoon_pos_color}]Platoon Leader[/color]\r\n[color={$this->platoon_leaders_color}]TBA[/color][/size]\r\n\r\n"; } // squad leaders $squads = Squad::findAll($this->game_id, $platoon->id); foreach ($squads as $squad) { if ($squad->leader_id != 0) { $leader = Member::findById($squad->leader_id); $memberHandle = MemberHandle::findHandle($leader->id, $this->division->primary_handle); $leader->handle = $memberHandle->handle_value; $aod_url = "[url=" . CLANAOD . $leader->member_id . "]"; $bl_url = "[url=" . $memberHandle->url . $leader->handle . "][BL][/url]"; $division_structure .= "[size=3][color={$this->platoon_pos_color}]Squad Leader[/color]\r\n{$aod_url}[color={$this->squad_leaders_color}]" . Rank::convert($leader->rank_id)->abbr . " {$leader->forum_name}[/color][/url] {$bl_url}[/size]\r\n\r\n"; $division_structure .= "[size=1]"; // direct recruits $recruits = arrayToObject(Member::findRecruits($leader->member_id, $leader->platoon_id, $squad->id, true)); if (count((array) $recruits)) { $division_structure .= "[list=1]"; foreach ($recruits as $recruit) { $memberHandle = MemberHandle::findHandle($recruit->id, $this->division->primary_handle); // does member have a member handle? if (count((array) $memberHandle)) { $recruit->handle = $memberHandle->handle_value; $bl_url = "[url=" . $memberHandle->url . $recruit->handle . "][BL][/url]"; $aod_url = "[url=" . CLANAOD . $recruit->member_id . "]"; $division_structure .= "[*]{$aod_url}" . Rank::convert($recruit->rank_id)->abbr . " {$recruit->forum_name}[/url]"; $division_structure .= "{$bl_url}\r\n"; } else { $division_structure .= " [color=red]XX[/color]\r\n"; } } $division_structure .= "[/list]"; } } else { $division_structure .= "[size=3][color={$this->platoon_pos_color}]Squad Leader[/color]\r\n[color={$this->squad_leaders_color}]TBA[/color][/size]\r\n"; $division_structure .= "[size=1]"; } $division_structure .= "\r\n"; // squad members $squadMembers = arrayToObject(Squad::findSquadMembers($squad->id, true, $leader->member_id)); if (count((array) $squadMembers)) { foreach ($squadMembers as $player) { $memberHandle = MemberHandle::findHandle($player->id, $this->division->primary_handle); $player->handle = $memberHandle->handle_value; $aod_url = "[url=" . CLANAOD . $player->member_id . "]"; $bl_url = "[url=" . $memberHandle->url . $player->handle . "][BL][/url]"; $division_structure .= "{$aod_url}" . Rank::convert($player->rank_id)->abbr . " {$player->forum_name}[/url] {$bl_url}\r\n"; } } $division_structure .= "[/size]\r\n"; } $division_structure .= "\r\n\r\n"; if ($i % $this->num_columns == 0) { $division_structure .= "[/td][/tr][tr]"; } $division_structure .= "[/td]"; $i++; } // end last platoon $division_structure .= "[/tr][/table]\r\n\r\n"; /** * --------part timers-------- */ $i = 1; // header $division_structure .= "\r\n[table='width: {$this->info_width}']"; $division_structure .= "[tr][td]\r\n[center][size=3][color={$this->platoon_pos_color}][b]Part Time Members[/b][/color][/size][/center][/td][/tr]"; $division_structure .= "[/table]\r\n\r\n"; // players $division_structure .= "[table='width: {$this->info_width}']"; $division_structure .= "[tr][td]"; $partTimers = PartTime::find_all($this->game_id); foreach ($partTimers as $player) { if ($i % 20 == 0) { $division_structure .= "[/td][td]"; } $bl_url = "[url=" . BATTLELOG . $player->ingame_alias . "][BL][/url]"; $aod_url = "[url=" . CLANAOD . $player->member_id . "]"; $division_structure .= "{$aod_url}AOD_{$player->forum_name}[/url] {$bl_url}\r\n"; $i++; } $division_structure .= "[/td]"; $division_structure .= "[/tr][/table]\r\n\r\n"; /** * -----------LOAS------------ */ $i = 1; // header $division_structure .= "\r\n[table='width: {$this->info_width}']"; $division_structure .= "[tr][td]\r\n[center][size=3][color={$this->platoon_pos_color}][b]Leaves of Absence[/b][/color][/size][/center][/td][/tr]"; $division_structure .= "[/table]\r\n\r\n"; // players $division_structure .= "[table='width: {$this->info_width}']"; $loas = LeaveOfAbsence::find_all($this->game_id); foreach ($loas as $player) { $date_end = strtotime($player->date_end) < strtotime('now') ? "[COLOR='#FF0000']Expired " . formatTime(strtotime($player->date_end)) . "[/COLOR]" : date("M d, Y", strtotime($player->date_end)); $aod_url = "[url=" . CLANAOD . $player->member_id . "]"; $profile = Member::findByMemberId($player->member_id); $division_structure .= "[tr][td]{$aod_url}" . Member::findForumName($profile->member_id) . "[/url][/td][td]{$date_end}[/td][td]{$player->reason}[/td][/tr]"; $i++; } $division_structure .= "[/table]"; $this->content = $division_structure; }
public static function _updateLoa() { $user = User::find(intval($_SESSION['userid'])); $member = Member::find(intval($_SESSION['memberid'])); if (isset($_POST['remove']) || isset($_POST['approve'])) { if ($user->role < 2) { $data = array('success' => false, 'message' => "You are not authorized to perform that action."); } else { $loa = isset($_POST['loa_id']) ? LeaveOfAbsence::findById($_POST['loa_id']) : null; if (isset($_POST['remove'])) { $revoked = LeaveOfAbsence::delete($loa->id); UserAction::create(array('type_id' => 8, 'date' => date("Y-m-d H:i:s"), 'user_id' => $member->member_id, 'target_id' => $loa->member_id)); $data = array('success' => true, 'message' => "Leave of absence successfully removed."); } else { if (isset($_POST['approve'])) { if ($member->member_id == $loa->member_id) { $data = array('success' => false, 'message' => "You can't approve your own leave of absence!"); } else { $approved = LeaveOfAbsence::approve($loa->id, $member->member_id); UserAction::create(array('type_id' => 7, 'date' => date("Y-m-d H:i:s"), 'user_id' => $member->member_id, 'target_id' => $loa->member_id)); $data = array('success' => true, 'message' => "Leave of absence successfully approved."); } } } } } else { $date = date('Y-m-d', strtotime($_POST['date'])); $reason = $_POST['reason']; $comment = htmlentities($_POST['comment'], ENT_QUOTES); $name = Member::findForumName($_POST['id']); if ($name) { if (strtotime($date) > strtotime('now')) { if (LeaveOfAbsence::exists($member->member_id)) { $data = array('success' => false, 'message' => "This member already has an LOA in place!"); } else { LeaveOfAbsence::add($_POST['id'], $date, $reason, $comment, $member->game_id); UserAction::create(array('type_id' => 11, 'date' => date("Y-m-d H:i:s"), 'user_id' => $_POST['id'])); $data = array('success' => true, 'Request successfully submitted!', 'id' => $_POST['id'], 'name' => $name, 'date' => date('M d, Y', strtotime($date)), 'reason' => $reason); } } else { $data = array('success' => false, 'message' => "Date cannot be before today's date."); } } else { $data = array('success' => false, 'message' => 'The member id you provided appears to be invalid.'); } } echo json_encode($data); }
<table class='table table-striped table-hover' id='loas'> <thead> <tr> <th>Member name</th> <th class="hidden-xs">Reason</th> <th class="hidden-xs hidden-sm">End Date</th> <th class='text-center'>Status</th> </tr> </thead> <tbody> <?php if (count(LeaveOfAbsence::count_active($division->id))) { ?> <?php foreach (LeaveOfAbsence::find_all($division->id) as $player) { ?> <?php $expired = strtotime(date("M d, Y", strtotime($player->date_end))) < strtotime('now') ? true : false; ?> <?php $comment = !empty($player->comment) ? htmlentities($player->comment, ENT_QUOTES) : "Not available"; ?> <?php $date_end = date("M d, Y", strtotime($player->date_end)); ?> <?php $approved_by = !empty($player->approved_by) ? Member::findForumName($player->approved_by) : "Not available"; ?>
/** * @param $division_structure * @return string */ private function getLoas($division_structure) { if (count((array) LeaveOfAbsence::find_all($this->game_id))) { $i = 1; // header $division_structure .= "\r\n\r\n\r\n[table='align:center,width: 500']"; $division_structure .= "[tr][td]\r\n[center][size=3][b]Leaves of Absence[/b][/size][/center][/td][/tr]"; $division_structure .= "[/table]\r\n\r\n"; // players $division_structure .= "[table='align:center,width: 500']"; $loas = LeaveOfAbsence::find_all($this->game_id); foreach ($loas as $player) { $date_end = strtotime($player->date_end) < strtotime('now') ? "[COLOR='#FF0000']Expired " . formatTime(strtotime($player->date_end)) . "[/COLOR]" : date("M d, Y", strtotime($player->date_end)); $profile = Member::findByMemberId($player->member_id); $aod_url = Member::createAODlink(array('member_id' => $player->member_id, 'forum_name' => "AOD_" . $profile->forum_name)); $division_structure .= "[tr][td]{$aod_url}[/td][td]{$date_end}[/td][td]{$player->reason}[/td][/tr]"; $i++; } $division_structure .= "[/table]"; return $division_structure; } return $division_structure; }
function process_mspr_details($translator, $section) { $action = clean_input(isset($_POST['action']) ? $_POST['action'] : "", array("lower")); if (!$action) { return; } switch ($action) { case 'add': $user_id = clean_input(isset($_POST['user_id']) ? $_POST['user_id'] : 0, array("int")); $details = clean_input(isset($_POST['details']) ? $_POST['details'] : "", array("notags")); if (!$user_id) { add_error($translator->translate("mspr_invalid_user_info")); } if (!$details) { add_error($translator->translate("mspr_no_details")); } if (!has_error()) { switch ($section) { case 'leaves_of_absence': LeaveOfAbsence::create($user_id, $details); break; case 'disciplinary_actions': DisciplinaryAction::create($user_id, $details); break; case 'formal_remediation': FormalRemediation::create($user_id, $details); break; } } break; case 'remove': $entity_id = clean_input(isset($_POST['entity_id']) ? $_POST['entity_id'] : 0, array("int")); if (!$entity_id) { add_error($translator->translate("mspr_no_entity")); } if (!has_error()) { switch ($section) { case 'leaves_of_absence': $entity = LeaveOfAbsence::get($entity_id); break; case 'disciplinary_actions': $entity = DisciplinaryAction::get($entity_id); break; case 'formal_remediation': $entity = FormalRemediation::get($entity_id); break; } if (!$entity) { add_error($translator->translate("mspr_invalid_entity")); } if (!has_error()) { $entity->delete(); } } break; } }