From 30303a3ad0d0f31d93c25f42bfd10d70e8277b72 Mon Sep 17 00:00:00 2001 From: Minteck Date: Sat, 10 Dec 2022 22:27:08 +0100 Subject: Update --- Authentication/PublicCallback/index.php | 50 +--- Authentication/PublicStart/index.php | 6 +- api/camera.php | 6 + api/pluralkit-integration.php | 30 +++ app.php | 9 +- app/banner.js | 32 +-- app/fronters/ponies/exudo.png | Bin 0 -> 5822 bytes app/fronters/ponies/qcemf.png | Bin 0 -> 7049 bytes app/fronters/ponies/ughya.png | Bin 0 -> 6228 bytes app/fronters/profiles/auvwc.png | Bin 504733 -> 504733 bytes app/fronters/profiles/bbrig.png | Bin 148262 -> 148262 bytes app/fronters/profiles/ckqsw.png | Bin 1559833 -> 1559833 bytes app/fronters/profiles/dogwu.png | Bin 2055 -> 2055 bytes app/fronters/profiles/eebmh.png | Bin 570974 -> 570974 bytes app/fronters/profiles/erefx.png | Bin 826530 -> 826530 bytes app/fronters/profiles/erknz.png | Bin 56915 -> 56915 bytes app/fronters/profiles/exnwc.png | Bin 226883 -> 226883 bytes app/fronters/profiles/exudo.png | Bin 0 -> 298183 bytes app/fronters/profiles/fdaay.png | Bin 181311 -> 181311 bytes app/fronters/profiles/gevde.png | Bin 218853 -> 218853 bytes app/fronters/profiles/gfhsr.png | Bin 2283131 -> 2283131 bytes app/fronters/profiles/ghrby.png | Bin 167497 -> 167497 bytes app/fronters/profiles/hpwyq.png | Bin 2770 -> 2770 bytes app/fronters/profiles/irxyh.png | Bin 26543 -> 26543 bytes app/fronters/profiles/jnbae.png | Bin 60223 -> 60223 bytes app/fronters/profiles/khsbb.png | Bin 249236 -> 249236 bytes app/fronters/profiles/kkhbw.png | Bin 40300 -> 40300 bytes app/fronters/profiles/lllfw.png | Bin 560601 -> 560601 bytes app/fronters/profiles/lzlaq.png | Bin 26543 -> 26543 bytes app/fronters/profiles/mglyq.png | Bin 91476 -> 91476 bytes app/fronters/profiles/mhnqy.png | Bin 27452 -> 27452 bytes app/fronters/profiles/mvaws.png | Bin 473421 -> 473421 bytes app/fronters/profiles/pabmo.png | Bin 180390 -> 180390 bytes app/fronters/profiles/ptgor.png | Bin 70342 -> 70342 bytes app/fronters/profiles/qbzxm.png | Bin 2843 -> 2843 bytes app/fronters/profiles/qcemf.png | Bin 0 -> 370856 bytes app/fronters/profiles/qraku.png | Bin 45898 -> 45898 bytes app/fronters/profiles/rdstg.png | Bin 16881 -> 16881 bytes app/fronters/profiles/rirgf.png | Bin 156974 -> 156974 bytes app/fronters/profiles/rpjok.png | Bin 1542918 -> 1542918 bytes app/fronters/profiles/sbxze.png | Bin 50554 -> 50554 bytes app/fronters/profiles/sehke.png | Bin 1947 -> 1947 bytes app/fronters/profiles/sjuao.png | Bin 1045570 -> 1045570 bytes app/fronters/profiles/tfbob.png | Bin 14049 -> 14049 bytes app/fronters/profiles/tjrhc.png | Bin 40300 -> 40300 bytes app/fronters/profiles/ufadt.png | Bin 339704 -> 339704 bytes app/fronters/profiles/ughya.png | Bin 0 -> 774245 bytes app/fronters/profiles/vncoa.png | Bin 46475 -> 46475 bytes app/fronters/profiles/vvsxf.png | Bin 61010 -> 61010 bytes app/fronters/profiles/xbvwt.png | Bin 70342 -> 70342 bytes app/fronters/profiles/xcjhj.png | Bin 107053 -> 107053 bytes app/fronters/profiles/yhbrc.png | Bin 494559 -> 494559 bytes app/fronters/profiles/zajrk.png | Bin 2097 -> 2097 bytes app/fronters/profiles/zdtsg.png | Bin 3046 -> 1628 bytes app/fronters/profiles/zhtzs.png | Bin 673763 -> 673763 bytes app/fronters/profiles/ztfjz.png | Bin 184686 -> 184686 bytes app/fronters/profiles/zzise.png | Bin 69145 -> 69145 bytes app/sw.js | 9 + assets/icons/age.svg | 1 + assets/icons/badges/week.svg | 17 ++ assets/icons/banner.svg | 1 + assets/icons/color.svg | 1 + assets/icons/ponytown.svg | 1 + assets/icons/profiles.svg | 1 + assets/icons/reference.svg | 1 + assets/logo/equestria.png | Bin 0 -> 97176 bytes assets/uploads/pt-luna.png | Bin 0 -> 5609 bytes assets/uploads/pt-nightmaremoon.png | Bin 0 -> 4667 bytes assets/uploads/pt-opaline.png | Bin 0 -> 4472 bytes genqqx.js | 29 ++ i18n/en.json | 308 +++++++++++++++++++++ i18n/fr.json | 308 +++++++++++++++++++++ i18n/qqx.json | 314 ++++++++++++++++++++++ includes/ai.inc | 311 ---------------------- includes/assets.inc | 1 - includes/banner.inc | 83 ++++-- includes/bitset.inc | 6 +- includes/details.inc | 33 +-- includes/footer.inc | 27 +- includes/fullbanner.inc | 55 ++-- includes/functions.inc | 55 +++- includes/header.inc | 4 +- includes/init.inc | 3 +- includes/language.inc | 14 + includes/logo.inc | 110 +++++++- includes/member.inc | 25 +- includes/member/hierarchy.inc | 179 ------------- includes/member/tree.inc | 8 - includes/metadata.inc | 105 ++++++++ includes/navbar.inc | 8 +- includes/navigation.inc | 167 ++++++++---- includes/pages.json | 227 ++++++++++++---- includes/pane.inc | 33 ++- includes/profiles.inc | 97 +++++++ includes/rainbow.inc | 13 +- includes/score.inc | 13 +- includes/search.inc | 26 +- includes/short.inc | 6 +- includes/subsysbanner.inc | 11 +- includes/sysbanner.inc | 37 +-- includes/system/compare.inc | 138 +++++----- includes/system/history.inc | 46 +++- includes/system/species.inc | 16 +- includes/system/subsystem.inc | 2 +- includes/system/tree.inc | 14 +- includes/titlebar.inc | 81 +++--- includes/travelling.inc | 8 +- pages/about.inc | 2 +- pages/actions.inc | 2 +- pages/alphabet.inc | 4 +- pages/bitset.inc | 150 +++++++---- pages/byfront.inc | 11 +- pages/computers.inc | 2 +- pages/dashboard.inc | 2 +- pages/debug.inc | 68 ++--- pages/demo.inc | 129 +-------- pages/disclaimers.inc | 4 +- pages/docs.inc | 2 +- pages/edit-private.inc | 2 +- pages/edit.inc | 2 +- pages/emergency.inc | 2 +- pages/fronting.inc | 2 +- pages/government.inc | 32 +-- pages/home.inc | 63 ++--- pages/login.inc | 31 +-- pages/metadata.inc | 123 +++++++++ pages/nicknames.inc | 2 +- pages/page.inc | 8 +- pages/parser.inc | 259 +----------------- pages/pleasure.inc | 2 +- pages/prefix.inc | 455 +------------------------------- pages/profiles.inc | 104 ++++++++ pages/relations.inc | 24 +- pages/rules-old.inc | 2 +- pages/rules.inc | 2 +- pages/score.inc | 2 +- pages/splitting.inc | 2 +- pages/stats.inc | 2 +- pages/terminology.inc | 4 +- pages/together.inc | 2 +- pages/travelling.inc | 112 +++++--- pages/wakeup.inc | 2 +- updatepages.js | 17 ++ 143 files changed, 2645 insertions(+), 2075 deletions(-) create mode 100644 api/camera.php create mode 100644 app/fronters/ponies/exudo.png create mode 100644 app/fronters/ponies/qcemf.png create mode 100644 app/fronters/ponies/ughya.png create mode 100644 app/fronters/profiles/exudo.png create mode 100644 app/fronters/profiles/qcemf.png create mode 100644 app/fronters/profiles/ughya.png create mode 100644 assets/icons/age.svg create mode 100644 assets/icons/badges/week.svg create mode 100644 assets/icons/banner.svg create mode 100644 assets/icons/color.svg create mode 100644 assets/icons/ponytown.svg create mode 100644 assets/icons/profiles.svg create mode 100644 assets/icons/reference.svg create mode 100644 assets/logo/equestria.png create mode 100644 assets/uploads/pt-luna.png create mode 100644 assets/uploads/pt-nightmaremoon.png create mode 100644 assets/uploads/pt-opaline.png create mode 100644 genqqx.js create mode 100644 i18n/en.json create mode 100644 i18n/fr.json create mode 100644 i18n/qqx.json delete mode 100644 includes/ai.inc create mode 100644 includes/language.inc delete mode 100644 includes/member/hierarchy.inc delete mode 100644 includes/member/tree.inc create mode 100644 includes/metadata.inc create mode 100644 includes/profiles.inc create mode 100644 pages/metadata.inc create mode 100644 pages/profiles.inc create mode 100644 updatepages.js diff --git a/Authentication/PublicCallback/index.php b/Authentication/PublicCallback/index.php index 54980b1..7f6a11b 100644 --- a/Authentication/PublicCallback/index.php +++ b/Authentication/PublicCallback/index.php @@ -1,51 +1,3 @@ 0) { + file_get_contents('https://' . $ntfy["server"] . '/public-switches-fr', false, stream_context_create([ + 'http' => [ + 'method' => 'POST', + 'header' => + "Content-Type: text/plain\r\n" . + "Title: 🐴 $name vient de switch\r\n" . + "Priority: default\r\n" . + "Tags: switch\r\n" . + "Actions: view, Voir sur Cold Haze, https://fr.equestria.horse/" . $fronters["members"][0]["name"] . "/, clear=true\r\n" . + "Authorization: Basic " . base64_encode($ntfy["user"] . ":" . $ntfy["password"]), + 'content' => ($fronters["members"][0]["display_name"] ?? $fronters["members"][0]["name"]) . " est désormais au front" + ] + ])); + } else { + file_get_contents('https://' . $ntfy["server"] . '/public-switches-fr', false, stream_context_create([ + 'http' => [ + 'method' => 'POST', + 'header' => + "Content-Type: text/plain\r\n" . + "Title: 🐴 $name vient de switch\r\n" . + "Priority: default\r\n" . + "Tags: switch\r\n" . + "Actions: view, Voir sur Cold Haze, https://fr.equestria.horse/, clear=true\r\n" . + "Authorization: Basic " . base64_encode($ntfy["user"] . ":" . $ntfy["password"]), + 'content' => "Le poney de trait est désormais au front" + ] + ])); + } } else { $topic = "public-switches-cloudburst"; } diff --git a/app.php b/app.php index 3408ef7..d4ed154 100644 --- a/app.php +++ b/app.php @@ -1,9 +1,6 @@ ${data['id'] === "unknown" ? ` - Unknown member (${data['system']['name']} System) + ${french ? "Membre inconnu" : "Unknown member"} (${data['system']['name']} System) ` : data['id'] === "fusion" ? (data['name'] === "fusion" ? ` - Multiple merged members + ${french ? "Plusieurs membres fusionnés" : "Multiple merged members"} ` : data['name']) : data['name']} @@ -128,26 +128,26 @@ async function refreshBanner(offline, french) { ${data['badges'].length === 0 ? " " : ""} -
+
${french ? `Préfixe${data['prefixes'].length > 1 ? 's' : ''} ` : `Prefix${data['prefixes'].length > 1 ? 'es' : ''}`}:
${data['prefixes'].join(', ')}
- + ${french ? "" : ` ${french ? "Pronoms :" : "Pronouns:"}
${data['id'] === "fusion" ? "she/her" : data['pronouns']} -
+
`} ${!data['median'] && data['id'] !== "unknown" ? ` ${data["id"] === "fusion" ? ` - Fronting since:
+ ${french ? "Fronte depuis " : "Fronting since"}:
${data['last_fronted'] ? ` ${data['last_fronted']['now'] ? ` ${data['last_fronted']['relative']}
  ` : ` - Not fronting
  + ${french ? "Pas au front" : "Not fronting"}
  `} - ` : `Not fronting
 `}` : ` + ` : `${french ? "Pas au front" : "Not fronting"}
 `}` : ` ${french ? "Front :" : "Last fronted:"}
${data['last_fronted'] ? ` ${data['last_fronted']['now'] ? ` @@ -162,26 +162,26 @@ async function refreshBanner(offline, french) { ` : ''} ${data['id'] !== "fusion" ? ` - ${data['id'] === "unknown" ? "Species: best to ask" : ` - Species: + ${data['id'] === "unknown" ? (french ? "Espèce : préférez demander" : "Species: best to ask") : ` + ${french ? "Espèce :" : "Species:"} ${data['species'].map(species => ` ${species['name']} `).join("")}`} ` : ''} ${data['id'] !== "fusion" ? ` - System: - ${data['system']['name']} + ${french ? "Position :" : "Location:"} + ${data['system']['page'] ? ` ${data['system']['name']}` : ` ${data['system']['name']}`} ${data['system']['subsystem'] ? ` -
Subsystem: ${data['system']['subsystem']['name']} - ` : data['system']['temporary'] ? '
(temporary)' : ''} +
${french ? "Sous-système :" : "Subsystem:"} ${data['system']['subsystem']['name']} + ` : data['system']['temporary'] ? (french ? '
(temporaire)' : '
(temporary)') : ''}
` : ''}
${data['id'] !== "unknown" && data['id'] !== "fusion" ? `
- ${french ? (data['relations']['marefriends'].length > 1 ? 'Partenaires ' : 'Partenaire ') : `Marefriend${data['relations']['marefriends'].length > 1 ? 's' : ''}`}: ${data['relations']['marefriends'].length > 1 ? '
' : ''} + ${french ? (data['relations']['marefriends'].length > 1 ? 'Copines ' : 'Copine ') : `Marefriend${data['relations']['marefriends'].length > 1 ? 's' : ''}`}: ${data['relations']['marefriends'].length > 1 ? '
' : ''} ${data['relations']['marefriends'].map(relation => ` `).join(``)} ${data['relations']['marefriends'].length === 0 ? '-' : ''} @@ -194,7 +194,7 @@ async function refreshBanner(offline, french) {
${data['little'] ? ` - ${french ? (data['relations']['sisters'].length > 1 ? 'Caretakers ' : 'Caretaker ') : `Caretaker${data['relations']['caretakers'].length > 1 ? 's' : ''}`}: ${data['relations']['caretakers'].length > 1 ? '
' : ''} + ${french ? (data['relations']['sisters'].length > 1 ? 'Gardiens ' : 'Gardien ') : `Caretaker${data['relations']['caretakers'].length > 1 ? 's' : ''}`}: ${data['relations']['caretakers'].length > 1 ? '
' : ''} ${data['relations']['caretakers'].map(relation => ` `).join(``)} ${data['relations']['caretakers'].length === 0 ? '-' : ''} diff --git a/app/fronters/ponies/exudo.png b/app/fronters/ponies/exudo.png new file mode 100644 index 0000000..858d7e1 Binary files /dev/null and b/app/fronters/ponies/exudo.png differ diff --git a/app/fronters/ponies/qcemf.png b/app/fronters/ponies/qcemf.png new file mode 100644 index 0000000..ce17c8b Binary files /dev/null and b/app/fronters/ponies/qcemf.png differ diff --git a/app/fronters/ponies/ughya.png b/app/fronters/ponies/ughya.png new file mode 100644 index 0000000..64cf8f8 Binary files /dev/null and b/app/fronters/ponies/ughya.png differ diff --git a/app/fronters/profiles/auvwc.png b/app/fronters/profiles/auvwc.png index 38bb8d5..818d389 100644 Binary files a/app/fronters/profiles/auvwc.png and b/app/fronters/profiles/auvwc.png differ diff --git a/app/fronters/profiles/bbrig.png b/app/fronters/profiles/bbrig.png index a874921..d2681bc 100644 Binary files a/app/fronters/profiles/bbrig.png and b/app/fronters/profiles/bbrig.png differ diff --git a/app/fronters/profiles/ckqsw.png b/app/fronters/profiles/ckqsw.png index 8a74ec0..3006642 100644 Binary files a/app/fronters/profiles/ckqsw.png and b/app/fronters/profiles/ckqsw.png differ diff --git a/app/fronters/profiles/dogwu.png b/app/fronters/profiles/dogwu.png index 731f0f7..b6559f5 100644 Binary files a/app/fronters/profiles/dogwu.png and b/app/fronters/profiles/dogwu.png differ diff --git a/app/fronters/profiles/eebmh.png b/app/fronters/profiles/eebmh.png index e037bf8..a759b56 100644 Binary files a/app/fronters/profiles/eebmh.png and b/app/fronters/profiles/eebmh.png differ diff --git a/app/fronters/profiles/erefx.png b/app/fronters/profiles/erefx.png index 06e26b2..7bc4806 100644 Binary files a/app/fronters/profiles/erefx.png and b/app/fronters/profiles/erefx.png differ diff --git a/app/fronters/profiles/erknz.png b/app/fronters/profiles/erknz.png index 5d6bb7f..2078744 100644 Binary files a/app/fronters/profiles/erknz.png and b/app/fronters/profiles/erknz.png differ diff --git a/app/fronters/profiles/exnwc.png b/app/fronters/profiles/exnwc.png index 465d7bf..9d47e6c 100644 Binary files a/app/fronters/profiles/exnwc.png and b/app/fronters/profiles/exnwc.png differ diff --git a/app/fronters/profiles/exudo.png b/app/fronters/profiles/exudo.png new file mode 100644 index 0000000..76c987c Binary files /dev/null and b/app/fronters/profiles/exudo.png differ diff --git a/app/fronters/profiles/fdaay.png b/app/fronters/profiles/fdaay.png index 03ce335..2444822 100644 Binary files a/app/fronters/profiles/fdaay.png and b/app/fronters/profiles/fdaay.png differ diff --git a/app/fronters/profiles/gevde.png b/app/fronters/profiles/gevde.png index 2d0d73a..37675e7 100644 Binary files a/app/fronters/profiles/gevde.png and b/app/fronters/profiles/gevde.png differ diff --git a/app/fronters/profiles/gfhsr.png b/app/fronters/profiles/gfhsr.png index 09daf26..a0fe18d 100644 Binary files a/app/fronters/profiles/gfhsr.png and b/app/fronters/profiles/gfhsr.png differ diff --git a/app/fronters/profiles/ghrby.png b/app/fronters/profiles/ghrby.png index a1e3231..97d0d1b 100644 Binary files a/app/fronters/profiles/ghrby.png and b/app/fronters/profiles/ghrby.png differ diff --git a/app/fronters/profiles/hpwyq.png b/app/fronters/profiles/hpwyq.png index 1df8bf1..cb6d7b0 100644 Binary files a/app/fronters/profiles/hpwyq.png and b/app/fronters/profiles/hpwyq.png differ diff --git a/app/fronters/profiles/irxyh.png b/app/fronters/profiles/irxyh.png index d4937ff..7c9577b 100644 Binary files a/app/fronters/profiles/irxyh.png and b/app/fronters/profiles/irxyh.png differ diff --git a/app/fronters/profiles/jnbae.png b/app/fronters/profiles/jnbae.png index 8b9d6f3..a06a031 100644 Binary files a/app/fronters/profiles/jnbae.png and b/app/fronters/profiles/jnbae.png differ diff --git a/app/fronters/profiles/khsbb.png b/app/fronters/profiles/khsbb.png index cdd2c7d..6d45bb9 100644 Binary files a/app/fronters/profiles/khsbb.png and b/app/fronters/profiles/khsbb.png differ diff --git a/app/fronters/profiles/kkhbw.png b/app/fronters/profiles/kkhbw.png index fa1a5ae..9822fe3 100644 Binary files a/app/fronters/profiles/kkhbw.png and b/app/fronters/profiles/kkhbw.png differ diff --git a/app/fronters/profiles/lllfw.png b/app/fronters/profiles/lllfw.png index 7e2e24b..889d471 100644 Binary files a/app/fronters/profiles/lllfw.png and b/app/fronters/profiles/lllfw.png differ diff --git a/app/fronters/profiles/lzlaq.png b/app/fronters/profiles/lzlaq.png index 85cffe4..297d756 100644 Binary files a/app/fronters/profiles/lzlaq.png and b/app/fronters/profiles/lzlaq.png differ diff --git a/app/fronters/profiles/mglyq.png b/app/fronters/profiles/mglyq.png index b29b2f6..71544d7 100644 Binary files a/app/fronters/profiles/mglyq.png and b/app/fronters/profiles/mglyq.png differ diff --git a/app/fronters/profiles/mhnqy.png b/app/fronters/profiles/mhnqy.png index c2c8248..370ca37 100644 Binary files a/app/fronters/profiles/mhnqy.png and b/app/fronters/profiles/mhnqy.png differ diff --git a/app/fronters/profiles/mvaws.png b/app/fronters/profiles/mvaws.png index 8c0dc21..5af3777 100644 Binary files a/app/fronters/profiles/mvaws.png and b/app/fronters/profiles/mvaws.png differ diff --git a/app/fronters/profiles/pabmo.png b/app/fronters/profiles/pabmo.png index 4794b04..5ad9dfc 100644 Binary files a/app/fronters/profiles/pabmo.png and b/app/fronters/profiles/pabmo.png differ diff --git a/app/fronters/profiles/ptgor.png b/app/fronters/profiles/ptgor.png index bc53c40..6e2bb89 100644 Binary files a/app/fronters/profiles/ptgor.png and b/app/fronters/profiles/ptgor.png differ diff --git a/app/fronters/profiles/qbzxm.png b/app/fronters/profiles/qbzxm.png index 14b167b..5478e33 100644 Binary files a/app/fronters/profiles/qbzxm.png and b/app/fronters/profiles/qbzxm.png differ diff --git a/app/fronters/profiles/qcemf.png b/app/fronters/profiles/qcemf.png new file mode 100644 index 0000000..fd99d2b Binary files /dev/null and b/app/fronters/profiles/qcemf.png differ diff --git a/app/fronters/profiles/qraku.png b/app/fronters/profiles/qraku.png index f75f702..fed1048 100644 Binary files a/app/fronters/profiles/qraku.png and b/app/fronters/profiles/qraku.png differ diff --git a/app/fronters/profiles/rdstg.png b/app/fronters/profiles/rdstg.png index 26c2939..08c94ff 100644 Binary files a/app/fronters/profiles/rdstg.png and b/app/fronters/profiles/rdstg.png differ diff --git a/app/fronters/profiles/rirgf.png b/app/fronters/profiles/rirgf.png index dc44de0..ecc0e18 100644 Binary files a/app/fronters/profiles/rirgf.png and b/app/fronters/profiles/rirgf.png differ diff --git a/app/fronters/profiles/rpjok.png b/app/fronters/profiles/rpjok.png index e77e62c..ca6970b 100644 Binary files a/app/fronters/profiles/rpjok.png and b/app/fronters/profiles/rpjok.png differ diff --git a/app/fronters/profiles/sbxze.png b/app/fronters/profiles/sbxze.png index 360562f..ee3cfbf 100644 Binary files a/app/fronters/profiles/sbxze.png and b/app/fronters/profiles/sbxze.png differ diff --git a/app/fronters/profiles/sehke.png b/app/fronters/profiles/sehke.png index 95e00cb..ac12f48 100644 Binary files a/app/fronters/profiles/sehke.png and b/app/fronters/profiles/sehke.png differ diff --git a/app/fronters/profiles/sjuao.png b/app/fronters/profiles/sjuao.png index e9ca5ba..39ae38e 100644 Binary files a/app/fronters/profiles/sjuao.png and b/app/fronters/profiles/sjuao.png differ diff --git a/app/fronters/profiles/tfbob.png b/app/fronters/profiles/tfbob.png index 27c24f1..913b60f 100644 Binary files a/app/fronters/profiles/tfbob.png and b/app/fronters/profiles/tfbob.png differ diff --git a/app/fronters/profiles/tjrhc.png b/app/fronters/profiles/tjrhc.png index 90501f5..e17fef7 100644 Binary files a/app/fronters/profiles/tjrhc.png and b/app/fronters/profiles/tjrhc.png differ diff --git a/app/fronters/profiles/ufadt.png b/app/fronters/profiles/ufadt.png index 421ad2f..c893102 100644 Binary files a/app/fronters/profiles/ufadt.png and b/app/fronters/profiles/ufadt.png differ diff --git a/app/fronters/profiles/ughya.png b/app/fronters/profiles/ughya.png new file mode 100644 index 0000000..2726a76 Binary files /dev/null and b/app/fronters/profiles/ughya.png differ diff --git a/app/fronters/profiles/vncoa.png b/app/fronters/profiles/vncoa.png index 0c6f3a3..9f97376 100644 Binary files a/app/fronters/profiles/vncoa.png and b/app/fronters/profiles/vncoa.png differ diff --git a/app/fronters/profiles/vvsxf.png b/app/fronters/profiles/vvsxf.png index 138b61e..c53ea62 100644 Binary files a/app/fronters/profiles/vvsxf.png and b/app/fronters/profiles/vvsxf.png differ diff --git a/app/fronters/profiles/xbvwt.png b/app/fronters/profiles/xbvwt.png index 31d0d87..b1774d2 100644 Binary files a/app/fronters/profiles/xbvwt.png and b/app/fronters/profiles/xbvwt.png differ diff --git a/app/fronters/profiles/xcjhj.png b/app/fronters/profiles/xcjhj.png index 387c16a..24318ae 100644 Binary files a/app/fronters/profiles/xcjhj.png and b/app/fronters/profiles/xcjhj.png differ diff --git a/app/fronters/profiles/yhbrc.png b/app/fronters/profiles/yhbrc.png index c5c8092..800b3b7 100644 Binary files a/app/fronters/profiles/yhbrc.png and b/app/fronters/profiles/yhbrc.png differ diff --git a/app/fronters/profiles/zajrk.png b/app/fronters/profiles/zajrk.png index 6209ab9..b6d5ca3 100644 Binary files a/app/fronters/profiles/zajrk.png and b/app/fronters/profiles/zajrk.png differ diff --git a/app/fronters/profiles/zdtsg.png b/app/fronters/profiles/zdtsg.png index 8826b75..b8e61a3 100644 Binary files a/app/fronters/profiles/zdtsg.png and b/app/fronters/profiles/zdtsg.png differ diff --git a/app/fronters/profiles/zhtzs.png b/app/fronters/profiles/zhtzs.png index 11ff9ec..fddb711 100644 Binary files a/app/fronters/profiles/zhtzs.png and b/app/fronters/profiles/zhtzs.png differ diff --git a/app/fronters/profiles/ztfjz.png b/app/fronters/profiles/ztfjz.png index 53db137..e766a35 100644 Binary files a/app/fronters/profiles/ztfjz.png and b/app/fronters/profiles/ztfjz.png differ diff --git a/app/fronters/profiles/zzise.png b/app/fronters/profiles/zzise.png index 5ce368f..88217e3 100644 Binary files a/app/fronters/profiles/zzise.png and b/app/fronters/profiles/zzise.png differ diff --git a/app/sw.js b/app/sw.js index 41f7e85..b97cb34 100644 --- a/app/sw.js +++ b/app/sw.js @@ -64,6 +64,7 @@ let filesToCache = [ "/app/fronters/ponies/erefx.png", "/app/fronters/ponies/erknz.png", "/app/fronters/ponies/exnwc.png", + "/app/fronters/ponies/exudo.png", "/app/fronters/ponies/fdaay.png", "/app/fronters/ponies/gevde.png", "/app/fronters/ponies/gfhsr.png", @@ -79,6 +80,7 @@ let filesToCache = [ "/app/fronters/ponies/nabky.png", "/app/fronters/ponies/pabmo.png", "/app/fronters/ponies/qbzxm.png", + "/app/fronters/ponies/qcemf.png", "/app/fronters/ponies/qraku.png", "/app/fronters/ponies/rirgf.png", "/app/fronters/ponies/rpjok.png", @@ -86,6 +88,7 @@ let filesToCache = [ "/app/fronters/ponies/sehke.png", "/app/fronters/ponies/tfbob.png", "/app/fronters/ponies/ufadt.png", + "/app/fronters/ponies/ughya.png", "/app/fronters/ponies/vncoa.png", "/app/fronters/ponies/vvsxf.png", "/app/fronters/ponies/xbvwt.png", @@ -109,6 +112,7 @@ let filesToCache = [ "/app/fronters/profiles/erknz.png", "/app/fronters/profiles/exidq.png", "/app/fronters/profiles/exnwc.png", + "/app/fronters/profiles/exudo.png", "/app/fronters/profiles/ezqym.png", "/app/fronters/profiles/ezvzp.png", "/app/fronters/profiles/famxl.png", @@ -146,6 +150,7 @@ let filesToCache = [ "/app/fronters/profiles/ptgor.png", "/app/fronters/profiles/ptgqh.png", "/app/fronters/profiles/qbzxm.png", + "/app/fronters/profiles/qcemf.png", "/app/fronters/profiles/qlsfo.png", "/app/fronters/profiles/qraku.png", "/app/fronters/profiles/qzbpf.png", @@ -169,6 +174,7 @@ let filesToCache = [ "/app/fronters/profiles/trefr.png", "/app/fronters/profiles/tviaq.png", "/app/fronters/profiles/ufadt.png", + "/app/fronters/profiles/ughya.png", "/app/fronters/profiles/uicxr.png", "/app/fronters/profiles/vahcl.png", "/app/fronters/profiles/vaxyy.png", @@ -231,10 +237,13 @@ let filesToCache = [ "/assets/uploads/pt-izzymoonbow.png", "/assets/uploads/pt-lavender.png", "/assets/uploads/pt-lilacbloom.png", + "/assets/uploads/pt-luna.png", "/assets/uploads/pt-mintygrape.png", "/assets/uploads/pt-mistybrightdawn.png", "/assets/uploads/pt-mistycloud.png", "/assets/uploads/pt-mossystorm.png", + "/assets/uploads/pt-nightmaremoon.png", + "/assets/uploads/pt-opaline.png", "/assets/uploads/pt-pipppetals.png", "/assets/uploads/pt-plushie.png", "/assets/uploads/pt-poseybloom.png", diff --git a/assets/icons/age.svg b/assets/icons/age.svg new file mode 100644 index 0000000..0286c15 --- /dev/null +++ b/assets/icons/age.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/badges/week.svg b/assets/icons/badges/week.svg new file mode 100644 index 0000000..e0fbc09 --- /dev/null +++ b/assets/icons/badges/week.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/assets/icons/banner.svg b/assets/icons/banner.svg new file mode 100644 index 0000000..ae786bf --- /dev/null +++ b/assets/icons/banner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/color.svg b/assets/icons/color.svg new file mode 100644 index 0000000..8cfce41 --- /dev/null +++ b/assets/icons/color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/ponytown.svg b/assets/icons/ponytown.svg new file mode 100644 index 0000000..cb9d7aa --- /dev/null +++ b/assets/icons/ponytown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/profiles.svg b/assets/icons/profiles.svg new file mode 100644 index 0000000..4c46935 --- /dev/null +++ b/assets/icons/profiles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/reference.svg b/assets/icons/reference.svg new file mode 100644 index 0000000..76e6ef0 --- /dev/null +++ b/assets/icons/reference.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/logo/equestria.png b/assets/logo/equestria.png new file mode 100644 index 0000000..aecab40 Binary files /dev/null and b/assets/logo/equestria.png differ diff --git a/assets/uploads/pt-luna.png b/assets/uploads/pt-luna.png new file mode 100644 index 0000000..804690a Binary files /dev/null and b/assets/uploads/pt-luna.png differ diff --git a/assets/uploads/pt-nightmaremoon.png b/assets/uploads/pt-nightmaremoon.png new file mode 100644 index 0000000..c6ffb3f Binary files /dev/null and b/assets/uploads/pt-nightmaremoon.png differ diff --git a/assets/uploads/pt-opaline.png b/assets/uploads/pt-opaline.png new file mode 100644 index 0000000..261f40d Binary files /dev/null and b/assets/uploads/pt-opaline.png differ diff --git a/genqqx.js b/genqqx.js new file mode 100644 index 0000000..a43c109 --- /dev/null +++ b/genqqx.js @@ -0,0 +1,29 @@ +let original = require('./i18n/en.json'); + +function replaceText(source, name) { + console.log(name); + + if (source instanceof Array) { + for (let index in source) { + if (typeof source[index] === "string") { + source[index] = name + ":" + index; + } else if (typeof source[index] === "object") { + source[index] = replaceText(source[index], name + ":" + index); + } + } + } else if (typeof source === "object") { + for (let itemName in source) { + if (typeof source[itemName] === "string") { + source[itemName] = (name + "_" + itemName).toUpperCase(); + } else if (typeof source[itemName] === "object") { + source[itemName] = replaceText(source[itemName], (name + "_" + itemName).toUpperCase()); + } + } + } + + return source; +} + +modified = replaceText(original, "lang"); +modified["_name"] = "en"; +require('fs').writeFileSync("./i18n/qqx.json", JSON.stringify(modified, null, 2)); \ No newline at end of file diff --git a/i18n/en.json b/i18n/en.json new file mode 100644 index 0000000..65ccfce --- /dev/null +++ b/i18n/en.json @@ -0,0 +1,308 @@ +{ + "_french": false, + "_name": "en", + "app": { + "page": "Page not found:", + "file": "File not found" + }, + "details": { + "food": "Food:", + "memory": "Shared memory:", + "food_states": [ + "Not needed", + "Not animals", + "Not meat", + "All" + ], + "memory_states": [ + "None", + "Partial", + "Full" + ] + }, + "footer": { + "copyright": "Equestria.dev Developers", + "update": "Data updated", + "separator": "", + "took": "took", + "failure": "reported 1 failure", + "failures": [ "reported ", " failures" ], + "no_failure": "no failures reported", + "no_update": "not updating" + }, + "fullbanner": { + "visit": [ + "is visiting the", + ", therefore %1 %2 currently not in the " + ] + }, + "member": { + "merge": "Multiple merged members", + "unknown": [ + "Hello there!", + "I'm currently not totally sure who I am (it's a thing that can happen with plurality), but I am using this pony as a temporary identity to stay calm and not panic while I figure out what is going on and who I am.", + "I can either be an existing headmate who cannot work out they are fronting (this can sometimes happen when one of us gets pushed out of front), multiple headmates blurring who cannot work out who we are, or a new pony trying to figure out their identity (this can sometimes take a while).", + "In all cases, feel free to ask!" + ], + "fusion": [ + "Hello there!", + "I'm the result of more than one pony temporarily merging together to the point they are unable to be told apart (this can be done for various reasons). We have not registered this switch for the \"Unknown\" member since this merge is made on purpose.", + "Below is the list of who is merged, we can be either from a single system or from different systems." + ], + "no_fusion": "No members are currently merged." + }, + "navigation": { + "login": "Not logged in", + "admin": "Administrator", + "apps": "Applications", + "debug": "Debugging", + "general": "Global", + "about": "About us", + "subsystems": "Subsystems", + "members": "Members", + "search": "Search in the website..." + }, + "search": { + "title": "Website Search", + "placeholder": "Start typing to search for something on the entire website.", + "categories": [ + "Ponies", + "Pages", + "Actions", + "Documents", + "Toys" + ], + "view": "View page" + }, + "subsystem": { + "fronter": "Fronter:", + "last": "Last fronter:", + "members": "Members:", + "parent": "Parent system:", + "intro": "You are viewing the page of a subsystem of the" + }, + "system": { + "fronter": "Fronter:", + "more": "More than one", + "with": "with", + "last": "Last fronter:", + "members": "Members:", + "traveller": "traveller", + "travellers": "travellers", + "switch": "Last switch:" + }, + "titlebar": { + "top": "Go back to top", + "debug": [ + "Reported failures", + "Processing times" + ], + "subsystem": "Parent system", + "member": "System" + }, + "compare": { + "title": "Compare members of the", + "member": [ + "Member", + "Member", + "Member", + "Member", + "Member", + "Mmbr." + ], + "species": [ + "Species", + "Species", + "Species", + "Species", + "Spec.", + "Spec." + ], + "relations": [ + "Relations", + "Relations", + "Relations", + "Relations", + "Relt.", + "Relt." + ], + "memory": [ + "Memory", + "Memory", + "Memory", + "Memory", + "Mem.", + "Mem." + ], + "fictive": [ + "Fictive", + "Fictive", + "Fictive", + "Fictive", + "Fic.", + "Fic." + ], + "little": [ + "Little", + "Little", + "Little", + "Little", + "Ltl.", + "Ltl." + ], + "protector": [ + "Protector", + "Protector", + "Protect.", + "Protect.", + "Prt.", + "Prt." + ], + "status": [ + "Marefriend", + "Sister", + "Caretaker" + ], + "state": [ + "Yes", + "Partial", + "No", + "Younger", + "Yes, but currently travelling" + ] + }, + "species": { + "earth": [ + "Robot earth pony", + "Earth pony plush", + "Earth pony", + "Earth ponies" + ], + "alicorn": [ + "Robot alicorn", + "Alicorn plush", + "Alicorn", + "Alicorns" + ], + "crystal": [ + "Robot crystal pony", + "Crystal pony plush", + "Crystal pony", + "Crystal ponies" + ], + "pegasus": [ + "Robot pegasus", + "Pegasus plush", + "Pegasus", + "Pegasi" + ], + "batpony": [ + "Robot bat pony", + "Bat pony plush", + "Bat pony", + "Bat ponies" + ], + "unicorn": [ + "Robot unicorn", + "Unicorn plush", + "Unicorn", + "Unicorns" + ] + }, + "history": { + "title": "Front history in the", + "timezone": "Times on this page are shown using your local timezone (%1). Days start at %2 (00:00 on UTC).", + "fallback": "Fallback pony" + }, + "species_compare": { + "title": "%1 members by species" + }, + "tree": { + "title": "System tree for the" + }, + "debug": { + "docs_cleanup": "Deleting scheduled documents", + "important_backup": "Differential backups", + "restore": "Failure protection", + "backups": "Encrypted off-site backups", + "calendar": "Google Calendar integration", + "version": "Version information", + "logo": "Website logo processing", + "favicons": "Favicons processing", + "assets": "External assets download", + "general": "General info about", + "members": "Members in the", + "fronters": "Current fronter(s) in the", + "switches": "Switch history from the", + "in": "in", + "unknown": "Unknown", + "images": "%1's images", + "description": "This page provides debugging information to troubleshoot unexpectedly long update times or reported failures.", + "warning": { + "title": "The data is not updated periodically anymore.", + "intro": "This can be due to multiple things:", + "list": [ + "the data updater has been disabled temporarily for maintenance;", + "the data updater cannot start on the server;", + "the server was down for an extended period of time" + ], + "admin": "If you are an administrator and think this is not normal, you may investigate the issue." + }, + "general_title": "General information", + "time": "Update date:", + "duration": "Total duration:", + "long": "Longest operation:", + "times": "Processing times", + "failures": "Reported failures", + "no_failure": "The data updater has not reported any update failure in the last run.", + "failure": "The following files have failed to update:" + }, + "government": { + "council": [ + "Systems Council", + "-" + ], + "head": [ + "H. S. O.", + "Head of System Operations", + "-" + ], + "protector1": [ + "P. P.", + "Primary Protector", + "-" + ], + "protectors": [ + "Protectors", + "-" + ] + }, + "home": { + "error": "Error:", + "intro": "ponies in 2 plural systems" + }, + "login": { + "title": "Login", + "maintenance": [ + "Login is temporarily disabled.", + "Login on this website has been temporarily disabled by the administrators for maintenance purposes." + ], + "select": "Select how you want to log in to", + "private": [ + "Equestria.dev Private Authentication", + "For website administrators, allows to change content and access private information.", + "Continue" + ] + }, + "page": { + "system": "Invalid system ID", + "page": "Page not found:" + }, + "relations": { + "title": "Relations", + "marefriends": "Marefriends:", + "no": "None", + "sisters": "Sisters:", + "caretakers": "Caretakers:" + } +} \ No newline at end of file diff --git a/i18n/fr.json b/i18n/fr.json new file mode 100644 index 0000000..65cc9ce --- /dev/null +++ b/i18n/fr.json @@ -0,0 +1,308 @@ +{ + "_french": true, + "_name": "fr", + "app": { + "page": "Page introuvable :", + "file": "Fichier introuvable" + }, + "details": { + "food": "Nourriture :", + "memory": "Mémoire :", + "food_states": [ + "Pas besoin", + "Pas d'animaux", + "Pas de viande", + "TOut" + ], + "memory_states": [ + "Pas partagée", + "Partiellement", + "Partagée" + ] + }, + "footer": { + "copyright": "Développeurs d'Equestria.dev", + "update": "Données mises à jour", + "separator": "", + "took": "cela à pris", + "failure": "1 échec signalé", + "failures": [ "", " échec signalé" ], + "no_failure": "aucun échec signalé", + "no_update": "ne se met pas à jour" + }, + "fullbanner": { + "visit": [ + "visite actuellement", + ", elle n'est donc actuellement pas dans " + ] + }, + "member": { + "merge": "Plusieurs membres fusionnés", + "unknown": [ + "Bonjour !", + "Je ne suis actuellement pas vraiment sure de qui je suis (c'est quelque chose qui peut arriver), mais j'utilise ce poney comme identité temporaire pour rester calme et ne pas paniquer pendant que je détermine ce qu'il se passe et qui je suis.", + "Je peux être soit un membre existant qui ne peut pas savoir qu'elle est au front (ça peut arriver quand l'un d'entre nous se fait pousser en dehors du front), plusieurs membres floutés qui ne peuvent pas déterminer qui ils sont, ou un nouveau membre essayant de trouver son identité (cela peut parfois prendre longtemps).", + "Dans tous les cas, n'hésitez pas à demander !" + ], + "fusion": [ + "Bonjour !", + "Je suis le résultat de plus d'un poney qui fusionnent temporairement ensemble au point qu'ils sont impossible d'être distingués (cela peut se produire pour des raisons variées). Nous n'avons pas enregistré ce switch avec le membre \"Inconnu\" car cette fusion est faite volontairement.", + "Ci-dessous se trouve la liste de qui est fusionné, nous pouvons être soit d'un seul et même système, soit de systèmes différents." + ], + "no_fusion": "Aucun membre n'est actuellement fusionné." + }, + "navigation": { + "login": "Pas connecté", + "admin": "Administrateur", + "apps": "Applications", + "debug": "Débogage", + "general": "Général", + "about": "À propos de nous", + "subsystems": "Sous-systèmes", + "members": "Membres", + "search": "Rechercher sur le site..." + }, + "search": { + "title": "Recherche sur le site", + "placeholder": "Commencez à taper pour rechercher quelque chose sur l'entièreté du site.", + "categories": [ + "Poneys", + "Pages", + "Actions", + "Documents", + "Jouets" + ], + "view": "Voir la page" + }, + "subsystem": { + "fronter": "Fronteuse :", + "last": "Front. préc. :", + "members": "Membres :", + "parent": "Système parent :", + "intro": "Vous lisez la page d'un sous-système de " + }, + "system": { + "fronter": "Fronteuse :", + "more": "Plus d'une", + "with": "avec", + "last": "Front. préc. :", + "members": "Membres :", + "traveller": "voyageur", + "travellers": "voyageurs", + "switch": "Dern. switch :" + }, + "titlebar": { + "top": "Retourner en haut", + "debug": [ + "Échecs signalés", + "Temps de traitement" + ], + "subsystem": "Système parent", + "member": "Système" + }, + "compare": { + "title": "Comparaison des membres de ", + "member": [ + "Membre", + "Membre", + "Membre", + "Membre", + "Membre", + "Memb." + ], + "species": [ + "Espèce", + "Espèce", + "Espèce", + "Espèce", + "Esp.", + "Esp." + ], + "relations": [ + "Relations", + "Relations", + "Relations", + "Relations", + "Relt.", + "Relt." + ], + "memory": [ + "Mémoire", + "Mémoire", + "Mémoire", + "Mémoire", + "Mém.", + "Mém." + ], + "fictive": [ + "Fictive", + "Fictive", + "Fictive", + "Fictive", + "Fic.", + "Fic." + ], + "little": [ + "Petite", + "Petite", + "Petite", + "Petite", + "Pt.", + "Ptt." + ], + "protector": [ + "Protectrice", + "Protectrice", + "Protect.", + "Protect.", + "Prt.", + "Prt." + ], + "status": [ + "Copine", + "Sœur", + "Garde" + ], + "state": [ + "Oui", + "Partiel", + "Non", + "Plus jeune", + "Oui, mais actuellement en voyage" + ] + }, + "species": { + "earth": [ + "Robot poney terrestre", + "Poney terrestre en peluche", + "Poney terrestre", + "Poneys terrestres" + ], + "alicorn": [ + "Robot alicorne", + "Alicorne en peluche", + "Alicorne", + "Alicornes" + ], + "crystal": [ + "Robot poney de crystal", + "Poney de crystal en peluche", + "Poney de crystal", + "Poneys de crystal" + ], + "pegasus": [ + "Robot pégase", + "Pégase en peluche", + "Pégase", + "Pégases" + ], + "batpony": [ + "Robot poney chauve-souris", + "Poney chauve-souris en peluche", + "Poney chauve-souris", + "Poneys chauve-souris" + ], + "unicorn": [ + "Robot licorne", + "Licorne en peluche", + "Licorne", + "Licornes" + ] + }, + "history": { + "title": "Historique de front pour", + "timezone": "Les heures sur cette page utilisent votre fuseau horaire local (%1). Les jours commencent à %2 (00:00 sur l'heure GMT).", + "fallback": "Poney de retrait" + }, + "species_compare": { + "title": "Membres de %1 par espèce" + }, + "tree": { + "title": "Arbre de système pour" + }, + "debug": { + "docs_cleanup": "Suppression de documents programmée", + "important_backup": "Sauvegardes différentielles", + "restore": "Protection contre les échecs", + "backups": "Sauvegardes hors site chiffrées", + "calendar": "Intégration Google Agenda", + "version": "Information de version", + "logo": "Traitement du logo du site", + "favicons": "Traitement des icônes de page", + "assets": "Téléchargement des images externes", + "general": "Informations générales sur", + "members": "Membres de", + "fronters": "Fronteurs actuels dans", + "switches": "Historique de switch dans", + "in": "dans", + "unknown": "Inconnu", + "images": "Images de %1", + "description": "Cette page fournit des informations permettant de diagnostiquer des temps de mise à jour étonnamment longs ou des échecs signalés.", + "warning": { + "title": "Ces données ne sont plus mises à jour régulièrement.", + "intro": "Cela peut-être causé par plusieurs choses :", + "list": [ + "le programme de mise à jour a été temporairement désactivé pour de la maintenance ;", + "le programme de mise à jour ne parvient pas à démarrer sur le serveur ;", + "le serveur était arrêté pour une longue période de temps" + ], + "admin": "Si vous êtes un administrateur et pensez que cela n'est pas normal, vous pouvez investiguer le problème." + }, + "general_title": "Informations générales", + "time": "Date de mise à jour :", + "duration": "Durée totale :", + "long": "Opération la plus longue :", + "times": "Temps de traitement", + "failures": "Échecs signalés", + "no_failure": "Le programme de mise à jour n'a signalé aucun échec lors de la dernière exécution.", + "failure": "Les fichiers suivants n'ont pas pu être mis à jour :" + }, + "government": { + "council": [ + "Conseil des systèmes", + "-" + ], + "head": [ + "T. O. S.", + "Tête des opérations du système", + "-" + ], + "protector1": [ + "P. P.", + "Protectrice principale", + "-" + ], + "protectors": [ + "Protectrices", + "-" + ] + }, + "home": { + "error": "Erreur :", + "intro": "poneys dans 2 systèmes plural" + }, + "login": { + "title": "Connexion", + "maintenance": [ + "La connexion est temporairement désactivée.", + "La connexion sur ce site a été temporairement désactivée par les administrateurs pour des raisons de maintenance." + ], + "select": "Sélectionnez comment vous souhaitez vous connecter à", + "private": [ + "Authentification privée Equestria.dev", + "Pour les administrateurs du site, permet de modifier le contenu et d'accéder aux informations privées.", + "Continuer" + ] + }, + "page": { + "system": "ID de système invalide", + "page": "Page introuvable :" + }, + "relations": { + "title": "Relations", + "marefriends": "Copines :", + "no": "Aucune", + "sisters": "Sœeurs :", + "caretakers": "Gardes :" + } +} \ No newline at end of file diff --git a/i18n/qqx.json b/i18n/qqx.json new file mode 100644 index 0000000..5f6ffd2 --- /dev/null +++ b/i18n/qqx.json @@ -0,0 +1,314 @@ +{ + "_french": false, + "_name": "en", + "app": { + "page": "LANG_APP_PAGE", + "file": "LANG_APP_FILE" + }, + "details": { + "food": "LANG_DETAILS_FOOD", + "memory": "LANG_DETAILS_MEMORY", + "food_states": [ + "LANG_DETAILS_FOOD_STATES:0", + "LANG_DETAILS_FOOD_STATES:1", + "LANG_DETAILS_FOOD_STATES:2", + "LANG_DETAILS_FOOD_STATES:3" + ], + "memory_states": [ + "LANG_DETAILS_MEMORY_STATES:0", + "LANG_DETAILS_MEMORY_STATES:1", + "LANG_DETAILS_MEMORY_STATES:2" + ] + }, + "footer": { + "copyright": "LANG_FOOTER_COPYRIGHT", + "update": "LANG_FOOTER_UPDATE", + "separator": "LANG_FOOTER_SEPARATOR", + "took": "LANG_FOOTER_TOOK", + "failure": "LANG_FOOTER_FAILURE", + "failures": [ + "LANG_FOOTER_FAILURES:0", + "LANG_FOOTER_FAILURES:1" + ], + "no_failure": "LANG_FOOTER_NO_FAILURE", + "no_update": "LANG_FOOTER_NO_UPDATE" + }, + "fullbanner": { + "visit": [ + "LANG_FULLBANNER_VISIT:0", + "LANG_FULLBANNER_VISIT:1" + ] + }, + "member": { + "merge": "LANG_MEMBER_MERGE", + "unknown": [ + "LANG_MEMBER_UNKNOWN:0", + "LANG_MEMBER_UNKNOWN:1", + "LANG_MEMBER_UNKNOWN:2", + "LANG_MEMBER_UNKNOWN:3" + ], + "fusion": [ + "LANG_MEMBER_FUSION:0", + "LANG_MEMBER_FUSION:1", + "LANG_MEMBER_FUSION:2" + ], + "no_fusion": "LANG_MEMBER_NO_FUSION" + }, + "navigation": { + "login": "LANG_NAVIGATION_LOGIN", + "admin": "LANG_NAVIGATION_ADMIN", + "apps": "LANG_NAVIGATION_APPS", + "debug": "LANG_NAVIGATION_DEBUG", + "general": "LANG_NAVIGATION_GENERAL", + "about": "LANG_NAVIGATION_ABOUT", + "subsystems": "LANG_NAVIGATION_SUBSYSTEMS", + "members": "LANG_NAVIGATION_MEMBERS", + "search": "LANG_NAVIGATION_SEARCH" + }, + "search": { + "title": "LANG_SEARCH_TITLE", + "placeholder": "LANG_SEARCH_PLACEHOLDER", + "categories": [ + "LANG_SEARCH_CATEGORIES:0", + "LANG_SEARCH_CATEGORIES:1", + "LANG_SEARCH_CATEGORIES:2", + "LANG_SEARCH_CATEGORIES:3", + "LANG_SEARCH_CATEGORIES:4" + ], + "view": "LANG_SEARCH_VIEW" + }, + "subsystem": { + "fronter": "LANG_SUBSYSTEM_FRONTER", + "last": "LANG_SUBSYSTEM_LAST", + "members": "LANG_SUBSYSTEM_MEMBERS", + "parent": "LANG_SUBSYSTEM_PARENT", + "intro": "LANG_SUBSYSTEM_INTRO" + }, + "system": { + "fronter": "LANG_SYSTEM_FRONTER", + "more": "LANG_SYSTEM_MORE", + "with": "LANG_SYSTEM_WITH", + "last": "LANG_SYSTEM_LAST", + "members": "LANG_SYSTEM_MEMBERS", + "traveller": "LANG_SYSTEM_TRAVELLER", + "travellers": "LANG_SYSTEM_TRAVELLERS", + "switch": "LANG_SYSTEM_SWITCH" + }, + "titlebar": { + "top": "LANG_TITLEBAR_TOP", + "debug": [ + "LANG_TITLEBAR_DEBUG:0", + "LANG_TITLEBAR_DEBUG:1" + ], + "subsystem": "LANG_TITLEBAR_SUBSYSTEM", + "member": "LANG_TITLEBAR_MEMBER" + }, + "compare": { + "title": "LANG_COMPARE_TITLE", + "member": [ + "LANG_COMPARE_MEMBER:0", + "LANG_COMPARE_MEMBER:1", + "LANG_COMPARE_MEMBER:2", + "LANG_COMPARE_MEMBER:3", + "LANG_COMPARE_MEMBER:4", + "LANG_COMPARE_MEMBER:5" + ], + "species": [ + "LANG_COMPARE_SPECIES:0", + "LANG_COMPARE_SPECIES:1", + "LANG_COMPARE_SPECIES:2", + "LANG_COMPARE_SPECIES:3", + "LANG_COMPARE_SPECIES:4", + "LANG_COMPARE_SPECIES:5" + ], + "relations": [ + "LANG_COMPARE_RELATIONS:0", + "LANG_COMPARE_RELATIONS:1", + "LANG_COMPARE_RELATIONS:2", + "LANG_COMPARE_RELATIONS:3", + "LANG_COMPARE_RELATIONS:4", + "LANG_COMPARE_RELATIONS:5" + ], + "memory": [ + "LANG_COMPARE_MEMORY:0", + "LANG_COMPARE_MEMORY:1", + "LANG_COMPARE_MEMORY:2", + "LANG_COMPARE_MEMORY:3", + "LANG_COMPARE_MEMORY:4", + "LANG_COMPARE_MEMORY:5" + ], + "fictive": [ + "LANG_COMPARE_FICTIVE:0", + "LANG_COMPARE_FICTIVE:1", + "LANG_COMPARE_FICTIVE:2", + "LANG_COMPARE_FICTIVE:3", + "LANG_COMPARE_FICTIVE:4", + "LANG_COMPARE_FICTIVE:5" + ], + "little": [ + "LANG_COMPARE_LITTLE:0", + "LANG_COMPARE_LITTLE:1", + "LANG_COMPARE_LITTLE:2", + "LANG_COMPARE_LITTLE:3", + "LANG_COMPARE_LITTLE:4", + "LANG_COMPARE_LITTLE:5" + ], + "protector": [ + "LANG_COMPARE_PROTECTOR:0", + "LANG_COMPARE_PROTECTOR:1", + "LANG_COMPARE_PROTECTOR:2", + "LANG_COMPARE_PROTECTOR:3", + "LANG_COMPARE_PROTECTOR:4", + "LANG_COMPARE_PROTECTOR:5" + ], + "status": [ + "LANG_COMPARE_STATUS:0", + "LANG_COMPARE_STATUS:1", + "LANG_COMPARE_STATUS:2" + ], + "state": [ + "LANG_COMPARE_STATE:0", + "LANG_COMPARE_STATE:1", + "LANG_COMPARE_STATE:2", + "LANG_COMPARE_STATE:3", + "LANG_COMPARE_STATE:4" + ] + }, + "species": { + "earth": [ + "LANG_SPECIES_EARTH:0", + "LANG_SPECIES_EARTH:1", + "LANG_SPECIES_EARTH:2", + "LANG_SPECIES_EARTH:3" + ], + "alicorn": [ + "LANG_SPECIES_ALICORN:0", + "LANG_SPECIES_ALICORN:1", + "LANG_SPECIES_ALICORN:2", + "LANG_SPECIES_ALICORN:3" + ], + "crystal": [ + "LANG_SPECIES_CRYSTAL:0", + "LANG_SPECIES_CRYSTAL:1", + "LANG_SPECIES_CRYSTAL:2", + "LANG_SPECIES_CRYSTAL:3" + ], + "pegasus": [ + "LANG_SPECIES_PEGASUS:0", + "LANG_SPECIES_PEGASUS:1", + "LANG_SPECIES_PEGASUS:2", + "LANG_SPECIES_PEGASUS:3" + ], + "batpony": [ + "LANG_SPECIES_BATPONY:0", + "LANG_SPECIES_BATPONY:1", + "LANG_SPECIES_BATPONY:2", + "LANG_SPECIES_BATPONY:3" + ], + "unicorn": [ + "LANG_SPECIES_UNICORN:0", + "LANG_SPECIES_UNICORN:1", + "LANG_SPECIES_UNICORN:2", + "LANG_SPECIES_UNICORN:3" + ] + }, + "history": { + "title": "LANG_HISTORY_TITLE", + "timezone": "LANG_HISTORY_TIMEZONE", + "fallback": "LANG_HISTORY_FALLBACK" + }, + "species_compare": { + "title": "LANG_SPECIES_COMPARE_TITLE" + }, + "tree": { + "title": "LANG_TREE_TITLE" + }, + "alphabet": { + "title": "LANG_ALPHABET_TITLE" + }, + "debug": { + "docs_cleanup": "LANG_DEBUG_DOCS_CLEANUP", + "important_backup": "LANG_DEBUG_IMPORTANT_BACKUP", + "restore": "LANG_DEBUG_RESTORE", + "backups": "LANG_DEBUG_BACKUPS", + "calendar": "LANG_DEBUG_CALENDAR", + "version": "LANG_DEBUG_VERSION", + "logo": "LANG_DEBUG_LOGO", + "favicons": "LANG_DEBUG_FAVICONS", + "assets": "LANG_DEBUG_ASSETS", + "general": "LANG_DEBUG_GENERAL", + "members": "LANG_DEBUG_MEMBERS", + "fronters": "LANG_DEBUG_FRONTERS", + "switches": "LANG_DEBUG_SWITCHES", + "in": "LANG_DEBUG_IN", + "unknown": "LANG_DEBUG_UNKNOWN", + "images": "LANG_DEBUG_IMAGES", + "description": "LANG_DEBUG_DESCRIPTION", + "warning": { + "title": "LANG_DEBUG_WARNING_TITLE", + "intro": "LANG_DEBUG_WARNING_INTRO", + "list": [ + "LANG_DEBUG_WARNING_LIST:0", + "LANG_DEBUG_WARNING_LIST:1", + "LANG_DEBUG_WARNING_LIST:2" + ], + "admin": "LANG_DEBUG_WARNING_ADMIN" + }, + "general_title": "LANG_DEBUG_GENERAL_TITLE", + "time": "LANG_DEBUG_TIME", + "duration": "LANG_DEBUG_DURATION", + "long": "LANG_DEBUG_LONG", + "times": "LANG_DEBUG_TIMES", + "failures": "LANG_DEBUG_FAILURES", + "no_failure": "LANG_DEBUG_NO_FAILURE", + "failure": "LANG_DEBUG_FAILURE" + }, + "government": { + "council": [ + "LANG_GOVERNMENT_COUNCIL:0", + "LANG_GOVERNMENT_COUNCIL:1" + ], + "head": [ + "LANG_GOVERNMENT_HEAD:0", + "LANG_GOVERNMENT_HEAD:1", + "LANG_GOVERNMENT_HEAD:2" + ], + "protector1": [ + "LANG_GOVERNMENT_PROTECTOR1:0", + "LANG_GOVERNMENT_PROTECTOR1:1", + "LANG_GOVERNMENT_PROTECTOR1:2" + ], + "protectors": [ + "LANG_GOVERNMENT_PROTECTORS:0", + "LANG_GOVERNMENT_PROTECTORS:1" + ] + }, + "home": { + "error": "LANG_HOME_ERROR", + "intro": "LANG_HOME_INTRO" + }, + "login": { + "title": "LANG_LOGIN_TITLE", + "maintenance": [ + "LANG_LOGIN_MAINTENANCE:0", + "LANG_LOGIN_MAINTENANCE:1" + ], + "select": "LANG_LOGIN_SELECT", + "private": [ + "LANG_LOGIN_PRIVATE:0", + "LANG_LOGIN_PRIVATE:1", + "LANG_LOGIN_PRIVATE:2" + ] + }, + "page": { + "system": "LANG_PAGE_SYSTEM", + "page": "LANG_PAGE_PAGE" + }, + "relations": { + "title": "LANG_RELATIONS_TITLE", + "marefriends": "LANG_RELATIONS_MAREFRIENDS", + "no": "LANG_RELATIONS_NO", + "sisters": "LANG_RELATIONS_SISTERS", + "caretakers": "LANG_RELATIONS_CARETAKERS" + } +} \ No newline at end of file diff --git a/includes/ai.inc b/includes/ai.inc deleted file mode 100644 index 8f5f7ba..0000000 --- a/includes/ai.inc +++ /dev/null @@ -1,311 +0,0 @@ - $metadata["robot"] ? - "robot earth pony" : - (!$metadata["plush"] ? "earth pony" . (component(2, 2) && $canHaveMareSuffix ? " mare" : "") : - "earth pony" . (component(2, 2) && $canHaveMareSuffix ? " mare" : "") . " plush"), - "alicorn" => $metadata["robot"] ? - "robot alicorn" : - (!$metadata["plush"] ? "alicorn" . (component(2, 2) && $canHaveMareSuffix ? " mare" : "") : - "alicorn" . (component(2, 2) && $canHaveMareSuffix ? " mare" : "") . " plush"), - "crystal" => $metadata["robot"] ? - "robot crystal pony" : - (!$metadata["plush"] ? "crystal pony" : - "crystal pony plush"), - "pegasus" => $metadata["robot"] ? - "robot pegasus" : - (!$metadata["plush"] ? "pegasus" . (component(2, 2) && $canHaveMareSuffix ? " mare" : "") : - "pegasus" . (component(2, 2) && $canHaveMareSuffix ? " mare" : "") . " plush"), - "batpony" => $metadata["robot"] ? - "robot batpony" : - (!$metadata["plush"] ? "batpony" . (component(2, 2) && $canHaveMareSuffix ? " mare" : "") : - "batpony" . (component(2, 2) && $canHaveMareSuffix ? " mare" : "") . " plush"), - "unicorn" => $metadata["robot"] ? - "robot unicorn" : - (!$metadata["plush"] ? "unicorn" . (component(2, 2) && $canHaveMareSuffix ? " mare" : "") : - "unicorn" . (component(2, 2) && $canHaveMareSuffix ? " mare" : "") . " plush"), - default => $species . "_" . $metadata["robot"] - }; - } -} - -if (!function_exists("listing")) { - function listing(array $list): string { - $out = ""; - - foreach (array_values($list) as $index => $value) { - $mem = getSystemMember(explode("/", $value)[0], explode("/", $value)[1]); - $value = "" . getMiniName($mem["display_name"] ?? $mem["name"]) . ""; - - if ($index === 0) { - $out = $value; - } else if ($index < count(array_values($list)) - 1) { - $out .= ", " . $value; - } else { - $out .= " and " . $value; - } - } - - return $out; - } -} - -$iam = 0; -$multipleNames = count(explode("/", $memberData["display_name"])) > 1; - -$otherNames = explode("/", $memberData["display_name"]); -array_shift($otherNames); - -if ($memberData["name"] === "scootaloo" && ((int)date('N') - 1) % 2 === 0) { - $metadata["marefriends"] = array_reverse($metadata["marefriends"]); -} - -?> - - -

