Gallery #16

Merged
felixalbrigtsen merged 4 commits from gallery into master 2022-01-25 09:07:29 +01:00
6 changed files with 166 additions and 4 deletions
Showing only changes of commit a500b5eecc - Show all commits

3
.gitignore vendored
View File

@ -5,6 +5,3 @@
/vendor/ /vendor/
pbsds commented 2022-01-24 16:57:47 +01:00 (Migrated from github.com)
Review

Denne fila kan simpelt henn være force-added

Denne fila kan simpelt henn være force-added
pbsds commented 2022-01-24 16:58:11 +01:00 (Migrated from github.com)
Review

filer uten . blir ikke matchet

filer uten `.` blir ikke matchet
/www/simplesaml /www/simplesaml
composer.phar composer.phar
/www/galleri/bilder/slideshow/*.*
!/www/galleri/bilder/slideshow/.gitkeep
/www/galleri/bilder/pvv-photos/*.*

1
www/css/bulma.min.css vendored Normal file

File diff suppressed because one or more lines are too long

35
www/css/gallery.css Normal file
View File

@ -0,0 +1,35 @@
body, main {
width: 100%;
margin: 0;
}
.gallery-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 10px;
width: 95%;
margin: 15px auto;
}
figure {
overflow: hidden;
}
.card-image {
margin: auto 0;
object-fit: scale-down;
object-position: 0 50%;
object-position: center;
object-fit: cover;
max-height: 45vh;
}
@media only screen and (min-width:320px) {
.gallery-container {grid-template-columns: 1fr !important; }
}
@media only screen and (min-width: 641px) {
.gallery-container { grid-template-columns: repeat(2, 1fr) !important;}
}
@media only screen and (min-width: 961px) {
.gallery-container { grid-template-columns: repeat(3, 1fr) !important;}
}
@media only screen and (min-width: 1281px) {
.gallery-container { grid-template-columns: repeat(4, 1fr) !important;}
}

4
www/galleri/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
bilder/slideshow/*.*
!/bilder/slideshow/.gitkeep
bilder/pvv-photos
usernames.txt

View File

@ -1,10 +1,14 @@
torsteinnh commented 2022-01-24 16:27:16 +01:00 (Migrated from github.com)
Review

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.
torsteinnh commented 2022-01-24 16:27:16 +01:00 (Migrated from github.com)
Review

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.
pbsds commented 2022-01-24 16:58:51 +01:00 (Migrated from github.com)
Review

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra
pbsds commented 2022-01-24 16:58:51 +01:00 (Migrated from github.com)
Review

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra
pbsds commented 2022-01-24 17:00:02 +01:00 (Migrated from github.com)
Review

tror forresten denne ikke finner /home/pvv/t/{pederbs,yorinad} ;P

tror forresten denne ikke finner `/home/pvv/t/{pederbs,yorinad}` ;P
pbsds commented 2022-01-24 17:00:02 +01:00 (Migrated from github.com)
Review

tror forresten denne ikke finner /home/pvv/t/{pederbs,yorinad} ;P

tror forresten denne ikke finner `/home/pvv/t/{pederbs,yorinad}` ;P
felixalbrigtsen commented 2022-01-25 08:36:07 +01:00 (Migrated from github.com)
Review

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.
felixalbrigtsen commented 2022-01-25 08:36:07 +01:00 (Migrated from github.com)
Review

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.
#!/usr/bin/env bash #!/usr/bin/env bash
outfolder="bilder/pvv-photos" outfolder="bilder/pvv-photos"
folders=$(find /home/pvv -maxdepth 3 -name 'pvv-photos' 2>/dev/null) folders=$(find /home/pvv -maxdepth 3 -name 'pvv-photos' 2>/dev/null)
unamefile="usernames.txt"
torsteinnh commented 2022-01-24 16:27:16 +01:00 (Migrated from github.com)
Review

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.
pbsds commented 2022-01-24 16:58:51 +01:00 (Migrated from github.com)
Review

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra
pbsds commented 2022-01-24 17:00:02 +01:00 (Migrated from github.com)
Review

tror forresten denne ikke finner /home/pvv/t/{pederbs,yorinad} ;P

tror forresten denne ikke finner `/home/pvv/t/{pederbs,yorinad}` ;P
felixalbrigtsen commented 2022-01-25 08:36:07 +01:00 (Migrated from github.com)
Review

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.
> $unamefile # Empty the file
torsteinnh commented 2022-01-24 16:27:16 +01:00 (Migrated from github.com)
Review

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.
pbsds commented 2022-01-24 16:58:51 +01:00 (Migrated from github.com)
Review

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra
pbsds commented 2022-01-24 17:00:02 +01:00 (Migrated from github.com)
Review

tror forresten denne ikke finner /home/pvv/t/{pederbs,yorinad} ;P

tror forresten denne ikke finner `/home/pvv/t/{pederbs,yorinad}` ;P
felixalbrigtsen commented 2022-01-25 08:36:07 +01:00 (Migrated from github.com)
Review

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.
for imgfolder in $folders; do for imgfolder in $folders; do
user=$(echo $imgfolder | cut -d "/" -f5) user=$(echo $imgfolder | cut -d "/" -f5)
realname="$(getent passwd $user | cut -d ':' -f 5)"
torsteinnh commented 2022-01-24 16:27:16 +01:00 (Migrated from github.com)
Review

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.
pbsds commented 2022-01-24 16:58:51 +01:00 (Migrated from github.com)
Review

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra
pbsds commented 2022-01-24 17:00:02 +01:00 (Migrated from github.com)
Review

tror forresten denne ikke finner /home/pvv/t/{pederbs,yorinad} ;P

tror forresten denne ikke finner `/home/pvv/t/{pederbs,yorinad}` ;P
felixalbrigtsen commented 2022-01-25 08:36:07 +01:00 (Migrated from github.com)
Review

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.
echo "$user:$realname" >> $unamefile
torsteinnh commented 2022-01-24 16:27:16 +01:00 (Migrated from github.com)
Review

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.
pbsds commented 2022-01-24 16:58:51 +01:00 (Migrated from github.com)
Review

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra
pbsds commented 2022-01-24 17:00:02 +01:00 (Migrated from github.com)
Review

tror forresten denne ikke finner /home/pvv/t/{pederbs,yorinad} ;P

tror forresten denne ikke finner `/home/pvv/t/{pederbs,yorinad}` ;P
felixalbrigtsen commented 2022-01-25 08:36:07 +01:00 (Migrated from github.com)
Review

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.
destination="$outfolder/$user" destination="$outfolder/$user"
mkdir -p $destination mkdir -p $destination
rsync -rvz --delete "$imgfolder/" "$destination" rsync -rtvz --delete "$imgfolder/" "$destination" # Copy and keep timestamps
torsteinnh commented 2022-01-24 16:27:16 +01:00 (Migrated from github.com)
Review

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.
pbsds commented 2022-01-24 16:58:51 +01:00 (Migrated from github.com)
Review

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra
pbsds commented 2022-01-24 17:00:02 +01:00 (Migrated from github.com)
Review

tror forresten denne ikke finner /home/pvv/t/{pederbs,yorinad} ;P

tror forresten denne ikke finner `/home/pvv/t/{pederbs,yorinad}` ;P
felixalbrigtsen commented 2022-01-25 08:36:07 +01:00 (Migrated from github.com)
Review

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.
torsteinnh commented 2022-01-24 16:27:16 +01:00 (Migrated from github.com)
Review

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.

Bør virkelig denne kjøre lokalt og ikke pä microbel? Jeg er redd dette kan gå tregt over nfs, men om du har tested det er alt vell.
pbsds commented 2022-01-24 16:58:51 +01:00 (Migrated from github.com)
Review

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra

som en cron jobb har det lite å bety, men hvis det skjer per request er dette ikke bra
pbsds commented 2022-01-24 17:00:02 +01:00 (Migrated from github.com)
Review

tror forresten denne ikke finner /home/pvv/t/{pederbs,yorinad} ;P

tror forresten denne ikke finner `/home/pvv/t/{pederbs,yorinad}` ;P
felixalbrigtsen commented 2022-01-25 08:36:07 +01:00 (Migrated from github.com)
Review

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.

Kan være lurt å kjøre på microbel, må bare ordne keys for login. Tiltenkt cronjob / systemd timer for eksempel 1-2 ganger i døgnet.
done done

121
www/galleri/index.php Normal file
View File

@ -0,0 +1,121 @@
<?php
require_once dirname(dirname(__DIR__)) . implode(DIRECTORY_SEPARATOR, ['', 'inc', 'include.php']);
$pdo = new \PDO($dbDsn, $dbUser, $dbPass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$userManager = new \pvv\admin\UserManager($pdo);
$as = new SimpleSAML_Auth_Simple('default-sp');
$as->requireAuth();
$attrs = $as->getAttributes();
$uname = $attrs['uid'][0];
if(!$uname){
header('Content-Type: text/plain', true, 403);
echo "Du må være logget inn for å se bildegalleriet.\r\n";
exit();
}
$unamefile = __DIR__ . '/usernames.txt';
$unamepairs = file($unamefile);
$relativePath = "/bilder/pvv-photos/";
$fullPath = getcwd() . $relativePath;
function getDirContents($dir, &$results = array()) {
$files = scandir($dir);
foreach ($files as $key => $value) {
$path = realpath($dir . DIRECTORY_SEPARATOR . $value);
if (!is_dir($path)) {
//$results[] = str_replace($GLOBALS["fullPath"], "", $path); // Works, but breaks if the image path contains the path to the gallery on the server
//Remove the full path to the gallery from the image path. Keep username and path to image.
$pos = strpos($path, $GLOBALS["fullPath"]);
if ($pos !== false) {
$cleanPath = substr_replace($path, "", $pos, strlen($GLOBALS["fullPath"]));
}
$results[] = $cleanPath;
} else if ($value != "." && $value != "..") {
//recursively scan directories
getDirContents($path, $results);
}
}
return $results;
}
$images = getDirContents($fullPath);
$imageTemplate = '
<div class="card is-flex is-flex-direction-column is-justify-content-space-between gallery-img-card">
<div class="card-image">
<figure class="image">
<img src="%path" alt="%name" class="card-image">
</figure>
</div>
<div class="card-content">
<div class="media">
<div class="media-content">
<p class="title is-4">%realname</p>
<p class="subtitle is-6">%user</p>
</div>
</div>
<div class="content">
%name
<br>
<time datetime="%time">%time</time>
</div>
</div>
</div>
</div>
';
?>
<!DOCTYPE html>
<html lang="no">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<link rel="shortcut icon" href="favicon.ico">
<link rel="stylesheet" href="../css/normalize.css">
<link rel="stylesheet" href="../css/style.css">
<link rel="stylesheet" href="../css/events.css">
<link rel="stylesheet" href="../css/gallery.css">
<link rel="stylesheet" href="../css/bulma.min.css">
<meta name="theme-color" content="#024" />
<title>Fotoverkstedet</title>
</head>
<body>
<header>Fotoverkstedet</header>
<nav id="navbar" class="">
<?php echo navbar(0, ''); ?>
<?php echo loginbar(null, $pdo); ?>
</nav>
<main class="card gallery-container">
<?php
foreach ($images as $key => $value) {
$modTime = date("d.m.Y H:i", filemtime($fullPath . $value));
$imguser = explode("/", $value)[0];
$displaypath = substr($value, strpos($value, "/")+1);
$realname = "Ukjent";
foreach ($unamepairs as $unamepair) {
$unamepair = explode(":", $unamepair);
if ($unamepair[0] == $imguser) {
$realname = $unamepair[1];
break;
}
}
$vars = [
"%user" => $imguser,
"%time" => $modTime,
"%name" => $displaypath,
"%path" => "/galleri/" . $relativePath .$value,
"%realname" => $realname
];
echo strtr($imageTemplate, $vars);
}
?>
</main>
</body>
</html>