2018-01-21 19:07:43 +01:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
|
|
|
<?php
|
|
|
|
require_once (__DIR__ . '/../internals/base.php');
|
2018-01-26 23:52:55 +01:00
|
|
|
require_once (__DIR__ . '/../internals/highscores.php');
|
|
|
|
require_once (__DIR__ . '/../internals/alephnoteStatistics.php');
|
2018-01-27 14:21:34 +01:00
|
|
|
require_once (__DIR__ . '/../internals/blog.php');
|
|
|
|
require_once (__DIR__ . '/../internals/euler.php');
|
2019-11-02 20:19:34 +01:00
|
|
|
require_once (__DIR__ . '/../internals/adventofcode.php');
|
2018-01-27 14:21:34 +01:00
|
|
|
require_once (__DIR__ . '/../internals/highscores.php');
|
|
|
|
require_once (__DIR__ . '/../internals/mikeschergitgraph.php');
|
|
|
|
require_once (__DIR__ . '/../internals/programs.php');
|
2018-01-27 18:13:38 +01:00
|
|
|
require_once (__DIR__ . '/../internals/books.php');
|
2018-02-03 15:44:40 +01:00
|
|
|
require_once (__DIR__ . '/../internals/updateslog.php');
|
2018-01-26 23:52:55 +01:00
|
|
|
|
2019-12-28 23:52:19 +01:00
|
|
|
$connected = Database::tryconnect();
|
2018-01-26 23:52:55 +01:00
|
|
|
|
2018-01-27 14:21:34 +01:00
|
|
|
$consistency_blog = Blog::checkConsistency();
|
|
|
|
$consistency_prog = Programs::checkConsistency();
|
|
|
|
$consistency_euler = Euler::checkConsistency();
|
2018-01-27 18:13:38 +01:00
|
|
|
$consistency_books = Books::checkConsistency();
|
2019-12-28 22:42:25 +01:00
|
|
|
$consistency_egg = MikescherGitGraph::checkConsistency();
|
2018-01-27 14:21:34 +01:00
|
|
|
$consistency_progimg = Programs::checkThumbnails();
|
2018-01-27 18:13:38 +01:00
|
|
|
$consistency_bookimg = Books::checkThumbnails();
|
2019-11-02 20:19:34 +01:00
|
|
|
$consistency_aoc = AdventOfCode::checkConsistency();
|
2018-01-27 14:21:34 +01:00
|
|
|
|
|
|
|
?>
|
|
|
|
<?php
|
|
|
|
|
|
|
|
function dumpConsistency($c) {
|
|
|
|
if ($c['result']==='ok') echo "<span class='consistency_result_ok'>OK</span>";
|
|
|
|
else if ($c['result']==='warn') echo "<span class='consistency_result_warn'>".$c['message']."</span>";
|
|
|
|
else echo "<span class='consistency_result_err'>".$c['message']."</span>";
|
|
|
|
}
|
|
|
|
|
2018-01-21 19:07:43 +01:00
|
|
|
?>
|
|
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
2018-01-27 14:21:34 +01:00
|
|
|
<title>Mikescher.com - Admin</title>
|
2018-01-21 19:07:43 +01:00
|
|
|
<link rel="icon" type="image/png" href="/data/images/favicon.png"/>
|
|
|
|
<link rel="canonical" href="https://www.mikescher.com/about"/>
|
2019-11-03 15:33:23 +01:00
|
|
|
<?php printHeaderCSS(); ?>
|
|
|
|
<?php includeAdditionalScript("https://code.jquery.com/jquery-latest.min.js", '', true) ?>
|
|
|
|
<?php includeAdditionalScript("/data/javascript/admin.js", 'defer', true) ?>
|
2018-01-21 19:07:43 +01:00
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div id="mastercontainer">
|
|
|
|
|
|
|
|
<?php $HEADER_ACTIVE = 'admin'; include (__DIR__ . '/../fragments/header.php'); ?>
|
|
|
|
|
|
|
|
<div id="content" class="content-responsive">
|
|
|
|
|
|
|
|
<div class="admincontent">
|
|
|
|
|
|
|
|
<div class="contentheader"><h1>Admin</h1><hr/></div>
|
|
|
|
|
2019-12-28 23:52:19 +01:00
|
|
|
<?php if (!$connected): ?>
|
|
|
|
<div class="boxedcontent alertbox">
|
|
|
|
<div class="bc_data">Could not connect to database</div>
|
|
|
|
</div>
|
|
|
|
<?php endif; ?>
|
|
|
|
|
2019-11-02 17:54:22 +01:00
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
2018-01-26 23:52:55 +01:00
|
|
|
|
2018-01-27 14:21:34 +01:00
|
|
|
<div class="boxedcontent">
|
|
|
|
<div class="bc_header">Version</div>
|
2018-01-21 19:07:43 +01:00
|
|
|
|
2018-01-26 23:52:55 +01:00
|
|
|
<div class="bc_data keyvaluelist kvl_100">
|
|
|
|
<div><span>Branch:</span> <span><?php echo exec('git rev-parse --abbrev-ref HEAD'); ?></span></div>
|
|
|
|
<div><span>Commit:</span> <span><?php echo exec('git rev-parse HEAD'); ?></span></div>
|
|
|
|
<div><span>Date:</span> <span><?php echo exec('git log -1 --format=%cd'); ?></span></div>
|
|
|
|
<div><span>Message:</span><span><?php echo nl2br(trim(exec('git log -1'))); ?></span></div>
|
2018-01-21 19:07:43 +01:00
|
|
|
</div>
|
2018-01-27 14:21:34 +01:00
|
|
|
</div>
|
2018-01-21 19:07:43 +01:00
|
|
|
|
2019-11-02 17:54:22 +01:00
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
2018-01-27 14:21:34 +01:00
|
|
|
|
|
|
|
<div class="boxedcontent">
|
|
|
|
<div class="bc_header">Self test</div>
|
|
|
|
|
|
|
|
<div class="bc_data">
|
|
|
|
<div class="keyvaluelist kvl_200">
|
2018-01-27 18:13:38 +01:00
|
|
|
<div><span>Program thumbnails:</span> <?php dumpConsistency($consistency_progimg); ?></div>
|
2019-12-28 22:42:25 +01:00
|
|
|
<div><span>ExtendedGitGraph:</span> <?php dumpConsistency($consistency_egg); ?></div>
|
2018-01-27 18:13:38 +01:00
|
|
|
<div><span>Book thumbnails:</span> <?php dumpConsistency($consistency_bookimg); ?></div>
|
2018-01-27 14:21:34 +01:00
|
|
|
<div><span>Blog data:</span> <?php dumpConsistency($consistency_blog); ?></div>
|
|
|
|
<div><span>Euler data:</span> <?php dumpConsistency($consistency_euler); ?></div>
|
2019-11-02 20:19:34 +01:00
|
|
|
<div><span>AdventOfCode data:</span> <?php dumpConsistency($consistency_aoc); ?></div>
|
2018-01-27 14:21:34 +01:00
|
|
|
<div><span>Programs data:</span> <?php dumpConsistency($consistency_prog); ?></div>
|
2018-01-27 18:13:38 +01:00
|
|
|
<div><span>Books data:</span> <?php dumpConsistency($consistency_books); ?></div>
|
2018-01-27 14:21:34 +01:00
|
|
|
</div>
|
|
|
|
<br/>
|
2019-12-28 22:42:25 +01:00
|
|
|
<a class="button" href="/api/site::createProgramThumbnails">Update Program Thumbnails</a>
|
|
|
|
<a class="button" href="/api/site::createBookThumbnails">Update Book Thumbnails</a>
|
2018-01-27 14:21:34 +01:00
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
2018-01-21 19:07:43 +01:00
|
|
|
|
2019-11-02 17:54:22 +01:00
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
2018-01-26 23:52:55 +01:00
|
|
|
|
2018-02-03 14:43:28 +01:00
|
|
|
<div class="boxedcontent">
|
|
|
|
<div class="bc_header">Self IP Addr</div>
|
|
|
|
|
|
|
|
<?php
|
|
|
|
$ippath = __DIR__ . '/../dynamic/self_ip_address.auto.cfg';
|
|
|
|
$self_ip = file_exists($ippath) ? file_get_contents($ippath) : 'N/A';
|
|
|
|
$real_ip = get_client_ip();
|
|
|
|
$me = $real_ip == $self_ip
|
|
|
|
?>
|
|
|
|
|
|
|
|
<div class="bc_data keyvaluelist kvl_200">
|
|
|
|
<div><span>Registered IP:</span> <span><?php echo $self_ip; ?></span></div>
|
|
|
|
<div><span>Current IP:</span> <span><?php echo $real_ip; ?></span></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2019-11-02 17:54:22 +01:00
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
2018-02-03 14:43:28 +01:00
|
|
|
|
2018-01-21 19:07:43 +01:00
|
|
|
<div class="boxedcontent">
|
|
|
|
<div class="bc_header">ExtendedGitGraph</div>
|
|
|
|
|
|
|
|
<div class="bc_data">
|
|
|
|
|
2019-12-28 22:42:25 +01:00
|
|
|
<textarea class="egg_ajaxOutput" id="egg_ajaxOutput" readonly="readonly"></textarea>
|
2018-01-21 19:07:43 +01:00
|
|
|
<a class="button" href="javascript:startAjaxRefresh('<?php echo $CONFIG['ajax_secret'] ?>')">Update</a>
|
|
|
|
<a class="button" href="javascript:startAjaxRedraw('<?php echo $CONFIG['ajax_secret'] ?>')">Redraw</a>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
2018-01-26 23:52:55 +01:00
|
|
|
</div>
|
|
|
|
|
2019-11-02 17:54:22 +01:00
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
2018-01-27 00:35:13 +01:00
|
|
|
|
2018-01-26 23:52:55 +01:00
|
|
|
<div class="boxedcontent">
|
|
|
|
<div class="bc_header">AlephNote</div>
|
|
|
|
|
2019-12-28 23:52:19 +01:00
|
|
|
<?php if ($connected): ?>
|
|
|
|
<div class="bc_data">
|
|
|
|
<div class="keyvaluelist kvl_200">
|
|
|
|
<div><span>Total users:</span> <span><?php echo AlephNoteStatistics::getTotalUserCount(); ?></span></div>
|
|
|
|
<div><span>Users on latest version:</span> <span><?php echo AlephNoteStatistics::getUserCountFromLastVersion(); ?></span></div>
|
|
|
|
<div><span>Active users:</span> <span><?php echo AlephNoteStatistics::getActiveUserCount(32); ?></span></div>
|
|
|
|
</div>
|
|
|
|
<br/>
|
|
|
|
<div id="an_ajax_target"></div>
|
|
|
|
<a class="button" href="javascript:startAjaxReplace('#an_ajax_target', '/api/alephnote::show?secret=<?php echo $CONFIG['ajax_secret'] ?>')">Show</a>
|
2018-01-26 23:52:55 +01:00
|
|
|
</div>
|
2019-12-28 23:52:19 +01:00
|
|
|
<?php else: ?>
|
|
|
|
<div class="bc_data keyvaluelist">Database not connected.</div>
|
|
|
|
<?php endif; ?>
|
2018-01-26 23:52:55 +01:00
|
|
|
|
|
|
|
</div>
|
|
|
|
|
2019-11-02 17:54:22 +01:00
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
2018-01-27 00:35:13 +01:00
|
|
|
|
2018-02-03 14:43:41 +01:00
|
|
|
<div class="boxedcontent">
|
|
|
|
<div class="bc_header">Statics</div>
|
|
|
|
|
|
|
|
<div class="bc_data keyvaluelist kvl_200">
|
|
|
|
<div><span>Blog entries:</span> <span><?php echo count(Blog::listAll()); ?></span></div>
|
|
|
|
<div><span>Book entries:</span> <span><?php echo count(Books::listAll()); ?></span></div>
|
|
|
|
<div><span>Euler entries:</span> <span><?php echo count(Euler::listAll()); ?></span></div>
|
|
|
|
<div><span>Program entries:</span> <span><?php echo count(Programs::listAll()); ?></span></div>
|
|
|
|
<div><span>Update entries:</span> <span><?php echo count(Programs::listUpdateData()); ?></span></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2019-11-02 17:54:22 +01:00
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
2018-02-03 14:43:41 +01:00
|
|
|
|
2018-02-03 15:44:40 +01:00
|
|
|
<div class="boxedcontent">
|
|
|
|
<div class="bc_header">UpdatesLog</div>
|
|
|
|
|
2019-12-28 23:52:19 +01:00
|
|
|
<?php if ($connected): ?>
|
|
|
|
<div class="bc_data keyvaluelist kvl_300">
|
|
|
|
<?php foreach (UpdatesLog::listProgramsInformation() as $info): ?>
|
|
|
|
<div><span><?php echo '[' . $info['name'] . '] Count:' ?></span> <span><a href="javascript:startAjaxReplace('#ul_ajax_target', '/admin/updates::show?secret=<?php echo $CONFIG['ajax_secret'] ?>&ulname=<?php echo $info['name'] ?>')"><?php echo $info['count_total']; ?></a></span></div>
|
|
|
|
<div><span><?php echo '[' . $info['name'] . '] Last query:' ?></span> <span><?php echo $info['last_query']; ?></span></div>
|
|
|
|
<div><span><?php echo '[' . $info['name'] . '] Count (1 week):' ?></span> <span><?php echo $info['count_week']; ?></span></div>
|
|
|
|
<hr />
|
|
|
|
<?php endforeach; ?>
|
|
|
|
<br/>
|
|
|
|
<div id="ul_ajax_target"></div>
|
|
|
|
</div>
|
|
|
|
<?php else: ?>
|
|
|
|
<div class="bc_data keyvaluelist">Database not connected.</div>
|
|
|
|
<?php endif; ?>
|
2018-02-03 15:44:40 +01:00
|
|
|
</div>
|
|
|
|
|
2019-11-02 17:54:22 +01:00
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
2018-02-03 15:44:40 +01:00
|
|
|
|
2018-01-26 23:52:55 +01:00
|
|
|
<div class="boxedcontent">
|
|
|
|
<div class="bc_header">Highscores</div>
|
|
|
|
|
2019-12-28 23:52:19 +01:00
|
|
|
<?php if ($connected): ?>
|
|
|
|
<div class="bc_data keyvaluelist kvl_300">
|
2018-01-26 23:52:55 +01:00
|
|
|
|
2019-12-28 23:52:19 +01:00
|
|
|
<?php foreach (Highscores::getAllGames() as $game): ?>
|
2018-01-26 23:52:55 +01:00
|
|
|
|
2019-12-28 23:52:19 +01:00
|
|
|
<div><span><?php echo '[' . $game['NAME'] . '] Entries:' ?></span> <span><a href="/highscores/list?gameid=<?php echo $game['ID']; ?>"><?php echo Highscores::getEntryCountFromGame($game['ID']); ?></a></span></div>
|
|
|
|
<div><span><?php echo '[' . $game['NAME'] . '] Highscore:' ?></span> <span><?php
|
|
|
|
$hs = Highscores::getOrderedEntriesFromGame($game['ID'], 1)[0];
|
|
|
|
echo $hs['POINTS'] . ' (' . $hs['PLAYER'] . ') @ ' . $hs['TIMESTAMP'];
|
|
|
|
?></span></div>
|
|
|
|
<div><span><?php echo '[' . $game['NAME'] . '] Last Update:' ?></span> <span><?php echo Highscores::getNewestEntriesFromGame($game['ID'], 1)[0]['TIMESTAMP']; ?></span></div>
|
2018-01-26 23:52:55 +01:00
|
|
|
|
2019-12-28 23:52:19 +01:00
|
|
|
<hr />
|
2018-01-26 23:52:55 +01:00
|
|
|
|
2019-12-28 23:52:19 +01:00
|
|
|
<?php endforeach; ?>
|
2018-01-26 23:52:55 +01:00
|
|
|
|
2019-12-28 23:52:19 +01:00
|
|
|
</div>
|
|
|
|
<?php else: ?>
|
|
|
|
<div class="bc_data keyvaluelist">Database not connected.</div>
|
|
|
|
<?php endif; ?>
|
2018-01-26 23:52:55 +01:00
|
|
|
|
2018-01-27 00:35:13 +01:00
|
|
|
</div>
|
|
|
|
|
2019-11-02 17:54:22 +01:00
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
2018-01-27 00:35:13 +01:00
|
|
|
|
|
|
|
<div class="boxedcontent">
|
|
|
|
<div class="bc_header">Configuration</div>
|
|
|
|
<div class="bc_data keyvaluelist kvl_200">
|
2019-12-28 23:52:19 +01:00
|
|
|
<?php
|
|
|
|
foreach ($CONFIG as $key => $value)
|
|
|
|
{
|
|
|
|
if ($key === 'extendedgitgraph') continue;
|
|
|
|
|
|
|
|
if (is_array($value))
|
|
|
|
echo '<div><span>' . $key . '</span> <span style="white-space: pre">' . json_encode($value, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . '</span></div>' . "\n";
|
|
|
|
else
|
|
|
|
echo '<div><span>' . $key . '</span> <span>' . nl2br(var_export($value, true)) . '</span></div>' . "\n";
|
|
|
|
}
|
|
|
|
?>
|
2018-01-27 00:35:13 +01:00
|
|
|
</div>
|
2019-12-28 23:52:19 +01:00
|
|
|
</div>
|
2018-01-27 00:35:13 +01:00
|
|
|
|
2019-12-28 23:52:19 +01:00
|
|
|
<div class="boxedcontent">
|
|
|
|
<div class="bc_header">Configuration['extendedgitgraph']</div>
|
|
|
|
<div class="bc_data keyvaluelist kvl_200">
|
|
|
|
<?php
|
|
|
|
foreach ($CONFIG['extendedgitgraph'] as $key => $value)
|
|
|
|
{
|
|
|
|
if (is_array($value))
|
|
|
|
echo '<div><span>' . $key . '</span> <span style="white-space: pre">' . json_encode($value, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . '</span></div>' . "\n";
|
|
|
|
else
|
|
|
|
echo '<div><span>' . $key . '</span> <span>' . nl2br(var_export($value, true)) . '</span></div>' . "\n";
|
|
|
|
}
|
|
|
|
?>
|
|
|
|
</div>
|
2018-01-21 19:07:43 +01:00
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<?php include (__DIR__ . '/../fragments/footer.php'); ?>
|
|
|
|
|
|
|
|
</div>
|
2019-11-03 15:33:23 +01:00
|
|
|
<?php printAdditionalScripts(); ?>
|
|
|
|
<?php printAdditionalStylesheets(); ?>
|
2018-01-21 19:07:43 +01:00
|
|
|
</body>
|
|
|
|
</html>
|