Drupal Release: 3.0.1
Tag Name: 3.0.1
Release Date: 10/23/2001
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 3.0.1 is a significant maintenance release that builds upon the 3.0.0 foundation with numerous bug fixes, feature enhancements, and architectural improvements. This update introduces an XML-RPC server, a new user module with improved authentication, search functionality enhancements, and a new tracker module. It also includes important database architecture changes for better cross-database compatibility, theme improvements, and various UI refinements. This release focuses on stabilizing the platform while adding targeted functionality improvements that enhance both the user and administrator experience.
Highlight of the Release
- Added XML-RPC server allowing modules to export remote procedure calls
- Introduced new user module with improved authentication and session handling
- Added context-sensitive search functionality with translatable categories
- New tracker module for monitoring content changes ('your drupal' feature)
- PEAR-ification of Drupal enabling support for multiple database systems (MySQL, PostgreSQL, MSSQL)
- Configurable front page system allowing customization of what content appears on the home page
- Path-based block visibility using regular expressions
- Improved comment system with better anonymous user support
Migration Guide
Upgrading to Drupal 3.0.1
Database Updates
Apply the database changes from the updates/3.00-to-x.xx.sql file (or the appropriate file for your database system). Key changes include:
- Table structure changes for blocks (added path column)
- Renamed "id" fields to "xid" where "x" is the first letter of the table name
- Renamed "userid" fields to "uid" for consistency
- Removed node link ID (lid)
- Renamed "author" fields to "uid" for consistency
- Added sequence tables for cross-database compatibility
Code Updates
-
Replace all
header("Location: foo")calls withdrupal_goto()for better session handling -
Update the form() function usage - the first parameter (action) is now optional:
- Old:
$form = form($REQUEST_URI, $form_content); - New:
$form = form($form_content);
- Old:
-
Update any custom themes to use the new theme inheritance system
-
Update any custom modules that implement node or comment functionality to use the updated APIs
Configuration
-
Review the new configuration options for front page settings:
site_frontpage- Sets which module handles the front pagesite_frontpage_extra- Passes additional parameters to the front page handler
-
Configure block visibility using the new path-based regular expressions
XML-RPC Integration
If you want to expose functionality via XML-RPC, implement the new 'xmlrpc' hook in your modules:
function mymodule_xmlrpc() {
return array("drupal.myfunction" => array("function" => "mymodule_myfunction"));
}
Upgrade Recommendations
Who should upgrade
All Drupal 3.0.0 users should upgrade to 3.0.1 as soon as possible. This release contains numerous bug fixes, security improvements, and feature enhancements that significantly improve the stability and functionality of your Drupal site.
Upgrade priority: High
This is considered a high-priority upgrade due to:
- Important bug fixes for the user authentication system
- Security improvements in session handling
- Critical fixes for node and comment management
- Database compatibility improvements
Upgrade complexity: Moderate
The upgrade process requires database schema changes and some code modifications for custom modules. Site administrators should:
- Back up their database and files before upgrading
- Apply the database changes from the appropriate update file
- Update any custom modules that use the modified APIs
- Test thoroughly after upgrading, especially user authentication, node management, and comment functionality
Preparation steps
- Review the migration guide thoroughly
- Schedule maintenance downtime for the upgrade
- Test the upgrade on a staging environment first if possible
Bug Fixes
User System Fixes
- Fixed the access_get_role() problem
- Fixed language bug in user.module
- Fixed issue where user.module would show another login box instead of user settings after login
- Fixed bug where anonymous users couldn't post comments
Node Management Fixes
- Fixed book.module not generating next/prev links properly
- Fixed potential bug in node.php where nodes with same titles were causing confusion
- Fixed bug in node_del() and comment_del()
- Re-added default node options to the admin page
- Fixed SQL bug in the "next / prev" code of book.module
- Fixed bugs introduced by moving index.php to node_page() in node.module
- Fixed problem with node retrieval if several nodes had the same title but only one was posted
Theme Fixes
- Fixed bugs in theme UnConeD
- Fixed HTML/XHTML typos in various templates
- Fixed bug in forum.module when locales were enabled
Comment System Fixes
- Fixed issue where anonymous users couldn't change comment settings
- Fixed bug where comment author's name was displayed as 'anonymous' when replying
- Fixed comments using the timestamp of the comment instead of the user's timestamp
Translation and Localization Fixes
- Fixed translation bugs reported by Alexander Schwartz
- Made search categories translatable
- Made selection boxes translatable
- Fixed language settings not being saved
Database and SQL Fixes
- Fixed SQL queries to use ANSI SQL instead of MySQL-specific syntax
- Fixed SQL error in node.php (user → users)
- Added missing database table keys for node types
- Fixed typo: "call to undefined function: db_num_row()"
New Features
XML-RPC Server
Added an XML-RPC server allowing modules to export remote procedure calls through the new 'xmlrpc' hook. This enables remote interaction with Drupal sites.
New User Module
Completely revamped user system with improved authentication, session handling, and user management capabilities. Includes a new 'Log in' block for easier authentication.
Enhanced Search Functionality
Improved search architecture with context-sensitive results and translatable categories, making content discovery more effective.
Tracker Module
Added a new tracker module that shows recent comments and content changes, fulfilling the frequently requested "your drupal" feature.
Configurable Front Page
Made the front page of the system configurable. Any <node>_page() function can now be set as the default page, with additional filtering options through configuration variables.
Path-based Block Visibility
Added a path field to blocks using regular expressions to define which pages blocks should appear on, providing more granular control over block display.
Weblogs.com Notification
Added a small module to notify or ping weblogs.com when content is updated.
Configuration Override System
Added ability to override site settings in the config file using a $conf variable, enabling hosting of multiple domains from the same Drupal installation with different settings.
Security Updates
Password Security
- Added password hashing capability to the user module (though it was temporarily disabled)
- Improved session handling with session_set_save_handler() in user.module
- Added ini_set() to conf.php to solve history/cache browsing issues on some installations
Input Validation
- Modified the variable code so configuration values cannot be changed by users in GET or POST strings
- Improved server variable handling by using $HTTP_SERVER_VARS instead of $GLOBAL[REMOTE_ADDR] to be less reliant on PHP configuration
Performance Improvements
Database Optimization
- Added sequence tables for better database performance
- Improved node sorting algorithms for more efficient content retrieval
- Added table keys for node types to improve query performance
Theme System Improvements
- Pass theme objects by reference to avoid creating copies, improving memory usage
- Simplified theme inheritance, allowing custom themes to inherit most functionality from the BaseTheme
- Modified theme_block() to ignore blocks with no content, reducing unnecessary processing
Query Optimization
- Re-introduced temporary SQL tables in _node_get() for better query performance
- Small improvements to db_query() to make debugging queries easier and more efficient
- Optimized database schema with more consistent naming conventions and relationships
Impact Summary
Drupal 3.0.1 represents a significant step forward in Drupal's evolution, focusing on stability, cross-database compatibility, and targeted feature enhancements. The introduction of the XML-RPC server opens new possibilities for remote interaction with Drupal sites, while the new user module improves authentication and session handling. The PEAR-ification of Drupal is particularly noteworthy as it enables support for multiple database systems beyond MySQL, making Drupal more accessible to organizations with different database preferences.
For administrators, the configurable front page system and path-based block visibility provide greater control over site appearance and content organization. Developers benefit from API improvements like the simplified form() function and the new drupal_goto() function for better session handling. Content creators will appreciate the enhanced search functionality and the new tracker module for monitoring content changes.
The release also addresses numerous bugs across various components, particularly in the user system, node management, and comment functionality. These fixes, combined with the performance optimizations and security improvements, make Drupal 3.0.1 a more robust and reliable platform.
Overall, this release balances fixing existing issues with introducing carefully selected new features that enhance the user experience without disrupting the core functionality. The focus on cross-database compatibility and API improvements also sets the foundation for Drupal's continued growth and adoption across different environments.
Statistics:
User Affected:
- Gained access to a new configurable front page system allowing customization of what content appears on the home page
- Can now configure blocks to appear only on specific pages using regular expressions
- Benefit from improved database compatibility across MySQL, PostgreSQL, MSSQL, and other databases
- Received enhanced user management capabilities through the new user module
