diff --git a/app/Controllers/Api/Images/Upload.php b/app/Controllers/Api/Images/Upload.php index c343eaa..c6b1eef 100644 --- a/app/Controllers/Api/Images/Upload.php +++ b/app/Controllers/Api/Images/Upload.php @@ -20,6 +20,7 @@ class Upload static $rating = 'allowed'; static $showtop = 'allowed'; static $subsnotify = 'allowed'; + static $exif = 'exif'; public static function create($postbody, $content, $exif) { @@ -146,6 +147,9 @@ class Upload if ((int)$_POST['disablesubsnotify'] === 1) { self::$subsnotify = 'disabled'; } + if ((int)$_POST['disableexif'] === 1) { + self::$exif = 'disabled'; + } if ($upload->getType() !== null) { $content = Json::return( array( diff --git a/static/css/photo.css b/static/css/photo.css index ab3451e..c2d23c3 100644 --- a/static/css/photo.css +++ b/static/css/photo.css @@ -1,7 +1,7 @@ #photobar { margin:0 -20px; position:relative; background-color:#333; } #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.zoomed { max-width:none; max-height:none; cursor:zoom-out; } #ph.nozoom { cursor:default; } diff --git a/views/pages/Photo.php b/views/pages/Photo.php index 185bb00..cfa4f42 100644 --- a/views/pages/Photo.php +++ b/views/pages/Photo.php @@ -118,7 +118,7 @@ if ($photo->i('id') !== null) { - + i('priority') === 1) { ?> @@ -304,7 +304,7 @@ if ($photo->i('id') !== null) {
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')) { ?>
@@ -367,24 +367,122 @@ if ($photo->i('id') !== null) { 'GPS.GPSTimeStamp' => 'Время GPS', 'GPS.GPSDateStamp' => 'Дата GPS' ]; - foreach ($data as $key => $value) { - if ($key === 'FILE.FileDateTime') { - $value = Date::zmdate($value); - } - if (!isset($exif_translations[$key])) { - continue; - } - if (is_array($value)) { - $value = implode(', ', $value); - } - $key = $exif_translations[$key] ?? $key; + function translate_flash_value($flash_value) { + $flash_descriptions = [ + 0 => 'Выключена', + 1 => 'Включена', + 2 => 'Сработала с подавлением эффекта красных глаз', + 3 => 'Сработала в принудительном режиме', + 4 => 'Выключена в принудительном режиме', + 5 => 'Автоматический режим', + 6 => 'Автоматический режим' + ]; + + 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 ' ' . htmlspecialchars($key) . ': ' . htmlspecialchars($value) . ' '; - } + } ?> diff --git a/views/pages/Profile/UploadPhoto.php b/views/pages/Profile/UploadPhoto.php index 453c39d..84af5a6 100644 --- a/views/pages/Profile/UploadPhoto.php +++ b/views/pages/Profile/UploadPhoto.php @@ -906,6 +906,17 @@ $user = new User(Auth::userid()); Медиа не будет отображаться в следующих топах:
Самые популярные за 24 часа
30 самых просматриваемых фото за 24 часа
Случайные фотографии
Лента фотография + + + + + + + + + + EXIF (параметры съёмки) фотографии будет скрыт на странице. + @@ -913,11 +924,13 @@ $user = new User(Auth::userid()); + Ваши подписчики не получат уведомление о публикации Медиа, но они всегда смогут его увидеть из общих топов (если таковая настройка не была отключена
+ Вы можете всегда в любое время изменить эти настройки.