Welcome to Geeklog, Anonymous Wednesday, October 07 2026 @ 12:20 pm EDT

MediaGallery 1.8.0: A Major Modernization for One of Geeklog’s Most Complete Media Plugins

  • Tuesday, September 22 2026 @ 08:30 pm EDT
  • Contributed by:
  • Views: 147
Plugins

MediaGallery 1.8.0 is now available, and calling this release a simple update would seriously underestimate the amount of work that went into it.

MediaGallery has been one of the most complete media-management solutions available for Geeklog for many years. It can manage images, audio, video, files, albums, member galleries, moderation, RSS feeds, slideshows, EXIF/IPTC information, batch operations and much more.

But maintaining such a mature plugin also means dealing with years of changes in PHP, browsers, web security, Geeklog itself and the way modern websites store and expose media.

MediaGallery 1.8.0 tackles that technical debt head-on.

The objective was not to rewrite MediaGallery and risk losing its mature feature set. Instead, the goal was to preserve what already works while modernizing the foundations underneath it.

The result is probably one of the largest MediaGallery maintenance and modernization efforts undertaken in years.

Keeping MediaGallery usable across two Geeklog generations

One of the main challenges was compatibility.

MediaGallery 1.8.0 supports Geeklog 2.1.1 and newer, including Geeklog 2.2.2.

At the same time, the source remains compatible with PHP 5.6 syntax for sites that still need to complete their transition from older Geeklog installations.

The same code has also been checked against PHP 7.4, PHP 8.1 and PHP 8.3.

This required much more than simply fixing a few PHP warnings.

Configuration values that may not yet exist when Geeklog enables the plugin had to be safely initialized. Template variables and media playback paths were reviewed for PHP 8 behavior. Administrative scripts and maintenance routines were audited, and historical assumptions that PHP tolerated more easily had to be removed.

This work also incorporates or supersedes several issues reported through the official MediaGallery issue tracker, including PHP 8 compatibility problems, upload-size parsing, thumbnail filenames, comment permissions and Remote Media warnings.

User media no longer lives inside replaceable plugin code

One of the most important architectural changes in MediaGallery 1.8.0 concerns storage.

Historically, media could live below:

public_html/mediagallery/mediaobjects/

That becomes dangerous when a plugin is upgraded by replacing its public directory.

MediaGallery 1.8.0 moves user-generated media into persistent storage derived from Geeklog's configured image directory.

A typical installation now uses a location such as:

public_html/images/mediagallery/

This separation between plugin code and user data makes upgrades significantly safer.

It also works naturally with shared-code multisite installations. Each Geeklog site can have its own path_images, images_url and data directory while sharing the same MediaGallery code.

A migration tool is included for existing 1.7.x installations. It copies and verifies legacy media before the plugin ZIP is replaced and deliberately leaves the original files untouched.

This was extensively tested with upgrades from MediaGallery 1.7.3 and 1.7.0.

Image handling received major attention

A media gallery lives or dies by reliable image handling, so a substantial part of the 1.8 development cycle focused on thumbnails, display images and originals.

Several long-standing or newly discovered edge cases were corrected.

MediaGallery can now reliably rebuild missing display images and thumbnails without unexpectedly modifying originals.

Maintenance batch processing was repaired so operations start correctly and report failures instead of ending on blank pages.

Attached thumbnails are no longer assumed to always be JPEG files. JPEG, PNG, GIF and BMP thumbnails can now be resolved using their real format.

Another important correction concerns DNC behavior. When an uploaded source image must be converted to JPEG, the conversion now takes place before display and thumbnail derivatives are generated. This keeps the files on disk and the MIME/extension information stored in the database consistent.

These may sound like small implementation details, but they make a significant difference on galleries containing thousands or tens of thousands of historical media files.

Security has been hardened throughout the upload pipeline

A plugin capable of accepting files from browsers, FTP directories, ZIP archives, command-line imports and remote URLs has a large security surface.

MediaGallery 1.8.0 reviews all of these paths.

The new version includes stronger filename validation, executable-extension rejection, MIME/extension consistency checks, FTP path confinement, ZIP traversal protection, symlink rejection and bounded HTTP(S) Remote Media retrieval.

Temporary files are cleaned more safely, and destructive operations revalidate album and media relationships before modifying data.

Batch processing also received special attention.

Geeklog 2.1.1 uses one-time, referer-bound security tokens. That behavior does not work naturally with a multi-request batch process.

MediaGallery now keeps normal Geeklog CSRF protection when the administrator starts an operation, while subsequent internal batch requests use POST requests, server-generated session IDs and ownership validation.

That provides compatibility with Geeklog 2.1.1 without making the batch interface publicly callable.

Moderation and email have been modernized

The moderation queue was another area that received a full review.

Queued uploads are now correctly kept separate until approval. Approval validates the queued media and album relationship before promoting the item into the live tables, while rejection removes both database entries and generated files.

