Migrator is a Geeklog plugin for recovering content from legacy CMS database dumps into a fresh Geeklog 2.2.2 installation.
The project favors simple, auditable recovery over perfect reproduction of the source CMS.
- Geeklog 2.2.2 only
- fresh destination installation
- MySQL-compatible database
- administration-only workflow
- Legacy Geeklog
- glFusion
- WordPress
Migrator 1.0.0 provides:
- Geeklog 2.2.2 autoinstall metadata
migrator.adminpermission and admin group- isolated persistent storage under the site's
path_data - SQL dump upload
- explicit source CMS selection
- safe staging of
CREATE TABLEandINSERT INTOstatements - staging table names under
migrator_src_* - blocking/skipping of unrelated SQL statements
- source-structure detection
- recoverable-content counts
- migration job tracking
- source/target ID mapping table
- migration log table
- legacy Geeklog dry run
- legacy Geeklog core migration writer
- glFusion core migration writer using the Geeklog-compatible core path
- glFusion Forum migration for categories, forums, posts, logs, moderators, user preferences, banned IPs and forum profile data
- glFusion MediaGallery migration for albums, media, album relations, queues, playback options, usage tracking, user preferences, watermarks, categories, sessions, sorting, ratings and EXIF settings
- MediaGallery
opacity->wm_opacityfield conversion - post-migration file manifest for MediaGallery media and converted Forum attachments
- ID preservation for users, topics, stories, comments and Static Pages when safe
- migration of legacy user profile fields into Geeklog 2.2.2
user_attributes - automatic membership of imported users in the destination core groups
- migration of article/Static Page topic assignments
- preservation of legacy password hashes supported by Geeklog 2.2.2, with normal rehash-on-login behavior
- CSRF protection
- staged-source purge
- complete autouninstall metadata for plugin-owned tables, group and feature
Staging and analysis do not modify Geeklog destination content.
For Legacy Geeklog and glFusion core content, the administrator can then run an explicit Dry run followed by a confirmed Migration action. Migration writes are refused when the destination no longer matches the expected fresh-install baseline.
The uploaded SQL file is stored outside the public web root.
Source tables are recreated under isolated names. Migrator never executes source table names directly against Geeklog destination tables.
The staging importer accepts only the subset needed to recover source tables and rows. Other statements are skipped.
Destination migration is a separate, explicit action after analysis and dry-run.
Migrator follows the development and administration principles documented in:
- https://github.com/hostellerie/memorandum
- Geeklog 2.2.2 Plugin API conventions
- ACL checks on every administration entry point
- CSRF protection for state-changing actions
- Geeklog
DB_*database abstraction COM_createHTMLDocument()page rendering- templates for significant administration markup
- isolated persistent data storage
- repeatable installation and complete auto-uninstall cleanup
See ROADMAP.md for the migration scope and milestones.
The current adapter migrates the compatible Forum data into the current Geeklog Forum tables.
The legacy glFusion ff_attachments records are converted to MediaGallery downloads. ff_bookmarks and ff_rating_assoc still have no direct target equivalents and are reported instead of being force-mapped.
The database schemas are highly compatible. Most MediaGallery tables migrate through their common columns while preserving IDs and relationships.
Media files are intentionally not copied by Migrator. After database migration, the administrator must copy the source MediaGallery files into MediaGallery's persistent storage. With MediaGallery 1.9.0 on a standard Geeklog 2.2.2 site, the default target is public_html/images/mediagallery/ (derived from $_CONF['path_images']). Installations with a custom path_images / images_url pair must use that configured storage instead.
The WordPress adapter supports:
- users with deterministic UID remapping when WordPress IDs 1/2 conflict with Geeklog core users
- WordPress categories to Geeklog topics
- posts to Geeklog stories
- pages to Static Pages
- approved regular comments with parent/child relationships
- Geeklog comment tree rebuild after import
- author mapping through the migrated user map
- post/category topic assignments
- manual WordPress uploads copy to
public_html/images/wordpress/ - URL rewriting for detected WordPress upload URLs inside migrated post/page content
Current limitations:
- WordPress password hashes are not copied; users must set a Geeklog password
- users without an email address require administrator intervention
- WordPress tags are reported but not imported yet
- pingbacks/trackbacks are not imported as comments
- attachment post records and featured-image metadata are not converted yet
- plugin-specific WordPress data is not migrated
The installable package for this release is:
migrator_1.0.0_2.2.2.zip
It is intended for Geeklog 2.2.2 only.
Migrator accepts:
.sql.sql.gz.zipcontaining exactly one.sqlfile
Compressed uploads are normalized to a private .sql file under path_data/migrator/ before staging.
ZIP files are never extracted wholesale. Migrator reads the archive, rejects unsafe paths, requires exactly one SQL dump, and writes only that SQL entry to private storage.
The current uncompressed safety limit is 256 MiB.
When the source contains ff_attachments, MediaGallery is a required destination dependency.
Migrator converts Forum attachments into a dedicated MediaGallery album named Forum attachments (glFusion):
- normal Forum attachments are resolved from the glFusion Forum upload storage (default
public_html/forum/media/); - attachments with
repository_id > 0are resolved through staged FileMgmt records; - FileMgmt's default source store is
public_html/filemgmt_data/files/, but installations with a customized or outside-webrootFileStoremust use their actual configured source directory; - each attachment receives a deterministic MediaGallery
media_id; - each migrated Forum post receives a MediaGallery
[download:...]autotag pointing to the recovered file; - attachment media are stored as generic downloadable MediaGallery items so no image/video derivatives are required during database migration;
- the dry run and migration report list the exact source and target file path for every attachment.
Migrator migrates the database records only. The administrator must copy the physical files to the exact MediaGallery persistent-storage paths shown in the report. On a standard Geeklog 2.2.2 / MediaGallery 1.9.0 installation, Forum attachments therefore land under public_html/images/mediagallery/orig/<first-character>/....