mirror of
https://github.com/SophiaAtkinson/steamwidgets-web.git
synced 2025-07-03 09:46:50 -07:00
Compare commits
45 Commits
147f3688e7
...
main
Author | SHA1 | Date | |
---|---|---|---|
067715f857 | |||
0cb555d5f5 | |||
003513e728 | |||
792331d5f4 | |||
89928a88c3 | |||
fc0d1591ac | |||
33f4b1175c | |||
b58fa084b9 | |||
f13e7fff35 | |||
3ffc0d46f1 | |||
183bc25253 | |||
29ae462e11 | |||
63af530e3c | |||
99d6e8b2d0 | |||
7ef44f9d3e | |||
fd904f4c31 | |||
98e3e3fc64 | |||
f4a6c09fc9 | |||
919832d5f3 | |||
9e182fccd3 | |||
3a0a025166 | |||
7f44d5161b
|
|||
d9d9029238
|
|||
6b473bf12e
|
|||
28900e2788 | |||
ae7a4f2a36
|
|||
8c184046b4 | |||
3ce1b5c1c0 | |||
a7c3a4cd0f | |||
7bd96a7c4d | |||
0cd71b7ee1 | |||
6c3f82b2ab | |||
cb5fc6c826 | |||
d85bb1073b | |||
07d4ad4425 | |||
3b2f71ae26 | |||
329e430cc1 | |||
f9e2639be7 | |||
56eec4c113 | |||
bcc773aa67 | |||
af851fab96 | |||
00cc24e0a6 | |||
f178a68304 | |||
d8c6d7adab | |||
2716862285 |
20
.env.example
20
.env.example
@ -14,10 +14,10 @@ APP_AUTHOR="Daniel Brendel"
|
||||
APP_CONTACT="dbrendel1988@gmail.com"
|
||||
APP_TITLE="${APP_NAME} - Integrate Steam Widgets into your website"
|
||||
APP_DESCRIPTION="Integrate Steam Widgets of your game/app into your website"
|
||||
APP_KEYWORDS="steam, widgets, steam widgets, steam game widget, steam app widget, steam server widget, steam player widget"
|
||||
APP_KEYWORDS="steam, widgets, steam widgets, steam game widget, steam app widget, steam server widget, steam player widget, steam group widget, steam workshop widget"
|
||||
APP_DEBUG=true
|
||||
APP_BASEDIR=""
|
||||
APP_SESSION=true
|
||||
APP_TIMEZONE=null
|
||||
APP_LINK_GITHUB="https://github.com/danielbrendel"
|
||||
APP_LINK_STEAM="https://store.steampowered.com/developer/danielbrendel/"
|
||||
APP_REPOSITORY="danielbrendel/steamwidgets-web"
|
||||
@ -31,9 +31,15 @@ APP_EXAMPLE_WORKSHOP=""
|
||||
APP_EXAMPLE_GROUP=""
|
||||
APP_FOOTER_NOTICE="${APP_NAME} is not affiliated with Valve or Steam"
|
||||
APP_STATSPASSWORD="test"
|
||||
APP_ENABLEDONATION=true
|
||||
|
||||
STEAM_API_KEY=""
|
||||
|
||||
# Session
|
||||
SESSION_ENABLE=true
|
||||
SESSION_DURATION=0
|
||||
SESSION_NAME=null
|
||||
|
||||
# Redis settings
|
||||
REDIS_HOST=localhost
|
||||
REDIS_PORT=6379
|
||||
@ -49,6 +55,11 @@ DB_PASSWORD=""
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=asatru
|
||||
DB_DRIVER=mysql
|
||||
DB_CHARSET="utf8"
|
||||
|
||||
# Caching
|
||||
CACHE_DRIVER=null
|
||||
CACHE_DURATION=512
|
||||
|
||||
# SMTP settings
|
||||
SMTP_FROMNAME="Test"
|
||||
@ -57,4 +68,7 @@ SMTP_HOST=""
|
||||
SMTP_PORT=587
|
||||
SMTP_USERNAME=""
|
||||
SMTP_PASSWORD=""
|
||||
SMTP_ENCRYPTION=tls
|
||||
SMTP_ENCRYPTION=tls
|
||||
|
||||
# Logging
|
||||
LOG_ENABLE=true
|
6
app/config/cache.php
Normal file
6
app/config/cache.php
Normal file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'driver' => env('CACHE_DRIVER', null),
|
||||
'duration' => env('CACHE_DURATION', 123)
|
||||
];
|
@ -26,7 +26,7 @@ class ApiController extends BaseController {
|
||||
$appid = $request->params()->query('appid', null);
|
||||
$language = $request->params()->query('lang', 'english');
|
||||
|
||||
$data = SteamApp::querySteamData($appid, $language);
|
||||
$data = SteamCache::cachedSteamApp($appid, $language);
|
||||
|
||||
HitsModel::addHit(HitsModel::HITTYPE_MODULE_APP);
|
||||
|
||||
@ -47,7 +47,7 @@ class ApiController extends BaseController {
|
||||
try {
|
||||
$addr = $request->params()->query('addr', null);
|
||||
|
||||
$data = SteamServer::querySteamData(env('STEAM_API_KEY'), $addr);
|
||||
$data = SteamCache::cachedSteamServer(env('STEAM_API_KEY'), $addr);
|
||||
|
||||
HitsModel::addHit(HitsModel::HITTYPE_MODULE_SERVER);
|
||||
|
||||
@ -68,7 +68,7 @@ class ApiController extends BaseController {
|
||||
try {
|
||||
$steamid = $request->params()->query('steamid', null);
|
||||
|
||||
$data = SteamUser::querySteamData(env('STEAM_API_KEY'), $steamid);
|
||||
$data = SteamCache::cachedSteamUser(env('STEAM_API_KEY'), $steamid);
|
||||
|
||||
HitsModel::addHit(HitsModel::HITTYPE_MODULE_USER);
|
||||
|
||||
@ -89,7 +89,7 @@ class ApiController extends BaseController {
|
||||
try {
|
||||
$itemid = $request->params()->query('itemid', null);
|
||||
|
||||
$data = SteamWorkshop::querySteamData($itemid);
|
||||
$data = SteamCache::cachedSteamWorkshop($itemid);
|
||||
|
||||
HitsModel::addHit(HitsModel::HITTYPE_MODULE_WORKSHOP);
|
||||
|
||||
@ -110,7 +110,7 @@ class ApiController extends BaseController {
|
||||
try {
|
||||
$group = $request->params()->query('group', null);
|
||||
|
||||
$data = SteamGroup::querySteamData($group);
|
||||
$data = SteamCache::cachedSteamGroup($group);
|
||||
|
||||
HitsModel::addHit(HitsModel::HITTYPE_MODULE_GROUP);
|
||||
|
||||
|
49
app/migrations/CacheModel.php
Normal file
49
app/migrations/CacheModel.php
Normal file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
Asatru PHP - Migration vor Caching
|
||||
*/
|
||||
|
||||
class CacheModel_Migration {
|
||||
private $database = null;
|
||||
private $connection = null;
|
||||
|
||||
/**
|
||||
* Construct class and store PDO connection handle
|
||||
*
|
||||
* @param \PDO $pdo
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($pdo)
|
||||
{
|
||||
$this->connection = $pdo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the table shall be created or modified
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
$this->database = new Asatru\Database\Migration('CacheModel', $this->connection);
|
||||
$this->database->drop();
|
||||
$this->database->add('id INT NOT NULL AUTO_INCREMENT PRIMARY KEY');
|
||||
$this->database->add('ident VARCHAR(260) NOT NULL');
|
||||
$this->database->add('value BLOB NULL');
|
||||
$this->database->add('updated_at TIMESTAMP');
|
||||
$this->database->add('created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP');
|
||||
$this->database->create();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the table shall be dropped
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
$this->database = new Asatru\Database\Migration('Cache', $this->connection);
|
||||
$this->database->drop();
|
||||
}
|
||||
}
|
@ -1 +1,4 @@
|
||||
47f3d3306fbd25715600db55b33b1542293ab5eb593205d6f5884bcaafa5d9a4627c76af04b684962c99a9518ef6b3d10e983203f6b5a8576912445d8f285fb7
|
||||
|
||||
cd19e5ec4a12d40d8d3ecdf267ef890e80fdd94ab28f81fddeb0c12b6f6b88773157e469c2d693abd4583e18b9b5a126c3fcecd6c07f4374c6c6e2837166b2ec
|
||||
|
||||
|
206
app/models/CacheModel.php
Normal file
206
app/models/CacheModel.php
Normal file
@ -0,0 +1,206 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
Asatru PHP - Model for Caching
|
||||
*/
|
||||
|
||||
class CacheModel extends \Asatru\Database\Model {
|
||||
/**
|
||||
* Obtain value either from cache or from closure
|
||||
*
|
||||
* @param string $ident The cache item identifier
|
||||
* @param int $timeInSeconds Amount of seconds the item shall be cached
|
||||
* @param $closure Function to be called for the actual value
|
||||
* @return mixed
|
||||
*/
|
||||
public static function remember($ident, $timeInSeconds, $closure)
|
||||
{
|
||||
$item = CacheModel::find($ident, 'ident');
|
||||
if ($item->count() == 0) {
|
||||
$value = $closure();
|
||||
|
||||
$data = array(
|
||||
'ident' => $ident,
|
||||
'value' => $value,
|
||||
'updated_at' => date('Y-m-d H:i:s')
|
||||
);
|
||||
|
||||
foreach ($data as $key => $val) {
|
||||
CacheModel::insert($key, $val);
|
||||
}
|
||||
|
||||
CacheModel::go();
|
||||
|
||||
return $value;
|
||||
} else {
|
||||
$data = $item->get(0);
|
||||
$dtLast = new DateTime(date('Y-m-d H:i:s', strtotime($data->get('updated_at'))));
|
||||
$dtLast->add(new DateInterval('PT' . $timeInSeconds . 'S'));
|
||||
$dtNow = new DateTime('now');
|
||||
|
||||
if ($dtNow < $dtLast) {
|
||||
return $data->get('value');
|
||||
} else {
|
||||
$value = $closure();
|
||||
|
||||
$updData = array(
|
||||
'value' => $value,
|
||||
'updated_at' => date('Y-m-d H:i:s')
|
||||
);
|
||||
|
||||
foreach ($updData as $key => $val) {
|
||||
CacheModel::update($key, $val);
|
||||
}
|
||||
|
||||
CacheModel::where('id', '=', $data->get('id'));
|
||||
|
||||
CacheModel::go();
|
||||
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Query an entire item
|
||||
*
|
||||
* @param $ident
|
||||
* @param $default
|
||||
* @return mixed
|
||||
*/
|
||||
public static function query($ident, $default = null)
|
||||
{
|
||||
$what = null;
|
||||
if (strpos($ident, '.') !== false) {
|
||||
$what = explode('.', $ident);
|
||||
}
|
||||
|
||||
$result = CacheModel::where('ident', '=', (((is_array($what)) && (count($what) > 0)) ? $what[0] : $ident))->first();
|
||||
if (!$result) {
|
||||
return $default;
|
||||
}
|
||||
|
||||
if ((is_array($what)) && (count($what) > 1)) {
|
||||
return $result->get($what[1]);
|
||||
}
|
||||
|
||||
return $result->get('value');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for item existence
|
||||
*
|
||||
* @param $ident
|
||||
* @return bool
|
||||
*/
|
||||
public static function has($ident)
|
||||
{
|
||||
$item = CacheModel::find($ident, 'ident');
|
||||
if ($item->count() > 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if item cache time is elapsed
|
||||
*
|
||||
* @param $ident
|
||||
* @param $timeInSeconds
|
||||
* @return bool
|
||||
*/
|
||||
public static function elapsed($ident, $timeInSeconds)
|
||||
{
|
||||
if (!CacheModel::has($ident)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$data = CacheModel::where('ident', '=', $ident)->first();
|
||||
|
||||
$dtLast = new DateTime(date('Y-m-d H:i:s', strtotime($data->get('updated_at'))));
|
||||
$dtLast->add(new DateInterval('PT' . $timeInSeconds . 'S'));
|
||||
$dtNow = new DateTime('now');
|
||||
|
||||
return ($dtNow >= $dtLast);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get item and then delete it
|
||||
*
|
||||
* @param $ident
|
||||
* @return mixed
|
||||
*/
|
||||
public static function pull($ident)
|
||||
{
|
||||
$item = CacheModel::find($ident, 'ident');
|
||||
if ($item->count() > 0) {
|
||||
$data = $item->get(0);
|
||||
|
||||
CacheModel::where('id', '=', $item->get(0)->get('id'))->delete();
|
||||
|
||||
return $data->get('value');
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write item to table
|
||||
*
|
||||
* @param $ident
|
||||
* @param $value
|
||||
* @return bool
|
||||
*/
|
||||
public static function put($ident, $value)
|
||||
{
|
||||
if (CacheModel::has($ident)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$data = array(
|
||||
'ident' => $ident,
|
||||
'value' => $value,
|
||||
'updated_at' => date('Y-m-d H:i:s')
|
||||
);
|
||||
|
||||
foreach ($data as $key => $val) {
|
||||
CacheModel::insert($key, $val);
|
||||
}
|
||||
|
||||
CacheModel::go();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Forget cache item
|
||||
*
|
||||
* @param string $ident The item identifier
|
||||
* @return bool
|
||||
*/
|
||||
public static function forget($ident)
|
||||
{
|
||||
$item = CacheModel::find($ident, 'ident');
|
||||
if ($item->count() > 0) {
|
||||
CacheModel::where('id', '=', $item->get(0)->get('id'))->delete();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the associated table name of the migration
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function tableName()
|
||||
{
|
||||
return 'CacheModel';
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Class SteamApp
|
||||
*
|
||||
|
106
app/modules/SteamCache.php
Normal file
106
app/modules/SteamCache.php
Normal file
@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Class SteamCache
|
||||
*
|
||||
* Cached gateway to Steam Web API queries
|
||||
*/
|
||||
class SteamCache {
|
||||
/**
|
||||
* @param $appid
|
||||
* @param $lang
|
||||
* @return mixed
|
||||
*/
|
||||
public static function cachedSteamApp($appid, $lang)
|
||||
{
|
||||
$cache = config('cache');
|
||||
|
||||
if ($cache->driver === 'db') {
|
||||
return json_decode(CacheModel::remember('steam_app_' . $appid . '_' . $lang, $cache->duration, function() use ($appid, $lang) {
|
||||
return json_encode(SteamApp::querySteamData($appid, $lang));
|
||||
}));
|
||||
} else if ($cache->driver === 'redis') {
|
||||
throw new \Exception('Not implemented yet.');
|
||||
} else {
|
||||
return SteamApp::querySteamData($appid, $lang);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $key
|
||||
* @param $steamid
|
||||
* @return mixed
|
||||
*/
|
||||
public static function cachedSteamUser($key, $steamid)
|
||||
{
|
||||
$cache = config('cache');
|
||||
|
||||
if ($cache->driver === 'db') {
|
||||
return json_decode(CacheModel::remember('steam_user_' . $steamid, $cache->duration, function() use ($key, $steamid) {
|
||||
return json_encode(SteamUser::querySteamData($key, $steamid));
|
||||
}));
|
||||
} else if ($cache->driver === 'redis') {
|
||||
throw new \Exception('Not implemented yet.');
|
||||
} else {
|
||||
return SteamUser::querySteamData($key, $steamid);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $itemid
|
||||
* @return mixed
|
||||
*/
|
||||
public static function cachedSteamWorkshop($itemid)
|
||||
{
|
||||
$cache = config('cache');
|
||||
|
||||
if ($cache->driver === 'db') {
|
||||
return json_decode(CacheModel::remember('steam_workshop_' . $itemid, $cache->duration, function() use ($itemid) {
|
||||
return json_encode(SteamWorkshop::querySteamData($itemid));
|
||||
}));
|
||||
} else if ($cache->driver === 'redis') {
|
||||
throw new \Exception('Not implemented yet.');
|
||||
} else {
|
||||
return SteamWorkshop::querySteamData($itemid);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $group
|
||||
* @return mixed
|
||||
*/
|
||||
public static function cachedSteamGroup($group)
|
||||
{
|
||||
$cache = config('cache');
|
||||
|
||||
if ($cache->driver === 'db') {
|
||||
return json_decode(CacheModel::remember('steam_group_' . $group, $cache->duration, function() use ($group) {
|
||||
return json_encode(SteamGroup::querySteamData($group));
|
||||
}));
|
||||
} else if ($cache->driver === 'redis') {
|
||||
throw new \Exception('Not implemented yet.');
|
||||
} else {
|
||||
return SteamGroup::querySteamData($group);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $key
|
||||
* @param $addr
|
||||
* @return mixed
|
||||
*/
|
||||
public static function cachedSteamServer($key, $addr)
|
||||
{
|
||||
$cache = config('cache');
|
||||
|
||||
if ($cache->driver === 'db') {
|
||||
return json_decode(CacheModel::remember('steam_server_' . $addr, $cache->duration, function() use ($key, $addr) {
|
||||
return json_encode(SteamServer::querySteamData($key, $addr));
|
||||
}));
|
||||
} else if ($cache->driver === 'redis') {
|
||||
throw new \Exception('Not implemented yet.');
|
||||
} else {
|
||||
return SteamServer::querySteamData($key, $addr);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Class SteamGroup
|
||||
*
|
||||
|
@ -1,7 +1,4 @@
|
||||
<?php
|
||||
|
||||
use Redis;
|
||||
|
||||
/**
|
||||
* Class SteamServer
|
||||
*
|
||||
|
@ -1,7 +1,4 @@
|
||||
<?php
|
||||
|
||||
use Redis;
|
||||
|
||||
/**
|
||||
* Class SteamUser
|
||||
*
|
||||
|
@ -1,7 +1,4 @@
|
||||
<?php
|
||||
|
||||
use Redis;
|
||||
|
||||
/**
|
||||
* Class SteamWorkshop
|
||||
*
|
||||
|
@ -97,6 +97,12 @@ a.navbar-burger:hover {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.header-centered {
|
||||
@media screen and (min-width: 1089px) {
|
||||
transform: translateX(9.5%);
|
||||
}
|
||||
}
|
||||
|
||||
.header-content {
|
||||
position: relative;
|
||||
top: 50%;
|
||||
@ -279,6 +285,11 @@ tbody strong {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.sponsoring {
|
||||
position: relative;
|
||||
margin-top: 35px;
|
||||
}
|
||||
|
||||
.stats-input {
|
||||
padding: 8px;
|
||||
color: rgb(50, 50, 50);
|
||||
@ -450,6 +461,14 @@ tbody strong {
|
||||
padding-top: 45px;
|
||||
}
|
||||
|
||||
.background-get-started {
|
||||
background-color: rgb(35, 55, 79);
|
||||
@media screen and (min-width: 768px) {
|
||||
border-radius: 10px;
|
||||
}
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.button-get-started {
|
||||
margin-top: 50px;
|
||||
margin-bottom: 50px;
|
||||
|
@ -653,7 +653,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
</pre>
|
||||
|
||||
<br/><br/>
|
||||
This renders the following widget:<br/>
|
||||
This renders the following widget:<br/><br/>
|
||||
<steam-workshop itemid="{{ env('APP_EXAMPLE_WORKSHOP') }}"></steam-workshop>
|
||||
</p>
|
||||
|
||||
@ -842,7 +842,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
</pre>
|
||||
|
||||
<br/><br/>
|
||||
This renders the following widget:<br/>
|
||||
This renders the following widget:<br/><br/>
|
||||
<steam-group group="{{ env('APP_EXAMPLE_GROUP') }}"></steam-group>
|
||||
</p>
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Asatru PHP - Exception</title>
|
||||
|
||||
@ -25,6 +26,12 @@
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1087px) {
|
||||
.ex_image {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.ex_box {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
@ -32,6 +39,12 @@
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1087px) {
|
||||
.ex_box {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.ex_header_num {
|
||||
position: relative;
|
||||
@ -76,24 +89,25 @@
|
||||
position: relative;
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
margin-top: 20px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
width: 51px;
|
||||
border: 1px solid rgb(51, 63, 104);
|
||||
border-radius: 5px;
|
||||
background-color: rgb(45, 95, 245);
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.ex_refresh a {
|
||||
width: 51px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
color: rgb(235, 235, 235);
|
||||
background-color: rgb(45, 95, 245);
|
||||
border: 1px solid rgb(51, 63, 104);
|
||||
border-radius: 5px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.ex_refresh a:hover {
|
||||
color: rgb(255, 255, 255);
|
||||
background-color: rgb(67, 111, 245);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@ -167,8 +181,8 @@
|
||||
|
||||
<?php foreach ($stacktrace as $item) { ?>
|
||||
<div class="ex_trace_content_col_<?= (($tableswitch) ? '1' : '2') ?>">
|
||||
#<?= $stackcounter ?> <?= ((isset($item['file'])) ? $item['file'] : 'internal function') ?><?= (isset($item['line']) ? '(' . $item['line'] . ')' : '') ?>: <?= $item['function'] ?>
|
||||
<?php if (count($item['args']) > 0) { ?>
|
||||
#<?= $stackcounter ?> <?= ((isset($item['file'])) ? $item['file'] : 'internal function') ?><?= (isset($item['line']) ? '(' . $item['line'] . ')' : '') ?>: <?= isset($item['class']) ? $item['class'] . '::' : '' ?><?= $item['function'] ?>
|
||||
<?php if ((isset($item['args'])) && (count($item['args']) > 0)) { ?>
|
||||
(
|
||||
<?php $argcnt = 0; ?>
|
||||
<?php foreach ($item['args'] as $key => $arg) { ?>
|
||||
|
@ -2,6 +2,7 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Asatru PHP - Error 500</title>
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div class="header">
|
||||
<div class="header-overlay">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<div class="columns header-centered">
|
||||
<div class="column is-half">
|
||||
<div class="header-content">
|
||||
<h1 class="header-gradient">{{ env('APP_NAME') }}</h1>
|
||||
|
@ -140,10 +140,28 @@ let widget = new SteamApp('#app-widget', {
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div><hr/></div>
|
||||
@if (!env('APP_ENABLEDONATION'))
|
||||
<div><hr/></div>
|
||||
@endif
|
||||
|
||||
<div class="content-section is-centered">
|
||||
<div class="content-section is-centered {{ (env('APP_ENABLEDONATION')) ? 'background-get-started' : '' }}">
|
||||
<div class="is-sidepadding button-get-started fade fade-out">
|
||||
<a href="{{ url('/documentation') }}">Get Started!</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (env('APP_ENABLEDONATION'))
|
||||
<div class="content-section is-centered">
|
||||
<div class="is-sidepadding fade fade-out">
|
||||
<h3>Your support is greatly appreciated</h3>
|
||||
|
||||
<p>
|
||||
Your support helps to continue working on the project and providing the required infrastructure.
|
||||
</p>
|
||||
|
||||
<p class="sponsoring">
|
||||
<a href='https://ko-fi.com/C0C7V2ESD' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://storage.ko-fi.com/cdn/kofi2.png?v=3' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
@ -21,7 +21,8 @@
|
||||
"php": "^8.0",
|
||||
"danielbrendel/asatru-php-framework": "dev-main",
|
||||
"phpmailer/phpmailer": "^6.1",
|
||||
"nesbot/carbon": "^2.0"
|
||||
"nesbot/carbon": "^2.0",
|
||||
"predis/predis": "^2.2"
|
||||
},
|
||||
"scripts": {
|
||||
"post-root-package-install": [
|
||||
|
602
composer.lock
generated
602
composer.lock
generated
File diff suppressed because it is too large
Load Diff
Binary file not shown.
48
package-lock.json
generated
48
package-lock.json
generated
@ -112,9 +112,9 @@
|
||||
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.12.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.3.tgz",
|
||||
"integrity": "sha512-sD+ia2ubTeWrOu+YMF+MTAB7E+O7qsMqAbMfW7DG3K1URwhZ5hN1pLlRVGbf4wDFzSfikL05M17EyorS86jShw==",
|
||||
"version": "20.12.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.4.tgz",
|
||||
"integrity": "sha512-E+Fa9z3wSQpzgYQdYmme5X3OTuejnnTx88A6p6vkkJosR3KBz+HpE3kqNm98VE6cfLFcISx7zW7MsJkH6KwbTw==",
|
||||
"dependencies": {
|
||||
"undici-types": "~5.26.4"
|
||||
}
|
||||
@ -435,9 +435,9 @@
|
||||
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001605",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz",
|
||||
"integrity": "sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==",
|
||||
"version": "1.0.30001606",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001606.tgz",
|
||||
"integrity": "sha512-LPbwnW4vfpJId225pwjZJOgX1m9sGfbw/RKJvw/t0QhYOOaTXHvkjVGFGPpvwEzufrjvTlsULnVTxdy4/6cqkg==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@ -589,9 +589,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.724",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.724.tgz",
|
||||
"integrity": "sha512-RTRvkmRkGhNBPPpdrgtDKvmOEYTrPlXDfc0J/Nfq5s29tEahAwhiX4mmhNzj6febWMleulxVYPh7QwCSL/EldA=="
|
||||
"version": "1.4.728",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.728.tgz",
|
||||
"integrity": "sha512-Ud1v7hJJYIqehlUJGqR6PF1Ek8l80zWwxA6nGxigBsGJ9f9M2fciHyrIiNMerSHSH3p+0/Ia7jIlnDkt41h5cw=="
|
||||
},
|
||||
"node_modules/emojis-list": {
|
||||
"version": "3.0.0",
|
||||
@ -1246,9 +1246,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-modules-extract-imports": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
|
||||
"integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
|
||||
"integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || >= 14"
|
||||
@ -1258,9 +1258,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-modules-local-by-default": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz",
|
||||
"integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==",
|
||||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz",
|
||||
"integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"icss-utils": "^5.0.0",
|
||||
@ -1275,9 +1275,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-modules-scope": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz",
|
||||
"integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==",
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz",
|
||||
"integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"postcss-selector-parser": "^6.0.4"
|
||||
@ -1426,9 +1426,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/sass": {
|
||||
"version": "1.72.0",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.72.0.tgz",
|
||||
"integrity": "sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==",
|
||||
"version": "1.74.1",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.74.1.tgz",
|
||||
"integrity": "sha512-w0Z9p/rWZWelb88ISOLyvqTWGmtmu2QJICqDBGyNnfG4OUnPX9BBjjYIXUpXCMOOg5MQWNpqzt876la1fsTvUA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"chokidar": ">=3.0.0 <4.0.0",
|
||||
@ -1649,9 +1649,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.30.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.30.2.tgz",
|
||||
"integrity": "sha512-vTDjRKYKip4dOFL5VizdoxHTYDfEXPdz5t+FbxCC5Rp2s+KbEO8w5wqMDPgj7CtFKZuzq7PXv28fZoXfqqBVuw==",
|
||||
"version": "5.30.3",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz",
|
||||
"integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==",
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.3",
|
||||
"acorn": "^8.8.2",
|
||||
|
2
public/js/app.js
vendored
2
public/js/app.js
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user