<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/init.inc"; global $title; global $isLoggedIn; global $lang; global $pages; require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/header.inc'; $travelling = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/travelling/travelling.json"), true); ?> <br> <div class="container"> <div id="page-content"> <h2>Members by last fronted</h2> <?php $members = [ ...array_map(function ($i) { $system = "ynmuc"; $i["_lastFronted"] = -1; $id = $i["id"]; $memberData = $i; $fronters = array_map(function ($item) { return $item["id"]; }, json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/fronters.json"), true)["members"]); if (in_array($id, $fronters)) { $i["_lastFronted"] = time(); } else { $switches = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/switches.json"), true); $thisMember = array_filter($switches, function ($item) use ($memberData) { return in_array($memberData["id"], $item["members"]); }); $thisMember = array_values($thisMember); $frontingEnd = null; if (count($thisMember) > 0) { $thisIndex = array_search($thisMember[0], $switches); $frontingStart = $thisMember[0]; $frontingEnd = $switches[$thisIndex - 1]; } if ($frontingEnd !== null && isset($frontingStart)) { $i["_lastFronted"] = strtotime($frontingEnd["timestamp"]); } } return $i; }, array_values(array_filter(scoreOrderGlobal(), function ($i) { return $i["_system"] === "ynmuc" && !$i["_metadata"]["persecutor"]; }))), ...array_map(function ($i) { $system = "gdapd"; $i["_lastFronted"] = -1; $id = $i["id"]; $memberData = $i; $fronters = array_map(function ($item) { return $item["id"]; }, json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/fronters.json"), true)["members"]); if (in_array($id, $fronters)) { $i["_lastFronted"] = time(); } else { $switches = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$system/switches.json"), true); $thisMember = array_filter($switches, function ($item) use ($memberData) { return in_array($memberData["id"], $item["members"]); }); $thisMember = array_values($thisMember); $frontingEnd = null; if (count($thisMember) > 0) { $thisIndex = array_search($thisMember[0], $switches); $frontingStart = $thisMember[0]; $frontingEnd = $switches[$thisIndex - 1]; } if ($frontingEnd !== null && isset($frontingStart)) { $i["_lastFronted"] = strtotime($frontingEnd["timestamp"]); } } return $i; }, array_values(array_filter(scoreOrderGlobal(), function ($i) { return $i["_system"] === "gdapd" && !$i["_metadata"]["persecutor"]; }))) ]; uasort($members, function ($a, $b) { return $b["_lastFronted"] - $a["_lastFronted"]; }); $members = array_reverse($members); foreach ($members as $member): if ($member["_lastFronted"] !== -1 && $member["_lastFronted"] !== time()): ?> <div class="relation" style="background-color:<?php if ($member["_metadata"]["less_frequent"]): ?><?php if ($member["_lastFronted"] > time() - (86400 * 21)): ?>rgba(255, 255, 255, .1)<?php else: ?><?php if ($member["_lastFronted"] > time() - (86400 * 37)): ?>rgba(255, 227, 0, 0.17)<?php else: ?>rgba(255,55,55,0.17)<?php endif; ?>;<?php endif; ?><?php else: ?><?php if ($member["_lastFronted"] > time() - (86400 * 21)): ?>rgba(255, 255, 255, .1)<?php else: ?><?php if ($member["_lastFronted"] > time() - (86400 * 30)): ?>rgba(255, 227, 0, 0.17)<?php else: ?>rgba(255,55,55,0.17)<?php endif; ?>;<?php endif; ?><?php endif; ?>;margin-bottom:10px;padding:10px;border-radius:10px;display:grid;grid-template-columns: 1fr 2fr max-content;<?php if ($travelling[$member['id']]["travelling"]): ?>opacity: 0.75;<?php endif; ?>"> <a class="relation-intro" style="background-color:rgba(255, 255, 255, .05);border-right:1px solid rgba(255, 255, 255, .1);margin:-10px;padding:10px;border-top-left-radius:10px;border-bottom-left-radius:10px;color: white;display:flex;align-items:center;text-decoration: none;" href="/<?= $member["name"] ?>"> <img src="<?= getAsset($member['system'], $member["id"], "heads") ?>" style="width:24px;"> <?= $member["display_name"] ?? $member["name"] ?> <span style="display: inline-block;margin-left: auto;"> <?php if ($member["_metadata"]["less_frequent"]): ?> <span class="badge bg-success rounded-pill">Less</span> <?php endif; ?> <?php if ($member["_metadata"]["shared_memory"] !== 2): ?> <span class="badge text-black bg-warning rounded-pill">Memory</span> <?php endif; ?> <?php if ($travelling[$member['id']]["travelling"]): ?> <span class="badge text-white bg-secondary rounded-pill">Travelling</span> <?php endif; ?> <?php if ($member["_lastFronted"] < time() - (86400 * 30)): ?> <span class="badge text-white bg-danger rounded-pill">Must front</span> <?php endif; ?> </span> </a> <div class="relation-item" style="display:flex;align-items:center;margin-left:10px;padding:0 20px;"> <?php if ($member["_lastFronted"] === -1): ?> Never fronted <?php else: ?> Last fronted <?= timeAgo($member["_lastFronted"]) ?><?php if ($member["_lastFronted"] !== time()): ?> (<?= date('l j F Y', $member["_lastFronted"]) ?>)<?php endif; ?> <?php endif; ?> </div> </div> <?php endif; endforeach; ?> <style> @media (max-width: 991px) { .relation { grid-template-columns: 1fr !important; } .relation-intro { text-align: center; border-bottom-left-radius: 0 !important; border-top-right-radius: 10px; border-right: none !important; border-bottom: 1px solid rgba(255, 255, 255, .1); } .relation-item-marefriends { margin-top: 20px !important; } .relation-item { margin-top: 10px; margin-left: 0 !important; padding: 10px 0 !important; text-align: center; } } </style> </div> <?php require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/footer.inc'; ?>