disable exif option

This commit is contained in:
themohooks 2024-10-12 13:40:58 +03:00
parent 921712a857
commit 5d9e930d30
4 changed files with 131 additions and 16 deletions

View file

@ -20,6 +20,7 @@ class Upload
static $rating = 'allowed'; static $rating = 'allowed';
static $showtop = 'allowed'; static $showtop = 'allowed';
static $subsnotify = 'allowed'; static $subsnotify = 'allowed';
static $exif = 'exif';
public static function create($postbody, $content, $exif) public static function create($postbody, $content, $exif)
{ {
@ -146,6 +147,9 @@ class Upload
if ((int)$_POST['disablesubsnotify'] === 1) { if ((int)$_POST['disablesubsnotify'] === 1) {
self::$subsnotify = 'disabled'; self::$subsnotify = 'disabled';
} }
if ((int)$_POST['disableexif'] === 1) {
self::$exif = 'disabled';
}
if ($upload->getType() !== null) { if ($upload->getType() !== null) {
$content = Json::return( $content = Json::return(
array( array(

View file

@ -1,7 +1,7 @@
#photobar { margin:0 -20px; position:relative; background-color:#333; } #photobar { margin:0 -20px; position:relative; background-color:#333; }
#underphoto_frame { display:inline-block; } #underphoto_frame { display:inline-block; }
#ph { max-width:70%; cursor:zoom-in; } #ph { max-width:50%; cursor:zoom-in; }
#ph.v-zoom { max-height:calc(100vh - 30px); } #ph.v-zoom { max-height:calc(100vh - 30px); }
#ph.zoomed { max-width:none; max-height:none; cursor:zoom-out; } #ph.zoomed { max-width:none; max-height:none; cursor:zoom-out; }
#ph.nozoom { cursor:default; } #ph.nozoom { cursor:default; }

View file

@ -118,7 +118,7 @@ if ($photo->i('id') !== null) {
</video> </video>
<?php } else { ?> <?php } else { ?>
<img onerror="errimg(); this.onerror = null;" class="nozoom" id="ph" src="<?= $photo->i('photourl') ?>" alt="" title="Фотография"> <img onerror="errimg(); this.onerror = null;" id="ph" src="<?= $photo->i('photourl') ?>" alt="" title="Фотография">
<?php <?php
} }
if ($photo->i('priority') === 1) { ?> if ($photo->i('priority') === 1) { ?>
@ -304,7 +304,7 @@ if ($photo->i('id') !== null) {
<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') && ($photo->content('rating') != 'disabled')) {
?> ?>
<div class="p0" id="pp-item-exif"> <div class="p0" id="pp-item-exif">
<div class="header-container"> <div class="header-container">
@ -367,24 +367,122 @@ if ($photo->i('id') !== null) {
'GPS.GPSTimeStamp' => 'Время GPS', 'GPS.GPSTimeStamp' => 'Время GPS',
'GPS.GPSDateStamp' => 'Дата GPS' 'GPS.GPSDateStamp' => 'Дата GPS'
]; ];
foreach ($data as $key => $value) { function translate_flash_value($flash_value) {
if ($key === 'FILE.FileDateTime') { $flash_descriptions = [
$value = Date::zmdate($value); 0 => 'Выключена',
} 1 => 'Включена',
if (!isset($exif_translations[$key])) { 2 => 'Сработала с подавлением эффекта красных глаз',
continue; 3 => 'Сработала в принудительном режиме',
} 4 => 'Выключена в принудительном режиме',
if (is_array($value)) { 5 => 'Автоматический режим',
$value = implode(', ', $value); 6 => 'Автоматический режим'
} ];
$key = $exif_translations[$key] ?? $key;
return $flash_descriptions[$flash_value] ?? 'Неизвестное значение вспышки';
}
echo ' function translate_orientation($orientation)
{
$orientation_descriptions = [
1 => '0° (По умолчанию)',
3 => '180°',
6 => '90° по часовой стрелке',
8 => '270° по часовой стрелке'
];
return $orientation_descriptions[$orientation] ?? 'Не определена';
}
function translate_resolution_unit($unit)
{
$resolution_units = [
1 => 'Дюймы',
2 => 'Сантиметры'
];
return $resolution_units[$unit] ?? 'Неизвестная единица';
}
function translate_light_source($source)
{
$light_sources = [
0 => 'Неизвестный источник',
1 => 'Дневной свет',
2 => 'Лампа накаливания',
3 => 'Лампа флуоресцентная',
4 => 'Лампа с высоким давлением',
5 => 'Лампа с низким давлением',
255 => 'Другой источник'
];
return $light_sources[$source] ?? 'Неизвестный источник света';
}
function translate_white_balance($balance)
{
$white_balances = [
0 => 'Автоматический',
1 => 'Ручной'
];
return $white_balances[$balance] ?? 'Неизвестный баланс белого';
}
function translate_color_space($space)
{
$color_spaces = [
1 => 'sRGB',
2 => 'Adobe RGB',
3 => 'Uncalibrated'
];
return $color_spaces[$space] ?? 'Неизвестное цветовое пространство';
}
function translate_scene_type($type)
{
$scene_types = [
0 => 'Неизвестный тип',
1 => 'Сцена с обычным светом',
2 => 'Сцена с высоким контрастом',
3 => 'Сцена с низким контрастом',
4 => 'Сцена с движением'
];
return $scene_types[$type] ?? 'Неизвестный тип съёмки';
}
foreach ($data as $key => $value) {
if ($key === 'EXIF.Flash') {
$value = translate_flash_value($value);
} elseif ($key === 'IFD0.Orientation') {
$value = translate_orientation($value);
} elseif ($key === 'IFD0.ResolutionUnit') {
$value = translate_resolution_unit($value);
} elseif ($key === 'EXIF.WhiteBalance') {
$value = translate_white_balance($value);
} elseif ($key === 'IFD0.LightSource') {
$value = translate_light_source((int)$value);
} elseif ($key === 'EXIF.ColorSpace') {
$value = translate_color_space($value);
} elseif ($key === 'EXIF.SceneType') {
$value = translate_scene_type($value);
}
if (!isset($exif_translations[$key])) {
continue;
}
if (is_array($value)) {
$value = implode(', ', $value);
}
$key = $exif_translations[$key] ?? $key;
echo '
<tr class="s11 h21"> <tr class="s11 h21">
<td class="ds nw" width="30%">' . htmlspecialchars($key) . ':</td> <td class="ds nw" width="30%">' . htmlspecialchars($key) . ':</td>
<td class="ds">' . htmlspecialchars($value) . '</td> <td class="ds">' . htmlspecialchars($value) . '</td>
</tr>'; </tr>';
} }
?> ?>

View file

@ -906,6 +906,17 @@ $user = new User(Auth::userid());
<td class="lcol"></td> <td class="lcol"></td>
<td class="sm" style="color:#888">Медиа не будет отображаться в следующих топах: <br>Самые популярные за 24 часа<br>30 самых просматриваемых фото за 24 часа<br>Случайные фотографии<br>Лента фотография</td> <td class="sm" style="color:#888">Медиа не будет отображаться в следующих топах: <br>Самые популярные за 24 часа<br>30 самых просматриваемых фото за 24 часа<br>Случайные фотографии<br>Лента фотография</td>
</tr>
<tr>
<td class="lcol"></td>
<td style="padding:7px 2px">
<input type="checkbox" name="disableexif" id="disableexif" value="1"> <label for="disableexif">Скрыть EXIF</label>
</td>
</tr>
<tr>
<td class="lcol"></td>
<td class="sm" style="color:#888">EXIF (параметры съёмки) фотографии будет скрыт на странице.</td>
</tr> </tr>
<tr> <tr>
<td class="lcol"></td> <td class="lcol"></td>
@ -913,11 +924,13 @@ $user = new User(Auth::userid());
<input type="checkbox" name="disablesubsnotify" id="disablesubsnotify" value="1"> <label for="disablesubsnotify">Не уведомлять подписчиков о новом медиа</label> <input type="checkbox" name="disablesubsnotify" id="disablesubsnotify" value="1"> <label for="disablesubsnotify">Не уведомлять подписчиков о новом медиа</label>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="lcol"></td> <td class="lcol"></td>
<td class="sm" style="color:#888">Ваши подписчики не получат уведомление о публикации Медиа, но они всегда смогут его увидеть из общих топов (если таковая настройка не была отключена</td> <td class="sm" style="color:#888">Ваши подписчики не получат уведомление о публикации Медиа, но они всегда смогут его увидеть из общих топов (если таковая настройка не была отключена</td>
</tr> <br> </tr> <br>
<tr> <tr>
<td class="lcol"></td> <td class="lcol"></td>
<td class="sm" style="color:#888"><b>Вы можете всегда в любое время изменить эти настройки.</b></td> <td class="sm" style="color:#888"><b>Вы можете всегда в любое время изменить эти настройки.</b></td>