Fixed endless loop when reading from an exif.inf file that starts with an empty line. This bug was introduced in Version 1.7.0. A special thanks to Roland Dieterich <dieterich at mpipz.mpg.de> for reporting and fixing this bug!
Fixed warnings reported by psalm and phpstorm and replaced outdated constructs.
Updated syntax and method calls that are deprecated in PHP 8.2.
Documentation was converted from perl’s Plain Old Documentation format files to markdown format. For this the documentation build now needs either docker or a “pandoc” executable on $PATH.
The default encoding in $httpContentType
changed from
“us-ascii” to “UTF-8”. As ASCII is a subset of UTF-8 this should not be
a problem for a default setup, but together with the introduction of the
$migCharset
config option it can make a difference if you
have used $httpContentType
to configure a charset that is
neither ASCII nor UTF-8. If that’s the case you MUST set
$migCharset
according to your $httpContentType
setting. If not, it is still advised to double-check those settings.
General note: This release adds some new features that may be
disabled by default, but are enabled in the default
config.php
. Unless you overwrite your
config.php
with every release nothing should change for
you, but if you do, please double-check the new options and set them
according to your needs.
Mig now has support for PHP’s open_basedir configuration. It’s off by
default, but enabled in the bundled config.php
. If you want
to enable this feature, check the $migOpenBasedir
(and
potentially $migOpenBasedirExtraDirs
) options in that file.
This will be enabled by default in a future release. I highly encourage
you to enable this and provide feedback if it does not work for you.
Thanks :)
The encoding in the $httpContentType
setting of the
default config.php
changed from “us-ascii” to “UTF-8”. See
notes above.
There is a new option $migCharset
to specify the
charset/encoding that should be used by Mig. The default for this
setting is “UTF-8”, see notes above.
The contrib folder was moved to a separate repository and can now be found at https://github.com/Boris-de/mig-contrib
The mkGallery.pl script was moved from the main bundle to the contrib repo.
The unused buildRSS function was removed from the source code.
You can now use $albumRoot in the config to use a name different from “albums” for the folder where your pictures are, the default will of course still be “/albums”.
This release fixes a bug with folders and filenames that have special characters which have their own entity in HTML. Previously those did not work because the encoded foldername or filename was used to read the data (thanks to Witold for the report)
In some conditions random thumbnails would be generated by the
$useRealRandThumbs
method instead of the default “take the
first item in a folder”-algorithm. Now $useRealRandThumbs
is taken into account in these cases too.
Fixed some E_NOTICE
s and added psalm static code checks
to the build process.
Support for passwords was removed. This feature was not secure, as it was only working for PHP files, not for the actual image files - it was always advertised as insecure. The implementation was changed to return an error if password protection was used for a directory. This way the access will just stop working instead of opening access completely after an update. You could use Authentication from your webserver to replace this feature.
Support for embedding into portals was removed. This feature hasn’t been tested in over 15 years, some portals seemed to be discontinued. If you are using mig in one of the portals that still get updated, please let me know, and we can try to work something out.
The old sources of jhead were removed from the distribution. If you want to use jhead you can easily get a newer version of jhead in the distribution of your choice or the latest sourcecode from https://www.sentex.ca/~mwandel/jhead/
Fixed error in PHP 8 compatibility (due to removal of the get_magic_quotes_gpc function)
Fixed errors in EXIF handling
Fixed edge-cases in buildNextPrevLinks()
Fixed “commentfileperimage” not working for normal images (it worked on the “large” image page).
Added lots of unit tests and fixed many warnings (undefined variables, etc.). Not the most elaborate kind of tests, but they have good coverage and make it really easy to test with different PHP versions and make sure most features work. Given that there probably won’t be many big refactorings in Mig, it’s not too bad to have them coupled this closely ;-)
Use docker/podman to run unit tests on all supported PHP versions (and some older versions as well)
Use foreach instead of deprecated while (… each()) constructs
Get rid of relying on internal array pointers
Switched to git instead of mercurial. As we are now using git at work as well there was no benefit in staying on the better SCM ;)
Code is now hosted on github (https://github.com/Boris-de/mig) to avoid having to set up a self-hosted git. GitHub-actions are used to run the test with several PHP versions as well.
Fixed detection of end of blocks in mig.cf files
Switched all Sourceforge-URLs to the new site
added docker target to Makefile to allow tests with different PHP versions
Release signed with old and new gpg key
The file-size calculation did not work properly for non-images (audio and video), the text would always be ” bytes” in these cases
The config option $suppressImageInfo
did not work
anymore since 1.4.0. This is fixed now. Please note that this option is
deprecated anyway and can easily be replaced with
$fileInfoFormatString
. The documentation for that is now
fixed too in config.php.
Reading image descriptions from files per image did not work anymore, apparently since 1.4.0 too. This is fixed now.
Use the same values in the defaults.php that are used in config.php
for $imageFilenameRegexpr
and
$currDirNameRegexpr
. This also fixes an error with PHP 5.6
installations which choke on the default regex because of their use of
an unescaped hyphen in the middle of the expression, which was accepted
in previous versions.
Fix unescaped closing brackets in regular expressions for exif.inf parsing. This bug caused PHP 5.6 and above to generate errors while parsing the exif data.
Changed file-type detection to use the new config options
$image_extensions
, $video_extensions
and
$audio_extensions
. You can use these options to add
currently unhandled or new file formats.
Fixed some code-style issues
When being called on a https-URL like https://example.com mig would redirect to http://example.com:443/index.php… which resulted in an error because the browser would do a plain GET on a https port. This is now fixed, mig will redirect to https://example.com in these cases.
The access to the lang array was incorrect for ‘total_images’ resulting in this text (e.g.: “Showing images 21-40 of 47 total”) not being displayed in the folder-view. This bug was introduced in 1.4.0, so it has been around for some time, which is why this fix is optional in case you thought of this bug as a feature (see below).
A feature has been added to optionally restore the old behavior
regarding ‘total_images’. If you set
$showTotalImagesString = false
in your config, the
total_images text will not be generated, which is effectively the same
behavior that existed between 1.4.0 and 1.5.2.
Handle functions that are deprecated in PHP 5.3 so that Mig will still work with PHP 6.0 and not produce E_DEPRECATED on PHP 5.3 (Boris)
A bit of refactoring “under the hood” (Boris)
Releases and release-tags in the SCM will now be signed with GPG. You
can find the current key at https://mig.wcht.de/downloads/KEYS
The fingerprint of the current key is
F5A4 0D2C 0DFF 4E5B 4908 198B 4709 198D 7464 C7A7
and it
should be signed by cacert.
If you use $pathConvertRegex
(which should be very few),
you’ll have to take care that your regex will work with preg_replace!
This should affect very few installations, that have to modify index.php
on every update anyway.
made httpContentType available for templates, so that meta and http do not differ anymore (Boris)
fixed HTML-markup in default templates, <link> and <meta> do not have an end-tag (Boris)
more liberal $imageFilenameRegexpr
and
$currDirNameRegexpr
, which made problems with special
foreign characters (Boris)
made php-tags more portable for PHP 5.3, which has short open tags disabled by default (Boris)
disable warnings for image-files, which aren’t images (Boris)
added logic to find jhead on the PATH (patch send in)
new PNG images (public domain) taken from http://tango.freedesktop.org/
Thanks to the people from the Tango Project. The old images (or any
other) however can still be enabled with the config variables
$movie_icon
, $folder_icon
,
$music_icon
and $nothumb_icon
(Boris)
Switched Source Code Management from CVS to Mercurial. The history of the default branch was imported The CVS is still available and I intend to integrate the release-patches for users that update their version from CVS. But live-changes will only happen in Mercurial. Mercurial is very easy with simple workflows, just give it a try. (Boris)
merged fixes from “SecWatch 13/08/2005 - Mig Remote Cross-Site Scripting and Information Disclosure Vulnerabilities”, see http://secwatch.org/advisories/secwatch/20050813_Mig.txt (Boris)
introduce $imageFilenameRegexpr
and
$currDirNameRegexpr
for a more secure handling of file- and
directorynames (now PHP 3.0.9 is required!) (Boris)
various XHTML-compatibility-fixes (Boris)
moved the outer table in folder-view from source to template (allows more flexible layouts) (Boris)
moved the table around the description in large- and image-view from source to template (allows more flexible layouts) (Boris)
never show an empty folder list, if startfrom
is bigger
then the amount of pages (Boris)
If a non-image is viewed with pageType=image or pageType=large, a generic will be displayed and link to the file. (Boris)
added support for user-defined Content-Type with
$httpContentType
(Boris)
fixed handling of magic_quotes_gpc to solve a bug with inverted commas in file- and foldernames (Boris; bug pointed out by Werner and Samuel)
added new-file types .swf, .flv, .rm, .divx, .wma, .ogg, .flac, .aac, .mpc, .mp+ (Boris)
[Sourceforge bug report #974964] - Fixed bug in
buildDirList()
and buildImageList()
where an
array pointer was not reset after use. (Dan)
Added Hungarian (hu) translation (Dan)
Added Slovenian (si) translation (Dan)
[Sourceforge bug report #930628] - Fixed bug with image popups (Dan)
Fixed bug related to thumbnails and audio/video file types (Dan)
Changed my mind about GNU GPL. Will re-release under BSD license.
Fixed variable name resolution bug related to markerlabel. Patch courtesy of Mattias Ahnberg. (Dan)
Updated jp (Japanese) translation to UTF-8 provided by Masaru Onozawa (Dan)
Fixed Security-Bug when modifying the image-parameter in the URL. The real filesystem path is no longer shown, mig aborts (Werner)
Added config.php
options $prevFormatString
and $nextFormatString
. Now individual pics or text is
possible for the “previous image” and “next image” in the image-view
(Werner)
Moved brackets [] from the prev-next-back to thumbnail-view - large
image to templates/image.html
. If you don’t need large
images, please edit this file, otherwise some brackets are shown, but no
link… (Werner)
Added config.php
options
$fileInfoFormatString
. $suppressImageInfo
is
not needed any more and will be removed in Version 2.0 (Werner)
Added config.php
options $imagePopMaxWidth
and $imagePopMaxHeight
related to popup windows.
Added support for “large” or full-size images. That is, in addition
to thumbnails and normal images, one can specify a directory of full
size images (generally speaking this would be the original images from
the camera, but they could be any larger image you choose to use). They
use the same filename as the normal image but live in the directory
specified by $largeSubdir
(by default, this is “large”).
This entire feature is off by default. To turn it on, set
$useLargeImages
to TRUE
.
Added new template tags to support large images:
largeLink
, largeHrefStart
,
largeHrefEnd
, largeLinkBorder
. See the
templates
document for more details. These four tags must
be present in your image.html
or mig_image.php
template for large image support to function. Either copy the new
image.html
over your old one or use it as a guide to modify
your custom template.
Added new template files large.html
and
mig_large.php
to support large images. You don’t need to
use these files if you aren’t planning to use large image support, but
if you are, copy the appropriate one to your templates directory -
large.html
for normal users, mig_large.php
for
users of PHP-Nuke, et al.
Added new config.php
options to support large images:
$useLargeImages
, $largeSubdir
,
$largeLinkFromMedium
, $largeLinkUseBorders
.
See config.php
for more details.
Added new language tags largeview
and
largelink
to each translation to support large images.
Modified mkGallery.pl
with regard to EXIF behavior. Now
if -n
and -e
are both used, only files not
already cached in exif.inf
will be examined for EXIF data.
This has no effect if -w
is also used, because in that case
the exif.inf
file is removed before processing takes place,
and the cache is therefore empty. Also changed the flags passed to
jhead
since the existing behavior using -v
(verbose) made no sense. It just added extra junk to the cache file that
served no useful purpose. Improved the code to find the location of
jhead
by adding its directory to the execution path
temporarily during mkGallery.pl
execution.
$pathConvertFlag
, $pathConvertRegex
and
$pathConvertTarget
have moved to index.php
.
This is because they are used to include config.php
, so
obviously they can’t be located inside it.
Fixed bug in getImageDescFromFile()
that was not
URL-decoding filenames.
Added Geeklog compatibility mode. See config.php
and the
portals
document.
Reversed the order of entries in the credits
document -
I always felt bad that new entries were at the bottom, since they were
less likely to get read, especially as the list got longer. So now the
newer entries are near the top and will be more visible (although it
will still sink down the list over time). I think this is more fair than
the other ordering.
Added support for audio and video files. This entailed two new icons:
music.gif
and movie.gif
(found in the
images
folder).
Added support for the following file extensions classified as “video”: MOV, AVI, MPG, MPEG, WMV, MP4
Added support for the following file extensions classified as “audio”: MP3, WAV, RA, RAM
Fixed bug in jump tags - they should work again.
Fixed bug in folder counting / image counting which ignored hidden items.
Fixed bug in getRandomThumb()
that caused random
thumbnail selection to fail when not using thumbnail subdirectories.
Removed stray BR
element causing spacing problems in
getRandomThumb()
.
Removed requirement for there to be a config.php
file -
now if there is no config.php
the defaults will be used
instead, and Mig will not error out and exit.
Added Czech language set (“cz”)
Added list of pages to bottom of image list (was previously only at the top).
Moved most of the variables which don’t change except in the main
body into the $mig_config
array, rather than passing as
parameters to functions. Most functions no longer have enormously long
parameter lists.
Added a call to stripslashes()
to get rid of the extra
backslashes found in Windows SMB share paths.
Optimized parts of buildImageURL()
which were doing the
same string manipulations in either result of an if/else test.
Got rid of a misplaced backslash in buildImageURL()
.
This may fix a bug where Mig URLs can get embedded quote marks where
they don’t belong.
Mig can now properly handle redirection on servers running on something other than port 80.
Fixed bug in handling of <Short> blocks.
Fixed bug in Exif format string handling.
Added feature to mkGallery.pl
: options can be memorized
by putting them in mkGallery.opt
. See the utilities
documentation.
If Mig is called with no parameters, it will redirect to itself with
currDir=.
appended. This makes it easier to tack on more
parameters later - no need to worry about the difference between &
and ?.
Added newLang
to the template parser. This makes it
trivial to add links to your templates which switch between languages on
the fly. See the install documentation for more details.
Added $omitImageName
to config.php
. When
TRUE
it will cause the image name to be omitted from the
path line in image views.
[Sourceforge bug report #626032] - Fixed the ‘..’ check for
currDir
. At some point it had been moved down so far in the
code it was no longer effective and Mig went into an endless loop when
encountering ‘/..’ in a URL. Now it will properly exit.
Updated to work with PHPWebThings 0.5test7. Tested against PHP-Nuke 6.0, PostNuke 0.7.2.1_Phoenix, PHPWebSite 0.8.3, PHPWebThings 0.5test7.
Renamed the phpnuke
document to
portals
.
Added integration with Xoops content management system using patches
provided by Marius Scurtescu. See the portals
document.
Files formerly found in templates/phpnuke
will now be in
templates/portals
.
Added Chinese big5 translation (zh).
Fixed some table code and default templates - Mig’s default layout now passes the W3C HTML 4.01 Transitional validator. The CSS code also passes the validator.
Added mig_dl
parameter to URL parser - see the install
document for more on this feature. It lets you translate Mig into any
language on the fly, regardless of the setting of
$mig_language
.
Added $folderSortType
to config.php
. This
option, if set, will override the value of $sortType
when
sorting folders.
Changed mkGallery.pl
to strip profiles from thumbnails
by default. Profiles add to the file size but are not useful in
thumbnails. Testing on a few images I have around showed that old
behavior would result in thumbnails averaging 16K (sometimes up to 32K)
and now they are all 1.5K or 2K or so. Quite an improvement! People who
for some reason want to keep using profiles in their thumbnails can go
back to the old behavior by calling mkGallery.pl
with the
-K
flag.
Updated Danish, Italian and German translations.
Added Polish ISO-8859-2 translation (pliso).
Added <acronym> tag to files/folders counts.
Changed numeric character entities (i.e. á) to alphabetic references (i.e. á).
Upgraded included jhead distribution to version 1.8.
Added $ignoreDotDirectories
option to
config.php
.
[Sourceforge bug report #589652] - Fixed URL encoding bug in getRandomThumb()
[Sourceforge bug report #591337] - Fixed bug in handling of <Sort> and <Hidden>. Previously if an object was in a <Sort> block, its status as a hidden item would be ignored. Objects marked as hidden are now hidden regardless of how they are sorted.
Removed leading and trailing <STYLE> tags from
templates/style.css
- since Mig is using <LINK> to
refer to the style sheet now it was no longer necessary (and the W3C
validator didn’t like it). Fixed other minor HTML/CSS bugs.
Modified printTemplate()
to recognize SMB shares in
Windows when determining whether to prepend full path.
[Sourceforge bug report #585312] - Changed
getRandomThumb()
to actually get a random thumb, instead of
just returning the first thumb found. This is optional behavior - those
preferring the old way can set $useRealRandThumbs
to
FALSE
. NOTE: this doesn’t honor <Hidden> tags -
things that are hidden may still show up using
$randomFolderThumbs
! This is convoluted and I don’t plan to
fix that bug, so don’t use $randomFolderThumbs
if you want
to use <Hidden> too!
Fixed bug in config.php
- the $pathConvert*
variables were incorrectly named as $convertPath*
-
Doh!
Fixed bug in FolderIcon
directive. It had broken at some
point and was no longer properly pointing to the images
directory for icon files.
Fixed a bug where pre-sorted image lists would break pagination.
Added UseThumb
keyword to mig.cf
parser.
Applied a series of patches provided by H. Fox which are aimed at
improving HTML/XHTML compliance, and moving hard-coded HTML elements out
of the PHP code and into either CSS or template files. Some table code
cleanup was done as well. The three frame functions are gone and
replaced by the buildTable()
function. Almost all
<font> tags have been removed from the PHP code and replaced with
other mechanisms in the templates or CSS. The layout is much cleaner now
(IMO), however, anyone upgrading from 1.3.4 or earlier and using the old
templates, or their own custom templates based on pre-1.3.5 template
files, will not like the changes. I suggest everyone use the new
templates, or re-do their customizations based on the new templates and
CSS.
Applied updated French translation from Yannick Massé.
Added option $commentFileShortComments
to
config.php
.
Added <Short> tags to mig.cf
parser.
Added $showShortOnThumbPage
to
config.php
.
Fixed bug in getNumberOfDirs()
where it was not properly
handling thumbnail subdirectories.
Added Estonian and Japanese translations.
Fixed formatting issue in folderFrame()
(fix provided by
Jan Jasinski).
Changed all occurrences of NULL
to empty strings.
Apparently NULL
was not introduced until PHP4, so using
NULL
was breaking PHP3 compatibility.
Added number of folders in addition to number of images when
$viewFolderCount
is TRUE
.
Fixed a bug in getImageDescFromFile()
where a comment
would be incompletely read if the file did not end with a newline
character.
Added config.php
options $convertPathFlag
,
$convertPathRegex
, and $convertPathTarget
for
cases where weird include_path
munging is required. See
near the bottom of config.php.default
.
Added new config.php
options
$imagePopLocationBar
, $imagePopMenuBar
, and
$imagePopToolBar
to control various toolbars being visible
or hidden in pop-up windows.
Added is_dir()
checks before all calls to
opendir()
.
Modified comment behavior when using
$commentFilePerImage = TRUE
so that if a comment file is
not present, the comment from mig.cf
will be used (if one
is present).
Apparently I didn’t document it in the changelog, but at some point I
added code to printTemplate()
to check for drive letters in
the pathname to the template file (as opposed to just looking for a
leading / character). This change was in the 1.3.2 release and possibly
earlier.
Updated Danish translation with patch from Mikkel Kristensen.
Tested Nuke mode with PHPWebSite 0.8.2, works fine with no changes.
Updated phpnuke
document to reflect this.
Merged patch from Pawel Dylik to implement pagination of large
galleries. This resulted in the new config.php
option
$maxThumbRows
, and a new language element
total_images
found in the language sets. Right now, there’s
a slight bug in this behavior. If you click an image while on say, page
2, then use the next-image link a bunch of times until you get to an
image that would be on page 3, if you then go back to thumbnail view,
you end up back on page 2. For now, I will let this sit, because fixing
it would require rewriting a lot of code for little real benefit.
Added code so the pagination now shows you which images you are viewing (i.e. 21-40 of 49).
Added $randomFolderThumbs
to config.php
. If
TRUE
, a random thumbnail from the folder will be used as
the icon rather than the generic folder icon (unless a
FolderIcon
is set in mig.cf
- that takes
precedence). If a given folder has no thumbs (i.e. it has only other
folders inside), Mig will traverse subdirectories until it finds a
usable thumbnail. If it can’t find one the generic folder icon is used
instead. (This was another Pawel patch.)
Added $folderNameLength
to config.php
. When
$randomFolderThumbs
is TRUE
, folder names are
truncated if they are longer than $folderNameLength
characters (to help with table formatting). (Another Pawel patch.)
Some major changes this release - please pay attention!
Eliminated install.sh
- all installs are now done the
same way (Windows, unix, FTP, shell prompt, whatever). Eliminated
FTPinstall
and Windows
documents since they
are now redundant. New installation procedure is documented in the
install
document.
PHP-Nuke mode was no longer working, so I fixed it. While I was at
it, I added PostNuke and phpWebThings compatibility. See the
phpnuke
document. Tested with PHP-Nuke 5.5, PostNuke 0.714
and phpWebThings 0.41. Added config variables
$phpWebThingsCompatible
and $phpWebThingsRoot
to config.php
for the new phpWebThings mode.
Changed language designation for Danish to “dk” instead of “da” (I don’t know what “da” is, but it’s not Denmark).
Removed Example Gallery
from main distribution. It will
be available from this point forward as a separate package on the site.
There’s no reason for every Mig download to be almost half a meg (the
1.3.2b1 tar.gz I built is under 150K).
Added MaintAddr
object to mig.cf
parser
(thanks to Simon Wood for supplying this code!). This permits you to
change the value of $maintAddr
on a per-folder basis if
desired.
Fixed regex bug that caused the exposure time (from EXIF data) to be incorrectly reported in some circumstances.
General cleanup of documentation.
Modified mkGallery.pl
to look for jhead
in
“.” - simplifies the task of finding it.
Entirely restructured the CVS tree. When the smoke cleared,
funcs.php
and lang.php
had vanished (merged
into index.php
). Mig is just one file now (well, the PHP
code is anyway), plus a config file written in PHP.
Eliminated $useVirtual
- it was not being used by
printTemplate()
anymore.
Modified mkGallery.pl
to use thumbnail subdirectories by
default.
Added -f
flag to mkGallery.pl
, so one can
specify the path to the config.php
file if so desired.
Deprecated the $viewCamInfo
and
$viewDateInfo
options. Everything related to EXIF
formatting is now controlled by the $exifFormatString
variable found in config.php
. Information on how to use it
can be found in config.php.default
.
[Sourceforge bug report #467122] - Fixed sorting bug (if
$sortType
was set to anything other than
default
, the thumbnails would be sorted, but the images
would actually be out of order as far as the next/previous links were
concerned. Turns out the sorting had made it into
buildImageList()
but not
buildNextPrevLinks()
)
[Sourceforge bug report #512980] - Removed two extraneous arguments
in a call to printTemplate()
. This hadn’t caused me any
trouble, but if error_reporting
was set to include
E_NOTICE
, errors would be generated.
[Sourceforge feature request #521109] - Now when invoked with
-c
, mkGallery
will also add a <Bulletin>
tag to mig.cf
. In interactive mode it will ask the user for
the bulletin text, otherwise it will just create an empty bulletin.
[Sourceforge feature request #521032] - Added new config variable
$commentFilePerImage
(default FALSE
). When set
to TRUE
, Mig looks for comments in a separate file for each
image rather than looking for all comments in mig.cf
. For
example if you have IMG_4900.JPG
, Mig would look at
IMG_4900.txt
for the comment. Unlike mig.cf
, a
comment in one of these files does not need to be enclosed in a
<Comment> block. The entire file is used as the comment. Mig will
strip newlines and tabs out. When $commentFilePerImage
is
FALSE
, normal processing of comments using the
mig.cf
file happens.
Changed filename of configuration file from mig.cfg
to
config.php
. This is simply to avoid having people rummaging
through your config with their web browser. The install script will
attempt to handle this gracefully for you, or you can just rename files
yourself.
Changed default value of $useThumbSubdir
to TRUE.
Changed example gallery to match.
Upgraded jhead to version 1.6.
Added <TITLE> tags in thumbnail views so when hovering over a
thumbnail, you get the comment whether using Mozilla/Gecko/Netscape or
Internet Explorer. $suppressAltTags
will also suppress the
<TITLE> tags.
Added Polish translation.
Replaced Italian translation with cleaner one from Marco Ermini.
Added date/time stamp parsing to getExifDescription()
.
This can be activated by setting $viewDateInfo
to
TRUE
in mig.cfg
. (It is FALSE
by
default).
Changed getExifDescription()
formatting slightly.
Changed f-stop display to omit any ‘/’ if present.
Added $imagePopup
and $imagePopType
to
mig.cfg.default
. Using these one can have pop-up windows
enabled. See docs/INSTALL
.
[Sourceforge bug report #441188] - Fixed a bug in the handling of
$viewFolderCount
. Previously, if a folder was mentioned in
a <sort> block, it would be ignored when
$viewFolderCount
was evaluated. Now
$viewFolderCount
is properly applied to all folders that
contain images, whether they are sorted or not.
[Sourceforge bug report #442760] - Fixed a bug in
getExifDescription()
. The string flash used
was hard-coded rather than being included in the language library.
Upgraded to most recent revision of jhead to get ISO rating support.
Added ISO rating to EXIF info parser.
Fixed bug in ALT tag (there was no space before the SRC and ALT bits).
Added Italian and Spanish translations.
[Sourceforge feature request #416337] - Modified the ALT tag code such that HTML entities within <comment> blocks should be OK now even if hover-over comments are being used in thumbnail views.
Added Slovak and Dutch translations.
[Sourceforge feature request #414831] - Added
$viewCamInfo
to mig.cfg.default
. If set to
TRUE
and an exif.inf
is present in a given
gallery folder, it will be read to try to extract camera model, and
frame exposure information for display on the page.
[Sourceforge feature request #424166] - Added
$viewFolderCount
to mig.cfg.default
. If set to
TRUE
, the number of images in a given folder will be
displayed next to the folder’s name in parentheses, in a folder list
view.
[Sourceforge feature request #414827] - Added FolderIcon
entity to mig.cf
parser. Lets you define something other
than folder.gif
as the icon for a folder. You can define
each folder with any icon you want. Default is still
folder.gif
.
[Sourceforge feature request #414827] - Added
FolderTemplate
entity to mig.cf
parser. This
allows for a template file to be defined within the folder itself,
specific to that folder. Or you can define a full path if you
wanted.
[Sourceforge feature request #414827] - Added PageTitle
entity to mig.cf
parser. Allows for a per-folder pageTitle
to be set.
[Sourceforge feature request #414827] - Added
MaxFolderColumns
and MaxThumbColumns
entities
to mig.cf
parser. This permits custom column settings per
folder.
Fixed bug from 1.2.7 which caused images to show up as folders when both folders and images were present.
Added Danish translation.
Modified template parser so that you can use #include
to
include PHP files (files with extensions .php
or
.php3
).
Added docs/FTPinstall.txt
for people who have only FTP
access to their server and no shell access (i.e. they can’t run
install.sh
).
Streamlined code where possible.
Got rid of repeated parses of mig.cf
in subroutines and
created parseMigCf()
to just do it once to save time and
effort on file I/O.
Added Swedish translation.
Removed all calls to die()
since they seemed to not work
in all versions of PHP.
Removed install.bat
, rewrote
docs/Windows.txt
to match.
Rewrote install.sh
for new directory layout (which was a
side effect of making Windows installs easier).
Adjusted all server variables so that things should work whether
register_globals
or track_vars
are in use (or
both).
Found a hard-coded directory in printTemplate()
-
corrected.
Added language definition for Turkish.
Changed all occurrences of $language
to
$mig_language
because of a suspected conflict with a
variable name in PHP-Nuke.
Fixed a bug where folks with track_vars = Off
would
break.
Added translations for Russian Windows-1251 and Russian KOI8-R.
Added $suppressAltTags
to mig.cfg
- when
set to TRUE
, ALT tags are not added in thumbnail lists.
Added $useVirtual
in mig.cfg
- when set to
FALSE
, virtual()
is not tried. This is for
people who for some reason don’t have virtual()
support in
their PHP installation.
Fixed printTemplate()
so it only fetches the image size
if there’s an image to fetch the size for. This had been causing a
problem under some conditions.
Added multi-language support (so far English and French
translations). See the $language
variable in
mig.cfg.default
.
Added $sortType
to mig.cfg.default
.
Fixed bug that caused trouble with folks not using
register_globals
.
Added translations for German, Norwegian, Portuguese, Finnish, Romanian.
Added docs/Apache.txt
with useful tips and tricks for
Apache users.
Added support for password-protected folders. See
docs/Passwords.txt
.
Added support for thumbnail subdirectories. See
docs/Install.txt
, docs/Utilities.txt
, and
mig.cfg.default
.
Added code to accomodate sites using
magic_quotes_gpc
.
Fixed bug with PATH_INFO
jump tags.
Added $noThumbs
boolean to mig.cfg.default
.
See docs/Install.txt
.
Added $thumbExt
to mig.cfg.default
. See
docs/Install.txt
.
Fixed bug in parseMyConfig()
in mkGallery
which caused a bad data set to be returned if the config file couldn’t
be read.
Rewrote mkGallery
to accomodate
$thumbExt
.
Upgraded the bundled jhead
distribution to 1.0. Updated
install.sh
and mkGallery
to accomodate. No
action on the part of users should be needed since the command-line
syntax and output format of jhead
is the same.
(Duh!) Added Matthias Wendel (author of jhead
) to
docs/Credits.txt
.
Turned magic_quotes_runtime
off by default - we don’t do
anything in a write mode and I don’t see any advantage or safety offered
by magic_quotes
for this application.
Using $HTTP_GET_VARS
array now for people using
register_globals = Off
.
Will start distributing .ZIP and .tar.gz formats from now on.
Added $maxThumbColumns
and
$maxFolderColumns
to mig.cfg.default
.
$maxColumns
, if present, will be used as the default value
of $maxThumbColumns
. This lets people use something other
than a single column for folder listings.
You can now type “quit” at any prompt during install.sh
to abort.
install.sh
and PHP code revamped and retested for
PHP-Nuke compatible mode. Now the Mig install (except for
mig.php
and mig.cfg
) are sandboxed into the
mig
subdirectory rather than being right in the base
PHP-Nuke directory.
Changed mig.cfg.default
to use TRUE
&
FALSE
rather than 1 and 0 for boolean options.
Added $suppressImageInfo
to mig.cfg.default
- boolean option which controls whether to suppress the information
printed below thumbnail images on thumbnail view pages.
Not an enhancement, but I finally got around to trying out symlinks.
Put a bit about this in docs/Install.txt
.
Added a new file docs/Credits.txt
where I will credit
folks who have contributed bits of code, found bugs, etc.
Added PHP-Nuke compatibility mode (see
docs/phpNuke.txt
). Only of interest to folks using, or
interested in using, PHP-Nuke.
Updated install.sh
for phpNuke mode, and tried to make
it a little smarter about some things.
Removed convert-metafiles
from the main distribution and
make it a contrib script instead. mf_conv.pl
, too.
Added the PATH_INFO
method for Jump URLs. See
docs/Jump.txt
.
Added -n
and -r
switches to
mkGallery
. See docs/Utilities.txt
.
Revamped #include
for Apache users, so it can execute
CGI’s too. See docs/Templates.txt
.
Fixed buildNextPrevLinks()
to use an array as its return
value instead of the (uglier) string concatenation method.
Added jump URL tags. See docs/Jump.txt
for more
information.
Fixed table formatting problem in imageFrame()
which
caused an extra cell to be printed which was visible as a small line in
IE browsers.
Updated docs/Install.txt
with notes about file
permissions.
Fixed bug in buildNextPrevLinks()
- it was ignoring
<Sort> lists.
Happy birthday, Katie!
Ran the example gallery through a mogrify -quality 40
to
reduce the size of the download tarball. Went from just over 600KB to
about 340KB. Amazingly, I can’t even tell the difference viewing the
images.
Removed a hard-coded value from buildImageURL()
which
broke things for folks who had changed the value of
$albumDir
.
Made the terms of the licensing clearer according to the FSF GNU guidelines at https://www.gnu.org/copyleft/gpl.html.
Did a code review looking for potential problems, made minor adjustments.
Added interactive (-i) mode to util/mkGallery
. See
docs/Utilities.txt
.
Happy Halloween!
mkGallery
will now sort items before handling them, so
output files like the comment file will have items alphabetically (for
simplicity).
Fixed bug in buildDirList()
that didn’t do the rendering
of spaces and underscores correctly (they should be rendered as
&nbsp;
).
Fixed bug in buildDirList()
which caused cascading links
in the output HTML. This was not very noticeable until one had a large
list of folders (where large is just a few tens of directories). A
string was not being properly reset at the beginning of each loop
iteration.
Added a question to install.sh
which asks the user if
they are upgrading from 0.83 or earlier (so not everyone for the rest of
time has to run convert-metafiles
anytime they
upgrade).
install.sh
will no longer try to guess what directory to
install into.
Discovered that when moving from one page to the next, the
text-decoration
CSS property for anchors (<A>
elements) was not reset. So if you set text-decoration=none
it would memorize that and not go back to using underlines. So I defined
A:*
as having text-decoration=underline
in
templates/style.css
(which is what you’d expect to see
because most browsers underline links by default).
Changed link on image view pages that goes back to read “back to thumbnail view”. Previously it read “back to folder view” but it has been pointed out to me that the wording was confusing.
Discovered the amazing function GetImageSize()
. Now all
thumbnail views will use width= height=
for the thumbnails
(this helps speed up the browser’s rendering of tables), and thumbnail
views now show the image size in both pixels and bytes. Single image
views will use width= height=
as well, to help the browser
in its rendering task.
Added new tag %%imageSize%%
to the
image.html
template.
Switched from using $SCRIPT_NAME
to using
$PHP_SELF
. This basically means Mig should work for people
using PHP’s CGI mode now.
Implemented <Sort> element in mig.cf
- see
docs/mig_cf.txt
.
Plugged a security hole ($currDir
wasn’t being checked
for ‘..’) which let viewers see the entire directory structure of a
system. Anyone using anything prior to 0.92 should upgrade
immediately!
Fixed a bug in mf_conv.pl
which caused the comment
conversion process to cascade itself… it stored a list of images and
comments in memory, but when it entered a new directory it was not
cleaning that out, so every mig.cf
had comments for all the
files in all the directories it had seen before. Not particularly
dangerous but it litters your mig.cf
files badly. This is
only a problem for folks who upgraded from a release of Mig version 0.83
or earlier to Mig 0.90.
Created install.sh
to act as an installer script.
Reorganized the directory structure somewhat while doing this.
Updated all documentation.
Added the #include
directive to the template processor.
See the file docs/Templates.txt
for information.
Added Windows doc docs/Windows.txt
for Windows users.
Working on .EXE automatic-style installation program.
Changed name of EXIF header cache file to exif.inf
.
Because install.sh
checks for existing template files
and tries to figure out the proper thing to do (asking for input if
needed), hopefully the risk of the installation process blowing away
customized templates has been eliminated (or at least reduced greatly).
Well, unless you happen to use Windows, where I have less versatility
with installation processes. See docs/Windows.txt
for notes
on that topic.
Devised Apache-like format for meta file mig.cf
which
will hold comments, hidden file lists, etc. This will replace
.comments.txt
, .hidden.txt
, etc. EXIF header
info will still live in exif.inf
(formerly known as
.exif_comments.txt
). Documentation is in
docs/mig_cf.txt
.
Updated all files to reflect new domain “tangledhelix.com”.
Converted all colorization to use CSS stylesheets. However, Netscape
doesn’t behave regarding the BODY
element and CSS, based on
my tests. So there’s a default color set in the BODY
tag in
the HTML templates. See the file docs/Templates.txt
for
more information.
Added tag %%distURL%%
for templates. Removed
“MigE,<quot> from <TITLE> in the default templates.
Added script convert-metafiles
to convert metafiles to
new format. It calls a Perl child process, mf_conv.pl
.
Installer tries to find Perl and if so, sets the #! line for
Perl-based utility scripts. This is because folks have Perl installed in
places that are hard to predict but which are probably in their
$PATH
.
Added <Bulletin> feature to mig.cf
. See
docs/mig_cf.txt
for info.
“_” (underscore) is now rendered as a space character in the YouAreHere line as well as in the folder-list boxes.
Got <Comment> working, got EXIF parsing working.
Now in folder / thumbnail views, image comments are loaded as ALT tags, so they will pop up as text when you hover over a link.
Fixed bug which caused images with spaces in their filename to be handled improperly.
Added $markerType
and $markerText
to
mig.cfg.default
. Added -m
and -M
flags to mkGallery
. These were added to support
customizable thumbnail naming conventions. You can now decide what
thumbnail marker name to use (previously was forced to be “th”. Also,
now you can declare it to be a prefix (as in “th_filename.JPG”) or a
suffix (as in “filename_th.JPG”). Default will be as previous, suffix
mode using “th” for filename_th.JPG. See docs/Utilities.txt
and docs/Install.txt
and mig.cfg.default
for
more information.
Updated mkGallery
to read $markerType
and
$markerLabel
from mig.cfg
, so you don’t have
to worry about the -M
and -m
flags as long as
your mig.cfg
has the right options set.
Changed slashFixedURLencode()
to
migURLencode()
.
Fixed bug in migURLencode()
where it would re-encode
something which was already encoded resulting in a comma becoming
%252C
instead of say, %2C
. It now runs input
through rawurldecode()
prior to doing a
rawurlencode()
on it.
Added -c
option to mkGallery
- this will
populate the mig.cf
file with blank <Comment>
elements. It was adapted from mkComments
, which was
contributed by André Fadel (fadel at fee.unicamp.br). See
docs/Utilities.txt
for information.
Fixed bug in getExifDescription()
which was returning
incorrect values.
Found bug in the convert-metafiles
script which caused
directories with spaces in the filename to wig the script out.
Fixed.
Fixed bug in regex used to find comment lines in
getExifDescription()
which would cause extremely long
execution times when dealing with large exif.inf
files.
Fixed bug which caused improper display of filesizes in thumbnail views.
Images and folders are now sorted alphabetically, to make the sorting consistent, if not (yet) completely customizable.
Fixed bug in mkGallery
that caused problems parsing
filenames with embedded spaces.
Changed the behavior of buildYouAreHere()
so the browser
can’t click on the current item - that is, the current folder or the
current image. It just seemed silly to recreate the browser’s reload
button.
The pieces of the “you are here” headline are now clickable for simpler navigation between levels.
Changed the style sheet so the links are underlined again. People aren’t used to having it any other way, it was causing confusion.
Got newCurrDir
out of the URI string which makes the URL
about 50% as long as before. This entailed adding
getNewCurrDir()
calls.
Added style sheet support. See the file
templates/style.css
.
Rearranged the layout in image.html
to make it
friendlier for small screens.
Fixed overpadded image tables.
Cleaned up the HTML layout (mostly shuffling, adding, deleting <BR>).
Added a “now viewing #x of y” in image views, so the browser can easily tell how many images are left in either direction without returning to the thumbnail view.
Using colored table cells for comments now. Embedded comments are seperated from file-based comments with an <HR> element.
Descriptions are centered now.
Bundled jhead
from Matthias Wandel in order to parse
EXIF headers. jhead
will be a child process of
mkGallery
when invoked with -e
.
Updated mkGallery
with new options and code to handle
parsing of EXIF headers using the jhead
program. See the
-e
and -w
options. Also added a
-t
option to specify if you should make thumbnails or not
(since that’s not the only action possible anymore).
Added function getExifDescription()
which parses the
.exif_comments.txt
files for embedded comments and displays
them in image views.
Added “you are here” line, but it’s not clickable yet.
Added “hidden” feature. Anything put into .hidden.txt
in
a directory will cause the listed items (one per line) to be rendered
invisible. This is, of course, optional.
Cleaned up places where eregi()
or
eregi_replace()
were used when the proper call was
ereg()
or ereg_replace()
.
Added “comment” feature. Comments are stored in
.comments.txt
. See INSTALL
for more
information.
Added $homeLink
and $homeLabel
to config,
to print a “back to {home}” link at the “root” folder level.
Set default colors so if $imageBGcolor
and/or
$folderBGcolor
are missing in the config, it won’t default
to black.
Set default $maxColumns
in case that is omitted from
config file.
Set default $title
in case that is omitted from config
file.
Set default $maintAddr
in case that is omitted from
config file.
Got next/previous links working in image views.
Removed “back” link from “main” or “root” of album.
Fixed font size bug with back link on “main” page.
Rewrote mkGallery
with use strict
and
-w
.
Symlinked index.php3
to index.php
for
simplicity.
Replaced “<<” in buildBackLink()
with
&lt;&lt;
and cleaned up other such bits
throughout the code.
Replaced most spaces in templates & PHP with
&nbsp;
due to odd formatting problems with
MSIE.
Wrote table generation code into PHP and took it out of the template files due to MSIE’s stupid insistence on displaying empty tables with a tiny colored square.
Cleaned up (simplified) templates a little.
Added variables $imageBGcolor
and
$folderBGcolor
, which are background colors for the table
backgrounds for the image and folder tables, respectively. They can be
found in mig.cfg.default
.
Documented templates in templates/README.templates
.
Got rid of $phpExt
- include files aren’t seen by the
web server anyway, so the extension wasn’t relevant.
Reworked page formatting. Now if there are no folders and no images present, the browser gets “No contents”. If no folders, the folder table isn’t printed. If no images, the images table isn’t printed. If there are both, you see both tables. The result is less confusing.
If mig.cfg
is missing, mig.cfg.default
will
be read instead, to avoid any errors popping up.
Added a second back link to each page since pages can grow long enough that having one at the top and one at the bottom is desirable.
Added filesize to the thumbnails page.
Fixed a stupid bug ($maxColumns
was being ignored).
Table layouts on thumbnail pages should work now.
If a thumbnail is missing, a generic image will be used in its place.
The “back” link is now grayed out when at the “main” page.
Fixed bug in mkGallery
that would cause it to create
thumbnails of already-existing thumbnail images.
Viewing a folder will now show the thumbnail images correctly.
Added template image.html
to view individual images.
Removed the “you are at” headline, the help function, and the “exit” button. The latter two were never too useful, and the former is a real pain to get working. I’ll save it for some future release.
Added $phpExt
variable for PHP3 users who might need
filenames with .php3
extensions instead of
.php
.
Added $pageTitle
to insert into the <TITLE>
element of each template.
Removed *currLocation
routines.
Started using mig.cfg.default
for dist bundles to avoid
over-writing old config files.
Fixed a bug which caused image view “back” links to go not to the previous page, but literally to “../”.
Fixed URL pointer in the HTML templates to reflect correct Mig distribution URL.
The mkGallery
utility script is complete. Requires Perl
and ImageMagick. No other significant changes in 0.2.
Got “any directory anywhere” directory browsing working correctly. An album can have any number of directories and subdirectories now. This is much better than the old 2-level directory model.
Changed direction on the topic of thumbnail generation. It’s better to pre-generate them instead of having the PHP code do it on the fly. Having the script get reliable write access to the filesystem proved to be a bit more sloppy than I originally thought.
The old method of using numeric filenames is gone now (thank god).
Support for JPEG/GIF/PNG formats should be good enough. Old model of supporting only one file type sucked.
Nailed down an HTML layout finally, simpler than others I have seen,
more attractive than the previous ones used in
album.php3
.
Got HTML templates working.
Added a help link, back link, and a mailto: link to each page. Each page also has a link back to the distribution URL.
Got the “you are here” path to display, but no links yet.
Got rid of the old problem from album.php3
where the
path had to be statically set in the code ahead of time (and the fact
that tilde-URLs like /~dan/
didn’t work). This time around
the script figures out where it is in the filesystem and bases
everything else on that path.
Added the “exit” link to take browser to an outside URL.