wishthis/index.php

179 lines
3.4 KiB
PHP
Raw Normal View History

2021-11-12 15:23:48 +00:00
<?php
/**
2022-06-14 12:52:19 +00:00
* wishthis - Make a wish
2021-11-12 15:23:48 +00:00
*
* @author Jay Trees <github.jay@grandel.anonaddy.me>
*/
2022-06-09 06:37:52 +00:00
namespace wishthis;
2022-06-14 11:25:30 +00:00
define('VERSION', '0.7.0');
2022-01-27 11:53:39 +00:00
define('ROOT', __DIR__);
2022-03-25 13:57:14 +00:00
define('DEFAULT_LOCALE', 'en_GB');
/**
2021-11-12 15:23:48 +00:00
* Include
*/
2021-11-15 13:21:18 +00:00
require 'vendor/autoload.php';
2021-11-12 15:23:48 +00:00
2022-06-09 06:37:52 +00:00
$include = new \Grandel\IncludeDirectory(__DIR__ . '/src/functions');
spl_autoload_register(
function (string $fullClass) {
/** Only include classes from this namespace */
if (__NAMESPACE__ === substr($fullClass, 0, strlen(__NAMESPACE__))) {
$fullClass = substr($fullClass, strlen(__NAMESPACE__));
} else {
return false;
}
$parts = explode('\\', $fullClass);
$class = implode('/', $parts);
$filepath = ROOT . '/src/classes/' . strtolower($class) . '.php';
require $filepath;
}
);
2021-11-12 15:23:48 +00:00
2022-09-22 14:37:24 +00:00
/**
* Config
*/
$configPath = __DIR__ . '/' . 'src/config/config.php';
if (file_exists($configPath)) {
require $configPath;
}
2022-06-27 08:33:01 +00:00
/**
* Session
*/
2022-09-22 14:37:24 +00:00
$cookie_domain = $_SERVER['HTTP_HOST'];
2022-09-22 14:42:02 +00:00
if (defined('CHANNELS') && is_iterable(CHANNELS) && defined('ENV_IS_DEV') && ! ENV_IS_DEV) {
2022-09-22 14:37:24 +00:00
foreach (CHANNELS as $channel) {
if ('stable' === $channel['branch']) {
$cookie_domain = $channel['host'];
break;
}
}
}
2022-09-22 08:22:24 +00:00
$sessionLifetime = 2592000 * 12; // 12 Months
2022-06-27 08:33:01 +00:00
2022-09-22 09:35:48 +00:00
session_start(
array(
'name' => 'wishthis',
'cookie_lifetime' => $sessionLifetime,
2022-09-22 10:38:05 +00:00
'cookie_path' => '/',
2022-09-22 14:37:24 +00:00
'cookie_domain' => '.' . $cookie_domain,
2022-09-22 09:35:48 +00:00
)
);
2022-06-27 08:33:01 +00:00
2022-09-22 08:06:09 +00:00
/** Backwards compatibility */
if (!isset($_SESSION['user']) || is_array($_SESSION['user'])) {
2022-06-27 08:33:01 +00:00
$_SESSION['user'] = new User();
}
2021-11-14 08:13:01 +00:00
/**
* Database
*/
2021-11-15 11:20:55 +00:00
$database = false;
2022-01-14 13:13:07 +00:00
$options = false;
2021-11-15 11:20:55 +00:00
2021-11-14 08:13:01 +00:00
if (
defined('DATABASE_HOST')
&& defined('DATABASE_NAME')
&& defined('DATABASE_USER')
&& defined('DATABASE_PASSWORD')
) {
2022-06-09 06:37:52 +00:00
$database = new Database(
2021-11-14 08:13:01 +00:00
DATABASE_HOST,
DATABASE_NAME,
DATABASE_USER,
DATABASE_PASSWORD
);
2021-11-15 11:20:55 +00:00
2022-01-14 13:13:07 +00:00
/**
* Options
*/
2022-06-09 06:37:52 +00:00
$options = new Options($database);
2022-01-14 13:13:07 +00:00
}
2022-01-14 09:50:48 +00:00
2022-03-22 12:43:54 +00:00
/**
* Language
*/
2022-03-25 09:30:38 +00:00
\Locale::setDefault(DEFAULT_LOCALE);
2022-03-22 12:43:54 +00:00
/** Determine Locale */
2022-03-25 09:30:38 +00:00
$locales = array_filter(
2022-03-22 12:43:54 +00:00
array_map(
function ($value) {
$extension = pathinfo($value, PATHINFO_EXTENSION);
$filename = pathinfo($value, PATHINFO_FILENAME);
if ('po' === $extension) {
2022-03-22 12:43:54 +00:00
return pathinfo($value, PATHINFO_FILENAME);
}
},
scandir(ROOT . '/translations')
)
);
2022-06-27 08:33:01 +00:00
$locale = isset($_REQUEST['locale']) ? $_REQUEST['locale'] : \Locale::lookup($locales, $_SESSION['user']->getLocale(), false, 'en_GB');
2022-03-22 12:43:54 +00:00
2022-03-22 13:28:26 +00:00
/**
* Wish
*/
2022-06-09 06:37:52 +00:00
Wish::initialize();
2022-03-22 13:28:26 +00:00
/**
* API
*/
if (isset($api)) {
return;
}
2022-04-08 13:25:34 +00:00
/**
* Pretty URLs
*/
2022-06-09 06:37:52 +00:00
$url = new URL($_SERVER['REQUEST_URI']);
2021-11-15 11:20:55 +00:00
/**
* Install
*/
2022-03-10 07:57:48 +00:00
if (!$options || !$options->getOption('isInstalled')) {
2022-01-14 09:53:53 +00:00
$page = 'install';
2021-11-12 15:23:48 +00:00
}
2022-01-14 13:13:07 +00:00
/**
2022-03-27 08:15:50 +00:00
* Database Update
2022-01-14 13:13:07 +00:00
*/
if ($options && $options->getOption('isInstalled')) {
2022-03-27 08:15:50 +00:00
if (-1 === version_compare($options->version, VERSION)) {
$options->setOption('updateAvailable', true);
2022-01-14 13:13:07 +00:00
}
}
2021-11-12 15:23:48 +00:00
/**
* Page
*/
if (!isset($page)) {
2022-06-13 13:29:16 +00:00
$page = isset($_GET['page']) ? $_GET['page'] : 'home';
2021-11-12 15:23:48 +00:00
}
2022-01-26 12:06:36 +00:00
$pagePath = 'src/pages/' . $page . '.php';
2021-11-12 15:23:48 +00:00
2022-01-14 13:13:07 +00:00
if (file_exists($pagePath)) {
require $pagePath;
} else {
http_response_code(404);
?>
<h1>Not found</h1>
<p>The requested URL was not found on this server.</p>
<?php
2022-01-18 09:51:40 +00:00
echo $pagePath;
2022-01-14 13:13:07 +00:00
die();
}