158 lines
4.7 KiB
PHP
158 lines
4.7 KiB
PHP
<?php //~Public domain
|
|
/*
|
|
// DEFAULTS
|
|
$USE_CACHE = false;
|
|
$CREATE_CACHE = false;
|
|
|
|
// GO AWAY FROM DEFAULTS?
|
|
|
|
|
|
// WHAT TO DO WITH PROGRAM DIRECTIONS
|
|
if ($CREATE_CACHE)
|
|
ob_start();
|
|
*/
|
|
// FUNCTIONS
|
|
function get_html_tag_content($html_string, $tag) {
|
|
/* Finds the content of the first tag if present */
|
|
$tag_s = "<$tag>";
|
|
$tag_e = "</$tag>";
|
|
$tag_s_pos = strpos($html_string, $tag_s);
|
|
$tag_e_pos = strpos($html_string, $tag_e);
|
|
if ($tag_s_pos === false || $tag_e_pos == false || $tag_e_pos < $tag_s_pos)
|
|
return "";
|
|
|
|
$start = $tag_s_pos + strlen($tag_s);
|
|
$end = $tag_e_pos;
|
|
$title = substr($html_string, $start, $end - $start);
|
|
return $title;
|
|
}
|
|
|
|
// THE ACTUAL WEBSITE CODE
|
|
$pages = array();
|
|
$grouped_pages = array();
|
|
|
|
$scanned_dir = scandir('.');
|
|
foreach ($scanned_dir as $filename) {
|
|
if (
|
|
is_file($filename) &&
|
|
!in_array($filename, array("index.php", ".", "..")) &&
|
|
preg_match("/^[^\.]+\.(htm|html|xhtml|php|py)$/", $filename) == 1
|
|
) {
|
|
$content = file_get_contents($filename);
|
|
$title = get_html_tag_content($content, "title");
|
|
array_push($pages, array($title, $filename));
|
|
}
|
|
}
|
|
|
|
foreach ($pages as $page) {
|
|
$title = $page[0];
|
|
$filename = $page[1];
|
|
|
|
$group = "General";
|
|
|
|
if ($title == "") {
|
|
$group = "Untitled";
|
|
$title = $filename;
|
|
}
|
|
else if (preg_match("/^[^\{\}]+\{.+\}\s*$/", $title) == 1) {
|
|
$spl = explode("{", $title);
|
|
$group = $spl[0];
|
|
$title = $spl[1];
|
|
$group = trim($group);
|
|
$title = trim(substr($title, 0, strlen($title) - 1));
|
|
}
|
|
|
|
if (!array_key_exists($group, $grouped_pages))
|
|
$grouped_pages[$group] = array();
|
|
array_push($grouped_pages[$group], array($title, $filename));
|
|
}
|
|
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns='http://www.w3.org/1999/xhtml'>
|
|
<head>
|
|
<title>nohiX {L@B}</title>
|
|
<style type='text/css'>
|
|
body {
|
|
margin: 10px;
|
|
font-family: 'dejavu serif', serif;
|
|
font-size: 16px;
|
|
font-weight: normal;
|
|
color #000;
|
|
background: #fff;
|
|
}
|
|
|
|
div {
|
|
width: 465px;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 32px;
|
|
display: none;
|
|
}
|
|
|
|
h2 {
|
|
font-size: 26px;
|
|
}
|
|
|
|
h3 {
|
|
font-size: 20px;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<div>
|
|
<img src="media/nohix-logo.png" alt="nohiX {L@B}" />
|
|
<h1>nohiX</h1>
|
|
<?php
|
|
$slogans = file("data/slogans");
|
|
$num = mt_rand(0, sizeof($slogans)-1);
|
|
$slogan = $slogans[$num];
|
|
echo "<p style='font-style: italic; margin-left: 20px;'>$slogan</p>\n";
|
|
?>
|
|
|
|
<h2>Experiments</h2>
|
|
<ul>
|
|
<?php
|
|
foreach ($grouped_pages as $group=>$pages) {
|
|
echo "
|
|
<li>
|
|
<h3>$group</h3>
|
|
<ul>";
|
|
foreach ($pages as $page) {
|
|
$title = $page[0];
|
|
$filename = $page[1];
|
|
echo "
|
|
<li>
|
|
<p><a href='$filename'>$title</a></p>
|
|
</li>";
|
|
}
|
|
echo "
|
|
</ul>
|
|
</li>
|
|
";
|
|
}
|
|
?>
|
|
</ul>
|
|
|
|
<h2>About</h2>
|
|
<ul>
|
|
<li><p>This website is <a href="http://metanohi.org/aboutme/"><em>Niels</em></a>' playground.</p></li>
|
|
<li><p>It contains mainly JavaScript tests.</p></li>
|
|
<li><p><em>Niels</em> is not that fond of JavaScript, but he can't help but play with it. He thinks it's a disease.</p></li>
|
|
<li><p>The logo (<a href="media/nohix-logo.svg">also available in SVG<a/>) is licensed under the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Attribution-Share Alike 3.0 Unported license</a>. Niels is the author.</p></li>
|
|
<li><p>The PHP source code is available <a href="http://metanohi.org/:nohix/index.php">here<a/>.</p></li>
|
|
<li><p>You might not also want to check out <a href="http://metanohi.org/projects/x/">this<a/>, which was the inspiration for nohiX.</p></li>
|
|
</ul>
|
|
|
|
<div>
|
|
</body>
|
|
</html><?php
|
|
/* if ($CREATE_CACHE) {
|
|
$content = ob_get_contents();
|
|
ob_end_clean();
|
|
file_put_contents(".cache", $content);
|
|
echo $content;
|
|
}*/
|
|
?>
|