MediaGallery also no longer needs its historical private mail implementation for these workflows.

Moderator notifications and approval messages now use Geeklog's own COM_mail() backend.

Both HTML and plaintext email templates are supplied.

This means MediaGallery benefits automatically from the mail configuration already maintained by the Geeklog site administrator.

Flash-era playback is finally history

MediaGallery has existed long enough to have supported technologies such as Flash, ActiveX, QuickTime browser plugins and MMS streaming.

Modern browsers have moved on.

MediaGallery 1.8.0 removes active Flash and ActiveX playback from maintained output and uses HTML5 audio and video where the browser supports the media type.

Formats such as MP4, MPEG and MOV can use modern browser playback, while obsolete formats such as FLV and SWF receive safe download or fallback behavior rather than attempting to launch unsupported browser plugins.

Historical media records therefore remain usable without forcing the plugin to preserve obsolete execution technologies.

The public interface is more modern too

The work is not limited to PHP and storage.

Public and administrative templates have been modernized using responsive CSS Grid and Flexbox layouts.

Album and media displays received accessibility improvements, semantic headings, better navigation landmarks and clearer form controls.

MediaGallery also now provides better canonical URLs, pagination-aware metadata, editorial meta descriptions where available and conservative structured data for image, audio and eligible video content.

Thumbnail rendering has also been improved, especially for portrait images where unnecessary scaling could previously reduce visual quality.

MediaGallery can now cooperate with other Geeklog plugins

One of the most important changes for the future of the Geeklog ecosystem is the new interoperability layer.

Until now, another plugin wanting to work with MediaGallery albums often needed knowledge of internal mg_* database tables or MediaGallery PHP classes.

MediaGallery 1.8.0 provides a cleaner alternative.

Through Geeklog's native service mechanism, other plugins can request permission-filtered album trees, individual albums, media collections and individual media records.

Available services include album_list, album_read, media_list, media_read and dashboard_summary.

This work was designed around a consumer-neutral capability model.

Agent, Eclipse and the future Hub can discover and consume MediaGallery information, but MediaGallery does not depend directly on any of them.

The plugin also emits normal Geeklog lifecycle notifications when albums or media are created, modified, moved or deleted.

That means plugins such as IndexNow, XML Sitemap, Hub and future services can react to MediaGallery content changes without knowing its database schema.

This is a significant step toward making Geeklog plugins cooperate through stable APIs instead of private implementation details.

Existing features were preserved

The objective throughout the 1.8 work was modernization without throwing away the features that made MediaGallery useful in the first place.

Albums, nested albums, member galleries, uploads, categories, EXIF/IPTC support, RSS, comments, ratings, slideshow functionality, random-media blocks, quotas, watermarks, batch maintenance and MediaGallery autotags remain part of the plugin.

A large administrator guide has also been retained and reorganized so administrators can access current documentation from the protected administration interface rather than relying on obsolete public documentation from older releases.

Extensively tested before release

MediaGallery 1.8.0 has been tested on both ends of its intended Geeklog transition range.

Testing included Geeklog 2.1.1 and Geeklog 2.2.2, upgrades from MediaGallery 1.7.3 and 1.7.0, media-storage migration, image uploads, derivative generation, thumbnail rebuilding, display-image resizing, batch security, moderation, email delivery, representative audio/video playback, multisite operation and the new interoperability services.

Automated PHP syntax validation covers PHP 5.6, 7.4, 8.1 and 8.3.

The installable archive is generated and validated automatically from the release source.

An important note for existing MediaGallery users

If you are upgrading an existing MediaGallery 1.7.x installation, do not simply upload the new ZIP over the old plugin.

Legacy media stored inside:

public_html/mediagallery/mediaobjects/

must first be migrated to the new persistent storage location.

MediaGallery 1.8.0 includes tools/migrate-media-storage.php for this purpose.

The migration process copies and verifies the media while preserving the existing source files as a safety measure.

Read the included UPGRADE documentation before updating a production gallery, and always keep complete database and media backups.

MediaGallery is ready for the next generation of Geeklog sites

MediaGallery 1.8.0 is not a cosmetic version bump.

It represents a substantial effort to take a mature and extremely capable Geeklog plugin, preserve its existing strengths and rebuild many of the foundations required for modern PHP, modern browsers, safer upgrades, better security, multisite environments and plugin interoperability.

For existing MediaGallery users, the release provides a much safer path toward current Geeklog and PHP versions.

For developers, it provides new services and lifecycle APIs that make MediaGallery much easier to integrate with other Geeklog components.

And for visitors, the result is a faster, cleaner and more modern media experience without abandoning years of existing content.

MediaGallery 1.8.0 is available from the official Geeklog Plugins repository:

https://github.com/Geeklog-Plugins/mediagallery