Home

>

Tools

>

Drupal

>

Releases

>

4.4.0

Drupal Release: 4.4.0

Tag Name: 4.4.0

Release Date: 4/1/2004

Drupal LogoDrupal

Highly 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

  1. Back up your database and Drupal files
  2. 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:

File Changed138
Line Additions6,076
Line Deletions9,780
Line Changes15,856
Total Commits250

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

Contributors:

dbuytaert