167 lines
3.4 KiB
PHP
167 lines
3.4 KiB
PHP
|
<?php
|
||
|
/// RIT.WTF --- Daddy munson
|
||
|
/// Copyright © 2024 Freya Murphy <freya@freyacat.org>
|
||
|
|
||
|
|
||
|
// Create global assets object
|
||
|
|
||
|
function __make_assets(): object {
|
||
|
$assets = array(
|
||
|
// 80x33 buttons
|
||
|
'buttons' => array(
|
||
|
'amd' => 'amd.gif',
|
||
|
'apocalypse' => 'apocalypse.gif',
|
||
|
'dither' => 'dither.gif',
|
||
|
'download' => 'download.gif',
|
||
|
'html' => 'html.gif',
|
||
|
'ie' => 'ie.gif',
|
||
|
'netscape' => 'netscape.gif',
|
||
|
),
|
||
|
// css styles
|
||
|
'css' => array(
|
||
|
'main' => 'main.css', // main style
|
||
|
'anim' => 'anim.css', // animations
|
||
|
|
||
|
'home' => 'home.css',
|
||
|
'fire' => 'fire.css',
|
||
|
'gallery' => 'gallery.css',
|
||
|
'error' => 'error.css',
|
||
|
),
|
||
|
// why does rit keep catching on fire!
|
||
|
'fires' => array(
|
||
|
'battery' => 'battery.jpg',
|
||
|
'gosnell' => 'gosnell.jpg',
|
||
|
'sol' => 'sol.jpg',
|
||
|
'stadium' => 'stadium.jpg',
|
||
|
),
|
||
|
// standard imaged images
|
||
|
'images' => array(
|
||
|
'rit' => 'rit.jpg',
|
||
|
'rotchie' => 'rotchie.jpg',
|
||
|
),
|
||
|
// goofy ahh memes
|
||
|
'memes' => array(
|
||
|
'awshit' => 'awshit.jpg',
|
||
|
'bean' => 'bean.jpg',
|
||
|
'bisexual' => 'bisexual.jpg',
|
||
|
'counter' => 'counter.jpg',
|
||
|
'election' => 'election.jpg',
|
||
|
'girl' => 'girl.jpg',
|
||
|
'gracies' => 'gracies.jpg',
|
||
|
'obama' => 'obama.jpg',
|
||
|
'onion' => 'onion.jpg',
|
||
|
'pepsi' => 'pepsi.jpg',
|
||
|
'phone' => 'phone.jpg',
|
||
|
'rats' => 'rats.jpg',
|
||
|
'recharge' => 'recharge.jpg',
|
||
|
'roo' => 'roo.jpg',
|
||
|
'silence' => 'silence.jpg',
|
||
|
'twitter' => 'twitter.jpg',
|
||
|
'ul' => 'ul.jpg',
|
||
|
'umbrella' => 'umbrella.jpg',
|
||
|
),
|
||
|
// munson art gallery
|
||
|
'munson' => array(
|
||
|
'1.jpg',
|
||
|
'3.jpg',
|
||
|
'4.jpg',
|
||
|
'5.jpg',
|
||
|
'6.jpg',
|
||
|
'7.jpg',
|
||
|
'8.jpg',
|
||
|
'9.jpg',
|
||
|
'10.jpg',
|
||
|
),
|
||
|
// sanders art gallery
|
||
|
'sanders' => array(
|
||
|
'1.jpg',
|
||
|
'2.jpg',
|
||
|
'3.jpg',
|
||
|
),
|
||
|
// text gifs
|
||
|
'text' => array(
|
||
|
'counting' => 'counting.gif',
|
||
|
'education' => 'education.gif',
|
||
|
'food' => 'food.gif',
|
||
|
'housing' => 'housing.gif',
|
||
|
),
|
||
|
// feature films
|
||
|
'videos' => array(
|
||
|
'review' => '2012 - Rap in Review.mp4',
|
||
|
'jedi' => '2015 - The Return of the Holiday Rap: A Jedi\'s Chant.mp4',
|
||
|
'brick' => '2022 - In the Brick of Time.mp4',
|
||
|
'raiders' => '2023 - Raiders of the Golden Brick.mp4',
|
||
|
'wizard' => '2024 - The Wonderful Wizard of RIT.mp4',
|
||
|
),
|
||
|
);
|
||
|
|
||
|
function update_paths(&$data, $path) {
|
||
|
foreach ($data as $key => $value) {
|
||
|
if (is_array($value)) {
|
||
|
update_paths($value, "$path/$key");
|
||
|
$data[$key] = $value;
|
||
|
} else {
|
||
|
$data[$key] = "$path/$value?rev=1";
|
||
|
}
|
||
|
}
|
||
|
$data = (object) $data;
|
||
|
}
|
||
|
update_paths($assets, 'public');
|
||
|
return $assets;
|
||
|
}
|
||
|
|
||
|
define('ASSETS', __make_assets());
|
||
|
|
||
|
// Helper functions
|
||
|
|
||
|
// Parse request route
|
||
|
|
||
|
function __get_route() {
|
||
|
$method = $_SERVER['REQUEST_METHOD'];
|
||
|
$uri_str = $_SERVER['REQUEST_URI'];
|
||
|
$uri = parse_url($uri_str);
|
||
|
|
||
|
$path = '/';
|
||
|
if ($uri && array_key_exists('path', $uri))
|
||
|
$path = $uri['path'];
|
||
|
|
||
|
return [$method, $path];
|
||
|
}
|
||
|
|
||
|
define('ROUTE', __get_route());
|
||
|
|
||
|
// Pages
|
||
|
|
||
|
function home() {
|
||
|
$css = ASSETS->css->home;
|
||
|
include('web/home.php');
|
||
|
}
|
||
|
|
||
|
function fire() {
|
||
|
$css = ASSETS->css->fire;
|
||
|
include('web/fire.php');
|
||
|
}
|
||
|
|
||
|
function gallery() {
|
||
|
$css = ASSETS->css->gallery;
|
||
|
include('web/gallery.php');
|
||
|
}
|
||
|
|
||
|
function error($code) {
|
||
|
$css = ASSETS->css->error;
|
||
|
include('web/error.php');
|
||
|
}
|
||
|
|
||
|
// Dispatch
|
||
|
|
||
|
try {
|
||
|
match (ROUTE) {
|
||
|
['GET', '/'] => home(),
|
||
|
['GET', '/fire'] => fire(),
|
||
|
['GET', '/gallery'] => gallery(),
|
||
|
default => error(404)
|
||
|
};
|
||
|
} catch (Throwable $e) {
|
||
|
error(500);
|
||
|
}
|