Videos Plugin 0.17.1 Available for Testing
- Wednesday, August 05 2026 @ 08:43 am EDT
- Contributed by: ::Ben
- Views: 182
I am looking for Geeklog users and developers who would like to test a new development version of the Videos plugin.
The plugin provides a complete YouTube video catalogue for Geeklog, with content discovery, playback, ratings, recommendations, rankings, moderation tools and privacy controls.
The source code is available on GitHub:
https://github.com/Geeklog-Plugins/videos
Version 0.17.1 is a development release intended for testing. It should not yet be considered a stable production release. Please create a backup before installing it or upgrading an existing test installation.
Compatibility
- Geeklog 2.1.1 through Geeklog 2.2.2
- PHP 5.6 through PHP 8.1
- YouTube Data API v3
- No plugin-owned database table
The plugin uses PHP 5.6-compatible syntax so the same codebase can be tested across several Geeklog and PHP versions.
Main features
The current development version includes:
- Automated installation and upgrades through Geeklog
- Native Geeklog permissions, groups and configuration
- YouTube Data API v3 searches
- API quota monitoring and cache management
- A public video catalogue with pagination
- Standard and minimal YouTube player modes
- Local video ratings
- Qualified-view tracking
- Personal viewing history for registered users
- Next-video recommendations without additional YouTube API requests
- Local video and channel rankings
- Public ranking pages
- A configurable dynamic Geeklog block
- Video and channel moderation
- Unavailable-video filtering
- Optional YouTube Shorts filtering
- A permanent catalogue pool
- SEO metadata, Open Graph data and VideoObject structured data
- Visible FAQ sections with optional FAQPage structured data
- User data export and deletion controls
Shared video discovery
Version 0.17.0 introduced a shared discovery reservoir designed to maintain a catalogue containing several hundred videos.
Instead of making a new YouTube search for every visitor, the plugin maintains a shared collection of compact video references. The default reservoir can contain up to 500 references, while the public catalogue can expose up to 300 videos through pagination.
Administrators can manually seed the reservoir using several distinct searches. Later renewals are shared and performed lazily, with no more than one search during the configured refresh interval.
The catalogue can combine recent videos with results selected by relevance, views and ratings. When YouTube or the local API quota is unavailable, the existing reservoir remains usable.
Protected persistent storage in version 0.17.1
Version 0.17.1 changes where the plugin stores its persistent JSON data.
Geeklog 2.2.2 can remove most directories located directly inside path_data when an administrator uses the native Clear Cache operation. This could remove persistent plugin information if it were stored in path_data/videos.
To prevent this, the Videos plugin now creates a separate sibling directory derived from each site's path_data setting.
path_data = /private/data/S1/ Videos = /private/data/S1-videos/
This approach also preserves isolation between sites in a Geeklog multisite installation.
An administrator may define a different absolute storage location before Geeklog loads the plugin:
$_CONF['videos_data_path'] = '/private/persistent/S1/videos/';
Relative paths, parent-directory traversal and locations inside path_data are rejected.
Migration from an earlier version
After an upgrade, the plugin detects data stored in the former path_data/videos directory.
Valid JSON files are copied to the new persistent directory using locking, validation and atomic file replacement. Existing valid destination files are not overwritten.
The original directory is preserved as a recovery copy and is never removed automatically. Corrupt files are also left in the legacy directory instead of being silently copied.
The administration status page displays the active storage path, the detected legacy path and the result of the first migration attempt.
Privacy and data storage
The plugin does not create its own SQL database table. Geeklog still uses its existing core tables to register the plugin, permissions, groups and configuration values.
Plugin-specific information is stored in protected JSON files.
For registered users, the plugin stores a keyed pseudonymous account hash. It does not store the Geeklog user ID, name or email address in its JSON data files.
Registered users can export their personal plugin data and explicitly delete their ratings, history, preferences and recommendation records. Personal data linked to an account is otherwise retained without automatic expiration.
Moderation records contain a keyed hash of the moderating account, the decision date and a bounded internal reason. They do not contain the administrator's name, email address or clear Geeklog user ID.
What needs testing
I would particularly appreciate feedback about:
- Fresh installation on Geeklog 2.1.1 and 2.2.2
- Upgrading from an earlier Videos plugin version
- PHP 5.6, PHP 7.x and PHP 8.1 compatibility
- Single-site and multisite installations
- Migration from
path_data/videosto the new persistent directory - Plugin behaviour after using Geeklog's Clear Cache function
- YouTube API configuration and quota handling
- Catalogue seeding and shared reservoir renewal
- Search caching and fallback behaviour
- Video playback and qualified-view tracking
- Ratings, history and recommendations
- Video and channel rankings
- Moderation and blocked-content filtering
- Public pages with different Geeklog themes
- Responsive administration pages
- SEO metadata and structured data
- Account export and deletion tools
How to report a problem
Please report bugs, compatibility problems and suggestions through the GitHub repository:
https://github.com/Geeklog-Plugins/videos/issues
When reporting an issue, please include:
- Your Geeklog version
- Your PHP version
- Your web server and operating system when relevant
- Whether this was a fresh installation or an upgrade
- The previous plugin version when upgrading
- The steps required to reproduce the problem
- The complete error message or relevant log entry
- The Geeklog theme used during the test
Please do not publish your YouTube API key, private storage paths, account hashes or other confidential configuration values in a public issue.
Contributions are welcome
The plugin is still under active development. Testing across different Geeklog versions, PHP environments, themes and multisite configurations will help identify problems before the first stable release.
Code reviews, bug reports, documentation improvements, translations and pull requests are welcome.
Thank you to everyone who can install this development version and share useful feedback.