Drupal Release: 4.4.0
Tag Name: 4.4.0
Release Date: 4/1/2004
DrupalHighly flexible, open-source content management system known for complex, scalable web applications. Preferred by government, educational, and large enterprise websites requiring advanced customization and security features. Robust module ecosystem.
TL;DR
Drupal 4.4.0 is a significant update that introduces a new filter module, improved aggregator functionality, enhanced theming capabilities, and numerous bug fixes. This release separates filter-related functionality into its own required module, adds a new Pushbutton theme, improves URL handling, enhances the forum module, and fixes various XHTML compliance issues. The update also includes performance optimizations and security improvements, making it a recommended upgrade for all Drupal 4.3.x users.
Highlight of the Release
- New filter module separates filter functionality into its own required module
- Improved aggregator module with OPML support, conditional gets, and better theming
- New Pushbutton theme added to core
- Enhanced forum module with better navigation and taxonomy integration
- Improved URL handling and aliasing
- Better XHTML compliance throughout the codebase
- Support for modules to define multiple node types
- New theme('page') function replaces theme('header') + theme('footer') combination
Migration Guide
Upgrading to Drupal 4.4.0
Before Upgrading
- Back up your database and Drupal files
- Review the changes in this release, particularly the new filter module
Database Updates
You'll need to run update.php after upgrading your files. If you're using PostgreSQL, you'll need to manually add the throttle and bootstrap columns to the system table before running update.php:
For MySQL:
ALTER TABLE system ADD bootstrap int(2) NOT NULL default '0';
ALTER TABLE system ADD throttle tinyint(1) NOT NULL default '0';
For PostgreSQL:
ALTER TABLE system ADD bootstrap integer NOT NULL default '0';
ALTER TABLE system ADD throttle smallint NOT NULL default '0';
Module Updates
- Filter Module: Filter functionality is now in its own required module. Any custom modules that relied on filter functions in system.module will need to be updated.
- User Module: Modules implementing the _user hook will need to be updated to return the preferred group name.
- Theme System: theme('header') and theme('footer') have been replaced by theme('page'). Update your themes accordingly.
Theme Changes
- The directory structure of the Chameleon theme has changed. Each template is now in a subdirectory.
- If you've created custom themes based on core themes, review the changes to ensure compatibility.
Other Changes
- The 'remember me' feature has been temporarily removed.
- The multiple type delimiter has changed from '/' to '-'.
- The MSSQL database driver has been removed.
Upgrade Recommendations
Recommendation Level: Recommended for all Drupal 4.3.x users
This release contains significant improvements to core functionality, particularly in the areas of content filtering, aggregation, and theming. The separation of filter functionality into its own module provides better organization and maintainability, while the numerous bug fixes address issues in XHTML compliance, URL handling, and database operations.
The performance improvements in the aggregator module and URL alias handling will benefit most sites, and the security enhancements provide better protection against potential vulnerabilities.
For sites using the forum module, the navigation improvements and taxonomy integration make this update particularly valuable.
When to upgrade:
- Plan for a routine upgrade during a maintenance window
- Test thoroughly on a staging environment before upgrading production
- Review the migration guide for specific steps, especially if using PostgreSQL
When you might delay:
- If you have heavily customized the filter system in system.module
- If you have custom themes that rely on theme('header') and theme('footer')
- If you use MSSQL as your database (no longer supported)
Bug Fixes
URL and Path Handling
- Fixed bug in drupal_get_path_alias() that returned incorrect values for non-aliased URLs
- Fixed block path matching when clean URLs are disabled
- Improved URL handling in RSS feeds
XHTML Compliance
- Fixed invalid HTML in tablesort output
- Fixed missing alt attributes in images
- Fixed XHTML errors with multiple selection boxes
- Replaced
<i>with<em>and<b>with<strong>for better compliance - Fixed active link marking that invalidated HTML
Module-specific Fixes
- Fixed bug in poll module that affected option handling
- Fixed archive calendar caching too aggressively
- Fixed incorrect permission name in throttle block
- Fixed broken URLs in comment help
- Fixed incorrect timestamp handling in aggregator
- Fixed session handling for PostgreSQL compatibility
- Fixed bug that prevented sessions from working on PostgreSQL
- Fixed bug where forum block was showing unpublished posts
- Fixed bug in tracker module related to node name retrieval
- Fixed bug that allowed posting to forum containers
Other Fixes
- Fixed PHP 4.2.1 compatibility issues
- Fixed file uploads for PHP 4.2
- Fixed multiple pagers on one page
- Fixed XML encoding issues
- Fixed CSS validation issues
- Fixed breadcrumb trails in various modules
New Features
New Filter Module
The filter-related functionality has been moved from system.module to its own required module (filter.module). This provides better organization and makes the filter system more maintainable.
Improved Aggregator Module
The news aggregator module has received significant improvements:
- Added drupal_http_request() function
- Replaced RSS feeds with OPML feed subscription list
- Added support for pubDate
- Added support for conditional gets using ETag and Last-Modified
- Added support for feed images and Dublin Core dates
- Improved theming capabilities
- Better error reporting
New Pushbutton Theme
A new theme called "Pushbutton" has been added to core, contributed by MegaGrunt. This provides another reference implementation for theme developers.
Multiple Node Types Support
Modules can now define multiple node types, providing more flexibility for content type creation.
RSS Autodiscovery
Added RSS autodiscovery links to node, blog and taxonomy pages, making it easier for users to subscribe to content.
Reorderable Filters
Added the ability to reorder filters, giving administrators more control over content formatting.
Book Navigation Block
Added a book navigation block to improve usability of the book module.
Forum Module Improvements
- Better integration with taxonomy
- Improved navigation with 'new' links
- Better usability for forum containers
Security Updates
Input Validation
- Improved validation for form inputs throughout the system
- Fixed incomplete input checking in several modules
- Better sanitization of user input before database operations
Access Control
- Added proper access checking to blocks and menu items
- Fixed missing permission checks in several modules
- Improved user authentication handling
XML Parsing
Improved XML encoding handling with a new drupal_xml_parser_create() function that properly handles encoding conversion, protecting against potential XML parsing vulnerabilities.
Performance Improvements
Aggregator Performance
The aggregator module now supports conditional gets using ETag and Last-Modified headers, which reduces bandwidth usage and improves performance when fetching feeds.
URL Alias Optimization
Removed unnecessary SQL queries when no URL aliases are defined, improving performance on sites that don't use the path module extensively.
Node Preparation
Improved node_prepare() to use resources more efficiently, based on a patch by Goba.
Throttle Module Improvements
The throttle module no longer depends on cron to adjust throttle levels, making it more responsive when configured to do so.
Database Optimizations
Several database queries have been optimized throughout the codebase, particularly in the session handling and URL alias functionality.
Code Optimizations
- Consolidated duplicate code with new helper functions
- Improved function organization in several modules
- Removed dead code from various modules
- Better handling of headers and caching
Impact Summary
Drupal 4.4.0 represents a significant architectural improvement with the separation of filter functionality into its own required module, providing better organization and maintainability. The aggregator module has been substantially enhanced with OPML support, conditional gets, and improved theming capabilities, making it more powerful and efficient for content syndication.
The addition of the Pushbutton theme and improvements to the theming system give site builders more options and better tools for customization. Forum functionality has been improved with better navigation and taxonomy integration, enhancing the community aspects of Drupal sites.
For developers, the ability for modules to define multiple node types opens up new possibilities for content modeling, while new helper functions like drupal_http_request() and drupal_map_assoc() simplify common tasks.
The release also addresses numerous bugs, particularly in the areas of XHTML compliance, URL handling, and database operations, making sites more standards-compliant and reliable. Performance optimizations in the aggregator module and URL alias handling will benefit most sites, especially those with heavy content syndication needs.
Overall, this release enhances Drupal's capabilities as a content management platform while improving its architecture, performance, and standards compliance.
Statistics:
User Affected:
- New filter module provides better control over text formatting
- Improved aggregator module with OPML support and conditional gets
- Enhanced block configuration with better path matching
- New generic handler for simple variable-based configuration pages
