summaryrefslogtreecommitdiff
path: root/includes/rainbow.inc
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-10-10 20:51:39 +0200
committerMinteck <contact@minteck.org>2022-10-10 20:51:39 +0200
commit108525534c28013cfe1897c30e4565f9893f3766 (patch)
treedd3e5132971f96ab5f05e7f3f8f6dbbf379a19bd /includes/rainbow.inc
parent2162eaa06f7e4764eb3dcfe130ec2c711d0c62ab (diff)
downloadpluralconnect-108525534c28013cfe1897c30e4565f9893f3766.tar.gz
pluralconnect-108525534c28013cfe1897c30e4565f9893f3766.tar.bz2
pluralconnect-108525534c28013cfe1897c30e4565f9893f3766.zip
Update
Diffstat (limited to 'includes/rainbow.inc')
-rw-r--r--includes/rainbow.inc57
1 files changed, 57 insertions, 0 deletions
diff --git a/includes/rainbow.inc b/includes/rainbow.inc
new file mode 100644
index 0000000..470f288
--- /dev/null
+++ b/includes/rainbow.inc
@@ -0,0 +1,57 @@
+<?php
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/functions.inc";
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/bitset.inc";
+require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/score.inc";
+
+function rainbow(): array {
+ $members = scoreOrderGlobal();
+ $data = [];
+
+ foreach ($members as $member) {
+ $data[$member["name"]] = [
+ "_data" => $member
+ ];
+
+ if (isset($member["color"])) {
+ $data[$member["name"]]["rgb"] = [
+ hexdec(substr($member["color"], 0, 2)),
+ hexdec(substr($member["color"], 2, 2)),
+ hexdec(substr($member["color"], 4, 2))
+ ];
+ $data[$member["name"]]["hsl"] = rgbToHsl(
+ $data[$member["name"]]["rgb"][0],
+ $data[$member["name"]]["rgb"][1],
+ $data[$member["name"]]["rgb"][2]
+ );
+ } else {
+ $data[$member["name"]]["rgb"] = [255, 255, 255];
+ $data[$member["name"]]["hsl"] = rgbToHsl(255, 255, 255);
+ }
+ }
+
+ return $data;
+}
+
+function getMembersByColor(): array {
+ $members = rainbow();
+ uasort($members, function ($a, $b) {
+ return $a['hsl'][0] - $b['hsl'][0];
+ });
+ $members = [
+ ...array_filter($members, function ($i) {
+ return $i['hsl'][2] < 0.9 || $i['hsl'][1] > 0.2;
+ }),
+ ...array_filter($members, function ($i) {
+ return $i['hsl'][2] >= 0.9 || $i['hsl'][1] <= 0.2;
+ })
+ ];
+
+ $sorted = [];
+ foreach ($members as $data) {
+ $data["_data"]["hue"] = $data["hsl"][0];
+ $sorted[] = $data["_data"];
+ }
+
+ return $sorted;
+} \ No newline at end of file