superflux/index.php

298 lines
9.6 KiB
PHP
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
if (!isset($_GET['chemin'])) {
header('Location: index.php?chemin=');
}
function creerMiniature($cheminComplet, $adresseImage, $nomImage) {
if (!file_exists($cheminComplet . "/400/" . $nomImage)) {
$image = imagecreatefromjpeg($adresseImage);
$dimensions = getimagesize($adresseImage);
$nouvHauteur = ((400 * $dimensions[1]) / $dimensions[0]);
$imageSrt = imagecreatetruecolor(400, $nouvHauteur);
imagecopyresampled($imageSrt, $image, 0, 0, 0, 0, 400, $nouvHauteur, $dimensions[0], $dimensions[1]);
imagejpeg($imageSrt, $cheminComplet . "/400/" . $nomImage);
imagedestroy($imageSrt);
imagedestroy($image);
}
if (!file_exists($cheminComplet . "/800/" . $nomImage)) {
$image = imagecreatefromjpeg($adresseImage);
$dimensions = getimagesize($adresseImage);
$nouvHauteur = ((800 * $dimensions[1]) / $dimensions[0]);
$imageSrt = imagecreatetruecolor(800, $nouvHauteur);
imagecopyresampled($imageSrt, $image, 0, 0, 0, 0, 800, $nouvHauteur, $dimensions[0], $dimensions[1]);
imagejpeg($imageSrt, $cheminComplet . "/800/" . $nomImage);
imagedestroy($imageSrt);
imagedestroy($image);
}
}
if (!function_exists('array_key_last')) {
function array_key_last($array) {
$key = NULL;
if (is_array($array)) {
end($array);
$key = key($array);
}
return $key;
}
} ?>
<!DOCTYPE HTML>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<title>Super·F·lux<?php
$nomDossiers = preg_split("#/#", $_GET['chemin']); // Sépare le chemin en une liste de dossiers qui le composent
foreach ($nomDossiers as $niveauDossier => $nomDossier) {
if (isset($nomDossier)) {
if (!is_null($nomDossier)) {
echo " > " . $nomDossier;
}
}
}
?></title>
<meta name="author" content="Cécile Chevallier">
<meta name="publisher" content="Miraty">
<meta name="distribution" content="global">
<meta name="robots" content="index, follow">
<meta name="keywords" lang="fr" content="superflux">
<meta name="description" content="Super·F·lux, photographies de Cécile Chevallier sous CC BY-SA 4.0">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
<?php
$env = "dev";
require "lessphp/lessc.inc.php";
$less = new lessc;
if ($env == "prod") { // En production : minimise et met en cache style.less dans style.css
$less->setFormatter("compressed");
$less->checkedCompile("style.less", "style.css");
echo file_get_contents("ubuntu/ubuntu.min.css") . file_get_contents("style.css"); // Inclus toutes les CSS dans le document HTML (= moins de requêtes HTTP)
} else if ($env == "dev") { // En développement : compile style.less à chaque chargement de page
echo file_get_contents("ubuntu/ubuntu.min.css") . $less->compileFile("style.less");
} else {
echo "Erreur : $env doit valoir prod ou dev";
} ?>
</style>
<!-- Lightbox https://lokeshdhakar.com/projects/lightbox2/ -->
<link href="lightbox/dist/css/lightbox.min.css" rel="stylesheet">
<script src="lightbox/dist/js/lightbox-plus-jquery.min.js"></script>
<script>
lightbox.option({
'resizeDuration': 0,
'fadeDuration': 200
})
</script>
</head>
<body>
<header>
<h1><a href="index.php" title="Retour à la page d'accueil">Super·F·lux</a></h1>
<?php
$nomDossiers = preg_split("#/#", $_GET['chemin']); // Sépare le chemin en une liste de dossiers qui le composent
foreach ($nomDossiers as $niveauDossier => $nomDossier) { ?>
<h<?php echo $niveauDossier + 2; ?>><a href="index.php?chemin=<?php
if (array_key_last($nomDossiers) == $niveauDossier) {
echo $_GET['chemin'];
} else {
echo rtrim(stristr($_GET['chemin'], $nomDossiers[$niveauDossier + 1], TRUE), "/");
}
?>"><?php echo $nomDossier; ?></a></h<?php echo $niveauDossier + 2; ?>>
<section class="presentation">
<?php
switch ($nomDossier) {
case "Escape games": ?>
De ces instants qui échappent aux lois de la gravité, sortent du cadre ou des sentiers battus, changent de cap, là où on aperçoit enfin le bout du tunnel, là où on peut enfin prend l'air…
<br>
Ouverture des possibles.
<?php break;
case "Le chant du Petit": ?>
Les petites choses chantent aussi.
<?php break;
case "Landscape games": ?>
Lieux démergence des Escape games. Composés des mille et un chants du Petit.
<?php break;
case "Créatures fantastiques": ?>
Je vais mieux quand dun arbre émerge une grand-mère prenant soin d'une jeune touffe d'herbe, un oiseau dans une fleur, un visage sur un arbre, un dragon dans les nuages.
<br>
Je me sens vivante quand j'aperçois un coq émergeant d'une crotte de chien sur un trottoir, quand la fée des neiges apparaît à mon balcon, quand les ombres suggèren peut-être des oiseaux végétaux, quand un visage apparaît dans une feuille de chou.
<?php break;
case "s-Faire-s": ?>
Au contraire du croisement de fer, ce qui croît quand on l's Faire (s) les sphères.
<?php break;
case "Super-Positions et autres Super-Cheries": ?>
Montages et collages sous logiciel dédié (Photoshop, peintures)…
<?php break;
case "Traits de lumière": ?>
Light-Painting, peindre avec la lumière, ou plutôt avec lappareil-pinceau, puisque peindre avec la lumière est déjà lobjet de la photographie. Ces traits révèlent parfois des créatures fantastiques.
<?php break;
case "Aqua bon": ?>
Lieu et source de vie par essence, mouvante, calme ou soulevée par la brise, leau est souvent le lieu de naissance de créatures fantastiques.
<?php break;
case "Forts Traits": ?>
Portraits studio, cours municipaux pour adultes, 2015
<?php break;
case "": ?>
<div class="contPremiereImage"><img class="premiereImage" src="index.jpg" alt="Vive la lenteur"/></div>
Super·F·lux est une collection de perceptions lumineuses (lux) du monde tel que je (une ·F· Femme) l'aime (Super).
<br><br>
Des instants, des phénomènes, des êtres, des petites choses qui peuvent sembler superflues, anodines, banales, pas originales, à côté desquelles il est tout à fait possible de passer sans les voir. Et qui sont pourtant essentielles.
<blockquote>
« Je préfère vivre dans un monde animé. Je crois que nos chances de créer une culture plus saine, dynamique, libre et équilibrée sont meilleures si nous nous percevons nous-mêmes comme des cellules vivantes appartenant à un corps vivant, imprégné dune conscience sous-jacente, plutôt que de percevoir le monde comme de la matière inanimée et exploitable. »
<br>
<div class="source"><cite><small>Starhawk, « Quel monde voulons-nous ? », éditions Cambourakis, collection Sorcières, 2019</small></cite></div>
</blockquote>
<?php break;
} ?>
</section>
<?php } ?>
</header>
<main>
<?php if (preg_match("#\.\.#", $_GET['chemin'])) {
exit("Par sécurité, .. ne peut être utilisé dans un chemin");
} else {
$cheminComplet = "catalogue/" . $_GET['chemin'] . "";
if (!file_exists($cheminComplet . "/400")) {
mkdir($cheminComplet . "/400");
}
if (!file_exists($cheminComplet . "/800")) {
mkdir($cheminComplet . "/800");
}
$listeElements = new DirectoryIterator($cheminComplet);
$nbElementsAffiches = 0;
foreach($listeElements as $listeElements) {
if ((!$listeElements->isDot()) AND ($listeElements->getFilename() !== "400") AND ($listeElements->getFilename() !== "800")) { // Ignore les éléments "." et ".." ainsi que les dossiers d'images redimensionnées
$adresseImage = $cheminComplet . "/" . $listeElements->getFilename();
if (is_dir($adresseImage)) { ?>
<div class="element dossier">
<a href="index.php?chemin=<?php if (!empty($_GET['chemin'])) {
echo $_GET['chemin'] . "/" . $listeElements->getFilename();
} else {
echo $listeElements->getFilename();
}
?>">
<img src="<?php echo $cheminComplet . "/" . $listeElements->getFilename() . "/400/index.jpg"; ?>">
<div class="nomElementDossier"><?php echo $listeElements->getFilename(); ?></div>
</a>
</div>
<?php
} else if (is_file($adresseImage)) {
creerMiniature($cheminComplet, $adresseImage, $listeElements->getFilename())
?>
<div class="element image<?php
$dimensions = getimagesize($adresseImage);
if ($dimensions[0] > $dimensions[1]) {
echo " paysage";
} else {
echo " portrait";
}
?>">
<a href="<?php echo $cheminComplet . "/" . $listeElements->getFilename(); ?>" data-title="Image créée par Cécile Chevallier et diffusée sous CC BY-SA 4.0." data-lightbox="<?php echo $listeElements->getFilename(); ?>">
<img src="<?php
if ($dimensions[0] > $dimensions[1]) {
echo $cheminComplet . "/800/" . $listeElements->getFilename();
} else {
echo $cheminComplet . "/400/" . $listeElements->getFilename();
}
?>" alt=""/>
</a>
</div>
<?php
} else {
echo $cheminComplet . $listeElements->getFilename();
echo "ERREUR PHP : L'élément n'est ni un fichier ni un dossier !";
}
?>
<?php
$nbElementsAffiches++;
} } } ?>
</main>
<footer>
<br>
Images créées par Cécile Chevallier et diffusées sous CC BY-SA 4.0.
<br>
<a href="https://code.antopie.org/miraty/superflux">Site Web</a> créé par <a href="https://www.antopie.org">Miraty</a> sous <a href="LICENSE.html">AGPLv3+</a>.
</footer>
</body>
</html>