Select your language

Version archive (GitHub)

JL Content Fields Filter JL Content Fields Filter 4.0.0

2026-01-02 4.0.0 GitHub

Release notes

What's Changed

New Contributors

Full Changelog: https://github.com/Joomline/JlContentFieldsFilter/compare/3.0.0...4.0.0

JL Content Fields Filter 4.0.0 - Major Update

This is a major release with Joomla 6 full compatibility, critical security fixes, complete admin interface modernization, and comprehensive code refactoring.

🚀 What's New

Joomla 6 Full Compatibility

  • ✅ Complete PSR-4 namespace architecture migration

  • ✅ Replaced all deprecated methods:

    • getDbo()getDatabase()

    • defined('JPATH_PLATFORM')\defined('_JEXEC')

  • ✅ Fixed PHP 8.2+ dynamic property deprecations

  • ✅ Modern QueryInterface for all database operations

  • ✅ Updated file headers with proper @since annotations

  • ✅ Refactored CategoryModel (com_content, com_contact) and TagModel (com_tags)

  • ✅ Improved quoteName() usage for better security

  • ✅ Migrated from publish to state column (Joomla 6 standard)

  • ✅ Fixed French language file paths in XML configuration

  • ✅ Simplified JLoader usage

Admin Component - Complete Rewrite

  • 🎨 Removed legacy dependencies: Vue.js 2, Axios (~200KB saved!)

  • 🎨 Modern JavaScript stack:

    • Native Fetch API instead of Axios

    • ES6+ features (async/await, arrow functions, template literals)

    • Bootstrap 5 native modal dialogs

    • WebAssetManager for modern asset loading

  • 🎨 New FilterfieldsField (255 lines):

    • Live filter preview directly in admin panel

    • Supports all field types: list, radio, checkboxes, text, range

    • Dynamic field loading based on selected category

    • Integration with FieldsHelper

    • "Interactive on frontend" disabled preview mode

  • 🎨 Full CRUD operations:

    • ✅ Add new filter SEO records

    • ✅ Edit existing records

    • ✅ Delete records (with confirmation)

    • ✅ Publish/unpublish filters

    • ✅ Filter form with search and status filters

  • 🎨 SEO Features:

    • Meta fields truncation to recommended lengths (title, description, keywords)

    • Hash-based filter identification

    • Form validation and error handling

  • 🎨 Improved UX:

    • Loading states and spinners

    • Error notifications

    • Clean JSON responses with output buffer management

    • Debug logging for troubleshooting

    • Mobile-friendly responsive design

Critical Security Fixes 🔒

  • 🛡️ Fixed 5 SQL injection vulnerabilities:

    1. Extension/Jlcontentfieldsfilter.php (3 vulnerabilities):

      • Line 221: IN clause - proper quoting via array_map() with db->quote()

      • Line 235: BETWEEN clause - missing int cast for 'to' value

      • Line 244: LIKE clause - added db->escape() before db->quote()

    2. TagModel.php (line 170): IN clause - sanitized with ArrayHelper::toInteger() + array_filter()

    3. ContactModel (CategoryModel.php, line 270): IN clause - sanitized with ArrayHelper::toInteger() + array_filter()

  • 🛡️ Additional security improvements:

    • Fixed SQL injection in ItemsModel search filter (improper quote placement)

    • Added XSS protection with escapeHtml() in items list template

    • Moved CSRF tokens from URL to POST body

    • Added permission checks in ItemModel::save()

    • Item existence validation before operations

    • Replaced SELECT * with explicit field lists

    • Fixed operator precedence bug in ternary operator (JlcontentfieldsfilterHelper.php:105)

Module Improvements

  • 🎯 Enhanced slider functionality:

    • Change event handling for input values

    • Proper range slider reset on form clear

  • 🎯 Improved form reset:

    • Clear text inputs on reset

    • Reset range sliders to default values

    • Better synchronization between inputs

  • 🎯 Frontend CSS updates:

    • Renamed jlmf-labeljlmf-field-title (semantic naming)

    • Updated selectors in jlcontentfilter.css

    • Consistent styling across 7 layout files

  • 🎯 Fixed copyright typo: "Joomla All rights" → "Joomline. All rights"

Plugin Enhancements

  • ⚙️ Dynamic context detection:

    • Replaced hardcoded 'com_content.article' with dynamic detection

    • Full support for com_content, com_contact, and com_tags contexts

    • Load custom models for filtering logic in content plugins

  • ⚙️ Improved filtering logic:

    • Enhanced filter string creation for range fields

    • Better BETWEEN clause handling

    • Optimized database queries

  • ⚙️ Updated media paths:

    • Corrected file paths for scripts and styles

    • Updated to use correct media directory structure

Code Quality & Documentation

  • 📝 PHP-CS-Fixer configuration (.php-cs-fixer.dist.php):

    • Enforced code style standards

    • Automatic formatting for consistent codebase

  • 📝 Complete PHPDoc documentation:

    • Detailed comments for all methods

    • Parameter and return type documentation

    • @since annotations for version tracking

  • 📝 Code cleanup:

    • Removed deprecated jlcontentfieldsfilter.php file

    • Removed unused imports (Rules, ApplicationHelper, Factory, Registry)

    • Removed references to non-existent fields (created_by, checked_out)

    • Simplified Table::bind() method

    • Removed empty index.html files

    • Updated params.xml for improved layout styling

  • 📝 Consistent coding standards:

    • Unified \defined('_JEXEC') usage across all files

    • Type consistency improvements

    • Better switch statement structure for model loading