- - Hello, - - Hi, - - Hey, - - Hey there!

- - - - , - - - -the most common fronter -a protector - -of the , - 0): $source = getMember($metadata["median"]); ?> ">, - = 3) ? "and" : (component(2, 2, 1) ? "I'm" : "I am") ?> - - -= 3 && component(2, 1, 4)): ?>also - -a and a - -a , a and a - -a = 3 && component(2, 2, 4)): ?> too -, -. - -

- -

- - - - Depending on the circumstances, I may not share memories with my headmates - - I may not share memories with my headmates depending on the circumstances - - I sometimes share memories with my headmates - - - - I share memories with my headmates - - I have access to my headmates' memories - - I have access to my headmates' memories - - - - - - - a fictive - - from Equestria - - I come from Equestria - - - - - - - fronting less often - - less often at front - - I like to front less often - - - - - - - nonverbal in real life - - not talking in real life - - I don't talk in real life - - - - - - - 0): ?> - an age regressor - - 0): ?> - capable of age regression - - I can age regress - - - - - - - 0): ?> - younger than the body is - - 0): ?> - younger but not enough to be considered a little - - I feel younger than my headmates - - - - - 0)): ?> - - 0): ?> - affected by spells to make me feel younger - - 0): ?> - affected by age spells - - age regression spells can affect me - - - - - - - 0): ?> - a lot younger than the body is - - 0): ?> - a little - - I feel a lot younger than my headmates - - - -

