rev
parent
3cc6e0b8c3
commit
69f3aca75c
10
CHANGELOG.md
10
CHANGELOG.md
|
@ -1,4 +1,6 @@
|
|||
entryPhotoExifWidget 1.0 - 2016-11-04
|
||||
===========================================================
|
||||
* First release
|
||||
* Find images of an entry and paste their exif on a widget
|
||||
20210817. entryPhotoExifWidget 1.0.1
|
||||
- Move to Franck style
|
||||
|
||||
20161104. entryPhotoExifWidget 1.0
|
||||
- First release
|
||||
- Find images of an entry and paste their exif on a widget
|
|
@ -20,3 +20,9 @@ First install entryPhotoExifWidget, manualy from a zip package or from
|
|||
Dotaddict repository. (See Dotclear's documentation to know how do this)
|
||||
|
||||
Add and configure "Photo Exif Widget" from widgets manager.
|
||||
|
||||
# MORE
|
||||
|
||||
* License : GNU GPL v2
|
||||
* Source & contribution : [GitHub Page](https://github.com/JcDenis/entryPhotoExifWidget)
|
||||
* Packages & details: [Dotaddict Page](https://plugins.dotaddict.org/dc2/details/entryPhotoExifWidget)
|
|
@ -12,9 +12,8 @@
|
|||
#
|
||||
# -- END LICENSE BLOCK ------------------------------------
|
||||
|
||||
if (!defined('DC_CONTEXT_ADMIN'))
|
||||
{
|
||||
if (!defined('DC_CONTEXT_ADMIN')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
require_once dirname(__FILE__).'/_widgets.php';
|
||||
require_once dirname(__FILE__) . '/_widgets.php';
|
28
_define.php
28
_define.php
|
@ -12,22 +12,20 @@
|
|||
#
|
||||
# -- END LICENSE BLOCK ------------------------------------
|
||||
|
||||
if (!defined('DC_RC_PATH'))
|
||||
{
|
||||
return null;
|
||||
if (!defined('DC_RC_PATH')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$this->registerModule(
|
||||
/* Name */ "Entry Photo Exif Widget",
|
||||
/* Description*/ "Show images exif of an entry",
|
||||
/* Author */ "Jean-Christian Denis and contibutors",
|
||||
/* Version */ '1.0',
|
||||
/* Properties */
|
||||
array(
|
||||
'permissions' => 'admin',
|
||||
'type' => 'plugin',
|
||||
'dc_min' => '2.10',
|
||||
'support' => 'http://forum.dotclear.org/',
|
||||
'details' => 'http://plugins.dotaddict.org/dc2/details/photoExifWidget'
|
||||
)
|
||||
'Entry Photo Exif Widget', // Name
|
||||
'Show images exif of an entry', // Description
|
||||
'Jean-Christian Denis and contibutors', // Author
|
||||
'1.0.1', // Version
|
||||
[
|
||||
'permissions' => 'admin',
|
||||
'type' => 'plugin',
|
||||
'dc_min' => '2.10',
|
||||
'support' => 'http://forum.dotclear.org/',
|
||||
'details' => 'https://plugins.dotaddict.org/dc2/details/entryPhotoExifWidget'
|
||||
]
|
||||
);
|
|
@ -12,9 +12,8 @@
|
|||
#
|
||||
# -- END LICENSE BLOCK ------------------------------------
|
||||
|
||||
if (!defined('DC_RC_PATH'))
|
||||
{
|
||||
return null;
|
||||
if (!defined('DC_RC_PATH')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
require_once dirname(__FILE__).'/_widgets.php';
|
||||
require_once dirname(__FILE__) . '/_widgets.php';
|
902
_widgets.php
902
_widgets.php
|
@ -12,500 +12,496 @@
|
|||
#
|
||||
# -- END LICENSE BLOCK ------------------------------------
|
||||
|
||||
if (!defined('DC_RC_PATH'))
|
||||
{
|
||||
return null;
|
||||
if (!defined('DC_RC_PATH')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$core->addBehavior(
|
||||
'initWidgets',
|
||||
array('entryPhotoExifWidget','setWidget')
|
||||
);
|
||||
$core->addBehavior('initWidgets', ['entryPhotoExifWidget', 'setWidget']);
|
||||
|
||||
class entryPhotoExifWidget
|
||||
{
|
||||
public static $supported_post_type = array('post','page','gal','galitem');
|
||||
public static $widget_content = '<ul>%s</ul>';
|
||||
public static $widget_text = '<li class="epew-%s"><strong>%s</strong> %s</li>';
|
||||
public static $widget_thumb = '<li><img class="img-thumbnail" alt="%s" src="%s" /></li>';
|
||||
public static $supported_post_type = array('post', 'page', 'gal', 'galitem');
|
||||
public static $widget_content = '<ul>%s</ul>';
|
||||
public static $widget_text = '<li class="epew-%s"><strong>%s</strong> %s</li>';
|
||||
public static $widget_thumb = '<li><img class="img-thumbnail" alt="%s" src="%s" /></li>';
|
||||
|
||||
public static function setWidget($w)
|
||||
{
|
||||
global $core;
|
||||
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[$cat_title] = $categories->cat_id;
|
||||
}
|
||||
$categories_combo = array('-' => '', __('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') => 't',
|
||||
__('small') => 's',
|
||||
__('medium') => 'm'
|
||||
);
|
||||
$thumbnail_combo = array(
|
||||
__('None') => '',
|
||||
__('square') => 'sq',
|
||||
__('thumbnail') => 't',
|
||||
__('small') => 's',
|
||||
__('medium') => 'm'
|
||||
);
|
||||
|
||||
$w->create(
|
||||
'epew',
|
||||
__('Entry Photo Exif'),
|
||||
array('entryPhotoExifWidget','getWidget'),
|
||||
null,
|
||||
__('Show images exif of an entry')
|
||||
);
|
||||
$w->create(
|
||||
'epew',
|
||||
__('Entry Photo Exif'),
|
||||
array('entryPhotoExifWidget', 'getWidget'),
|
||||
null,
|
||||
__('Show images exif of an entry')
|
||||
);
|
||||
|
||||
$w->epew->setting(
|
||||
'title',
|
||||
__('Title:'),
|
||||
__('Photos EXIF'),
|
||||
'text'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Title',
|
||||
sprintf(__('Show metadata: %s'),__('Title')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Description',
|
||||
sprintf(__('Show metadata: %s'),__('Descritpion')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Location',
|
||||
sprintf(__('Show metadata: %s'),__('Location')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_DateTimeOriginal',
|
||||
sprintf(__('Show metadata: %s'),__('Date')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Make',
|
||||
sprintf(__('Show metadata: %s'),__('Manufacturer')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Model',
|
||||
sprintf(__('Show metadata: %s'),__('Model')),
|
||||
1,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Lens',
|
||||
sprintf(__('Show metadata: %s'),__('Lens')),
|
||||
1,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_ExposureProgram',
|
||||
sprintf(__('Show metadata: %s'),__('Exposure program')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Exposure',
|
||||
sprintf(__('Show metadata: %s'),__('Exposure time')),
|
||||
1,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_FNumber',
|
||||
sprintf(__('Show metadata: %s'),__('Aperture')),
|
||||
1,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_ISOSpeedRatings',
|
||||
sprintf(__('Show metadata: %s'),__('Iso speed rating')),
|
||||
1,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_FocalLength',
|
||||
sprintf(__('Show metadata: %s'),__('Focal lengh')),
|
||||
1,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_ExposureBiasValue',
|
||||
sprintf(__('Show metadata: %s'),__('Exposure bias value')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_MeteringMode',
|
||||
sprintf(__('Show metadata: %s'),__('Metering mode')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta',
|
||||
__('Show empty metadata'),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'category',
|
||||
__('Category limit:'),
|
||||
'',
|
||||
'combo',
|
||||
$categories_combo
|
||||
);
|
||||
$w->epew->setting(
|
||||
'thumbsize',
|
||||
__('Thumbnail size:'),
|
||||
't',
|
||||
'combo',
|
||||
$thumbnail_combo
|
||||
);
|
||||
$w->epew->setting(
|
||||
'content_only',
|
||||
__('Content only'),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'class',
|
||||
__('CSS class:'),
|
||||
''
|
||||
);
|
||||
$w->epew->setting(
|
||||
'offline',
|
||||
__('Offline'),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
}
|
||||
$w->epew->setting(
|
||||
'title',
|
||||
__('Title:'),
|
||||
__('Photos EXIF'),
|
||||
'text'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Title',
|
||||
sprintf(__('Show metadata: %s'), __('Title')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Description',
|
||||
sprintf(__('Show metadata: %s'), __('Descritpion')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Location',
|
||||
sprintf(__('Show metadata: %s'), __('Location')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_DateTimeOriginal',
|
||||
sprintf(__('Show metadata: %s'), __('Date')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Make',
|
||||
sprintf(__('Show metadata: %s'), __('Manufacturer')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Model',
|
||||
sprintf(__('Show metadata: %s'), __('Model')),
|
||||
1,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Lens',
|
||||
sprintf(__('Show metadata: %s'), __('Lens')),
|
||||
1,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_ExposureProgram',
|
||||
sprintf(__('Show metadata: %s'), __('Exposure program')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_Exposure',
|
||||
sprintf(__('Show metadata: %s'), __('Exposure time')),
|
||||
1,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_FNumber',
|
||||
sprintf(__('Show metadata: %s'), __('Aperture')),
|
||||
1,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_ISOSpeedRatings',
|
||||
sprintf(__('Show metadata: %s'), __('Iso speed rating')),
|
||||
1,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_FocalLength',
|
||||
sprintf(__('Show metadata: %s'), __('Focal lengh')),
|
||||
1,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_ExposureBiasValue',
|
||||
sprintf(__('Show metadata: %s'), __('Exposure bias value')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta_MeteringMode',
|
||||
sprintf(__('Show metadata: %s'), __('Metering mode')),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'showmeta',
|
||||
__('Show empty metadata'),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'category',
|
||||
__('Category limit:'),
|
||||
'',
|
||||
'combo',
|
||||
$categories_combo
|
||||
);
|
||||
$w->epew->setting(
|
||||
'thumbsize',
|
||||
__('Thumbnail size:'),
|
||||
't',
|
||||
'combo',
|
||||
$thumbnail_combo
|
||||
);
|
||||
$w->epew->setting(
|
||||
'content_only',
|
||||
__('Content only'),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
$w->epew->setting(
|
||||
'class',
|
||||
__('CSS class:'),
|
||||
''
|
||||
);
|
||||
$w->epew->setting(
|
||||
'offline',
|
||||
__('Offline'),
|
||||
0,
|
||||
'check'
|
||||
);
|
||||
}
|
||||
|
||||
public static function getWidget($w)
|
||||
{
|
||||
global $core, $_ctx;
|
||||
public static function getWidget($w)
|
||||
{
|
||||
global $core, $_ctx;
|
||||
|
||||
# Widget is offline
|
||||
if ($w->offline)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
# Widget is offline
|
||||
if ($w->offline)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
# Not in post context
|
||||
if (!$_ctx->exists('posts') || !$_ctx->posts->post_id)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
# Not in post context
|
||||
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))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
# Not 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)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
# Category limit
|
||||
if ($w->category == 'null' && $_ctx->posts->cat_id !== null
|
||||
|| $w->category != 'null' && $w->category != '' && $w->category != $_ctx->posts->cat_id)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
# Content lookup
|
||||
$text = $_ctx->posts->post_excerpt_xhtml.$_ctx->posts->post_content_xhtml;
|
||||
# Content lookup
|
||||
$text = $_ctx->posts->post_excerpt_xhtml . $_ctx->posts->post_content_xhtml;
|
||||
|
||||
# Find source images
|
||||
$images = self::getImageSource($core,$text,$w->thumbsize);
|
||||
# Find source images
|
||||
$images = self::getImageSource($core, $text, $w->thumbsize);
|
||||
|
||||
# No images
|
||||
if (empty($images))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
# No images
|
||||
if (empty($images))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
$contents = '';
|
||||
$contents = '';
|
||||
|
||||
# Loop through images
|
||||
foreach($images as $img)
|
||||
{
|
||||
# List metas
|
||||
$metas = self::getImageMeta($core,$img['source']);
|
||||
# Loop through images
|
||||
foreach($images as $img)
|
||||
{
|
||||
# List metas
|
||||
$metas = self::getImageMeta($core, $img['source']);
|
||||
|
||||
$content = '';
|
||||
foreach($metas as $k => $v)
|
||||
{
|
||||
# Don't show unwanted metadata or empty metadata
|
||||
if (!$w->__get('showmeta_'.$k) || !$w->showmeta && empty($v[1]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$content .= sprintf(self::$widget_text,$k,$v[0],$v[1]);
|
||||
}
|
||||
$content = '';
|
||||
foreach($metas as $k => $v)
|
||||
{
|
||||
# Don't show unwanted metadata or empty metadata
|
||||
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))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
# No meta
|
||||
if (empty($content))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
# Thumbnail
|
||||
if ($img['thumb'])
|
||||
{
|
||||
$content = sprintf(self::$widget_thumb,$img['title'],$img['thumb']).
|
||||
$content;
|
||||
}
|
||||
$contents .= $content;
|
||||
}
|
||||
# Thumbnail
|
||||
if ($img['thumb'])
|
||||
{
|
||||
$content = sprintf(self::$widget_thumb, $img['title'], $img['thumb']).
|
||||
$content;
|
||||
}
|
||||
$contents .= $content;
|
||||
}
|
||||
|
||||
# Nothing found
|
||||
if (empty($contents))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
# Nothing found
|
||||
if (empty($contents))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
# Paste widget
|
||||
return $w->renderDiv(
|
||||
$w->content_only,
|
||||
'photoExifWidget '.$w->class,
|
||||
'',
|
||||
($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : '').
|
||||
sprintf(self::$widget_content,$contents)
|
||||
);
|
||||
}
|
||||
# Paste widget
|
||||
return $w->renderDiv(
|
||||
$w->content_only,
|
||||
'photoExifWidget ' . $w->class,
|
||||
'',
|
||||
($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : '').
|
||||
sprintf(self::$widget_content, $contents)
|
||||
);
|
||||
}
|
||||
|
||||
public static function getImageSource($core,$subject,$size='')
|
||||
{
|
||||
# Path and url
|
||||
$p_url = $core->blog->settings->system->public_url;
|
||||
$p_site = preg_replace('#^(.+?//.+?)/(.*)$#','$1',$core->blog->url);
|
||||
$p_root = $core->blog->public_path;
|
||||
public static function getImageSource($core, $subject, $size='')
|
||||
{
|
||||
# Path and 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 = sprintf('/<img.+?src="%s(.*?\.(?:jpg|jpeg|png|gif))"[^>]+/msu',$pattern);
|
||||
# Image pattern
|
||||
$pattern = '(?:' . preg_quote($p_site,'/') . ')?' . preg_quote($p_url, '/');
|
||||
$pattern = sprintf('/<img.+?src="%s(.*?\.(?:jpg|jpeg|png|gif))"[^>]+/msu', $pattern);
|
||||
|
||||
# No image
|
||||
if (!preg_match_all($pattern,$subject,$m))
|
||||
{
|
||||
return;
|
||||
}
|
||||
# No image
|
||||
if (!preg_match_all($pattern, $subject, $m))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$res = $duplicate = array();
|
||||
$allowed_ext = array('.jpg','.JPG','.jpeg','.JPEG','.png','.PNG','.gif','.GIF');
|
||||
$res = $duplicate = array();
|
||||
$allowed_ext = array('.jpg', '.JPG', '.jpeg', '.JPEG', '.png', '.PNG', '.gif', '.GIF');
|
||||
|
||||
# Loop through images
|
||||
foreach ($m[1] as $i => $img)
|
||||
{
|
||||
$src = $thb = $alt = false;
|
||||
$info = path::info($img);
|
||||
$base = $info['base'];
|
||||
$ext = $info['extension'];
|
||||
# Loop through images
|
||||
foreach ($m[1] as $i => $img)
|
||||
{
|
||||
$src = $thb = $alt = false;
|
||||
$info = path::info($img);
|
||||
$base = $info['base'];
|
||||
$ext = $info['extension'];
|
||||
|
||||
# Not original
|
||||
if (preg_match('/^\.(.+)_(sq|t|s|m)$/',$base,$mbase))
|
||||
{
|
||||
$base = $mbase[1];
|
||||
}
|
||||
# Not original
|
||||
if (preg_match('/^\.(.+)_(sq|t|s|m)$/', $base, $mbase))
|
||||
{
|
||||
$base = $mbase[1];
|
||||
}
|
||||
|
||||
# Full path
|
||||
$f = $p_root.'/'.$info['dirname'].'/'.$base;
|
||||
# Full path
|
||||
$f = $p_root . '/' . $info['dirname'] . '/' . $base;
|
||||
|
||||
# Find extension
|
||||
foreach($allowed_ext as $end)
|
||||
{
|
||||
if (file_exists($f.$end))
|
||||
{
|
||||
$src = $f.$end;
|
||||
break;
|
||||
}
|
||||
}
|
||||
# Find extension
|
||||
foreach($allowed_ext as $end)
|
||||
{
|
||||
if (file_exists($f . $end))
|
||||
{
|
||||
$src = $f . $end;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
# No file
|
||||
if (!$src || in_array($src,$duplicate))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
# No file
|
||||
if (!$src || in_array($src, $duplicate))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
# Prevent double images
|
||||
$duplicate[] = $src;
|
||||
# Prevent double images
|
||||
$duplicate[] = $src;
|
||||
|
||||
# Find thumbnail
|
||||
if (!empty($size))
|
||||
{
|
||||
$t = $p_root.'/'.$info['dirname'].'/.'.$base.'_'.$size.'.jpg';
|
||||
if (file_exists($t))
|
||||
{
|
||||
$thb = $p_url.(dirname($img) != '/' ? dirname($img) : '').'/.'.$base.'_'.$size.'.jpg';
|
||||
}
|
||||
}
|
||||
# Find thumbnail
|
||||
if (!empty($size))
|
||||
{
|
||||
$t = $p_root . '/' . $info['dirname'] . '/.' . $base . '_' . $size . '.jpg';
|
||||
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))
|
||||
{
|
||||
$alt = $malt[1];
|
||||
}
|
||||
# Find image description
|
||||
if (preg_match('/alt="([^"]+)"/', $m[0][$i], $malt))
|
||||
{
|
||||
$alt = $malt[1];
|
||||
}
|
||||
|
||||
$res[] = array(
|
||||
'source' => $src,
|
||||
'thumb' => $thb,
|
||||
'title' => $alt
|
||||
);
|
||||
}
|
||||
|
||||
return $res;
|
||||
}
|
||||
$res[] = array(
|
||||
'source' => $src,
|
||||
'thumb' => $thb,
|
||||
'title' => $alt
|
||||
);
|
||||
}
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
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:'),'')
|
||||
);
|
||||
|
||||
$exp_prog = array(
|
||||
0 => __('Not defined'),
|
||||
1 => __('Manual'),
|
||||
2 => __('Normal program'),
|
||||
3 => __('Aperture priority'),
|
||||
4 => __('Shutter priority'),
|
||||
5 => __('Creative program'),
|
||||
6 => __('Action program'),
|
||||
7 => __('Portait mode'),
|
||||
8 => __('Landscape mode')
|
||||
);
|
||||
|
||||
$met_mod = array(
|
||||
0 => __('Unknow'),
|
||||
1 => __('Average'),
|
||||
2 => __('Center-weighted average'),
|
||||
3 => __('Spot'),
|
||||
4 => __('Multi spot'),
|
||||
5 => __('Pattern'),
|
||||
6 => __('Partial'),
|
||||
7 => __('Other')
|
||||
);
|
||||
|
||||
if (!$src || !file_exists($src)) return $metas;
|
||||
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:'), '')
|
||||
);
|
||||
|
||||
$exp_prog = array(
|
||||
0 => __('Not defined'),
|
||||
1 => __('Manual'),
|
||||
2 => __('Normal program'),
|
||||
3 => __('Aperture priority'),
|
||||
4 => __('Shutter priority'),
|
||||
5 => __('Creative program'),
|
||||
6 => __('Action program'),
|
||||
7 => __('Portait mode'),
|
||||
8 => __('Landscape mode')
|
||||
);
|
||||
|
||||
$met_mod = array(
|
||||
0 => __('Unknow'),
|
||||
1 => __('Average'),
|
||||
2 => __('Center-weighted average'),
|
||||
3 => __('Spot'),
|
||||
4 => __('Multi spot'),
|
||||
5 => __('Pattern'),
|
||||
6 => __('Partial'),
|
||||
7 => __('Other')
|
||||
);
|
||||
|
||||
if (!$src || !file_exists($src)) return $metas;
|
||||
|
||||
$m = imageMeta::readMeta($src);
|
||||
$m = imageMeta::readMeta($src);
|
||||
|
||||
# Title
|
||||
if (!empty($m['Title']))
|
||||
{
|
||||
$metas['Title'][1] = html::escapeHTML($m['Title']);
|
||||
}
|
||||
# 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'])
|
||||
{
|
||||
$metas['Description'][1] = html::escpeHTML($m['Description']);
|
||||
}
|
||||
}
|
||||
# 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']))
|
||||
{
|
||||
$metas['Location'][1] .= html::escapeHTML($m['City']);
|
||||
}
|
||||
if (!empty($m['City']) && !empty($m['country']))
|
||||
{
|
||||
$metas['Location'][1] .= ', ';
|
||||
}
|
||||
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;
|
||||
$metas['DateTimeOriginal'][1] = dt::dt2str($dt_ft,$m['DateTimeOriginal'],$dt_tz);
|
||||
}
|
||||
|
||||
# Make
|
||||
if (isset($m['Make']))
|
||||
{
|
||||
$metas['Make'][1] = html::escapeHTML($m['Make']);
|
||||
}
|
||||
|
||||
# Model
|
||||
if (isset($m['Model']))
|
||||
{
|
||||
$metas['Model'][1] = html::escapeHTML($m['Model']);
|
||||
}
|
||||
|
||||
# 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'];
|
||||
}
|
||||
|
||||
# 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'];
|
||||
}
|
||||
|
||||
# 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'];
|
||||
}
|
||||
|
||||
# ExposureBiasValue
|
||||
if (isset($m['ExposureBiasValue']))
|
||||
{
|
||||
$metas['ExposureBiasValue'][1] = $m['ExposureBiasValue'];
|
||||
}
|
||||
|
||||
# MeteringMode
|
||||
if (isset($m['MeteringMode']))
|
||||
{
|
||||
$metas['MeteringMode'][1] = isset($met_mod[$m['MeteringMode']]) ?
|
||||
$exp_prog[$m['MeteringMode']] : $m['MeteringMode'];
|
||||
}
|
||||
|
||||
return $metas;
|
||||
}
|
||||
# Location
|
||||
if (!empty($m['City']))
|
||||
{
|
||||
$metas['Location'][1] .= html::escapeHTML($m['City']);
|
||||
}
|
||||
if (!empty($m['City']) && !empty($m['country']))
|
||||
{
|
||||
$metas['Location'][1] .= ', ';
|
||||
}
|
||||
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;
|
||||
$metas['DateTimeOriginal'][1] = dt::dt2str($dt_ft, $m['DateTimeOriginal'], $dt_tz);
|
||||
}
|
||||
|
||||
# Make
|
||||
if (isset($m['Make']))
|
||||
{
|
||||
$metas['Make'][1] = html::escapeHTML($m['Make']);
|
||||
}
|
||||
|
||||
# Model
|
||||
if (isset($m['Model']))
|
||||
{
|
||||
$metas['Model'][1] = html::escapeHTML($m['Model']);
|
||||
}
|
||||
|
||||
# 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'];
|
||||
}
|
||||
|
||||
# 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'];
|
||||
}
|
||||
|
||||
# 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'];
|
||||
}
|
||||
|
||||
# ExposureBiasValue
|
||||
if (isset($m['ExposureBiasValue']))
|
||||
{
|
||||
$metas['ExposureBiasValue'][1] = $m['ExposureBiasValue'];
|
||||
}
|
||||
|
||||
# MeteringMode
|
||||
if (isset($m['MeteringMode']))
|
||||
{
|
||||
$metas['MeteringMode'][1] = isset($met_mod[$m['MeteringMode']]) ?
|
||||
$exp_prog[$m['MeteringMode']] : $m['MeteringMode'];
|
||||
}
|
||||
|
||||
return $metas;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue