Drupal Release: 7.0

Tag Name: 7.0

Release Date: 1/5/2011

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 7.0: A Major Evolution in the Drupal Platform

Drupal 7.0 represents a significant leap forward from version 6.38, introducing a completely revamped entity system, improved database abstraction layer (DBTNG), enhanced user experience, and numerous performance improvements. This release focuses on making Drupal more accessible to non-developers while providing powerful new APIs for developers to build upon.

What's new: A comprehensive entity API, field API, improved database abstraction, RDF support, enhanced testing framework, and a completely redesigned administrative interface with the new Overlay, Toolbar, and Dashboard modules.

Why it matters: Drupal 7 makes content management more intuitive for end users while giving developers a more robust and flexible foundation for building complex websites and applications.

Who should care: Site builders will appreciate the improved UI and simplified content management. Developers will benefit from the new APIs and architecture. Content creators will enjoy the more intuitive editing experience.

Highlight of the Release

    • Complete entity system overhaul with standardized APIs for all content types
    • New Field API allowing fields to be attached to any entity type
    • Improved Database Abstraction Layer (DBTNG) with better security and performance
    • Completely redesigned administrative interface with Overlay, Toolbar, and Dashboard modules
    • New default theme (Bartik) with improved styling and accessibility
    • Enhanced Update Manager with better security verification
    • Improved testing framework with more granular test methods
    • RDF support for better semantic web integration

Migration Guide

Upgrading from Drupal 6.x to Drupal 7.0

Before You Begin

  • Back up your database and files
  • Check that your hosting environment meets the system requirements
  • Update to the latest version of Drupal 6 before upgrading
  • Check if your contributed modules and themes have Drupal 7 versions available

Database Changes

  • The database schema has changed significantly in Drupal 7
  • Field data storage has been completely restructured
  • Node revisions are now handled differently
  • User roles and permissions have a new schema

API Changes

  • Many API functions have been renamed or replaced
  • The node API has been largely replaced by the Entity API
  • CCK functionality is now in core as the Field API
  • The database abstraction layer has been completely rewritten

Theme Changes

  • PHPTemplate is still the default engine, but theme functions have changed
  • Many template files have new variables and structures
  • CSS IDs and classes have changed in many places
  • New default themes (Bartik and Seven) replace Garland and Bluemarine

Module Updates

  • Many contributed modules will need to be updated for Drupal 7 compatibility
  • Some module functionality has been moved into core
  • Custom modules will need to be updated to use the new APIs

Post-Upgrade Tasks

  • Run update.php after upgrading
  • Rebuild permissions
  • Clear all caches
  • Check for any errors in the status report
  • Test all site functionality thoroughly

Known Issues

  • Some text formats may need reconfiguration after upgrade
  • Field data migration might require manual intervention in some cases
  • User passwords will be automatically rehashed on first login
  • Some path aliases might need to be rebuilt

For detailed instructions, refer to the official Drupal 7 upgrade guide.

Upgrade Recommendations

Who Should Upgrade

  • Sites requiring improved content modeling capabilities
  • Projects needing better database abstraction and security
  • Sites that would benefit from the improved administrative interface
  • Developers wanting to leverage the new Entity and Field APIs

Who Should Wait

  • Sites with custom modules that haven't been updated for Drupal 7 compatibility
  • Sites using contributed modules that don't yet have stable Drupal 7 releases
  • Sites with complex content structures that might be difficult to migrate
  • Sites that are stable on Drupal 6 and don't need the new features

Upgrade Path

The upgrade from Drupal 6.38 to Drupal 7.0 is supported directly through the update.php script. However, due to the significant architectural changes, thorough testing is essential before upgrading production sites.

Preparation Steps

  1. Create a complete backup of your site files and database
  2. Update to the latest version of Drupal 6 before attempting the upgrade
  3. Check the status of your contributed modules for Drupal 7 compatibility
  4. Set up a test environment to practice the upgrade before applying to production
  5. Allocate sufficient time for testing and troubleshooting

Post-Upgrade Considerations

  • Review and reconfigure text formats and input filters
  • Check field configurations, especially for custom field types
  • Verify that all content types and views are functioning correctly
  • Test all site functionality thoroughly before going live

Given the extensive changes in Drupal 7, this upgrade should be approached carefully with proper planning and testing. For sites with complex requirements or custom code, consider engaging with experienced Drupal developers to assist with the migration process.

Bug Fixes

Content Management

  • Fixed issue where editing a comment would destroy its creation date
  • Fixed problem with node types being accidentally marked as disabled
  • Fixed issue with search from block not displaying "Please enter some keywords" message
  • Fixed issue where nodes published before 1970 wouldn't insert in taxonomy index
  • Fixed issue with sticky content styling
  • Fixed issue with reordering failing with more than 31 book pages

Database and Performance

  • Fixed database driver names not being translated
  • Fixed issue with system_rebuild_module_data() being called twice
  • Fixed count query failures with field expressions
  • Fixed issues with SQLite update queries with expressions
  • Fixed transaction failures in SQLite
  • Fixed PostgreSQL issues when changing field types from int to varchar
  • Fixed schema issues during upgrades

User Interface

  • Fixed issue where radio button values were being run through check_plain() twice
  • Fixed site name alignment issues when no logo is present
  • Fixed styling for disabled form elements in Bartik
  • Fixed styling for tables with headers in tbody
  • Fixed styling for PRE and CODE tags in Bartik
  • Fixed comment user picture overflow in Bartik
  • Fixed issues with comment styling and layout

Search and Paths

  • Fixed issue where slashes didn't work in search
  • Fixed language selection in advanced search filters
  • Fixed issue where paths containing hyphens weren't compatible with page theme_hook_suggestions
  • Fixed wrong sort order of aliases for different languages

Security and Authentication

  • Fixed issue with rehashed passwords after Drupal 6 upgrade failing
  • Fixed issue with password_count_log2 variable being out of bounds

Multilingual

  • Fixed issue with installation in non-predefined languages
  • Fixed fatal error when using only one language with language_negotiation_get_switch_links()

Update Manager

  • Fixed issue where update manager would take site out of maintenance mode unexpectedly
  • Fixed issue where update manager couldn't install projects packed as zip
  • Fixed issue where a single 'broken' module would prevent installation of a project

New Features

Entity System

  • Complete overhaul of the entity system providing a standardized way to work with all content types
  • New entity API with hooks like hook_entity_presave() and hook_entity_load()
  • Entity metadata and properties system for better content modeling

Field API

  • Fields can now be attached to any entity type, not just nodes
  • User fields can now be displayed on registration forms
  • Improved field validation and error handling
  • Better field caching for improved performance

Database Layer

  • Enhanced Database Abstraction Layer (DBTNG) with support for transactions and prepared statements
  • Better query building with chainable methods
  • Support for EXISTS conditions in queries
  • Improved compatibility with PostgreSQL 9.0 and SQLite

Administrative Interface

  • New Overlay module for administrative pages
  • Toolbar module for quick access to administrative functions
  • Dashboard module for customizable admin home page
  • Improved content management screens
  • Better theme administration with preview capabilities

Themes

  • New default theme "Bartik" with improved styling and accessibility
  • Enhanced "Seven" administrative theme
  • Better RTL support in core themes
  • Improved theme template suggestions

Update Manager

  • Enhanced security with tarball verification
  • Better error handling and reporting
  • Improved workflow for module and theme installation
  • Support for both FTP and SSH connections

Other Features

  • RDF support for better semantic web integration
  • Improved image handling
  • Enhanced comment management
  • Better multilingual support
  • Improved accessibility for screen readers

Security Updates

Authentication and User Management

  • Fixed issue with rehashed passwords after Drupal 6 upgrade failing
  • Fixed issue with password_count_log2 variable being out of bounds
  • Improved security for user password validation

File System Security

  • Enhanced Update Manager with tarball verification to prevent malicious code installation
  • Improved security for file transfers in Update Manager
  • Better handling of private file downloads

Database Security

  • Enhanced Database Abstraction Layer (DBTNG) with prepared statements to prevent SQL injection
  • Improved security for database schema changes
  • Better handling of database transactions

Form Security

  • Fixed issue where radio button values were being run through check_plain() twice
  • Added template variable for outputting HTML HEAD title safely
  • Improved security documentation for drupal_attributes()

Access Control

  • Fixed issue where "administer comments" permission did not respect node access
  • Enhanced user cancellation operations with clearer messaging
  • Improved handling of administrative paths and permissions

Performance Improvements

Database Performance

  • Improved database query performance with the new Database Abstraction Layer (DBTNG)
  • Added caching for node types to reduce database queries
  • Fixed issue where schema was being loaded on every page view
  • Improved handling of database transactions for better performance
  • Enhanced query building with more efficient methods

Caching Improvements

  • Better field caching for improved performance
  • Fixed inconsistency between cache_get_multiple() and cache_get()
  • Improved caching of text formats
  • Enhanced entity caching

JavaScript and CSS Optimization

  • All JavaScript in /misc is now registered as a library for better optimization
  • Improved AJAX handling for better performance
  • Updated to jQuery UI 1.8.7 for better performance
  • Upgraded jQuery Form library to 2.52

General Performance

  • Made t() function faster for improved translation performance
  • Fixed performance issue in Batch queries affecting large tables
  • Improved file handling performance
  • Better handling of private file downloads
  • Added garbage collection to the update manager to clean up temporary files

Impact Summary

Drupal 7.0 represents one of the most significant architectural overhauls in Drupal's history, fundamentally changing how content is modeled and managed. The introduction of the Entity API and Field API transforms Drupal from a node-centric CMS to a flexible content framework capable of handling diverse entity types with consistent APIs.

For site builders and administrators, the most immediate impact is the dramatically improved user interface. The new Overlay, Toolbar, and Dashboard modules create a more intuitive administrative experience, while the Field UI allows for complex content modeling without custom code. The new Bartik theme provides a modern, accessible default appearance that better showcases Drupal's capabilities out of the box.

Developers will find a completely revamped foundation to build upon. The Database Abstraction Layer (DBTNG) offers better security, performance, and cross-database compatibility. The standardized Entity API provides consistent methods for working with all content types, while the Field API allows for attaching fields to any entity. These changes enable more modular, maintainable code with clearer separation of concerns.

For end users, the improvements in performance, accessibility, and user experience create a more engaging and responsive site. Better image handling, enhanced comment management, and improved search functionality all contribute to a more polished experience.

The upgrade path from Drupal 6 has been carefully maintained, but the extensive architectural changes mean that custom code will likely need significant updates. Contributed modules must be specifically updated for Drupal 7 compatibility, which may impact upgrade timelines for complex sites.

Overall, Drupal 7.0 establishes a more robust foundation that would influence the direction of the platform for years to come, setting the stage for future innovations while addressing many longstanding limitations of previous versions.

Statistics:

File Changed300
Line Additions23,861
Line Deletions5,844
Line Changes29,705
Total Commits250

User Affected:

  • Benefit from a completely redesigned administrative interface with the new Overlay, Toolbar, and Dashboard modules
  • Can now manage content types and fields through the UI without needing custom modules
  • Improved update manager with better error handling and security verification
  • Enhanced user management with more granular permissions

Contributors:

webchickdbuytaert