<?php
declare(strict_types=1);
use Airship\Engine\{
Gadgets,
State
};
use ParagonIE\ConstantTime\Binary;
/**
* @global array $active The active cabin configuration
* @const string CABIN_DIR
* @global State $state
*/
// Let's make sure we populate the symlinks
if (\is_dir(CABIN_DIR . '/public')) {
$link = ROOT . '/public/static/' . $active['name'];
if (!\is_link($link)) {
// Remove copies, we only allow symlinks in static
if (\is_dir($link)) {
\rmdir($link);
} elseif (\file_exists($link)) {
\unlink($link);
}
// Create a symlink from public/static/* to Cabin/*/public
/** @noinspection PhpUsageOfSilenceOperatorInspection */
@\symlink(
CABIN_DIR . '/public',
ROOT . '/public/static/' . $active['name']
);
}
}
// Let's load the default cargo modules
if (\is_dir(CABIN_DIR.'/View/cargo')) {
$cargoCacheFile = ROOT.'/tmp/cache/cargo-'.$active['name'].'.cache.json';
if (\file_exists($cargoCacheFile)) {
$data = Airship\loadJSON($cargoCacheFile);
$state->cargo = $data;
} else {
$dir = \getcwd();
\chdir(CABIN_DIR . '/View');
foreach (\Airship\list_all_files('cargo', 'twig') as $cargo) {
$idx = \str_replace(
['__', '/'],
['', '__'],
Binary::safeSubstr($cargo, 6, -5)
);
Gadgets::loadCargo($idx, $cargo);
}
\chdir($dir);
// Store the cache file
\Airship\saveJSON(
$cargoCacheFile,
$state->cargo
);
}
}
|