summaryrefslogtreecommitdiff
path: root/includes/system/tree.inc
blob: c3cc5c4aeaad15f9bf5a99805febb4f2fd020d27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php global $system; global $systemCommonName; global $systemID; $title = "System tree · " . $systemCommonName; require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/header.inc';

$members = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$systemID/members.json"), true);
$members = scoreOrder($members, $systemID);

$subsystems = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/subsystems/$systemID.json"), true) ?? [];

function getMember(string $id) {
    global $systemID;
    global $members;

    $member = null;

    foreach ($members as $m) {
        if ($m["id"] === $id) $member = $m;
    }

    return $member;
}

function memberHasSubsystem(array $member) {
    global $subsystems;
    $has = false;

    foreach ($subsystems as $subsystem) {
        if ($subsystem["source_type"] === "member" && $subsystem["source"] === $member["id"]) {
            $has = true;
        }
    }

    return $has;
}

function memberPartOfSubsystem(array $member) {
    global $subsystems;
    $is = false;

    foreach ($subsystems as $subsystem) {
        if (in_array($member["id"], $subsystem["members"])) {
            $is = true;
        }
    }

    return $is;
}

function getMemberSubsystem(array $member) {
    global $subsystems;
    $subsystem = null;

    foreach ($subsystems as $ss) {
        if ($ss["source_type"] === "member" && $ss["source"] === $member["id"]) {
            $subsystem = $ss;
        }
    }

    return $subsystem;
}

?>

    <br>
    <div class="container" id="page-content">
        <h2>System tree for the <?= $systemCommonName ?></h2>
        <a class="tree-root member-link" href="/<?= $system ?>">
            <img src="/assets/uploads/<?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/" . $system . ".png") ? $system : "" ?>.png" style="width:24px;"> <span style="vertical-align: middle;"><?= $systemCommonName ?></span></a>
        <?php $first = true; ?>
        <?php foreach ($subsystems as $subsystem): if ($subsystem["source_type"] === "trait"): ?>
        <div class="tree-l0">
            <div class="tree-l0-separator<?= $first ? " tree-first-separator" : "" ?>">&nbsp;</div>
            <div class="tree-inner">
                <a class="member-link" href="/<?= $systemID === "gdapd" ? "raindrops" : "cloudburst" ?>/-/subsystem/<?= $subsystem["source"] ?>">
                    <img src="/assets/uploads/ss-<?= $subsystem["source"] ?>.png" style="width:24px;border-radius:5px;"> <span style="vertical-align: middle;"><?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/subsystems/$systemID-$subsystem[source].json") ? json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/subsystems/$systemID-$subsystem[source].json"), true)["name"] : $subsystem["source"] ?></span>
                </a>
            </div>
            <?php $ssfirst = true; foreach ($subsystem["members"] as $ssm): $ssmember = getMember($ssm); ?>
                <div class="tree-l1">
                    <div class="tree-l0-separator">&nbsp;</div>
                    <div class="tree-l1-separator<?= $ssfirst ? " tree-first-separator" : "" ?>">&nbsp;</div>
                    <div class="tree-inner">
                        <a class="member-link" href="/<?= $ssmember["name"] ?>">
                            <img src="<?= getAsset($systemID, $ssmember["id"], "heads") ?>" style="width:24px;"> <span style="vertical-align: middle;"><?= $ssmember["display_name"] ?? $ssmember["name"] ?></span>
                        </a>
                    </div>
                </div>
            <?php $ssfirst = false; endforeach; ?>
        </div>
        <?php $first = false; endif; endforeach; ?>
        <?php foreach ($members as $member): if (!memberPartOfSubsystem($member)): ?>
        <div class="tree-l0">
            <div class="tree-l0-separator<?= $first ? " tree-first-separator" : "" ?>">&nbsp;</div>
            <div class="tree-inner">
                <a class="member-link" href="/<?= $member["name"] ?>">
                    <img src="<?= getAsset($systemID, $member["id"], "heads") ?>" style="width:24px;"> <span style="vertical-align: middle;"><?= $member["display_name"] ?? $member["name"] ?></span>
                </a>
            </div>
            <?php if (memberHasSubsystem($member)): ?>
                <?php $ssfirst = true; foreach (getMemberSubsystem($member)["members"] as $ssm): $ssmember = getMember($ssm); ?>
                    <div class="tree-l1">
                        <div class="tree-l0-separator">&nbsp;</div>
                        <div class="tree-l1-separator<?= $ssfirst ? " tree-first-separator" : "" ?>">&nbsp;</div>
                        <div class="tree-inner">
                            <a class="member-link" href="/<?= $ssmember["name"] ?>">
                                <img src="<?= getAsset($systemID, $ssmember["id"], "heads") ?>" style="width:24px;"> <span style="vertical-align: middle;"><?= $ssmember["display_name"] ?? $ssmember["name"] ?></span>
                            </a>
                        </div>
                    </div>
                <?php $ssfirst = false;endforeach; ?>
            <?php endif; ?>
        </div>
        <?php $first = false; endif; endforeach; ?>
    </div>

<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/footer.inc'; ?>