123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318 |
- <?php
- ob_start(); // Start reading html
-
- //header('Location: construction.php');
-
- define("urlParam", "path");
- define("photoRoot", "assets/img/com_photo/thumbs");
- define("photoRootHQ", "assets/img/com_photo/full_q");
-
- /**
- * Get active path from url and prevent from seeing folders before 'photos/'
- * @return string current path
- */
- function getActivePath()
- {
- $dir = '';
- if (isset($_GET[urlParam]))
- $dir = $_GET[urlParam];
- $folders = explode(DIRECTORY_SEPARATOR, $dir);
- $currentPath = "";
- foreach ($folders as $value) {
- if ($value != ".." && $value != "." && $value != "") {
- $currentPath .= DIRECTORY_SEPARATOR . $value;
- }
- }
- return $currentPath;
- }
-
- /**
- * Get active folder from the active path
- * @param string $path path representing the active folder
- * @return string active folder name
- */
- function GetActiveFolder($path)
- {
- $dir = explode(DIRECTORY_SEPARATOR, $path);
- return ".".DIRECTORY_SEPARATOR.$dir[sizeof($dir) - 1]; // Last item after /
- }
-
- /**
- * Check whether the current album is available for download as a .zip file
- * @param string $path path to search the album in
- * @return bool True if an album is available, false otherwise
- */
- function isAlbumAvailable($path)
- {
- $dir = photoRoot . $path;
- $files = scandir($dir);
- $valid = false;
- foreach ($files as $key => $value) {
- $path = realpath($dir . DIRECTORY_SEPARATOR . $value);
- if (!is_dir($path)) {
- $valid = pathinfo($path, PATHINFO_EXTENSION) == "zip";
- if ($valid)
- break;
- }
- }
- return $valid;
- }
-
- /**
- * Get all directories in the specified path and creates them on the page
- * @param string $path path to search directories in
- */
- function createDirectories($path)
- {
- $path = photoRoot . $path;
- $displayedItems = 0;
- $folders = getDirectories($path);
- foreach ($folders as $key => $value) {
- $folderTitle = $value;
- $photos = getTotalPhotoCount($path . DIRECTORY_SEPARATOR . $value);
- $albums = getTotalAlbumCount($path . DIRECTORY_SEPARATOR . $value);
- $folderLink = "?" . urlParam . "=" . getActivePath() . DIRECTORY_SEPARATOR . $value;
- ?>
- <a href="<?= $folderLink ?>">
- <li class="directory-li">
- <span id="folderTitle"><?= str_replace("_", " ", $folderTitle) ?></span>
- <span id="folderPhotos">
- <?php if ($photos > 1) {
- echo " - ".$photos." photos";
- } elseif ($photos == 1) {
- echo " - ".$photos ." photo";
- } else {
- echo " - "."vide";
- } ?>
- </span>
- <span id="folderAlbums">
- <?php if ($albums > 1) {
- echo " - ".$albums." albums";
- } elseif ($albums == 1) {
- echo " - ".$albums." album";
- } ?>
- </span>
- </li>
- </a>
- <?php
- $displayedItems++;
-
- }
- }
-
-
- /**
- * Get all photos in the specified path and creates them on the page
- * @param string $path path to search photos in
- */
- function createPhotos($path_in)
- {
- $path = photoRoot . $path_in;
- $path_no_thumb = photoRootHQ . $path_in;
- $files = scandir($path);
- $displayedItems = 0;
- foreach ($files as $key => $value) {
- $realPath = realpath($path . DIRECTORY_SEPARATOR . $value);
- $realPath_no_thumb = realpath($path_no_thumb . DIRECTORY_SEPARATOR . $value);
- if (isValidImage($realPath) AND isValidImage($realPath_no_thumb)) {
- $imageSrc = $path . DIRECTORY_SEPARATOR . $value;
- $img_no_thumb = $path_no_thumb . DIRECTORY_SEPARATOR . $value;
- $imageId = "photo-" . $displayedItems;
- ?><a download="" href="<?= $img_no_thumb ?>"><img src="<?= $imageSrc ?>" class="photo" id="<?= $imageId ?>" alt=""/></a><?php
- $displayedItems++;
- }
- }
- }
-
- /**
- * get folders in the given path
- * @param string $path path to search folders in
- * @return array array of folders
- */
- function getDirectories($path)
- {
- $files = scandir($path);
- $folders = [];
- foreach ($files as $key => $value) {
- $realPath = realpath($path . DIRECTORY_SEPARATOR . $value);
- if (isValidDirectory($realPath, $value)) {
- array_push($folders, $value);
- }
- }
- return $folders;
- }
-
- /**
- * Counts directories in the specified folder
- * @param string $path path to search directories in
- * @return int directories count
- */
- function getDirectoriesCount($path)
- {
- $files = scandir($path);
- $dirCount = 0;
- foreach ($files as $key => $value) {
- $realPath = realpath($path . DIRECTORY_SEPARATOR . $value);
- if (isValidDirectory($realPath, $value)) {
- $dirCount++;
- }
- }
- return $dirCount;
- }
-
- /**
- * Counts images in the specified folder
- * @param string $path path to search photos in
- * @return int photo count
- */
- function getPhotoCount($path)
- {
- $files = scandir($path);
- $fileCount = 0;
- foreach ($files as $key => $value) {
- $realPath = realpath($path . DIRECTORY_SEPARATOR . $value);
- if (isValidImage($realPath)) {
- $fileCount++;
- }
- }
- return $fileCount;
- }
-
- /**
- * Get the count of all directories, recursively from the path specified
- * @param string $path root for search
- * @return int total number of directories
- */
- function getTotalAlbumCount($path)
- {
- $folders = getDirectories($path);
- $total = sizeof($folders);
- foreach ($folders as $key => $value) {
- $total += getTotalAlbumCount($path . DIRECTORY_SEPARATOR . $value);
- }
- return $total;
- }
-
- function getTotalPhotoCount($path)
- {
- $folders = getDirectories($path);
- $total = getPhotoCount($path);
- foreach ($folders as $key => $value) {
- $total += getTotalPhotoCount($path . DIRECTORY_SEPARATOR . $value);
- }
- return $total;
- }
-
- /**
- * Check if the given image is valid
- * @param string $imagePath absolute path of the image
- * @return bool True if the file is a jpg, jpeg or png, false otherwise
- */
- function isValidImage($imagePath)
- {
- $ext = pathinfo($imagePath, PATHINFO_EXTENSION);
- return !is_dir($imagePath) && ($ext == "jpg" || $ext == "JPG" || $ext == "jpeg" || $ext == "JPEG" || $ext == "png" || $ext == "PNG");
- }
-
- /**
- * Check if the given folder is valid (is not '.' or '..')
- * @param string $directoryPath directory path
- * @param string $directory directory name
- * @return bool True if the directory is valid, false otherwise
- */
- function isValidDirectory($directoryPath, $directory)
- {
- return is_dir($directoryPath) && $directory != "." && $directory != ".." && substr($directory, 0, 1) !== ".";
- }
-
-
- /**
- * Creates buttons representing the actual path for easier navigation
- * @param string $path Actual Path
- */
- function generatePath($path)
- {
- $folders = explode(DIRECTORY_SEPARATOR, $path);
- $currentPath = "";
- $pathTitle = "Menu";
- $pathLink = "?" . urlParam . "=";
- echo '<li><a href="'.$pathLink.'" class="link">'.str_replace("_", " ", $pathTitle).'</a></li>';
- foreach ($folders as $value) {
- if ($value != "") {
- $pathTitle = $value;
- $currentPath .= DIRECTORY_SEPARATOR . $value;
- $pathLink = "?" . urlParam . "=" . $currentPath;
- echo ' > <li><a href="'.$pathLink.'" class="link">'.str_replace("_", " ", $pathTitle).'</a></li>';
- }
- }
- }
-
-
- //CAS
- require_once("phpCAS-1.3.6/CAS.php");
-
-
- phpCAS::client(CAS_VERSION_2_0, "cas.insa-toulouse.fr", 443, 'cas', true);
-
- phpCAS::setNoCasServerValidation();
- // phpCAS::setCasServerCACert($cas_server_ca_cert_path);
-
- phpCAS::forceAuthentication();
- if (isset($_REQUEST['logout'])) {
- phpCAS::logout();
- }
- ?>
-
-
- <div class="inner">
-
- <div class="zone_txt">
- <font color="red">
- <h1>Vous êtes connecté !</h1>
- <p>Connecté en tant que : <b><?php echo phpCAS::getUser(); ?></b>.</p>
- <p>Vous pouvez vous déconnecter en cliquant ici :<a href="?logout=" class="link">Se déconnecter</a></p>
- </font><br><br>
- <p>Clique sur le dossier de ton choix pour afficher les photos. Il faut que tu sois inscrit à l'INSA pour pouvoir
- les regarder (et oui, pas de spoiler).</p>
- <p>Il te suffit ensuite de cliquer sur la photo que tu veux télécharger.</p>
- <p>Si tu ne peux pas voir les photos (la fenêtre pour entrer le mot de passe ne s'affiche pas), ouvre cette page avec un autre navigateur.</p>
- </div>
- <div class="zone_txt" align="left">
- <ul class="photos-path">
- <li>Chemin : </li>
- <?php
- generatePath(getActivePath());
- ?>
- </ul>
- <?php if (isAlbumAvailable(getActivePath())): ?>
- <a download="" href="assets/com_photo/"<?php echo getActivePath().DIRECTORY_SEPARATOR.GetActiveFolder(getActivePath()); ?>.zip" id="downloadAlbum">
- <span id="downloadText">Télécharger</span>
- <span id="albumPhotoCount"><?php echo getTotalPhotoCount(photoRoot . getActivePath()) ?> photos</span>
- </a>
- <?php endif; ?>
-
- <ul class="directory-ul">
- <?php if (getDirectoriesCount(photoRoot . getActivePath()) > 0): ?>
- <div class="photos-folder-container">
- <?php
- createDirectories(getActivePath());
- ?>
- </div>
- <?php endif; ?>
- </ul>
-
- <?php if (getPhotoCount(photoRoot . getActivePath()) > 0): ?>
- <div class="photos">
- <?php
- createPhotos(getActivePath());
- ?>
- </div>
- <?php endif; ?>
- </div class="zone_txt">
- </div>
- <br>
-
- <?php
- $infopage = ["", "Photos", ob_get_clean(), "", "photos","Les photos"]; //relativepath, pagetitle, pagecontent, pagescript, pagename | cf structure/template.php ligne 2 à 6
- include("structure/template.php");
- ?>
|