- -

- - - 0): ?> - - 0): ?> - 1): ?>in relationships within a relationship with - - 0): ?> - 1): ?>My marefriends areMy marefriend is - - 0): ?> - 1): ?>are my marefriendsis my marefriend - - I love - - - - - 0): ?> - - 0): ?> - 1): ?>in relationships within a relationship with - - 0): ?> - 1): ?> sisters are sister is - - 0): ?> - 1): ?>are my sistersis my sister - - - I also love as sister 1): ?>s - - 1): ?>are my familyis my family - - - - - - 0): ?> - - 0): ?> - being taken care of by - - 0): ?> - 1): ?> mares who take care of me are mare who takes care of me is - - 0): ?> - 1): ?>are my caretakersis my caretaker - - - I like having take care of me - - take care of me - - - - -

\ No newline at end of file diff --git a/includes/assets.inc b/includes/assets.inc index 3f9971a..05296ce 100644 --- a/includes/assets.inc +++ b/includes/assets.inc @@ -13,7 +13,6 @@ function downloadAssets($system) { echo(" /avatars/$id.webp\n"); file_put_contents("/tmp/img." . pathinfo($general['avatar_url'], PATHINFO_EXTENSION), file_get_contents($general['avatar_url'])); exec("convert -resize 512x512 \"" . "/tmp/img." . pathinfo($general['avatar_url'], PATHINFO_EXTENSION) . "\" ../assets/avatars/" . $id . ".webp"); - exec("convert -resize 512x512 \"" . "/tmp/img." . pathinfo($general['avatar_url'], PATHINFO_EXTENSION) . "\" ../assets/uploads/" . ($id === "gdapd" ? "raindrops" : "cloudburst") . ".png"); unlink("/tmp/img." . pathinfo($general['avatar_url'], PATHINFO_EXTENSION)); } diff --git a/includes/banner.inc b/includes/banner.inc index e1b06be..d62ba97 100644 --- a/includes/banner.inc +++ b/includes/banner.inc @@ -1,6 +1,6 @@ ( $french ? - 'Fronteuse la plus présente' + 'Fronteuse la plus présente' : 'Most common fronter' ) @@ -276,13 +289,13 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { } } - if (($metadata["age_spells"] ?? false) && !$french) { + /*if (($metadata["age_spells"] ?? false) && !$french) { $badges[] = [ "id" => "age_spells", "color" => "#6f42c1", "html" => 'Affected by age spells' ]; - } + }*/ if ($metadata["fictive"] ?? false) { $badges[] = [ @@ -291,18 +304,38 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { "html" => ( $french ? - 'Fictive' + 'Fictive' : 'Fictive' ) ]; } + if ($metadata["persecutor"] ?? false) { + $badges[] = [ + "id" => "persecutor", + "color" => "danger", + "html" => ( + $french + ? + 'Persécutrice' + : + 'Persecutor' + ) + ]; + } + if ($metadata["less_frequent"] ?? false) { $badges[] = [ "id" => "nonverbal", "color" => "#fd7e14", - "html" => 'Fronts less often' + "html" => ( + $french + ? + 'Fronte moins souvent' + : + 'Fronts less often' + ) ]; } @@ -310,7 +343,13 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { $badges[] = [ "id" => "nonverbal", "color" => "#20c997", - "html" => 'Non verbal IRL' + "html" => ( + $french + ? + 'Non verbal IRL' + : + 'Non verbal IRL' + ) ]; } @@ -330,6 +369,20 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { ]; } + if (($metadata["leader"] ?? false) && $isLoggedIn) { + $badges[] = [ + "id" => "leader", + "color" => "d6a833", + "html" => ( + $french + ? + 'Dirigeante' + : + 'Leader' + ) + ]; + } + if ($metadata["protector"] ?? false) { $badges[] = [ "id" => "protector", @@ -337,7 +390,7 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { "html" => ( $french ? - '
' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' a protector in the system and will front when somepony cannot handle it anymore." class="badge rounded-pill bg-black">' . (getMemberPronouns($member['pronouns'])["gender"] === "female" ? "Protectrice" : (getMemberPronouns($member['pronouns'])["gender"] === "male" ? "Protecteur" : "Protecteur·ice")) . '
' + '
' . ucfirst(getMemberPronouns($member['pronouns'])["subjective"]) . ' ' . (getMemberPronouns($member['pronouns'])["third"] ? "is" : "are") . ' a protector in the system and will front when somepony cannot handle it anymore." class="badge rounded-pill bg-black">' . (getMemberPronouns($member['pronouns'])["gender"] === "female" ? "Protectrice" : (getMemberPronouns($member['pronouns'])["gender"] === "male" ? "Protecteur" : "Protectrice")) . '
' : 'Protector' ) @@ -386,18 +439,6 @@ function getMemberBannerData(string $id, string $system, bool $french = false) { 'Age regresses into '. (getMiniName($regression["display_name"] ?? $regression["name"])) . '' ) ]; - } else { - $badges[] = [ - "id" => "regressor", - "color" => "secondary", - "html" => ( - $french - ? - 'Régresseur d\'âge' - : - 'Age regressor' - ) - ]; } } diff --git a/includes/bitset.inc b/includes/bitset.inc index 1d026e5..0bd5c4d 100644 --- a/includes/bitset.inc +++ b/includes/bitset.inc @@ -11,6 +11,8 @@ function parseBitset ($bitset) { $lessFrequent = substr($bin, 14, 1) !== "0"; $sexuallyActive = substr($bin, 13, 1) !== "0"; $ageRegressor = substr($bin, 12, 1) !== "0"; + $leader = substr($bin, 11, 1) !== "0"; + $persecutor = substr($bin, 10, 1) !== "0"; $magic = bindec(substr($bin, 18, 3)); $sensitivity = bindec(substr($bin, 21, 3)); $protector = substr($bin, 29, 1) !== "0"; @@ -76,6 +78,8 @@ function parseBitset ($bitset) { 'less_frequent' => $lessFrequent, 'age_spells' => $age, 'age_regressor' => $ageRegressor, + 'leader' => $leader, + 'persecutor' => $persecutor, 'sexually_active' => $sexuallyActive, 'species' => array_filter([ $species1, @@ -92,7 +96,7 @@ function parseMetadata ($metadata) { if ($metadata["bitset"]) { $m = parseBitset($metadata["bitset"]); $m["marefriends"] = $metadata["marefriends"] ?? []; - $m["bitset"] = $metadata["bitset"] ?? []; + $m["bitset"] = $metadata["bitset"] ?? 0; $m["sisters"] = $metadata["sisters"] ?? []; $m["regression"] = $metadata["regression"] ?? null; $m["caretakers"] = $metadata["caretakers"] ?? []; diff --git a/includes/details.inc b/includes/details.inc index abd07bc..e4ee519 100644 --- a/includes/details.inc +++ b/includes/details.inc @@ -1,31 +1,20 @@ - -
; margin-left: -20px; margin-right: -20px;"> + +
; margin-left: -20px; margin-right: -20px;">
- Food:
+
"Not needed", - 1 => "Not animals", - 2 => "Not meat", - 3 => "All", + 0 => "" . $lang["details"]["food_states"][0] . "", + 1 => "" . $lang["details"]["food_states"][1] . "", + 2 => "" . $lang["details"]["food_states"][2] . "", + 3 => "" . $lang["details"]["food_states"][3] . "", } ?>
- Shared memory:
+
"None", - 1 => "Partial", - 2 => "Full", - } ?> -
-
- Magic:
- "None", - 1 => "In some cases", - 2 => "Horn", - 3 => "Wings", - 4 => "Horn and wings", - 5 => "Yes", + 0 => "" . $lang["details"]["memory_states"][0] . "", + 1 => "" . $lang["details"]["memory_states"][1] . "", + 2 => "" . $lang["details"]["memory_states"][2] . "", } ?>
diff --git a/includes/footer.inc b/includes/footer.inc index 6cf833c..b95ea78 100644 --- a/includes/footer.inc +++ b/includes/footer.inc @@ -4,17 +4,22 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/functions.inc"; ?> -
-
- - © Equestria.dev Developers · version 2...
- Data updated ( 360): ?>not updating; ; took ms, 0 ? (count($refresh["restored"]) > 1 ? "reported " . count($refresh["restored"]) . " failures" : "reported 1 failure") : "no failures reported" ?>) -




+ + @@ -11,7 +11,7 @@
- +
@@ -53,24 +53,27 @@
  • Score breakdown: -
      -
    • Most common fronter score:
    • -
    • Relationships score:
    • -
    • Fictive score:
    • -
    • Median score:
    • -
    • Species score:
    • -
    • Little score:
    • -
    • Not talking score:
    • -
    • Protector score:
    • -
    • Name score:
    • -
    • Shared memory score:
    • -
    -
  • -
  • Full metadata:
      $usage) { if (is_string($usage)) { echo("
    • " . $type . ": " . $usage . "
    • "); + } else if (is_array($usage)) { + if (count($usage) === 0) { + echo("
    • " . $type . ": []
    • "); + } else { + echo("
    • " . $type . ":
        "); + + foreach ($usage as $key => $item) { + if (is_string($item)) { + echo("
      • " . $key . ": " . $item . "
      • "); + } else { + echo("
      • " . $key . ": " . json_encode($item, JSON_UNESCAPED_SLASHES) . "
      • "); + } + } + + echo("
    • "); + } } else { echo("
    • " . $type . ": " . json_encode($usage, JSON_UNESCAPED_SLASHES) . "
    • "); } @@ -78,25 +81,15 @@ ?>
  • - -
    -
    - AI-generated page: - -
    - +
    - is visiting the , therefore currently not in the . + .
    - - -
    -

    Hello there!

    -

    I'm currently a new headmate slowly figuring myself out.

    -

    Give me some time to figure myself out and see this page change as I find new stuff about my identity. Don't be too worried if I accidentally get pushed to front, it's something that can happen sometimes.

    - Thanks! + +
    + is on a trip to Equestria. .
    \ No newline at end of file diff --git a/includes/functions.inc b/includes/functions.inc index c3ec313..cc94f11 100644 --- a/includes/functions.inc +++ b/includes/functions.inc @@ -179,6 +179,10 @@ if (!function_exists("getMiniName")) { $parts = explode(" ", $name); if (strlen($parts[0]) > 3 && !str_ends_with($parts[0], "e") && $parts[0] !== "Filly" && $parts[0] !== "Windy" && (isset($parts[1]) && $parts[1] !== "Brightdawn")) { + if ($parts[0] === "Princess") { + array_shift($parts); + } + if (str_contains($parts[0], "/")) { return explode("/", $parts[0])[0]; } else { @@ -250,7 +254,7 @@ if (!function_exists("showMembersFromList")) { function showMembersFromList(array $list) { foreach ($list as $member) { if ($member['name'] !== "unknown" && $member['name'] !== "fusion") { echo(' -
    +
    ' . ($member['display_name'] ?? $member['name']) . '
    ' . (isset($member['travelling']) && $member['travelling'] ? "+" . ($member['proxy_tags'][0]['prefix'] ?? " ") : ($member['proxy_tags'][0]['prefix'] ?? " ")) . '
    @@ -301,18 +305,19 @@ if (!function_exists("showSystem")) { echo('
    '); } - showMembersFromList(scoreOrder([...array_map(function ($i) use ($id) { + showMembersFromList(scoreOrder([...array_map(function ($i) use ($id, $travelling) { $i["travelling"] = false; $i["system"] = $id; + $i["equestria"] = $travelling[$i['id']]['travelling'] && $travelling[$i['id']]['equestria']; return $i; }, array_filter(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/$id/members.json"), true), function ($i) use ($travelling) { - return !(isset($travelling[$i['id']]) && $travelling[$i['id']]['travelling']); + return !(isset($travelling[$i['id']]) && $travelling[$i['id']]['travelling'] && (!isset($travelling[$i['id']]['equestria']) || !$travelling[$i['id']]['equestria'])); })), ...array_map(function ($i) use ($id) { $i["travelling"] = true; $i["system"] = ($id === "gdapd" ? "ynmuc" : "gdapd"); return $i; }, array_filter(json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/" . ($id === "gdapd" ? "ynmuc" : "gdapd") . "/members.json"), true), function ($i) use ($travelling) { - return isset($travelling[$i['id']]) && $travelling[$i['id']]['travelling']; + return isset($travelling[$i['id']]) && $travelling[$i['id']]['travelling'] && (!isset($travelling[$i['id']]['equestria']) || !$travelling[$i['id']]['equestria']); }))], $id)); echo('
    @@ -349,23 +354,30 @@ if (!function_exists("getMember")) { } if (!function_exists("timeAgo")) { - function timeAgo($time): string { + function timeAgo($time, $french = false): string { if (!is_numeric($time)) { $time = strtotime($time); } $periods = ["sec.", "mn.", "hr.", "d.", "wk.", "mo.", "y.", "ages"]; + $periods_fr = ["sec.", "mn.", "hr.", "j.", "sem.", "m.", "a.", "des années"]; $lengths = array("60", "60", "24", "7", "4.35", "12", "100"); $now = time(); $difference = $now - $time; if ($difference <= 10 && $difference >= 0) { - return $tense = "now"; + if ($french) { + return $tense_fr = "à l'instant"; + } else { + return $tense = "now"; + } } elseif ($difference > 0) { $tense = "ago"; + $tense_fr = "il y a"; } else { $tense = "later"; + $tense_fr = "dans"; } for ($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) { @@ -374,8 +386,13 @@ if (!function_exists("timeAgo")) { $difference = round($difference); - $period = $periods[$j]; - return "{$difference} {$period} {$tense}"; + if ($french) { + $period = $periods_fr[$j]; + return "{$tense_fr} {$difference} {$period}"; + } else { + $period = $periods[$j]; + return "{$difference} {$period} {$tense}"; + } } } @@ -412,21 +429,37 @@ if (!function_exists("timeIn")) { if (!function_exists("duration")) { function duration($seconds) { + global $lang; global $pages; + if ($seconds >= 60) { if (floor($seconds / 60) >= 60) { if (floor($seconds / 3600) >= 24) { $days = floor($seconds / 86400); - return $days . " day" . ($days > 1 ? "s" : ""); + + if ($lang["_french"]) { + return $days . " jour" . ($days > 1 ? "s" : ""); + } else { + return $days . " day" . ($days > 1 ? "s" : ""); + } } else { $hours = floor($seconds / 3600); - return $hours . " hour" . ($hours > 1 ? "s" : ""); + + if ($lang["_french"]) { + return $hours . " heure" . ($hours > 1 ? "s" : ""); + } else { + return $hours . " hour" . ($hours > 1 ? "s" : ""); + } } } else { $minutes = floor($seconds / 60); return $minutes . " minute" . ($minutes > 1 ? "s" : ""); } } else { - return $seconds . " seconds"; + if ($lang["_french"]) { + return $seconds . " secondes"; + } else { + return $seconds . " seconds"; + } } } } diff --git a/includes/header.inc b/includes/header.inc index 2d95799..d338f78 100644 --- a/includes/header.inc +++ b/includes/header.inc @@ -710,7 +710,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/ical/main.php"; border-bottom-left-radius: 10px; border-bottom-right-radius: 10px; display: grid; - grid-template-columns: repeat(6, 1fr); + grid-template-columns: repeat(5, 1fr); text-align: center; } @@ -780,7 +780,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/ical/main.php"; -
    +
    - - \ No newline at end of file diff --git a/includes/member/tree.inc b/includes/member/tree.inc deleted file mode 100644 index 2e94951..0000000 --- a/includes/member/tree.inc +++ /dev/null @@ -1,8 +0,0 @@ - + +
    +
    +

    + +
    + +

    + File
    + +

    +

    + Bitset
    + ·
    Edit... + "> +

    +

    + Marefriends (full IDs, comma-separated):
    + "> +

    +

    + Sisters (full IDs, comma-separated):
    + "> +

    +

    + Caretakers (full IDs, comma-separated):
    + "> +

    +

    + Age regressed version (local ID):
    + "> +

    +

    + Birth date (use January 1st for none):
    + -"> +

    +

    + Age (for ponies with fixed age):
    + "> +

    + +
    + +
    + This member does not have a metadata file. This file needs to be initially created by an administrator before it can be edited using this page. +
    + +
    + + + + + + \ No newline at end of file diff --git a/includes/navbar.inc b/includes/navbar.inc index 379f102..3e68493 100644 --- a/includes/navbar.inc +++ b/includes/navbar.inc @@ -1,4 +1,4 @@ - +
    diff --git a/includes/profiles.inc b/includes/profiles.inc new file mode 100644 index 0000000..66274c7 --- /dev/null +++ b/includes/profiles.inc @@ -0,0 +1,97 @@ + 0) || isset($member["_metadata"]["birth"]["year"]) && $member["_metadata"]["birth"]["year"] > 1900) || ((isset($member["_metadata"]["birth"]["age"]) && $member["_metadata"]["birth"]["age"] === -1) && in_array("alicorn", $member["_metadata"]["species"])), + isset($member["_metadata"]["birth"]["date"]) && trim($member["_metadata"]["birth"]["date"]) !== "" && $member["_metadata"]["birth"]["date"] !== "01-01", + file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . ".html") && strlen(preg_replace("/[^a-zA-Z0-9]/m", "", file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . ".html"))) > 200, + file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . "-private.html") && strlen(preg_replace("/[^a-zA-Z0-9]/m", "", file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . "-private.html"))) > 200, + isset($member["banner"]), + file_exists($_SERVER['DOCUMENT_ROOT'] . "/assets/uploads/pt-" . $member["name"] . ".png"), + isset($member["color"]) + ]; + + $result = [ + "values" => $values, + "pages" => [], + "characters" => [], + "score" => (float)array_reduce($values, function ($a, $b) { + return $a + $b; + }), + "score2" => (float)array_reduce($values, function ($a, $b) { + return $a + $b; + }), + "actions" => [] + ]; + + if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . ".html") && strlen(preg_replace("/[^a-zA-Z0-9]/m", "", file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . ".html"))) <= 200) { + $result["pages"][] = true; + $result["score"] += strlen(preg_replace("/[^a-zA-Z0-9]/m", "", file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . ".html"))) / 201; + } else { + $result["pages"][] = false; + } + + if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . "-private.html") && strlen(preg_replace("/[^a-zA-Z0-9]/m", "", file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . "-private.html"))) <= 200) { + $result["pages"][] = true; + $result["score"] += strlen(preg_replace("/[^a-zA-Z0-9]/m", "", file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . "-private.html"))) / 201; + } else { + $result["pages"][] = false; + } + + if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . ".html")) { + $result["characters"][] = strlen(preg_replace("/[^a-zA-Z0-9]/m", "", file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . ".html"))); + } else { + $result["characters"][] = -1; + } + + if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . "-private.html")) { + $result["characters"][] = strlen(preg_replace("/[^a-zA-Z0-9]/m", "", file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/data/content/" . $member["id"] . "-private.html"))); + } else { + $result["characters"][] = -1; + } + + if (!((isset($member["_metadata"]["birth"]["age"]) && $member["_metadata"]["birth"]["age"] > 0) || isset($member["_metadata"]["birth"]["year"]) && $member["_metadata"]["birth"]["year"] > 1900) && !(isset($member["_metadata"]["birth"]["age"]) && $member["_metadata"]["birth"]["age"] === -1) && in_array("alicorn", $member["_metadata"]["species"])) { + $result["score"] += 0.5; + } + + $result["progress"] = $result["score"] / 7; + $result["sortable"] = (int)($result["progress"] * 100000000000000); + + if (!$result["values"][5]) { + $result["actions"][] = "a Pony Town character"; + } + + if (!$result["values"][6]) { + $result["actions"][] = "a color"; + } + + if (!$result["values"][2]) { + if ($result["characters"][0] === -1) { + $result["actions"][] = "a public page"; + } else { + $result["actions"][] = (200 - $result["characters"][0]) . " characters to the public page"; + } + } + + if (!$result["values"][3]) { + if ($result["characters"][1] === -1) { + $result["actions"][] = "a private page"; + } else { + $result["actions"][] = (200 - $result["characters"][1]) . " characters to the private page"; + } + } + + if (!$result["values"][4]) { + $result["actions"][] = "a banner"; + } + + if (!$result["values"][0]) { + $result["actions"][] = "an age"; + } + + if (!$result["values"][1]) { + $result["actions"][] = "a birthdate"; + } + + return $result; +} \ No newline at end of file diff --git a/includes/rainbow.inc b/includes/rainbow.inc index 470f288..fba960e 100644 --- a/includes/rainbow.inc +++ b/includes/rainbow.inc @@ -4,8 +4,15 @@ 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 { +function rainbow($hideCloudburst = false): array { $members = scoreOrderGlobal(); + + if ($hideCloudburst) { + $members = array_filter($members, function ($i) { + return $i["_system"] === "gdapd"; + }); + } + $data = []; foreach ($members as $member) { @@ -33,8 +40,8 @@ function rainbow(): array { return $data; } -function getMembersByColor(): array { - $members = rainbow(); +function getMembersByColor($hideCloudburst = false): array { + $members = rainbow($hideCloudburst); uasort($members, function ($a, $b) { return $a['hsl'][0] - $b['hsl'][0]; }); diff --git a/includes/score.inc b/includes/score.inc index 21baf67..703b9cc 100644 --- a/includes/score.inc +++ b/includes/score.inc @@ -1,7 +1,6 @@ $scoreHost, + "leader" => $scoreLeader, "fictive" => $scoreFictive, "little" => $scoreLittle, "median" => $scoreMedian, @@ -32,6 +32,7 @@ function calculateScore($metadata, $name) { "shared_memory" => $scoreSharedMemory, "relations" => $scoreRelations, "species" => $scoreSpecies, + "persecutor" => $scorePersecutor, "additional" => $scoreAdd, "total" => $score ]; diff --git a/includes/search.inc b/includes/search.inc index f240363..c125556 100644 --- a/includes/search.inc +++ b/includes/search.inc @@ -1,13 +1,15 @@ + + @@ -102,20 +103,20 @@ $pages = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/pa
    \ No newline at end of file diff --git a/includes/system/compare.inc b/includes/system/compare.inc index d7fbdc6..4f9711d 100644 --- a/includes/system/compare.inc +++ b/includes/system/compare.inc @@ -1,4 +1,4 @@ -
    -

    Compare members of the

    +

    - Member - Member - Member - Member - Member - Mmbr. + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> - Species - Species - Species - Species - Spec. - Spec. + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> - Relations - Relations - Relations - Relations - Relt. - Relt. + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> - Memory - Memory - Memory - Memory - Mem. - Mem. + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> - Fictive - Fictive - Fictive - Fictive - Fic. - Fic. + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> - Little - Little - Little - Little - Ltl. - Ltl. + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> - Protector - Protector - Protect. - Protect. - Prt. - Prt. + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> + " data-bs-toggle="tooltip"> " data-bs-toggle="tooltip" class="member-link comparison-item comparison-item-clickable" href="/"> " style="width:24px;"> @@ -97,27 +91,27 @@ function getMember(string $id) {
    Marefriend" data-bs-toggle="tooltip" data-bs-html="true" class="member-link tooltip-nohelp" href="/">" style="width:24px;">

    " data-bs-toggle="tooltip" data-bs-html="true" class="member-link tooltip-nohelp" href="/">" style="width:24px;">

    Sister" data-bs-toggle="tooltip" data-bs-html="true" class="member-link tooltip-nohelp" href="/">" style="width:24px;">

    " data-bs-toggle="tooltip" data-bs-html="true" class="member-link tooltip-nohelp" href="/">" style="width:24px;">

    Caretaker" data-bs-toggle="tooltip" data-bs-html="true" class="member-link tooltip-nohelp" href="/">" style="width:24px;">
    + }); sort($mfMember); $mfMember = $mfMember[0]; ?>
    " data-bs-toggle="tooltip" data-bs-html="true" class="member-link tooltip-nohelp" href="/">" style="width:24px;">
    0): ?> - Partial + " src="/assets/icons/partial.svg" alt="" style="width:24px;"> - Yes + " src="/assets/icons/complete.svg" alt="" style="width:24px;"> - No + " src="/assets/icons/none.svg" alt="" style="width:24px;"> - Yes + " src="/assets/icons/complete.svg" alt="" style="width:24px;"> - No + " src="/assets/icons/none.svg" alt="" style="width:24px;"> - = 2): ?> - Yes - - Partial + + " src="/assets/icons/complete.svg" alt="" style="width:24px;"> + + " src="/assets/icons/partial.svg" alt="" style="width:24px;"> - No + " src="/assets/icons/none.svg" alt="" style="width:24px;"> - Yes, but currently travelling + " src="/assets/icons/partial.svg" alt="" style="width:24px;"> - Yes + " src="/assets/icons/complete.svg" alt="" style="width:24px;"> - No + " src="/assets/icons/none.svg" alt="" style="width:24px;"> diff --git a/includes/system/history.inc b/includes/system/history.inc index 31a7c73..b66b8c4 100644 --- a/includes/system/history.inc +++ b/includes/system/history.inc @@ -1,4 +1,4 @@ - -

    Front history in the

    +