735 lines
22 KiB
PHP
735 lines
22 KiB
PHP
<?php
|
|
require ("3-protect.php");
|
|
//session_start();
|
|
include 'i18n_setup.php';
|
|
/*include 'localize.php';
|
|
$domain = 'sentier';
|
|
localize($domain);
|
|
*/
|
|
include 'functions.php';
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
<meta name="description" content="Sur le sentier: admin">
|
|
<title><?php echo gettext('Clean photos in Sqlite base'); ?></title>
|
|
<meta name="msapplication-TileColor" content="#2b5797">
|
|
<meta name="msapplication-config" content="/icons/browserconfig.xml">
|
|
<meta name="theme-color" content="#ffffff">
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/icons/apple-touch-icon.png">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/icons/favicon-32x32.png">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/icons/favicon-16x16.png">
|
|
<link rel="manifest" href="/icons/site.webmanifest">
|
|
<link rel="shortcut icon" href="/icons/favicon.ico">
|
|
|
|
<link rel="stylesheet" href="css/sls.css">
|
|
|
|
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h1><?php echo gettext('Clean / repare database'); ?></h1><br>
|
|
|
|
<?php
|
|
|
|
$base = 'db_photo.sqlite3';
|
|
|
|
// Taille des vignettes
|
|
$th_w = 300;
|
|
$th_h = 300;
|
|
// Chemins
|
|
$img_path = "photos/img/";
|
|
$thumb_path = "photos/thumb/";
|
|
|
|
|
|
echo '<h3>' . gettext('Clean folder img...') . '</h3>';
|
|
|
|
$originals = array_map('basename', glob('photos/img/*.{jpg,jpeg,JPG,JPEG,heic,HEIC,webp,WEBP}', GLOB_BRACE));
|
|
$thumbs = array_map('basename', glob('photos/thumb/*.{jpg,jpeg,JPG,JPEG,heic,HEIC,webp,WEBP}', GLOB_BRACE));
|
|
|
|
// On recherche les vignettes manquantes
|
|
|
|
$missing_thumbs = array_diff($originals, $thumbs);
|
|
$a = count($missing_thumbs);
|
|
echo '<h4>' . gettext('Missing thumbs: ') . $a . '</h4>';
|
|
|
|
|
|
// On crée les vignettes manquantes
|
|
|
|
if ($a > 0) {
|
|
echo '<h4>' . gettext('Create missing thumbs...') . '</h4>';
|
|
|
|
foreach($missing_thumbs as $img){
|
|
$file = $img_path . $img;
|
|
create_thumb($th_w, $th_h, $file);
|
|
echo '<h5>' . gettext('Thumb for ') . $img . gettext(' was successfully created!') . '</h5>';
|
|
}
|
|
}
|
|
|
|
|
|
// On recherche les vignettes en trop
|
|
|
|
$extra_thumbs = array_diff($thumbs, $originals);
|
|
$b = count($extra_thumbs);
|
|
echo '<h4>' . gettext('Extra thumbs: ') . $b . '</h4>';
|
|
|
|
|
|
// On efface les vignettes en trop
|
|
|
|
if ($b > 0) {
|
|
echo '<h4>' . gettext('Delete extra thumbs...') . '</h4>';
|
|
|
|
foreach($extra_thumbs as $thumb){
|
|
$file = $thumb_path . $thumb;
|
|
if (unlink($file)) {
|
|
echo '<h5>' . $thumb . gettext(' was deleted successfully!') . '</h5>';
|
|
} else {
|
|
echo '<h5 class="redtext">' . gettext('There was a error deleting the file ') . $thumb . '</h5>';
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// On compare le dossier 'img' et la base
|
|
|
|
echo '<h3>' . gettext('Compare folder img and database...') . '</h3>';
|
|
|
|
try {
|
|
$conn = new PDO("sqlite:db_photo.sqlite3");
|
|
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
|
|
$query = "SELECT filename FROM photos";
|
|
|
|
$stmt = $conn->prepare($query);
|
|
$stmt->execute();// (1,3...) 1=1ere valeur 3=valeur
|
|
|
|
$result = $stmt->fetchAll(PDO::FETCH_CLASS);
|
|
$rowcount = count($result);
|
|
|
|
}
|
|
catch(PDOException $e) {
|
|
echo $e->getMessage();
|
|
}
|
|
|
|
//_pr($result);
|
|
$bdd = array();
|
|
|
|
foreach($result as $file) {
|
|
$bdd[] = $file->filename;
|
|
}
|
|
|
|
$base = array_map('basename', $bdd);
|
|
echo '<h4>' . count($base) . " entries in database". "</h4>";
|
|
echo '<h4>' . count($originals) . " files on disk" . "</h4>";
|
|
|
|
$extra_in_bdd= array_diff($base, $originals);
|
|
$c = count($extra_in_bdd);
|
|
|
|
echo '<h4>' . gettext('Extra images in database: ') . $c . '</h4>';
|
|
|
|
|
|
// On supprime les images en trop dans la base
|
|
|
|
if ($c > 0) {
|
|
echo '<h4>' . gettext('Delete extra images in database...') . '</h4>';
|
|
|
|
foreach($extra_in_bdd as $img){
|
|
$file = $img_path . $img;
|
|
$query4 = "DELETE FROM photos WHERE filename=:filename";
|
|
$stmt = $conn->prepare($query4);
|
|
$stmt->bindParam(':filename', $file);
|
|
$result = $stmt->execute();
|
|
if ($result) {
|
|
echo '<h5>' . $img . gettext(' has been deleted from database !') . "</h5>";
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
$missing_in_bdd = array_diff($originals, $base);
|
|
$d = count($missing_in_bdd);
|
|
|
|
echo '<h4>' . gettext('Missing images in database: ') . $d . '</h4>';
|
|
|
|
|
|
// On ajoute les images manquantes dans la base
|
|
|
|
if ($d > 0) {
|
|
echo '<h3>' . gettext('Adding missing images in database...') . '</h3>';
|
|
|
|
$i = 1;
|
|
$photos = array();
|
|
|
|
foreach($missing_in_bdd as $img){
|
|
$file = $img_path . $img;
|
|
$query4 = "INSERT INTO photos WHERE filename=:filename";
|
|
|
|
if ($exif = @exif_read_data($file, 0, true )) {
|
|
|
|
//_pr($exif);
|
|
|
|
unset($fla);
|
|
unset($flash);
|
|
|
|
// filename
|
|
//echo "File: " . $file . "<br>";
|
|
|
|
// filesize
|
|
$fs = isset($exif['FILE']['FileSize']) ? $exif['FILE']['FileSize'] : '';
|
|
$fsize = formatBytes($fs, $precision = 0);
|
|
|
|
// dateoriginal
|
|
# YYYY-MM-DD HH:MM:SS.SSS - 2019:10:01 14:03:12
|
|
$da = isset($exif['EXIF']['DateTimeOriginal']) ? $exif['EXIF']['DateTimeOriginal'] : '';
|
|
if (isset($exif['EXIF']['DateTimeOriginal'])) {
|
|
$d = explode(' ', $exif['EXIF']['DateTimeOriginal']);
|
|
$da = str_replace(':', '-', $d[0]) . " " . $d[1] . ".000";
|
|
} else {
|
|
$d = '';
|
|
}
|
|
|
|
// lens
|
|
if (isset($exif['EXIF']['UndefinedTag:0xA434'])) {
|
|
$w = trim($exif['EXIF']['UndefinedTag:0xA434']);
|
|
|
|
$arr = array("600" => "EF600mm f/4L IS III USM", "100.0 mm" => "EF100mm f/2.8 Macro USM", "100.0-400.0 mm" => "EF100-400mm f/4.5-5.6L IS USM", "140.0-560.0 mm" => "EF100-400mm f/4.5-5.6L IS USM +1.4x II", "17.0-40.0 mm" => "EF17-40mm f/4L USM", "24-70mm" => "SIGMA 24-70mm F2.8 EX DG", "70.0-200.0 mm" => "EF70-200mm f/4L USM", "10.0-22.0 mm" => "EF-S10-22mm f/3.5-4.5 USM", "500.0 mm" => "SIGMA 500mm f/4.5 EX HSM", "500mm" => "SIGMA 500mm f/4.5 EX HSM");
|
|
|
|
if (array_key_exists($w, $arr)) $obj= $arr[$w];
|
|
else $obj = $w;
|
|
|
|
} else {
|
|
$obj = '';
|
|
}
|
|
|
|
// speed
|
|
if (isset($exif['EXIF']['ExposureTime'])) {
|
|
$q = explode('/', $exif['EXIF']['ExposureTime']);
|
|
$sp = ($q[0] > 1) ? ($q[0] / $q[1]) . "s" : $exif['EXIF']['ExposureTime'];
|
|
} else {
|
|
$sp = '';
|
|
}
|
|
|
|
// aperture
|
|
$ap = isset($exif['COMPUTED']['ApertureFNumber']) ? $exif['COMPUTED']['ApertureFNumber'] : '';
|
|
|
|
// correctexpo
|
|
//$ev = isset($exif['EXIF']['ExposureBiasValue']) ? $exif['EXIF']['ExposureBiasValue'] : '';
|
|
|
|
if (isset($exif['EXIF']['ExposureBiasValue'])) {
|
|
$ev = $exif['EXIF']['ExposureBiasValue'];
|
|
$div = explode( "/", $ev);
|
|
$dividende = $div[0];
|
|
$diviseur = $div[1];
|
|
|
|
if (str_starts_with($ev, '0')) {
|
|
$ev = '0';
|
|
}
|
|
elseif ($dividende === $diviseur) {
|
|
$ev = '0';
|
|
}
|
|
if ((! str_starts_with($ev, '0')) && (! str_starts_with($ev, '-'))) {
|
|
$ev = "+" . $ev;
|
|
}
|
|
} else {
|
|
$ev = '';
|
|
}
|
|
|
|
|
|
// iso
|
|
$iso = isset($exif['EXIF']['ISOSpeedRatings']) ? $exif['EXIF']['ISOSpeedRatings'] : '';
|
|
|
|
// model
|
|
$mod = isset($exif['IFD0']['Model']) ? $exif['IFD0']['Model'] : '';
|
|
|
|
// metering
|
|
if (isset($exif['EXIF']['MeteringMode'])) {
|
|
$mm = $exif['EXIF']['MeteringMode'];
|
|
|
|
switch ($mm) {
|
|
case 1: $mm = gettext("Average");
|
|
break;
|
|
case 2: $mm = gettext("Center-weighted average"); // Moy. à pred. centrale
|
|
break;
|
|
case 3: $mm = gettext("Spot");
|
|
break;
|
|
case 4: $mm = gettext("Multi-Spot");
|
|
break;
|
|
case 5: $mm = gettext("Pattern"); // Mesure évaluative
|
|
break;
|
|
case 6: $mm = gettext("Partial"); // Mesure sélective
|
|
break;
|
|
default: $mm = gettext("Unknown") . ': ' . $mm;
|
|
// Evaluative Mesure évaluative
|
|
// Centre-weighted Average Moy. à pred. centrale
|
|
// Partial Mesure sélective
|
|
// Spot Spot
|
|
|
|
// Pattern =Mesure évaluative (30D)
|
|
// Average Mesure évaluative
|
|
}
|
|
|
|
} else {
|
|
$mm = '';
|
|
}
|
|
|
|
// flash
|
|
// https://stackoverflow.com/questions/7076958/read-exif-and-determine-if-the-flash-has-fired
|
|
|
|
if (isset($exif['EXIF']['Flash'])) {
|
|
$fla = $exif['EXIF']['Flash'];
|
|
|
|
$flash = $fla;
|
|
//$flashfired = ($fla & 1) != 0;
|
|
//echo "flashfired: " . $flashfired . "<br>";
|
|
|
|
// 12_2018.jpg No Flash 0
|
|
// 5_2013.jpg Off, Did not fire 16
|
|
// folder flash 9
|
|
|
|
switch ($fla) {
|
|
case 0: $fla = gettext("No Flash");
|
|
break;
|
|
case 9: $fla = gettext("On, Fired");
|
|
break;
|
|
case 16: $fla = gettext("Off, Did not fire");
|
|
break;
|
|
default: $fla = gettext("Unknown");
|
|
}
|
|
|
|
/*
|
|
Exiftool:
|
|
[Flash] => On, Fired
|
|
[Flash Compensation] => -1
|
|
*/
|
|
/*
|
|
0x0 = No Flash
|
|
0x1 = Fired
|
|
0x5 = Fired, Return not detected
|
|
0x7 = Fired, Return detected
|
|
0x8 = On, Did not fire
|
|
0x9 = On, Fired
|
|
0xd = On, Return not detected
|
|
0xf = On, Return detected
|
|
0x10 = Off, Did not fire
|
|
0x14 = Off, Did not fire, Return not detected
|
|
0x18 = Auto, Did not fire
|
|
0x19 = Auto, Fired
|
|
0x1d = Auto, Fired, Return not detected
|
|
0x1f = Auto, Fired, Return detected
|
|
0x20 = No flash function
|
|
0x30 = Off, No flash function
|
|
0x41 = Fired, Red-eye reduction
|
|
0x45 = Fired, Red-eye reduction, Return not detected
|
|
0x47 = Fired, Red-eye reduction, Return detected
|
|
0x49 = On, Red-eye reduction
|
|
0x4d = On, Red-eye reduction, Return not detected
|
|
0x4f = On, Red-eye reduction, Return detected
|
|
0x50 = Off, Red-eye reduction
|
|
0x58 = Auto, Did not fire, Red-eye reduction
|
|
0x59 = Auto, Fired, Red-eye reduction
|
|
0x5d = Auto, Fired, Red-eye reduction, Return not detected
|
|
0x5f = Auto, Fired, Red-eye reduction, Return detected
|
|
*/
|
|
|
|
} else {
|
|
$fla = '';
|
|
}
|
|
|
|
// focal
|
|
if (isset($exif['EXIF']['FocalLength'])) {
|
|
$k = explode('/', $exif['EXIF']['FocalLength']);
|
|
$fl = $k[0] . " mm";
|
|
} else {
|
|
$fl = '';
|
|
}
|
|
|
|
// program
|
|
if (isset($exif['EXIF']['ExposureMode'])) {
|
|
$em = $exif['EXIF']['ExposureMode'];
|
|
//$em = hexdec(intel2Moto($exif['EXIF']['ExposureMode']));
|
|
//echo $em;
|
|
|
|
switch ($em) {
|
|
case 0: $em = gettext("OFF");
|
|
break;
|
|
case 1: $em = gettext("ON");
|
|
break;
|
|
default: $em = gettext("Unknown");
|
|
}
|
|
|
|
/*
|
|
switch ($ep) {
|
|
case 1: $ep = gettext('Manual');
|
|
break;
|
|
case 2: $ep = gettext('Program');
|
|
break;
|
|
case 3: $ep = gettext('Aperture Priority');
|
|
break;
|
|
case 4: $ep = gettext('Shutter Priority');
|
|
break;
|
|
case 5: $ep = gettext('Program Creative');
|
|
break;
|
|
case 6: $ep = gettext('Program Action');
|
|
break;
|
|
case 7: $ep = gettext('Portrait');
|
|
break;
|
|
case 8: $ep = gettext('Landscape');
|
|
break;
|
|
default: $ep = gettext('Unknown') . ': ' . $ep;
|
|
break;
|
|
}
|
|
*/
|
|
|
|
} else {
|
|
$em = '';
|
|
}
|
|
|
|
// wb
|
|
if (isset($exif['EXIF']['WhiteBalance'])) {
|
|
$wb = $exif['EXIF']['WhiteBalance'];
|
|
|
|
switch ($wb) {
|
|
case 0: $wb = gettext("Auto");
|
|
break;
|
|
case 1: $wb = gettext("Daylight");
|
|
break;
|
|
case 2: $wb = gettext("Cloudy");
|
|
break;
|
|
case 3: $wb = gettext("Tungsten");
|
|
break;
|
|
case 4: $wb = gettext("Fluorescent");
|
|
break;
|
|
case 5: $wb = gettext("Flash");
|
|
break;
|
|
case 6: $wb = gettext("Custom");
|
|
break;
|
|
case 7: $wb = gettext("Black & White");
|
|
break;
|
|
case 8: $wb = gettext("Shade");
|
|
break;
|
|
case 9: $wb = gettext("Manual Temperature (Kelvin)");
|
|
break;
|
|
default: $wb = gettext("Unknown");
|
|
}
|
|
|
|
} else {
|
|
$wb = '';
|
|
}
|
|
|
|
// mode
|
|
if (isset($exif['EXIF']['ExposureProgram'])) {
|
|
$ep = $exif['EXIF']['ExposureProgram'];
|
|
|
|
switch ($ep) {
|
|
case 1: $ep = gettext('Manual');
|
|
break;
|
|
case 2: $ep = gettext('Program');
|
|
break;
|
|
case 3: $ep = gettext('Aperture Priority');
|
|
break;
|
|
case 4: $ep = gettext('Shutter Priority');
|
|
break;
|
|
case 5: $ep = gettext('Program Creative');
|
|
break;
|
|
case 6: $ep = gettext('Program Action');
|
|
break;
|
|
case 7: $ep = gettext('Portrait');
|
|
break;
|
|
case 8: $ep = gettext('Landscape');
|
|
break;
|
|
default: $ep = gettext('Unknown') . ': ' . $data;
|
|
break;
|
|
}
|
|
|
|
} else {
|
|
$ep = '';
|
|
}
|
|
|
|
// width
|
|
$wi = isset($exif['COMPUTED']['Width']) ? $exif['COMPUTED']['Width'] : '';
|
|
|
|
// height
|
|
$he = isset($exif['COMPUTED']['Height']) ? $exif['COMPUTED']['Height'] : '';
|
|
|
|
// html
|
|
$ht = isset($exif['COMPUTED']['html']) ? $exif['COMPUTED']['html'] : '';
|
|
|
|
// software
|
|
$soft = isset($exif['IFD0']['Software']) ? $exif['IFD0']['Software'] : '';
|
|
|
|
// lat, long, alt
|
|
$gps = get_gps($exif);
|
|
|
|
// usercomment
|
|
$uc = isset($exif['COMPUTED']['UserComment']) ? $exif['COMPUTED']['UserComment'] : '';
|
|
|
|
// comment
|
|
$comment = isset($exif['COMMENT']['0']) ? $exif['COMMENT']['0'] : '';
|
|
|
|
|
|
$photos[$i] = array(
|
|
'filename' => $file,
|
|
'filesize' => $fsize,
|
|
'dateoriginal' => $da,
|
|
|
|
'lens' => $obj,
|
|
'speed' => $sp,
|
|
'aperture' => $ap,
|
|
'correctexpo' => $ev, ////
|
|
'iso' => $iso,
|
|
|
|
'model' => $mod,
|
|
'metering' => $mm,
|
|
'flash' => $fla,
|
|
'focal' => $fl,
|
|
'program' => $em,
|
|
'wb' => $wb,
|
|
'mode' => $ep,
|
|
|
|
'width' => $wi,
|
|
'height' => $he,
|
|
'html' => $ht,
|
|
'software' => $soft,
|
|
|
|
'lat' => $gps['latitude'],
|
|
'long' => $gps['longitude'],
|
|
'alt' => $gps['altitude'],
|
|
|
|
'usercomment' => $uc,
|
|
'comment' => $comment,
|
|
|
|
);
|
|
}
|
|
|
|
/********/
|
|
/* IPTC */
|
|
/********/
|
|
|
|
if ($iptc = @getimagesize($file, $info)) {
|
|
//_pr($iptc);
|
|
|
|
if (isset($info["APP13"])) {
|
|
$mots = "";
|
|
$iptc = iptcparse ($info["APP13"]);
|
|
|
|
// keywords
|
|
$mots_cles = (isset($iptc["2#025"])) ? $iptc["2#025"] : '';
|
|
if (!empty($mots_cles)) {
|
|
foreach ($mots_cles as $key => $val) {
|
|
$mots .= $val . ",";
|
|
}
|
|
$mots = substr($mots, 0, -1);
|
|
}
|
|
|
|
// titre
|
|
$title = (isset($iptc["2#105"][0])) ? $iptc["2#105"][0] : '';
|
|
|
|
// creator
|
|
$creator = (isset($iptc["2#080"][0])) ? $iptc["2#080"][0] : '';
|
|
|
|
// ville
|
|
$ville = (isset($iptc["2#090"][0])) ? $iptc["2#090"][0] : '';
|
|
|
|
// departement
|
|
$departement = (isset($iptc["2#095"][0])) ? $iptc["2#095"][0] : '';
|
|
|
|
// code
|
|
$code = (isset($iptc["2#100"][0])) ? $iptc["2#100"][0] : '';
|
|
|
|
// pays
|
|
$pays = (isset($iptc["2#101"][0])) ? $iptc["2#101"][0] : '';
|
|
|
|
// copyright
|
|
$copyright = (isset($iptc["2#116"][0])) ? $iptc["2#116"][0] : '';
|
|
|
|
// legende
|
|
$legende = (isset($iptc["2#120"][0])) ? $iptc["2#120"][0] : '';
|
|
|
|
|
|
$photos[$i]['keywords'] = $mots;
|
|
$photos[$i]['title'] = $title;
|
|
$photos[$i]['creator'] = $creator;
|
|
|
|
$photos[$i]['city'] = $ville;
|
|
$photos[$i]['department'] = $departement;
|
|
$photos[$i]['code'] = $code;
|
|
$photos[$i]['country'] = $pays;
|
|
|
|
$photos[$i]['copyright'] = $copyright;
|
|
$photos[$i]['legende'] = $legende;
|
|
|
|
}
|
|
else {
|
|
$photos[$i]['keywords'] = '';
|
|
$photos[$i]['title'] = '';
|
|
$photos[$i]['creator'] = '';
|
|
$photos[$i]['city'] = '';
|
|
$photos[$i]['department'] = '';
|
|
$photos[$i]['code'] = '';
|
|
$photos[$i]['country'] = '';
|
|
$photos[$i]['copyright'] = '';
|
|
$photos[$i]['legende'] = '';
|
|
}
|
|
}
|
|
|
|
$i++;
|
|
}
|
|
|
|
//_pr($photos);
|
|
|
|
$query5 = "SELECT MAX(id) FROM photos";
|
|
$stmt = $conn->prepare($query5);
|
|
$stmt->execute();
|
|
$resultat = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
$avant = $resultat['MAX(id)'];
|
|
|
|
$nb_avant = (isset($avant)) ? $avant : 0;
|
|
|
|
|
|
try {
|
|
$query2 = "INSERT OR IGNORE INTO photos (filename, filesize, dateoriginal, lens, speed, aperture, correctexpo, iso, model, metering, flash, focal, program, wb, mode, width, height, html, software, lat, long, alt, usercomment, comment, keywords, title, creator, city, department, code, country, copyright, legende) VALUES (:filename, :filesize, :dateoriginal, :lens, :speed, :aperture, :correctexpo, :iso, :model, :metering, :flash, :focal, :program, :wb, :mode, :width, :height, :html, :software, :lat, :long, :alt, :usercomment, :comment, :keywords, :title, :creator, :city, :department, :code, :country, :copyright, :legende)";
|
|
|
|
$stmt = $conn->prepare($query2);
|
|
|
|
/* EXIF */
|
|
$stmt->bindParam(':filename', $file);
|
|
$stmt->bindParam(':filesize', $fsize);
|
|
$stmt->bindParam(':dateoriginal', $da);
|
|
$stmt->bindParam(':lens', $obj);
|
|
$stmt->bindParam(':speed', $sp);
|
|
$stmt->bindParam(':aperture', $ap);
|
|
$stmt->bindParam(':correctexpo', $ev);
|
|
$stmt->bindParam(':iso', $iso);
|
|
$stmt->bindParam(':model', $mod);
|
|
$stmt->bindParam(':metering', $mm);
|
|
$stmt->bindParam(':flash', $fla);
|
|
$stmt->bindParam(':focal', $fl);
|
|
$stmt->bindParam(':program', $em);
|
|
$stmt->bindParam(':wb', $wb);
|
|
$stmt->bindParam(':mode', $ep);
|
|
$stmt->bindParam(':width', $wi);
|
|
$stmt->bindParam(':height', $he);
|
|
$stmt->bindParam(':html', $ht);
|
|
$stmt->bindParam(':software', $soft);
|
|
$stmt->bindParam(':lat', $gps['latitude']);
|
|
$stmt->bindParam(':long', $gps['longitude']);
|
|
$stmt->bindParam(':alt', $gps['altitude']);
|
|
$stmt->bindParam(':usercomment', $uc);
|
|
$stmt->bindParam(':comment', $com);
|
|
|
|
/* IPTC */
|
|
$stmt->bindParam(':keywords', $mot);
|
|
$stmt->bindParam(':title', $tit);
|
|
$stmt->bindParam(':creator', $crea);
|
|
$stmt->bindParam(':city', $ci);
|
|
$stmt->bindParam(':department', $dep);
|
|
$stmt->bindParam(':code', $cp);
|
|
$stmt->bindParam(':country', $pa);
|
|
$stmt->bindParam(':copyright', $cop);
|
|
$stmt->bindParam(':legende', $leg);
|
|
|
|
|
|
if (isset($photos)) {
|
|
foreach ($photos as $item) {
|
|
$file = $item['filename'];
|
|
$fsize = $item['filesize'];
|
|
$da = $item['dateoriginal'];
|
|
$obj = $item['lens'];
|
|
$sp = $item['speed'];
|
|
$ap = $item['aperture'];
|
|
$ev = $item['correctexpo'];
|
|
$iso = $item['iso'];
|
|
$mod = $item['model'];
|
|
$mm = $item['metering'];
|
|
$fla = $item['flash'];
|
|
$fl = $item['focal'];
|
|
$em = $item['program'];
|
|
$wb = $item['wb'];
|
|
$ep = $item['mode'];
|
|
$wi = $item['width'];
|
|
$he = $item['height'];
|
|
$ht = $item['html'];
|
|
$soft = $item['software'];
|
|
$gps['latitude'] = $item['lat'];
|
|
$gps['longitude'] = $item['long'];
|
|
$gps['altitude'] = $item['alt'];
|
|
$mot = $item['keywords'];
|
|
$tit = $item['title'];
|
|
$crea = $item['creator'];
|
|
$ci = $item['city'];
|
|
$dep = $item['department'];
|
|
$cp = $item['code'];
|
|
$pa = $item['country'];
|
|
$cop = $item['copyright'];
|
|
$leg = $item['legende'];
|
|
$uc = $item['usercomment'];
|
|
$com = $item['comment'];
|
|
|
|
create_thumb($th_w, $th_h, $file);
|
|
|
|
$stmt->execute();
|
|
}
|
|
}
|
|
}
|
|
catch(PDOException $e) {
|
|
echo $e->getMessage();
|
|
}
|
|
|
|
|
|
/***********************/
|
|
/* Display new entries */
|
|
/***********************/
|
|
|
|
try {
|
|
|
|
$query4 = "SELECT filename, filesize, dateoriginal, lens, speed, aperture, correctexpo, iso, model, metering, flash, focal, program, wb, mode, width, height, html, software, lat, long, alt, usercomment, comment, keywords, title, creator, city, department, code, country, copyright, legende FROM photos WHERE id > ? ORDER BY dateoriginal DESC";
|
|
|
|
$stmt = $conn->prepare($query4);
|
|
$stmt->bindValue(1, $nb_avant, SQLITE3_INTEGER); // (1,3...) 1=1ere valeur 3=valeur
|
|
$stmt->execute();
|
|
|
|
echo '<h3>' . gettext('Reading added photos') . ':</h3>';
|
|
echo '<div id="add_to_bdd">';
|
|
echo '<table class="styled-table">';
|
|
echo '<thead>';
|
|
echo '<th>' . gettext('Thumb') . '</th><th>' . gettext('Filename') . '</th><th>' . gettext('File size') . '</th><th>' . gettext('Date') . '</th><th>' . gettext('Lens') . '</th><th>' . gettext('Speed') . '</th><th>' . gettext('Aperture') . '</th><th>' . gettext('Exposure Corr.') . '</th><th>' . gettext('Iso') . '</th><th>' . gettext('Model') . '</th><th>' . gettext('Metering') . '</th><th>' . gettext('Flash') . '</th>';
|
|
echo '<th>' . gettext('Focal') . '</th><th>' . gettext('Program') . '</th><th>' . gettext('White Balance') . '</th><th>' . gettext('Mode') . '</th><th>' . gettext('Software') . '</th><th>' . gettext('Latitude') . '</th><th>' . gettext('Longitude') . '</th><th>' . gettext('Alttitude') . '</th><th>' . gettext('Keywords') . '</th><th>' . gettext('Title') . '</th><th>' . gettext('Creator') . '</th>';
|
|
echo '<th>' . gettext('City') . '</th><th>' . gettext('Department') . '</th><th>' . gettext('CP') . '</th><th>' . gettext('Country') . '</th><th>' . gettext('Copyright') . '</th><th>' . gettext('Legende') . '</th>';
|
|
echo '</thead>';
|
|
echo '<tbody>';
|
|
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
|
$thumbnail = host() . str_replace("photos/img", "photos/thumb", $row['filename']);
|
|
$full = host() . $row['filename'];
|
|
|
|
echo '<tr><td>' . '<a href="' . $full . '"><img src="'.$thumbnail.'" /></a>' . '</td><td>' . $row['filename'] . '</td><td>' . $row['filesize'] . '</td><td>' . $row['dateoriginal'] . '</td><td>' . $row['lens'] . '</td><td>' . $row['speed'] . '</td><td>' . $row['aperture'] . '</td><td>' . $row['correctexpo'] . '</td><td>' . $row['iso'] . '</td><td>' . $row['model'] . '</td><td>' . $row['metering'] . '</td><td>' . $row['flash'] . '</td><td>' . $row['focal'] . '</td><td>' . $row['program'] . '</td><td>' . $row['wb'] . '</td><td>' . $row['mode'] . '</td><td>' . $row['software'] . '</td><td>' . $row['lat'] . '</td><td>' . $row['long'] . '</td><td>' . $row['alt'] . '</td><td>' . $row['keywords'] . '</td><td>' . $row['title'] . '</td><td>' . $row['creator'] . '</td><td>' . $row['city'] . '</td><td>' . $row['department'] . '</td><td>' . $row['code'] . '</td><td>' . $row['country'] . '</td><td>' . $row['copyright'] . '</td><td>' . $row['legende'] . '</td></tr>';
|
|
}
|
|
echo '</tbody></table>';
|
|
echo '</div>';
|
|
|
|
$conn = null;
|
|
}
|
|
catch(PDOException $e) {
|
|
echo $e->getMessage();
|
|
}
|
|
|
|
$conn = null;
|
|
|
|
}
|
|
?>
|
|
|
|
<?php $logout = (isset($_SESSION["user"])) ? '<a class="" href="4-logout.php" role="button">' . gettext("Log out") . '</a>' : ''; ?>
|
|
|
|
<p class="navPage"><a href="index.php" title="<?php echo gettext("Home"); ?>"><?php echo gettext("Home"); ?></a> | <a href="photo-du-mois.php" title="<?php echo gettext("Picture of the month"); ?>"><?php echo gettext("Picture of the month"); ?></a> | <a href="maps.php" title="<?php echo gettext("Maps"); ?>"><?php echo gettext("Maps"); ?></a> | <a href="admin.php" title="<?php echo gettext("Admin page"); ?>"><?php echo gettext("Admin page"); ?></a> | <?php echo $logout; ?></p>
|
|
|
|
<p><em><small>© 2013-<?php echo date('Y'); ?> sur-le-sentier.fr</small></em></p>
|
|
|
|
</body>
|
|
|
|
</html>
|