forked from blurryface/Website
feat: stuff
This commit is contained in:
parent
773a52e859
commit
f879003a9f
|
@ -2,3 +2,8 @@ DISCORD_CLIENT=
|
||||||
DISCORD_SECRET=
|
DISCORD_SECRET=
|
||||||
DISCORD_REDIRECT=
|
DISCORD_REDIRECT=
|
||||||
DISCORD_OAUTH=
|
DISCORD_OAUTH=
|
||||||
|
|
||||||
|
MYSQL_HOST=
|
||||||
|
MYSQL_DB=
|
||||||
|
MYSQL_USER=
|
||||||
|
MYSQL_PASS=
|
|
@ -4,6 +4,7 @@
|
||||||
error_reporting(E_ALL);
|
error_reporting(E_ALL);
|
||||||
|
|
||||||
require __DIR__ . '/vendor/autoload.php';
|
require __DIR__ . '/vendor/autoload.php';
|
||||||
|
require __DIR__ . '/util/Database.php';
|
||||||
require __DIR__ . '/util/Discord.php';
|
require __DIR__ . '/util/Discord.php';
|
||||||
|
|
||||||
use Twig\Loader\FilesystemLoader;
|
use Twig\Loader\FilesystemLoader;
|
||||||
|
@ -21,3 +22,10 @@
|
||||||
$_ENV['DISCORD_SECRET'],
|
$_ENV['DISCORD_SECRET'],
|
||||||
$_ENV['DISCORD_REDIRECT']
|
$_ENV['DISCORD_REDIRECT']
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$mysql = new Database(
|
||||||
|
$_ENV['MYSQL_HOST'],
|
||||||
|
$_ENV['MYSQL_USER'],
|
||||||
|
$_ENV['MYSQL_PASS'],
|
||||||
|
$_ENV['MYSQL_DB']
|
||||||
|
);
|
4
auth.php
4
auth.php
|
@ -1,5 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
global $discord;
|
global $discord, $mysql;
|
||||||
|
|
||||||
require_once "_config.php";
|
require_once "_config.php";
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@
|
||||||
} else {
|
} else {
|
||||||
$_SESSION['user'] = $discord->getUser($res['access_token']);
|
$_SESSION['user'] = $discord->getUser($res['access_token']);
|
||||||
|
|
||||||
|
$mysql->createUserRecord($_SESSION['user']);
|
||||||
|
|
||||||
header('Location: /');
|
header('Location: /');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -105,4 +105,27 @@ ul, ol {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
> .right {
|
||||||
|
list-style: none;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
> li {
|
||||||
|
padding: 8px;
|
||||||
|
|
||||||
|
> a {
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
|
||||||
|
color: rgba(0, 0, 0, 0.7);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: rgba(0, 0, 0, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -90,5 +90,21 @@ ul, ol {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
.pageFooter > .right {
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.pageFooter > .right > li {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
.pageFooter > .right > li > a {
|
||||||
|
display: block;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
color: rgba(0, 0, 0, 0.7);
|
||||||
|
}
|
||||||
|
.pageFooter > .right > li > a:hover {
|
||||||
|
color: rgb(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/*# sourceMappingURL=style.css.map */
|
/*# sourceMappingURL=style.css.map */
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"version":3,"sourceRoot":"","sources":["src/_fonts.scss","src/_reset.scss","src/style.scss"],"names":[],"mappings":"AAAQ;ACAR;EACE;EACA;;;ADAF;EACE;;;AAGF;EACE;EAEA;;;AENF;EACE;;;AAGF;EACE;EAEA;EAEA;;;AAGF;EACE;;;AAGF;EACE;EAEA;EAEA;EAEA;;AAEA;EACE;EAEA;EAEA;;AAEA;EACE;EAEA;EACA;EAEA;EACA;;;AAKN;EACE;EAEA;;AAEA;EACE;EAEA;EACA;EAEA;EACA;;AAEA;EACE;EAEA;EAEA;;AAGE;EACE;EAEA;EAEA;EAEA;;AAEA;EACE;;AAGF;EACE;EACA;;;AAQZ;EACE;;;AAGF;EACE;EACA;EAEA;EACA;;AAEA;EACE;EACA","file":"style.css"}
|
{"version":3,"sourceRoot":"","sources":["src/_fonts.scss","src/_reset.scss","src/style.scss"],"names":[],"mappings":"AAAQ;ACAR;EACE;EACA;;;ADAF;EACE;;;AAGF;EACE;EAEA;;;AENF;EACE;;;AAGF;EACE;EAEA;EAEA;;;AAGF;EACE;;;AAGF;EACE;EAEA;EAEA;EAEA;;AAEA;EACE;EAEA;EAEA;;AAEA;EACE;EAEA;EACA;EAEA;EACA;;;AAKN;EACE;EAEA;;AAEA;EACE;EAEA;EACA;EAEA;EACA;;AAEA;EACE;EAEA;EAEA;;AAGE;EACE;EAEA;EAEA;EAEA;;AAEA;EACE;;AAGF;EACE;EACA;;;AAQZ;EACE;;;AAGF;EACE;EACA;EAEA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EAEA;;AAEA;EACE;;AAEA;EACE;EAEA;EACA;EAEA;;AAEA;EACE","file":"style.css"}
|
2
css/style.min.css
vendored
2
css/style.min.css
vendored
|
@ -1 +1 @@
|
||||||
@import"https://fonts.googleapis.com/css2?family=Noto+Color+Emoji&family=Noto+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Outfit:wght@100;200;300;400;500;600;700;800;900&display=swap";*{padding:0;margin:0}*{font-family:"Noto Sans","Noto Color Emoji",sans-serif}h1,h2,h3,h4,h5,h6{font-family:"Outfit","Noto Color Emoji",sans-serif;margin-bottom:6px}body{background:#f8fafc}.container{max-width:1100px;width:100%;margin:0 auto}ul,ol{list-style-position:inside}.pageHero{background-image:url("/img/spawn/2023-09-15_17.51.17.png");background-position:center;color:#fff;height:240px}.pageHero>.blurFiler{backdrop-filter:blur(2px);padding:8px 0;height:calc(100% - 16px)}.pageHero>.blurFiler>.container{height:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.pageNav{width:100svw;background:#f1f5f9}.pageNav>.container{padding:16px 0;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.pageNav>.container>ul{list-style:none;display:flex;gap:8px}.pageNav>.container>ul>li>a{color:#0f172a;text-decoration:none;padding:8px 16px;border-radius:32px}.pageNav>.container>ul>li>a:hover,.pageNav>.container>ul>li>a.active{background:rgba(15,23,42,.1)}.pageNav>.container>ul>li>a.buttonPrimary{background:#6366f1;color:#fff}.pageContent{margin:16px 0}.pageFooter{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.pageFooter>.left{display:flex;flex-direction:column}/*# sourceMappingURL=style.min.css.map */
|
@import"https://fonts.googleapis.com/css2?family=Noto+Color+Emoji&family=Noto+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Outfit:wght@100;200;300;400;500;600;700;800;900&display=swap";*{padding:0;margin:0}*{font-family:"Noto Sans","Noto Color Emoji",sans-serif}h1,h2,h3,h4,h5,h6{font-family:"Outfit","Noto Color Emoji",sans-serif;margin-bottom:6px}body{background:#f8fafc}.container{max-width:1100px;width:100%;margin:0 auto}ul,ol{list-style-position:inside}.pageHero{background-image:url("/img/spawn/2023-09-15_17.51.17.png");background-position:center;color:#fff;height:240px}.pageHero>.blurFiler{backdrop-filter:blur(2px);padding:8px 0;height:calc(100% - 16px)}.pageHero>.blurFiler>.container{height:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.pageNav{width:100svw;background:#f1f5f9}.pageNav>.container{padding:16px 0;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.pageNav>.container>ul{list-style:none;display:flex;gap:8px}.pageNav>.container>ul>li>a{color:#0f172a;text-decoration:none;padding:8px 16px;border-radius:32px}.pageNav>.container>ul>li>a:hover,.pageNav>.container>ul>li>a.active{background:rgba(15,23,42,.1)}.pageNav>.container>ul>li>a.buttonPrimary{background:#6366f1;color:#fff}.pageContent{margin:16px 0}.pageFooter{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.pageFooter>.left{display:flex;flex-direction:column}.pageFooter>.right{list-style:none;display:flex}.pageFooter>.right>li{padding:8px}.pageFooter>.right>li>a{display:block;width:24px;height:24px;color:rgba(0,0,0,.7)}.pageFooter>.right>li>a:hover{color:#000}/*# sourceMappingURL=style.min.css.map */
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"version":3,"sourceRoot":"","sources":["src/_fonts.scss","src/_reset.scss","src/style.scss"],"names":[],"mappings":"AAAQ,gRCCN,UACA,WDCA,sDAGF,kBACE,mDAEA,kBENF,KACE,mBAGF,WACE,iBAEA,WAEA,cAGF,MACE,2BAGF,UACE,2DAEA,2BAEA,WAEA,aAEA,qBACE,0BAEA,cAEA,yBAEA,gCACE,YAEA,aACA,mBAEA,mBACA,8BAKN,SACE,aAEA,mBAEA,oBACE,eAEA,aACA,mBAEA,mBACA,8BAEA,uBACE,gBAEA,aAEA,QAGE,4BACE,cAEA,qBAEA,iBAEA,mBAEA,qEACE,6BAGF,0CACE,mBACA,WAQZ,aACE,cAGF,YACE,aACA,mBAEA,mBACA,8BAEA,kBACE,aACA","file":"style.min.css"}
|
{"version":3,"sourceRoot":"","sources":["src/_fonts.scss","src/_reset.scss","src/style.scss"],"names":[],"mappings":"AAAQ,gRCCN,UACA,WDCA,sDAGF,kBACE,mDAEA,kBENF,KACE,mBAGF,WACE,iBAEA,WAEA,cAGF,MACE,2BAGF,UACE,2DAEA,2BAEA,WAEA,aAEA,qBACE,0BAEA,cAEA,yBAEA,gCACE,YAEA,aACA,mBAEA,mBACA,8BAKN,SACE,aAEA,mBAEA,oBACE,eAEA,aACA,mBAEA,mBACA,8BAEA,uBACE,gBAEA,aAEA,QAGE,4BACE,cAEA,qBAEA,iBAEA,mBAEA,qEACE,6BAGF,0CACE,mBACA,WAQZ,aACE,cAGF,YACE,aACA,mBAEA,mBACA,8BAEA,kBACE,aACA,sBAGF,mBACE,gBAEA,aAEA,sBACE,YAEA,wBACE,cAEA,WACA,YAEA,qBAEA,8BACE","file":"style.min.css"}
|
40
index.php
40
index.php
|
@ -9,13 +9,17 @@
|
||||||
|
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
|
$nations = array(
|
||||||
|
'rop' => array(
|
||||||
|
'name' => 'Republic of Panorama',
|
||||||
|
'flag' => 'https://git.theclashfruit.me/CRSS/CRSS/raw/branch/main/Nations/Republic%20of%20Panorama/Flag.svg',
|
||||||
|
'short' => 'rop',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
if(isset($_SESSION['user']))
|
if(isset($_SESSION['user']))
|
||||||
$twig->addGlobal('user', $_SESSION['user']);
|
$twig->addGlobal('user', $_SESSION['user']);
|
||||||
|
|
||||||
$router->get('/u/([a-z0-9_\.]+)', function($name) {
|
|
||||||
echo 'Hello ' . htmlentities($name);
|
|
||||||
});
|
|
||||||
|
|
||||||
$router->get('/', function() {
|
$router->get('/', function() {
|
||||||
global $twig;
|
global $twig;
|
||||||
|
|
||||||
|
@ -40,6 +44,34 @@
|
||||||
echo $twig->render('map.twig');
|
echo $twig->render('map.twig');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$router->get('/profile', function() {
|
||||||
|
global $twig, $mysql;
|
||||||
|
|
||||||
|
$user = $mysql->getUserRecordFromId($_SESSION['user']['id']);
|
||||||
|
|
||||||
|
if($user == null) {
|
||||||
|
http_response_code(404);
|
||||||
|
|
||||||
|
echo $twig->render('404.twig');
|
||||||
|
} else {
|
||||||
|
echo $twig->render('profile.twig', array('db_data' => $user));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$router->get('/u/([a-z0-9_\.]+)', function($name) {
|
||||||
|
global $twig, $mysql, $discord;
|
||||||
|
|
||||||
|
$user = $mysql->getUserRecordFromUsername($name);
|
||||||
|
|
||||||
|
if($user == null) {
|
||||||
|
http_response_code(404);
|
||||||
|
|
||||||
|
echo $twig->render('404.twig');
|
||||||
|
} else {
|
||||||
|
echo $twig->render('user.twig', array('db_user' => $user));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$router->set404(function() {
|
$router->set404(function() {
|
||||||
global $twig;
|
global $twig;
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,27 @@
|
||||||
Brought to by PrideCraft, TheClashFruit's Real Hosting Company.
|
Brought to by PrideCraft, TheClashFruit's Real Hosting Company.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="left">
|
<ul class="right">
|
||||||
|
<li>
|
||||||
</div>
|
<a href="https://tech.lgbt/@blurryface" target="_blank" rel="me">
|
||||||
|
<svg style="width: 24px; height: 24px;" viewBox="0 0 24 24">
|
||||||
|
<path fill="currentColor" d="M20.94,14C20.66,15.41 18.5,16.96 15.97,17.26C14.66,17.41 13.37,17.56 12,17.5C9.75,17.39 8,16.96 8,16.96V17.58C8.32,19.8 10.22,19.93 12.03,20C13.85,20.05 15.47,19.54 15.47,19.54L15.55,21.19C15.55,21.19 14.27,21.87 12,22C10.75,22.07 9.19,21.97 7.38,21.5C3.46,20.45 2.78,16.26 2.68,12L2.67,8.57C2.67,4.23 5.5,2.96 5.5,2.96C6.95,2.3 9.41,2 11.97,2H12.03C14.59,2 17.05,2.3 18.5,2.96C18.5,2.96 21.33,4.23 21.33,8.57C21.33,8.57 21.37,11.78 20.94,14M18,8.91C18,7.83 17.7,7 17.15,6.35C16.59,5.72 15.85,5.39 14.92,5.39C13.86,5.39 13.05,5.8 12.5,6.62L12,7.5L11.5,6.62C10.94,5.8 10.14,5.39 9.07,5.39C8.15,5.39 7.41,5.72 6.84,6.35C6.29,7 6,7.83 6,8.91V14.17H8.1V9.06C8.1,8 8.55,7.44 9.46,7.44C10.46,7.44 10.96,8.09 10.96,9.37V12.16H13.03V9.37C13.03,8.09 13.53,7.44 14.54,7.44C15.44,7.44 15.89,8 15.89,9.06V14.17H18V8.91Z"></path>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://mas.to/@TheClashFruit" target="_blank" rel="me">
|
||||||
|
<svg style="width: 24px; height: 24px;" viewBox="0 0 24 24">
|
||||||
|
<path fill="currentColor" d="M20.94,14C20.66,15.41 18.5,16.96 15.97,17.26C14.66,17.41 13.37,17.56 12,17.5C9.75,17.39 8,16.96 8,16.96V17.58C8.32,19.8 10.22,19.93 12.03,20C13.85,20.05 15.47,19.54 15.47,19.54L15.55,21.19C15.55,21.19 14.27,21.87 12,22C10.75,22.07 9.19,21.97 7.38,21.5C3.46,20.45 2.78,16.26 2.68,12L2.67,8.57C2.67,4.23 5.5,2.96 5.5,2.96C6.95,2.3 9.41,2 11.97,2H12.03C14.59,2 17.05,2.3 18.5,2.96C18.5,2.96 21.33,4.23 21.33,8.57C21.33,8.57 21.37,11.78 20.94,14M18,8.91C18,7.83 17.7,7 17.15,6.35C16.59,5.72 15.85,5.39 14.92,5.39C13.86,5.39 13.05,5.8 12.5,6.62L12,7.5L11.5,6.62C10.94,5.8 10.14,5.39 9.07,5.39C8.15,5.39 7.41,5.72 6.84,6.35C6.29,7 6,7.83 6,8.91V14.17H8.1V9.06C8.1,8 8.55,7.44 9.46,7.44C10.46,7.44 10.96,8.09 10.96,9.37V12.16H13.03V9.37C13.03,8.09 13.53,7.44 14.54,7.44C15.44,7.44 15.89,8 15.89,9.06V14.17H18V8.91Z"></path>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://youtube.com/@CRSS666" target="_blank" rel="me">
|
||||||
|
<svg style="width: 24px; height: 24px;" viewBox="0 0 24 24">
|
||||||
|
<path fill="currentColor" d="M10,15L15.19,12L10,9V15M21.56,7.17C21.69,7.64 21.78,8.27 21.84,9.07C21.91,9.87 21.94,10.56 21.94,11.16L22,12C22,14.19 21.84,15.8 21.56,16.83C21.31,17.73 20.73,18.31 19.83,18.56C19.36,18.69 18.5,18.78 17.18,18.84C15.88,18.91 14.69,18.94 13.59,18.94L12,19C7.81,19 5.2,18.84 4.17,18.56C3.27,18.31 2.69,17.73 2.44,16.83C2.31,16.36 2.22,15.73 2.16,14.93C2.09,14.13 2.06,13.44 2.06,12.84L2,12C2,9.81 2.16,8.2 2.44,7.17C2.69,6.27 3.27,5.69 4.17,5.44C4.64,5.31 5.5,5.22 6.82,5.16C8.12,5.09 9.31,5.06 10.41,5.06L12,5C16.19,5 18.8,5.16 19.83,5.44C20.73,5.69 21.31,6.27 21.56,7.17Z"></path>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</footer>
|
</footer>
|
|
@ -25,7 +25,7 @@
|
||||||
<ul class="navRight">
|
<ul class="navRight">
|
||||||
{% if user %}
|
{% if user %}
|
||||||
<li>
|
<li>
|
||||||
<a class="userButton" href="/u/{{ user.username }}">
|
<a class="userButton {% if page == 'profile' %}active{% endif %}" href="{% if page == 'profile' %}#{% else %}/profile{% endif %}">
|
||||||
{{ user.global_name }}
|
{{ user.global_name }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -12,11 +12,16 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% include 'includes/nav.twig' with {'page': 'nations',} %}
|
{% include 'includes/nav.twig' with {'page': 'nations'} %}
|
||||||
|
|
||||||
<main class="pageContent" id="content">
|
<main class="pageContent" id="content">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
this is the home page
|
<h2>Nations</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="/nation/rop">Republic of Panorama</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
|
|
46
template/profile.twig
Normal file
46
template/profile.twig
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
{% include 'includes/head.twig' with {'pageTitle': 'Profile'} %}
|
||||||
|
|
||||||
|
<div class="pageHero" id="hero">
|
||||||
|
<div class="blurFiler">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Clyde's Real Survival SMP</h1>
|
||||||
|
|
||||||
|
<div class="serverInfo">
|
||||||
|
Online: <label>0</label> / <label>20</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% include 'includes/nav.twig' with {'page': 'profile',} %}
|
||||||
|
|
||||||
|
<main class="pageContent" id="content">
|
||||||
|
<div class="container">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
id: {{ user.id }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
username: {{ user.username }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
global_name: {{ user.global_name }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
accent_color: {{ user.accent_color }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
premium_type: {{ user.premium_type }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
public_flags: {{ user.public_flags }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
is_admin: <label>{{ db_data.is_admin }}</label>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
{% include 'includes/footer.twig' %}
|
||||||
|
{% include 'includes/foot.twig' %}
|
24
template/user.twig
Normal file
24
template/user.twig
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{% include 'includes/head.twig' with {'pageTitle': username} %}
|
||||||
|
|
||||||
|
<div class="pageHero" id="hero">
|
||||||
|
<div class="blurFiler">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Clyde's Real Survival SMP</h1>
|
||||||
|
|
||||||
|
<div class="serverInfo">
|
||||||
|
Online: <label>0</label> / <label>20</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% include 'includes/nav.twig' with {'page': 'user',} %}
|
||||||
|
|
||||||
|
<main class="pageContent" id="content">
|
||||||
|
<div class="container">
|
||||||
|
{{ db_user.display_name }} is {% if db_user.is_admin == 1 %} an admin! {% else %} not an admin! {% endif %}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
{% include 'includes/footer.twig' %}
|
||||||
|
{% include 'includes/foot.twig' %}
|
60
util/Database.php
Normal file
60
util/Database.php
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
<?php
|
||||||
|
class Database {
|
||||||
|
private string $host;
|
||||||
|
private string $user;
|
||||||
|
private string $pass;
|
||||||
|
private string $db;
|
||||||
|
private mysqli $conn;
|
||||||
|
|
||||||
|
function __construct($host, $user, $pass, $db) {
|
||||||
|
$this->host = $host;
|
||||||
|
$this->user = $user;
|
||||||
|
$this->pass = $pass;
|
||||||
|
$this->db = $db;
|
||||||
|
|
||||||
|
$this->conn = new mysqli($this->host, $this->user, $this->pass, $this->db);
|
||||||
|
}
|
||||||
|
|
||||||
|
function createUserRecord($user): void {
|
||||||
|
$sql = 'INSERT IGNORE INTO users (id, username, display_name) VALUES (?, ?, ?)';
|
||||||
|
|
||||||
|
$stmt = $this->conn->prepare($sql);
|
||||||
|
$stmt->bind_param('iss', $user['id'], $user['username'], $user['global_name']);
|
||||||
|
|
||||||
|
$stmt->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getUserRecordFromUsername($username): bool|array|null {
|
||||||
|
$sql = 'SELECT * FROM users WHERE username = ?';
|
||||||
|
|
||||||
|
$stmt = $this->conn->prepare($sql);
|
||||||
|
$stmt->bind_param('s', $username);
|
||||||
|
|
||||||
|
$stmt->execute();
|
||||||
|
|
||||||
|
$res = $stmt->get_result();
|
||||||
|
|
||||||
|
if($res->num_rows > 0) {
|
||||||
|
return $res->fetch_assoc();
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getUserRecordFromId($id): bool|array|null {
|
||||||
|
$sql = 'SELECT * FROM users WHERE id = ?';
|
||||||
|
|
||||||
|
$stmt = $this->conn->prepare($sql);
|
||||||
|
$stmt->bind_param('i', $id);
|
||||||
|
|
||||||
|
$stmt->execute();
|
||||||
|
|
||||||
|
$res = $stmt->get_result();
|
||||||
|
|
||||||
|
if($res->num_rows > 0) {
|
||||||
|
return $res->fetch_assoc();
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -67,7 +67,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function getUser($token): array {
|
function getUser($token): array {
|
||||||
$res = $this->curl->newRequest('get', 'https://discord.com/api/v10/users/@me')
|
$res = $this
|
||||||
|
->curl
|
||||||
|
->newRequest('get', 'https://discord.com/api/v10/users/@me')
|
||||||
->setHeader('Authorization', 'Bearer ' . $token)
|
->setHeader('Authorization', 'Bearer ' . $token)
|
||||||
->send();
|
->send();
|
||||||
|
|
||||||
|
@ -75,7 +77,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function getGuilds($token): array {
|
function getGuilds($token): array {
|
||||||
$res = $this->curl->newRequest('get', 'https://discord.com/api/v10/users/@me/guilds')
|
$res = $this
|
||||||
|
->curl
|
||||||
|
->newRequest('get', 'https://discord.com/api/v10/users/@me/guilds')
|
||||||
->setHeader('Authorization', 'Bearer ' . $token)
|
->setHeader('Authorization', 'Bearer ' . $token)
|
||||||
->send();
|
->send();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue