нормальный exif пришёл к вам дом & bugs fixes

This commit is contained in:
themohooks 2024-10-11 21:54:40 +03:00
parent a8bac109c2
commit cd250cb0e5
5 changed files with 172 additions and 54 deletions

View file

@ -0,0 +1,19 @@
<?php
namespace App\Controllers\Api\Images\Comments;
use App\Services\{Auth, Router, GenerateRandomStr, DB, Json, EXIF};
use App\Models\{User, Vote, Comment};
class Load
{
public function __construct()
{
$comments = DB::query('SELECT * FROM entities_data WHERE photo_id=:pid', array(':pid' => explode('/', $_SERVER['REQUEST_URI'])[4]));
}
}

View file

@ -36,11 +36,12 @@ class Upload
$fileext = pathinfo($file, PATHINFO_EXTENSION); $fileext = pathinfo($file, PATHINFO_EXTENSION);
} }
$cstrong = True; $cstrong = True;
$filecdn = bin2hex(openssl_random_pseudo_bytes(64, $cstrong)) . '.' . $fileext['extension']; $filecdn = bin2hex(openssl_random_pseudo_bytes(64, $cstrong)) . '.' . $fileext;
$folder = $location . $filecdn; $folder = $location . $filecdn;
if (strtolower (NGALLERY['root']['storage']['type']) == "s3") if (strtolower (NGALLERY['root']['storage']['type']) == "s3")
{ {
if (NGALLERY['root']['video']['upload']['cloudflare-bypass'] === true) { if (NGALLERY['root']['video']['upload']['cloudflare-bypass'] === true) {
if ($location === 'cdn/video') { if ($location === 'cdn/video') {
if (filesize($_SERVER['DOCUMENT_ROOT'].'/'.$location.$filecdn) >= 94371840) { if (filesize($_SERVER['DOCUMENT_ROOT'].'/'.$location.$filecdn) >= 94371840) {
@ -76,8 +77,26 @@ class Upload
} }
else else
{ {
mkdir("{$_SERVER['DOCUMENT_ROOT']}/uploads/{$location}", 0777, true); echo $tmpname;
move_uploaded_file ($tmpname, "{$_SERVER['DOCUMENT_ROOT']}/uploads/{$folder}"); $location = "your-location"; // Название локации
$folder = "{$location}/" . basename($tmpname); // Создаем корректное имя для папки с файлом
$uploadDir = "{$_SERVER['DOCUMENT_ROOT']}/uploads/{$location}"; // Полный путь к директории
// Создание директории, если она не существует
if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0777, true);
}
// Путь к файлу, куда он должен быть перемещен
$destination = "{$uploadDir}/" . basename($tmpname);
// Перемещение файла
if (move_uploaded_file($tmpname, $destination)) {
echo "Файл успешно перемещен!";
} else {
echo "Ошибка при перемещении файла.";
}
$this->type = $type; $this->type = $type;
$this->src = "/uploads/{$folder}"; $this->src = "/uploads/{$folder}";

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -175,9 +175,9 @@ if ($photo->i('id') !== null) {
</table> </table>
<?php <?php
if ($photo->i('gallery_id') != 0 || $photo->i('gallery_id') != null) { if ($photo->i('gallery_id') != 0 || $photo->i('gallery_id') != null) {
echo '<div><a href="/articles/'.$photo->i('gallery_id').'/">'.DB::query('SELECT title FROM galleries WHERE id=:id', array(':id'=>$photo->i('gallery_id')))[0]['title'].'</a></div>'; echo '<div><a href="/articles/' . $photo->i('gallery_id') . '/">' . DB::query('SELECT title FROM galleries WHERE id=:id', array(':id' => $photo->i('gallery_id')))[0]['title'] . '</a></div>';
} }
?> ?>
</div> </div>
</div> </div>
@ -213,7 +213,7 @@ if ($photo->i('id') !== null) {
<div class="pp-item-body" style="margin:7px 5px"> <div class="pp-item-body" style="margin:7px 5px">
<div class="sm"> <div class="sm">
<?php <?php
if (DB::query('SELECT user_id FROM photos_favorite WHERE photo_id=:pid AND user_id=:uid', array(':uid'=>Auth::userid(), ':pid'=>$id))) { if (DB::query('SELECT user_id FROM photos_favorite WHERE photo_id=:pid AND user_id=:uid', array(':uid' => Auth::userid(), ':pid' => $id))) {
$fav = 1; $fav = 1;
$textfav = 'Удалить фото из Избранного'; $textfav = 'Удалить фото из Избранного';
} else { } else {
@ -221,7 +221,7 @@ if ($photo->i('id') !== null) {
$textfav = 'Добавить фото в Избранное'; $textfav = 'Добавить фото в Избранное';
} }
?> ?>
<a class="tool-link" href="#" id="favLink" faved="<?=$fav?>"><?=$textfav?></a> <a class="tool-link" href="#" id="favLink" faved="<?= $fav ?>"><?= $textfav ?></a>
</div> </div>
</div> </div>
</div> </div>
@ -285,26 +285,99 @@ if ($photo->i('id') !== null) {
</td> </td>
<style>
.header-container {
display: flex;
justify-content: space-between;
align-items: center;
}
.pp-item-header {
margin: 0;
}
.header-container img {
margin-right: 5px;
height: 20px;
}
</style>
<td id="pp-main-col"> <td id="pp-main-col">
<div id="pp-item-vdata"> <div id="pp-item-vdata">
<?php <?php
if ($photo->content('type') != 'none' && json_decode($photo->i('exif'), true)['type'] != 'none') { if ($photo->content('type') != 'none' && json_decode($photo->i('exif'), true)['type'] != 'none') {
?> ?>
<div class="p0" id="pp-item-exif"> <div class="p0" id="pp-item-exif">
<h4 class="pp-item-header">Параметры съёмки</h4> <div class="header-container">
<h4 class="pp-item-header">Параметры съёмки</h4>
<!--img src="/static/img/flex_arrow_open2.png" height="100%"-->
</div>
<div class="pp-item-body"> <div class="pp-item-body">
<table class="linetable" id="exif"> <table class="linetable" id="exif">
<?php <?php
$data = json_decode($photo->i('exif'), true); $data = json_decode($photo->i('exif'), true);
$exif_translations = [
'FILE.FileName' => 'Имя файла',
'FILE.FileSize' => 'Размер файла',
'FILE.FileDateTime' => 'Дата и время файла',
'COMPUTED.MimeType' => 'Тип MIME',
'IFD0.Make' => 'Производитель камеры',
'IFD0.Model' => 'Модель камеры',
'IFD0.Orientation' => 'Ориентация',
'IFD0.XResolution' => 'Разрешение по X',
'IFD0.YResolution' => 'Разрешение по Y',
'IFD0.ResolutionUnit' => 'Единица разрешения',
'IFD0.Software' => 'Программное обеспечение',
'IFD0.DateTime' => 'Дата и время',
'IFD0.Artist' => 'Автор',
'IFD0.Copyright' => 'Авторские права',
'EXIF.ExposureTime' => 'Время экспозиции',
'EXIF.FNumber' => 'Диафрагма',
'EXIF.ExposureProgram' => 'Программа экспозиции',
'EXIF.ISOSpeedRatings' => 'ISO',
'EXIF.ExifVersion' => 'Версия EXIF',
'EXIF.DateTimeOriginal' => 'Дата и время оригинала',
'EXIF.DateTimeDigitized' => 'Дата и время оцифровки',
'EXIF.ShutterSpeedValue' => 'Значение выдержки',
'EXIF.ApertureValue' => 'Значение диафрагмы',
'EXIF.BrightnessValue' => 'Значение яркости',
'EXIF.ExposureBiasValue' => 'Экспокоррекция',
'EXIF.MaxApertureValue' => 'Максимальная диафрагма',
'EXIF.MeteringMode' => 'Режим экспозамера',
'EXIF.LightSource' => 'Источник света',
'EXIF.Flash' => 'Вспышка',
'EXIF.FocalLength' => 'Фокусное расстояние',
'EXIF.SubjectArea' => 'Область объекта',
'EXIF.FlashpixVersion' => 'Версия Flashpix',
'EXIF.ColorSpace' => 'Цветовое пространство',
'EXIF.PixelXDimension' => 'Размер изображения по X',
'EXIF.PixelYDimension' => 'Размер изображения по Y',
'EXIF.SensingMethod' => 'Метод съёмки',
'EXIF.SceneType' => 'Тип сцены',
'EXIF.ExposureMode' => 'Режим экспозиции',
'EXIF.WhiteBalance' => 'Баланс белого',
'EXIF.FocalLengthIn35mmFilm' => 'Фокусное расстояние для 35мм плёнки',
'EXIF.SceneCaptureType' => 'Тип съёмки',
'EXIF.GainControl' => 'Регулировка усиления',
'EXIF.Contrast' => 'Контрастность',
'EXIF.Saturation' => 'Насыщенность',
'EXIF.Sharpness' => 'Резкость',
'GPS.GPSLatitude' => 'Широта',
'GPS.GPSLongitude' => 'Долгота',
'GPS.GPSAltitude' => 'Высота',
'GPS.GPSTimeStamp' => 'Время GPS',
'GPS.GPSDateStamp' => 'Дата GPS'
];
foreach ($data as $key => $value) { foreach ($data as $key => $value) {
if ($key === 'FILE.FileDateTime') { if ($key === 'FILE.FileDateTime') {
$value = Date::zmdate($value); $value = Date::zmdate($value);
} }
if (is_array($value)) { if (!isset($exif_translations[$key])) {
$value = implode(', ', $value); // Convert array to a comma-separated string continue;
} }
if (is_array($value)) {
$value = implode(', ', $value);
}
$key = $exif_translations[$key] ?? $key;
echo ' echo '
<tr class="s11 h21"> <tr class="s11 h21">
@ -369,54 +442,58 @@ if ($photo->i('id') !== null) {
$commcount++; $commcount++;
} }
} }
if ($photo->content('comments') != 'disabled') { ?> if ($photo->content('comments') != 'disabled') { ?>
<div class="p0" id="pp-item-comments"> <div class="p0" id="pp-item-comments">
<?php
if ($commcount > 0) { ?>
<h4 class="pp-item-header">Комментарии<span id="commcount" style="font-weight:normal"> <span style="color:#aaa">&middot;</span> <?= $commcount ?></span></h4>
<?php } ?>
<div id="posts">
<?php <?php
$number = 1; if ($commcount > 0) { ?>
foreach ($comments as $c) { <h4 class="pp-item-header">Комментарии<span id="commcount" style="font-weight:normal"> <span style="color:#aaa">&middot;</span> <?= $commcount ?></span></h4>
$comm = new Comment($c); <?php } ?>
if ($comm->content('deleted') != 'true') { <div id="posts">
if ($number % 2 == 0) { <?php
$class = 's11'; $number = 1;
} else { foreach ($comments as $c) {
$class = 's1'; $comm = new Comment($c);
if ($comm->content('deleted') != 'true') {
if ($number % 2 == 0) {
$class = 's11';
} else {
$class = 's1';
}
$comm->class($class);
$number++;
$comm->i();
}
} }
$comm->class($class); ?>
$number++;
$comm->i();
}
}
?>
</div>
<div class="cmt-write s1">
<h4 class="pp-item-header">Ваш комментарий</h4>
<div style="padding:0 11px 11px">
<form action="/comment.php" method="post" id="f1">
<input type="hidden" name="sid" value="hgdl6old9r9qodmvkn1r4t7d6h">
<input type="hidden" name="last_comment_rand" value="893329610">
<input type="hidden" name="id" id="id" value="<?= $id ?>">
<input type="hidden" name="subj" id="subj" value="p">
<textarea name="wtext" id="wtext"></textarea><br>
<p id="statusSend" style="display: none;">Ошибка</p>
<div class="cmt-submit"><input type="submit" value="Добавить комментарий" id="sbmt">&ensp;&emsp;Ctrl + Enter
</div>
</form>
</div> </div>
<div class="cmt-write s1">
<h4 class="pp-item-header">Ваш комментарий</h4>
<div style="padding:0 11px 11px">
<form action="/comment.php" method="post" id="f1">
<input type="hidden" name="sid" value="hgdl6old9r9qodmvkn1r4t7d6h">
<input type="hidden" name="last_comment_rand" value="893329610">
<input type="hidden" name="id" id="id" value="<?= $id ?>">
<input type="hidden" name="subj" id="subj" value="p">
<textarea name="wtext" id="wtext"></textarea><br>
<p id="statusSend" style="display: none;">Ошибка</p>
<div class="cmt-submit"><input type="submit" value="Добавить комментарий" id="sbmt">&ensp;&emsp;Ctrl + Enter
</div>
</form>
</div>
</div>
</div> </div>
</div> <?php } else { ?>
<?php } else { ?> <div class="p0" id="pp-item-comments">
<div class="p0" id="pp-item-comments">
<center><p>Комментарии отключены пользователем или по усмотрению Администрации.</p></center></div>
<?php } } ?> <center>
<p>Комментарии отключены пользователем или по усмотрению Администрации.</p>
</center>
</div>
<?php }
} ?>
</td> </td>
</tr> </tr>
</tbody> </tbody>

View file

@ -37,6 +37,9 @@ $user = new User(Auth::userid());
<!-- Подключение плагина Leaflet-3d-model --> <!-- Подключение плагина Leaflet-3d-model -->
<script src="https://unpkg.com/leaflet-3d-model/dist/leaflet-3d-model.min.js"></script> <script src="https://unpkg.com/leaflet-3d-model/dist/leaflet-3d-model.min.js"></script>
<script>
var pub_pid = 0;
</script>
<td class="main"> <td class="main">
<h1>Предложить медиа на публикацию</h1> <h1>Предложить медиа на публикацию</h1>
<p>Ваш текущий индекс загрузки: <b><?= $user->i('uploadindex') ?></b></p> <p>Ваш текущий индекс загрузки: <b><?= $user->i('uploadindex') ?></b></p>