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/about/niels"><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://projects.metanohi.name/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;
 | 
						|
    }*/
 | 
						|
?>
 |