diff --git a/_admin.php b/_admin.php index 5c87214..8c27ddb 100644 --- a/_admin.php +++ b/_admin.php @@ -1,18 +1,17 @@ registerModule( 'Jean-Christian Denis and contibutors', '1.0.4', [ - 'requires' => [['core', '2.19']], + 'requires' => [['core', '2.19']], 'permissions' => 'admin', - 'type'=> 'plugin', - 'support' => 'https://github.com/JcDenis/entryPhotoExifWidget', - 'details' => 'https://plugins.dotaddict.org/dc2/details/entryPhotoExifWidget', - 'repository' => 'https://raw.githubusercontent.com/JcDenis/entryPhotoExifWidget/master/dcstore.xml' + 'type' => 'plugin', + 'support' => 'https://github.com/JcDenis/entryPhotoExifWidget', + 'details' => 'https://plugins.dotaddict.org/dc2/details/entryPhotoExifWidget', + 'repository' => 'https://raw.githubusercontent.com/JcDenis/entryPhotoExifWidget/master/dcstore.xml' ] -); \ No newline at end of file +); diff --git a/_public.php b/_public.php index 896bdd6..14353ca 100644 --- a/_public.php +++ b/_public.php @@ -1,18 +1,17 @@ addBehavior('initWidgets', ['entryPhotoExifWidget', 'setWidget']); class entryPhotoExifWidget { - public static $supported_post_type = array('post', 'page', 'gal', 'galitem'); - public static $widget_content = ''; - public static $widget_text = '
  • %s %s
  • '; - public static $widget_thumb = '
  • %s
  • '; + public static $supported_post_type = ['post', 'page', 'gal', 'galitem']; + public static $widget_content = ''; + public static $widget_text = '
  • %s %s
  • '; + public static $widget_thumb = '
  • %s
  • '; public static function setWidget($w) { global $core; - $categories_combo = array('-' => '', __('Uncategorized') => 'null'); - $categories = $core->blog->getCategories(); - while($categories->fetch()) - { - $cat_title = html::escapeHTML($categories->cat_title); + $categories_combo = ['-' => '', __('Uncategorized') => 'null']; + $categories = $core->blog->getCategories(); + while ($categories->fetch()) { + $cat_title = html::escapeHTML($categories->cat_title); $categories_combo[$cat_title] = $categories->cat_id; } - $thumbnail_combo = array( - __('None') => '', - __('square') => 'sq', + $thumbnail_combo = [ + __('None') => '', + __('square') => 'sq', __('thumbnail') => 't', - __('small') => 's', - __('medium') => 'm' - ); + __('small') => 's', + __('medium') => 'm' + ]; $w->create( 'epew', __('Entry Photo Exif'), - array('entryPhotoExifWidget', 'getWidget'), + ['entryPhotoExifWidget', 'getWidget'], null, __('Show images exif of an entry') ); @@ -186,27 +184,23 @@ class entryPhotoExifWidget global $core, $_ctx; # Widget is offline - if ($w->offline) - { + if ($w->offline) { return null; } # Not in post context - if (!$_ctx->exists('posts') || !$_ctx->posts->post_id) - { + if (!$_ctx->exists('posts') || !$_ctx->posts->post_id) { return null; } # Not supported post type - if (!in_array($_ctx->posts->post_type, self::$supported_post_type)) - { + if (!in_array($_ctx->posts->post_type, self::$supported_post_type)) { return null; } # Category limit - if ($w->category == 'null' && $_ctx->posts->cat_id !== null - || $w->category != 'null' && $w->category != '' && $w->category != $_ctx->posts->cat_id) - { + if ($w->category == 'null' && $_ctx->posts->cat_id !== null + || $w->category != 'null' && $w->category != '' && $w->category != $_ctx->posts->cat_id) { return null; } @@ -217,48 +211,41 @@ class entryPhotoExifWidget $images = self::getImageSource($core, $text, $w->thumbsize); # No images - if (empty($images)) - { + if (empty($images)) { return null; } $contents = ''; # Loop through images - foreach($images as $img) - { + foreach ($images as $img) { # List metas $metas = self::getImageMeta($core, $img['source']); $content = ''; - foreach($metas as $k => $v) - { + foreach ($metas as $k => $v) { # Don't show unwanted metadata or empty metadata - if (!$w->__get('showmeta_' . $k) || !$w->showmeta && empty($v[1])) - { + if (!$w->__get('showmeta_' . $k) || !$w->showmeta && empty($v[1])) { continue; } $content .= sprintf(self::$widget_text, $k, $v[0], $v[1]); } # No meta - if (empty($content)) - { + if (empty($content)) { return null; } # Thumbnail - if ($img['thumb']) - { - $content = sprintf(self::$widget_thumb, $img['title'], $img['thumb']). + if ($img['thumb']) { + $content = sprintf(self::$widget_thumb, $img['title'], $img['thumb']) . $content; } $contents .= $content; } # Nothing found - if (empty($contents)) - { + if (empty($contents)) { return null; } @@ -267,42 +254,39 @@ class entryPhotoExifWidget $w->content_only, 'photoExifWidget ' . $w->class, '', - ($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : ''). + ($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : '') . sprintf(self::$widget_content, $contents) ); } - public static function getImageSource($core, $subject, $size='') + public static function getImageSource($core, $subject, $size = '') { # Path and url - $p_url = $core->blog->settings->system->public_url; + $p_url = $core->blog->settings->system->public_url; $p_site = preg_replace('#^(.+?//.+?)/(.*)$#', '$1', $core->blog->url); $p_root = $core->blog->public_path; # Image pattern - $pattern = '(?:' . preg_quote($p_site,'/') . ')?' . preg_quote($p_url, '/'); + $pattern = '(?:' . preg_quote($p_site, '/') . ')?' . preg_quote($p_url, '/'); $pattern = sprintf('/]+/msu', $pattern); # No image - if (!preg_match_all($pattern, $subject, $m)) - { + if (!preg_match_all($pattern, $subject, $m)) { return; } - $res = $duplicate = array(); - $allowed_ext = array('.jpg', '.JPG', '.jpeg', '.JPEG', '.png', '.PNG', '.gif', '.GIF'); + $res = $duplicate = []; + $allowed_ext = ['.jpg', '.JPG', '.jpeg', '.JPEG', '.png', '.PNG', '.gif', '.GIF']; # Loop through images - foreach ($m[1] as $i => $img) - { - $src = $thb = $alt = false; + foreach ($m[1] as $i => $img) { + $src = $thb = $alt = false; $info = path::info($img); $base = $info['base']; - $ext = $info['extension']; + $ext = $info['extension']; # Not original - if (preg_match('/^\.(.+)_(sq|t|s|m)$/', $base, $mbase)) - { + if (preg_match('/^\.(.+)_(sq|t|s|m)$/', $base, $mbase)) { $base = $mbase[1]; } @@ -310,18 +294,16 @@ class entryPhotoExifWidget $f = $p_root . '/' . $info['dirname'] . '/' . $base; # Find extension - foreach($allowed_ext as $end) - { - if (file_exists($f . $end)) - { + foreach ($allowed_ext as $end) { + if (file_exists($f . $end)) { $src = $f . $end; + break; } } # No file - if (!$src || in_array($src, $duplicate)) - { + if (!$src || in_array($src, $duplicate)) { continue; } @@ -329,26 +311,23 @@ class entryPhotoExifWidget $duplicate[] = $src; # Find thumbnail - if (!empty($size)) - { + if (!empty($size)) { $t = $p_root . '/' . $info['dirname'] . '/.' . $base . '_' . $size . '.jpg'; - if (file_exists($t)) - { + if (file_exists($t)) { $thb = $p_url . (dirname($img) != '/' ? dirname($img) : '') . '/.' . $base . '_' . $size . '.jpg'; } } # Find image description - if (preg_match('/alt="([^"]+)"/', $m[0][$i], $malt)) - { + if (preg_match('/alt="([^"]+)"/', $m[0][$i], $malt)) { $alt = $malt[1]; } - $res[] = array( + $res[] = [ 'source' => $src, - 'thumb' => $thb, - 'title' => $alt - ); + 'thumb' => $thb, + 'title' => $alt + ]; } return $res; @@ -356,24 +335,24 @@ class entryPhotoExifWidget public static function getImageMeta($core, $src) { - $metas = array( - 'Title' => array(__('Title:'), ''), - 'Description' => array(__('Description:'), ''), - 'Location' => array(__('Location:'), ''), - 'DateTimeOriginal' => array(__('Date:'), ''), - 'Make' => array(__('Manufacturer:'), ''), - 'Model' => array(__('Model:'), ''), - 'Lens' => array(__('Lens:'), ''), - 'ExposureProgram' => array(__('Program:'), ''), - 'Exposure' => array(__('Speed:'), ''), - 'FNumber' => array(__('Aperture:'), ''), - 'ISOSpeedRatings' => array(__('ISO:'), ''), - 'FocalLength' => array(__('Focal:'), ''), - 'ExposureBiasValue' => array(__('Exposure Bias:'), ''), - 'MeteringMode' => array(__('Metering mode:'), '') - ); + $metas = [ + 'Title' => [__('Title:'), ''], + 'Description' => [__('Description:'), ''], + 'Location' => [__('Location:'), ''], + 'DateTimeOriginal' => [__('Date:'), ''], + 'Make' => [__('Manufacturer:'), ''], + 'Model' => [__('Model:'), ''], + 'Lens' => [__('Lens:'), ''], + 'ExposureProgram' => [__('Program:'), ''], + 'Exposure' => [__('Speed:'), ''], + 'FNumber' => [__('Aperture:'), ''], + 'ISOSpeedRatings' => [__('ISO:'), ''], + 'FocalLength' => [__('Focal:'), ''], + 'ExposureBiasValue' => [__('Exposure Bias:'), ''], + 'MeteringMode' => [__('Metering mode:'), ''] + ]; - $exp_prog = array( + $exp_prog = [ 0 => __('Not defined'), 1 => __('Manual'), 2 => __('Normal program'), @@ -383,9 +362,9 @@ class entryPhotoExifWidget 6 => __('Action program'), 7 => __('Portait mode'), 8 => __('Landscape mode') - ); + ]; - $met_mod = array( + $met_mod = [ 0 => __('Unknow'), 1 => __('Average'), 2 => __('Center-weighted average'), @@ -394,113 +373,97 @@ class entryPhotoExifWidget 5 => __('Pattern'), 6 => __('Partial'), 7 => __('Other') - ); + ]; - if (!$src || !file_exists($src)) return $metas; + if (!$src || !file_exists($src)) { + return $metas; + } $m = imageMeta::readMeta($src); # Title - if (!empty($m['Title'])) - { + if (!empty($m['Title'])) { $metas['Title'][1] = html::escapeHTML($m['Title']); } # Description - if (!empty($m['Description'])) - { - if (!empty($m['Title']) && $m['Title'] != $m['Description']) - { + if (!empty($m['Description'])) { + if (!empty($m['Title']) && $m['Title'] != $m['Description']) { $metas['Description'][1] = html::escpeHTML($m['Description']); } } # Location - if (!empty($m['City'])) - { + if (!empty($m['City'])) { $metas['Location'][1] .= html::escapeHTML($m['City']); } - if (!empty($m['City']) && !empty($m['country'])) - { + if (!empty($m['City']) && !empty($m['country'])) { $metas['Location'][1] .= ', '; } - if (!empty($m['country'])) - { + if (!empty($m['country'])) { $metas['Location'][1] .= html::escapeHTML($m['Country']); } # DateTimeOriginal - if (!empty($m['DateTimeOriginal'])) - { - $dt_ft = $core->blog->settings->system->date_format . ', ' . $core->blog->settings->system->time_format; - $dt_tz = $core->blog->settings->system->blog_timezone; + if (!empty($m['DateTimeOriginal'])) { + $dt_ft = $core->blog->settings->system->date_format . ', ' . $core->blog->settings->system->time_format; + $dt_tz = $core->blog->settings->system->blog_timezone; $metas['DateTimeOriginal'][1] = dt::dt2str($dt_ft, $m['DateTimeOriginal'], $dt_tz); } # Make - if (isset($m['Make'])) - { + if (isset($m['Make'])) { $metas['Make'][1] = html::escapeHTML($m['Make']); } # Model - if (isset($m['Model'])) - { + if (isset($m['Model'])) { $metas['Model'][1] = html::escapeHTML($m['Model']); } # Lens - if (isset($m['Lens'])) - { + if (isset($m['Lens'])) { $metas['Lens'][1] = html::escapeHTML($m['Lens']); } # ExposureProgram - if (isset($m['ExposureProgram'])) - { - $metas['ExposureProgram'][1] = isset($exp_prog[$m['ExposureProgram']]) ? - $exp_prog[$m['ExposureProgram']] : $m['ExposureProgram']; + if (isset($m['ExposureProgram'])) { + $metas['ExposureProgram'][1] = $exp_prog[$m['ExposureProgram']] ?? $m['ExposureProgram']; } # Exposure - if (!empty($m['Exposure'])) - { + if (!empty($m['Exposure'])) { $metas['Exposure'][1] = $m['Exposure'] . 's'; } # FNumber - if (!empty($m['FNumber'])) - { - $ap = sscanf($m['FNumber'], '%d/%d'); - $metas['FNumber'][1] = $ap ? 'f/' . ( $ap[0] / $ap[1]) : $m['FNumber']; + if (!empty($m['FNumber'])) { + $ap = sscanf($m['FNumber'], '%d/%d'); + $metas['FNumber'][1] = $ap ? 'f/' . ($ap[0] / $ap[1]) : $m['FNumber']; } # ISOSpeedRatings - if (!empty($m['ISOSpeedRatings'])) - { + if (!empty($m['ISOSpeedRatings'])) { $metas['ISOSpeedRatings'][1] = $m['ISOSpeedRatings']; } # FocalLength - if (!empty($m['FocalLength'])) - { - $fl = sscanf($m['FocalLength'], '%d/%d'); - $metas['FocalLength'][1] = $fl ? $fl[0]/$fl[1] . 'mm' : $m['FocalLength']; + if (!empty($m['FocalLength'])) { + $fl = sscanf($m['FocalLength'], '%d/%d'); + $metas['FocalLength'][1] = $fl ? $fl[0] / $fl[1] . 'mm' : $m['FocalLength']; } # ExposureBiasValue - if (isset($m['ExposureBiasValue'])) - { + if (isset($m['ExposureBiasValue'])) { $metas['ExposureBiasValue'][1] = $m['ExposureBiasValue']; } # MeteringMode - if (isset($m['MeteringMode'])) - { + if (isset($m['MeteringMode'])) { $metas['MeteringMode'][1] = isset($met_mod[$m['MeteringMode']]) ? $exp_prog[$m['MeteringMode']] : $m['MeteringMode']; } return $metas; } -} \ No newline at end of file +}