Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • develop
  • issue-424
  • issue-525
  • master
  • master-no-logins
  • svn-staging
  • svn-testing
  • svn-trunk
  • topics/add-contribution-info
  • 2010-11-11
  • 2010-12-15
  • 2011-01-11
  • 2011-01-18
  • 2011-01-26
  • 2011-02-10
  • 2011-02-23
  • 2011-03-09
  • 2011-03-15
  • 2011-03-30
  • 2011-04-05
  • 2011-05-03
  • 2011-05-12
  • 2011-06-16
  • 2011-06-21
  • 2011-06-23
  • 2011-06-29
  • 2011-06-30
  • 2011-07-11
  • 2011-07-18
  • 2011-07-20
  • 2011-07-21
  • 2011-07-28
  • 2011-08-03
  • 2011-08-05
  • 2011-08-15
  • 2011-08-17
  • 2011-08-29
  • 2011-08-30
  • 2011-09-19
  • 2011-10-03
  • 2011-10-06
  • 2011-10-27
  • 2011-11-01
  • 2011-11-08
  • 2011-11-08.2
  • 2011-11-14
  • 2011-11-17
  • 2011-12-05
  • 2011-12-16
  • 2012-01-12
  • 2012-01-13
  • 2012-02-07
  • 2012-03-01
  • 2012-04-02
  • 2012-04-03
  • 2012-04-18
  • 20120207
  • 7.1
  • 7.2
  • 7.3
  • 7.3.1
  • 7.4
  • 7.5
  • 7.5.1
  • 7.6
  • 7.6.1
66 results

Target

Select target project
  • rklusman2/UNL-CMS
  • yzha1/UNL-CMS
  • pear/UNL-CMS
  • bbieber2/UNL-CMS
  • tsteiner2/UNL-CMS
  • erasmussen2/UNL-CMS
  • UNL-Information-Services/UNL-CMS
7 results
Select Git revision
  • develop
  • issue-424
  • master
  • master-no-logins
  • svn-staging
  • svn-testing
  • svn-trunk
  • topics/add-contribution-info
  • 2010-11-11
  • 2010-12-15
  • 2011-01-11
  • 2011-01-18
  • 2011-01-26
  • 2011-02-10
  • 2011-02-23
  • 2011-03-09
  • 2011-03-15
  • 2011-03-30
  • 2011-04-05
  • 2011-05-03
  • 2011-05-12
  • 2011-06-16
  • 2011-06-21
  • 2011-06-23
  • 2011-06-29
  • 2011-06-30
  • 2011-07-11
  • 2011-07-18
  • 2011-07-20
  • 2011-07-21
  • 2011-07-28
  • 2011-08-03
  • 2011-08-05
  • 2011-08-15
  • 2011-08-17
  • 2011-08-29
  • 2011-08-30
  • 2011-09-19
  • 2011-10-03
  • 2011-10-06
  • 2011-10-27
  • 2011-11-01
  • 2011-11-08
  • 2011-11-08.2
  • 2011-11-14
  • 2011-11-17
  • 2011-12-05
  • 2011-12-16
  • 2012-01-12
  • 2012-01-13
  • 2012-02-07
  • 2012-03-01
  • 2012-04-02
  • 2012-04-03
  • 2012-04-18
  • 20120207
  • 7.1
  • 7.10
  • 7.11
  • 7.12
  • 7.13
  • 7.14
  • 7.15
  • 7.16
  • 7.16.1
  • 7.17
  • 7.18
  • 7.19
  • 7.2
  • 7.3
  • 7.3.1
  • 7.4
  • 7.5
  • 7.5.1
  • 7.6
  • 7.6.1
  • 7.7
  • 7.7.1
  • 7.7.2
  • 7.7.3
  • 7.8
  • 7.9
82 results
Show changes
Commits on Source (413)
...@@ -16,12 +16,6 @@ Options +FollowSymLinks ...@@ -16,12 +16,6 @@ Options +FollowSymLinks
# Make Drupal handle any 404 errors. # Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php ErrorDocument 404 /index.php
# Force simple error message for requests for non-existent favicon.ico.
<Files favicon.ico>
# There is no end quote below, for compatibility with Apache 1.3.
ErrorDocument 404 "The requested file favicon.ico was not found.
</Files>
# Set the default handler. # Set the default handler.
DirectoryIndex index.php index.html index.htm DirectoryIndex index.php index.html index.htm
...@@ -113,6 +107,13 @@ DirectoryIndex index.php index.html index.htm ...@@ -113,6 +107,13 @@ DirectoryIndex index.php index.html index.htm
# uncomment the following line: # uncomment the following line:
# RewriteBase / # RewriteBase /
# Allow public files to be accessed without the sites/<site_dir>/files prefix
# The following line must be added to your apache configuration for this context:
# RewriteMap drupal prg:<DRUPAL_ROOT>/rewrite.php
# Do not uncomment the previous line. Only the next two.
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteRule (.*) ${drupal:%{HTTP_HOST};delim;%{REQUEST_URI};delim;$1} [DPI]
# Pass all requests not referring directly to files in the filesystem to # Pass all requests not referring directly to files in the filesystem to
# index.php. Clean URLs are handled in drupal_environment_initialize(). # index.php. Clean URLs are handled in drupal_environment_initialize().
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-f
...@@ -139,11 +140,9 @@ DirectoryIndex index.php index.html index.htm ...@@ -139,11 +140,9 @@ DirectoryIndex index.php index.html index.htm
<FilesMatch "(\.js\.gz|\.css\.gz)$"> <FilesMatch "(\.js\.gz|\.css\.gz)$">
# Serve correct encoding type. # Serve correct encoding type.
Header append Content-Encoding gzip Header set Content-Encoding gzip
# Force proxies to cache gzipped & non-gzipped css/js files separately. # Force proxies to cache gzipped & non-gzipped css/js files separately.
Header append Vary Accept-Encoding Header append Vary Accept-Encoding
</FilesMatch> </FilesMatch>
</IfModule> </IfModule>
</IfModule> </IfModule>
# $Id: .htaccess,v 1.110 2010/10/11 23:49:48 dries Exp $
// $Id: CHANGELOG.txt,v 1.375 2010/10/23 05:30:57 webchick Exp $
Drupal 7.0 beta 2, 2010-10-22 (development version) Drupal 7.13 xxxx-xx-xx (development version)
----------------------
Drupal 7.12, 2012-02-01
----------------------
- Fixed bug preventing custom menus from receiving an active trail.
- Fixed hook_field_delete() no longer invoked during field_purge_data().
- Fixed bug causing entity info cache to not be cleared with the rest of caches.
- Fixed file_unmanaged_copy() fails with Drupal 7.7+ and safe_mode() or
open_basedir().
- Fixed Nested transactions throw exceptions when they got out of scope.
- Fixed bugs with the Return-Path when sending mail on both Windows and
non-Windows systems.
- Fixed bug with DrupalCacheArray property visibility preventing others from
extending it (API change: http://drupal.org/node/1422264).
- Fixed bug with handling of non-ASCII characters in file names (API change:
http://drupal.org/node/1424840).
- Reconciled field maximum length with database column size in image and
aggregator modules.
- Fixes to various core JavaScript files to allow for minification and
aggregation.
- Fixed Prevent tests from deleting main installation's tables when
parent::setUp() is not called.
- Fixed several Poll module bugs.
- Fixed several Shortcut module bugs.
- Added new hook_system_theme_info() to provide ability for contributed modules
to test theme functionality.
- Added ability to cancel mail sending from hook_mail_alter().
- Added support for configurable PDO connection options, enabling master-master
database replication.
- Numerous improvements to tests and test runner to pave the way for faster test
runs.
- Expanded test coverage.
- Numerous API documentation improvements.
- Numerous performance improvements, including token replacement and render
cache.
Drupal 7.11, 2012-02-01
----------------------
- Fixed security issues (Multiple vulnerabilities), see SA-CORE-2012-001.
Drupal 7.10, 2011-12-05
----------------------
- Fixed Content-Language HTTP header to not cause issues with Drush 5.x.
- Reduce memory usage of theme registry (performance).
- Fixed PECL upload progress bar for FileField
- Fixed running update.php doesn't always clear the cache.
- Fixed PDO exceptions on long titles.
- Fixed Overlay redirect does not include query string.
- Fixed D6 modules satisfy D7 module dependencies.
- Fixed the ordering of module hooks when using module_implements_alter().
- Fixed "floating" submit buttons during AJAX requests.
- Fixed timezone selected on install not propogating to admin account.
- Added msgctx context to JS translation functions, for feature parity with t().
- Profiles' .install files now available during hook_install_tasks().
- Added test coverage of 7.0 -> 7.x upgrade path.
- Numerous notice fixes.
- Numerous documentation improvements.
- Additional automated test coverage.
Drupal 7.9, 2011-10-26
----------------------
- Critical fixes to OpenID to spec violations that could allow for
impersonation in certain scenarios. Existing OpenID users should see
http://drupal.org/node/1120290#comment-5092796 for more information on
transitioning.
- Fixed files getting lost when adding multiple files to multiple file fields
at the same time.
- Improved usability of the clean URL test screens.
- Restored height/width attributes on images run through the theme system.
- Fixed usability bug with first password field being pre-filled by certain
browser plugins.
- Fixed file_usage_list() so that it can return more than one result.
- Fixed bug preventing preview of private images on node form.
- Fixed PDO error when inserting an aggregator title longer than 255 characters.
- Spelled out what TRADITIONAL means in MySQL sql_mode.
- Deprecated "!=" operator for DBTNG; should be "<>".
- Added two new API functions (menu_tree_set_path()/menu_tree_get_path()) were
added in order to enable setting the active menu trail for dynamically
generated menu paths.
- Added new "fast 404" capability in settings.php to bypass Drupal bootstrap
when serving 404 pages for certain file types.
- Added format_string() function which can perform string munging ala the t()
function without the overhead of the translation system.
- Numerous #states system fixes.
- Numerous EntityFieldQuery, DBTNG, and SQLite fixes.
- Numerous Shortcut module fixes.
- Numerous language system fixes.
- Numerous token fixes.
- Numerous CSS fixes.
- Numerous upgrade path fixes.
- Numerous minor string fixes.
- Numerous notice fixes.
Drupal 7.8, 2011-08-31
----------------------
- Fixed critical upgrade path issue with multilingual sites, leading to lost
content.
- Numerous fixes to upgrade path, preventing fatal errors due to incorrect
dependencies.
- Fixed issue with saving files on hosts with open_basedir restrictions.
- Fixed Update manger error when used with Overlay.
- Fixed RTL support in Seven administration theme and Overlay.
- Fixes to nested transaction support.
- Introduced performance pattern to reduce Drupal core's RAM usage.
- Added support for HTML 5 tags to filter_xss_admin().
- Added exception handling to cron.
- Added new hook hook_field_widget_form_alter() for contribtued modules.
- element_validate_*() functions now available to contrib.
- Added new maintainers for several subsystems.
- Numerous testing system improvements.
- Numerous markup and CSS fixes.
- Numerous poll module fixes.
- Numerous notice/warning fixes.
- Numerous documentation fixes.
- Numerous token fixes.
Drupal 7.7, 2011-07-27
----------------------
- Fixed VERSION string.
Drupal 7.6, 2011-07-27
----------------------
- Fixed support for remote streamwrappers.
- AJAX now binds to 'click' instead of 'mousedown'.
- 'Translatable' flag on fields created in UI now defaults to FALSE, to match those created via the API.
- Performance enhancement to permissions page on large numbers of permissions.
- More secure password generation.
- Fix for temporary directory on Windows servers.
- run-tests.sh now uses proc_open() instead of pcntl_fork() for better Windows support.
- Numerous upgrade path fixes.
- Numerous documentation fixes.
- Numerous notice fixes.
- Numerous fixes to improve PHP 5.4 support.
- Numerous RTL improvements.
Drupal 7.5, 2011-07-27
----------------------
- Fixed security issue (Access bypass), see SA-CORE-2011-003.
Drupal 7.4, 2011-06-29
----------------------
- Rolled back patch that caused fatal errors in CTools, Feeds, and other modules using the class registry.
- Fixed critical bug with saving default images.
- Fixed fatal errors when uninstalling some modules.
- Added workaround for MySQL transaction support breaking on DDL statments.
- Improved page caching with external caching systems.
- Fix to Batch API, which was terminating too early.
- Numerous upgrade path fixes.
- Performance fixes.
- Additional test coverage.
- Numerous documentation fixes.
Drupal 7.3, 2011-06-29
----------------------
- Fixed security issue (Access bypass), see SA-CORE-2011-002.
Drupal 7.2, 2011-05-25
----------------------
- Added a default .gitignore file.
- Improved PostgreSQL and SQLite support.
- Numerous critical performance improvements.
- Numerous critical fixes to the upgrade path.
- Numerous fixes to language and translation systems.
- Numerous fixes to AJAX and #states systems.
- Improvements to the locking system.
- Numerous documentation fixes.
- Numerous styling and theme system fixes.
- Numerous fixes for schema mis-matches between Drupal 6 and 7.
- Minor internal API clean-ups.
Drupal 7.1, 2011-05-25
----------------------
- Fixed security issues (Cross site scripting, File access bypass), see SA-CORE-2011-001.
Drupal 7.0, 2011-01-05
---------------------- ----------------------
- Database: - Database:
* Fully rewritten database layer utilizing PHP 5's PDO abstraction layer. * Fully rewritten database layer utilizing PHP 5's PDO abstraction layer.
...@@ -103,7 +277,7 @@ Drupal 7.0 beta 2, 2010-10-22 (development version) ...@@ -103,7 +277,7 @@ Drupal 7.0 beta 2, 2010-10-22 (development version)
are available. are available.
- OpenID: - OpenID:
* Added support for Gmail and Google Apps for Domain identifiers. Users can * Added support for Gmail and Google Apps for Domain identifiers. Users can
now login with their user@domain.com identifier when domain.com is powered now login with their user@example.com identifier when example.com is powered
by Google. by Google.
* Made the OpenID module more pluggable. * Made the OpenID module more pluggable.
- Added code registry: - Added code registry:
...@@ -114,13 +288,14 @@ Drupal 7.0 beta 2, 2010-10-22 (development version) ...@@ -114,13 +288,14 @@ Drupal 7.0 beta 2, 2010-10-22 (development version)
on as contributed themes (http://drupal.org/project/bluemarine, on as contributed themes (http://drupal.org/project/bluemarine,
http://drupal.org/project/chameleon and http://drupal.org/project/pushbutton). http://drupal.org/project/chameleon and http://drupal.org/project/pushbutton).
* Added Stark theme to make analyzing Drupal's default HTML and CSS easier. * Added Stark theme to make analyzing Drupal's default HTML and CSS easier.
* Added Seven theme as the default administration interface theme. * Added Seven as the default administration theme.
* Variable preprocessing of theme hooks prior to template rendering now goes * Variable preprocessing of theme hooks prior to template rendering now goes
through two phases: a 'preprocess' phase and a new 'process' phase. See through two phases: a 'preprocess' phase and a new 'process' phase. See
http://api.drupal.org/api/function/theme/7 for details. http://api.drupal.org/api/function/theme/7 for details.
* Theme hooks implemented as functions (rather than as templates) can now * Theme hooks implemented as functions (rather than as templates) can now
also have preprocess (and process) functions. See also have preprocess (and process) functions. See
http://api.drupal.org/api/function/theme/7 for details. http://api.drupal.org/api/function/theme/7 for details.
* Added Bartik as the default theme.
- File handling: - File handling:
* Files are now first class Drupal objects with file_load(), file_save(), * Files are now first class Drupal objects with file_load(), file_save(),
and file_validate() functions and corresponding hooks. and file_validate() functions and corresponding hooks.
...@@ -189,9 +364,9 @@ Drupal 7.0 beta 2, 2010-10-22 (development version) ...@@ -189,9 +364,9 @@ Drupal 7.0 beta 2, 2010-10-22 (development version)
* The translation system now supports message context (msgctxt). * The translation system now supports message context (msgctxt).
* Added support for translatable fields to Field API. * Added support for translatable fields to Field API.
- JavaScript changes - JavaScript changes
* Upgraded the core JavaScript library to jQuery version 1.4.2. * Upgraded the core JavaScript library to jQuery version 1.4.4.
* Upgraded the jQuery Forms library to 2.36. * Upgraded the jQuery Forms library to 2.52.
* Added jQuery UI 1.8, which allows improvements to Drupal's user * Added jQuery UI 1.8.7, which allows improvements to Drupal's user
experience. experience.
- Better module version support - Better module version support
* Modules now can specify which version of another module they depend on. * Modules now can specify which version of another module they depend on.
...@@ -218,6 +393,159 @@ Drupal 7.0 beta 2, 2010-10-22 (development version) ...@@ -218,6 +393,159 @@ Drupal 7.0 beta 2, 2010-10-22 (development version)
* Added a locking framework to coordinate long-running operations across * Added a locking framework to coordinate long-running operations across
requests. requests.
Drupal 6.23-dev, xxxx-xx-xx (development release)
-----------------------
Drupal 6.22, 2011-05-25
-----------------------
- Made Drupal 6 work better with IIS and Internet Explorer.
- Fixed .po file imports to work better with custom textgroups.
- Improved code documentation at various places.
- Fixed a variety of other bugs.
Drupal 6.21, 2011-05-25
----------------------
- Fixed security issues (Cross site scripting), see SA-CORE-2011-001.
Drupal 6.20, 2010-12-15
----------------------
- Fixed a variety of small bugs, improved code documentation.
Drupal 6.19, 2010-08-11
----------------------
- Fixed a variety of small bugs, improved code documentation.
Drupal 6.18, 2010-08-11
----------------------
- Fixed security issues (OpenID authentication bypass, File download access
bypass, Comment unpublishing bypass, Actions cross site scripting),
see SA-CORE-2010-002.
Drupal 6.17, 2010-06-02
----------------------
- Improved PostgreSQL compatibility
- Better PHP 5.3 and PHP 4 compatibility
- Better browser compatibility of CSS and JS aggregation
- Improved logging for login failures
- Fixed an incompatibility with some contributed modules and the locking system
- Fixed a variety of other bugs.
Drupal 6.16, 2010-03-03
----------------------
- Fixed security issues (Installation cross site scripting, Open redirection,
Locale module cross site scripting, Blocked user session regeneration),
see SA-CORE-2010-001.
- Better support for updated jQuery versions.
- Reduced resource usage of update.module.
- Fixed several issues relating to support of install profiles and
distributions.
- Added a locking framework to avoid data corruption on long operations.
- Fixed a variety of other bugs.
Drupal 6.15, 2009-12-16
----------------------
- Fixed security issues (Cross site scripting), see SA-CORE-2009-009.
- Fixed a variety of other bugs.
Drupal 6.14, 2009-09-16
----------------------
- Fixed security issues (OpenID association cross site request forgeries,
OpenID impersonation and File upload), see SA-CORE-2009-008.
- Changed the system modules page to not run all cache rebuilds; use the
button on the performance settings page to achieve the same effect.
- Added support for PHP 5.3.0 out of the box.
- Fixed a variety of small bugs.
Drupal 6.13, 2009-07-01
----------------------
- Fixed security issues (Cross site scripting, Input format access bypass and
Password leakage in URL), see SA-CORE-2009-007.
- Fixed a variety of small bugs.
Drupal 6.12, 2009-05-13
----------------------
- Fixed security issues (Cross site scripting), see SA-CORE-2009-006.
- Fixed a variety of small bugs.
Drupal 6.11, 2009-04-29
----------------------
- Fixed security issues (Cross site scripting and limited information
disclosure), see SA-CORE-2009-005
- Fixed performance issues with the menu router cache, the update
status cache and improved cache invalidation
- Fixed a variety of small bugs.
Drupal 6.10, 2009-02-25
----------------------
- Fixed a security issue, (Local file inclusion on Windows),
see SA-CORE-2009-003
- Fixed node_feed() so custom fields can show up in RSS feeds.
- Improved PostgreSQL compatibility.
- Fixed a variety of small bugs.
Drupal 6.9, 2009-01-14
----------------------
- Fixed security issues, (Access Bypass, Validation Bypass and Hardening
against SQL injection), see SA-CORE-2009-001
- Made HTTP request checking more robust and informative.
- Fixed HTTP_HOST checking to work again with HTTP 1.0 clients and
basic shell scripts.
- Removed t() calls from all schema documentation. Suggested best practice
changed for contributed modules, see http://drupal.org/node/322731.
- Fixed a variety of small bugs.
Drupal 6.8, 2008-12-11
----------------------
- Removed a previous change incompatible with PHP 5.1.x and lower.
Drupal 6.7, 2008-12-10
----------------------
- Fixed security issues, (Cross site request forgery and Cross site scripting), see SA-2008-073
- Updated robots.txt and .htaccess to match current file use.
- Fixed a variety of small bugs.
Drupal 6.6, 2008-10-22
----------------------
- Fixed security issues, (File inclusion, Cross site scripting), see SA-2008-067
- Fixed a variety of small bugs.
Drupal 6.5, 2008-10-08
----------------------
- Fixed security issues, (File upload access bypass, Access rules bypass,
BlogAPI access bypass), see SA-2008-060.
- Fixed a variety of small bugs.
Drupal 6.4, 2008-08-13
----------------------
- Fixed a security issue (Cross site scripting, Arbitrary file uploads via
BlogAPI, Cross site request forgeries and Various Upload module
vulnerabilities), see SA-2008-047.
- Improved error messages during installation.
- Fixed a bug that prevented AHAH handlers to be attached to radios widgets.
- Fixed a variety of small bugs.
Drupal 6.3, 2008-07-09
----------------------
- Fixed security issues, (Cross site scripting, cross site request forgery,
session fixation and SQL injection), see SA-2008-044.
- Slightly modified installation process to prevent file ownership issues on
shared hosts.
- Improved PostgreSQL compatibility (rewritten queries; custom blocks).
- Upgraded to jQuery 1.2.6.
- Performance improvements to search, menu handling and form API caches.
- Fixed Views compatibility issues (Views for Drupal 6 requires Drupal 6.3+).
- Fixed a variety of small bugs.
Drupal 6.2, 2008-04-09
----------------------
- Fixed a variety of small bugs.
- Fixed a security issue (Access bypasses), see SA-2008-026.
Drupal 6.1, 2008-02-27
----------------------
- Fixed a variety of small bugs.
- Fixed a security issue (Cross site scripting), see SA-2008-018.
Drupal 6.0, 2008-02-13 Drupal 6.0, 2008-02-13
---------------------- ----------------------
- New, faster and better menu system. - New, faster and better menu system.
...@@ -320,6 +648,95 @@ Drupal 6.0, 2008-02-13 ...@@ -320,6 +648,95 @@ Drupal 6.0, 2008-02-13
- Removed old system updates. Updates from Drupal versions prior to 5.x will - Removed old system updates. Updates from Drupal versions prior to 5.x will
require upgrading to 5.x before upgrading to 6.x. require upgrading to 5.x before upgrading to 6.x.
Drupal 5.23, 2010-08-11
-----------------------
- Fixed security issues (File download access bypass, Comment unpublishing
bypass), see SA-CORE-2010-002.
Drupal 5.22, 2010-03-03
-----------------------
- Fixed security issues (Open redirection, Locale module cross site scripting,
Blocked user session regeneration), see SA-CORE-2010-001.
Drupal 5.21, 2009-12-16
-----------------------
- Fixed a security issue (Cross site scripting), see SA-CORE-2009-009.
- Fixed a variety of small bugs.
Drupal 5.20, 2009-09-16
-----------------------
- Avoid security problems resulting from writing Drupal 6-style menu
declarations.
- Fixed security issues (session fixation), see SA-CORE-2009-008.
- Fixed a variety of small bugs.
Drupal 5.19, 2009-07-01
-----------------------
- Fixed security issues (Cross site scripting and Password leakage in URL), see
SA-CORE-2009-007.
- Fixed a variety of small bugs.
Drupal 5.18, 2009-05-13
-----------------------
- Fixed security issues (Cross site scripting), see SA-CORE-2009-006.
- Fixed a variety of small bugs.
Drupal 5.17, 2009-04-29
-----------------------
- Fixed security issues (Cross site scripting and limited information
disclosure) see SA-CORE-2009-005.
- Fixed a variety of small bugs.
Drupal 5.16, 2009-02-25
-----------------------
- Fixed a security issue, (Local file inclusion on Windows), see SA-CORE-2009-004.
- Fixed a variety of small bugs.
Drupal 5.15, 2009-01-14
-----------------------
- Fixed security issues, (Hardening against SQL injection), see
SA-CORE-2009-001
- Fixed HTTP_HOST checking to work again with HTTP 1.0 clients and basic shell
scripts.
- Fixed a variety of small bugs.
Drupal 5.14, 2008-12-11
-----------------------
- removed a previous change incompatible with PHP 5.1.x and lower.
Drupal 5.13, 2008-12-10
-----------------------
- fixed a variety of small bugs.
- fixed security issues, (Cross site request forgery and Cross site scripting), see SA-2008-073
- updated robots.txt and .htaccess to match current file use.
Drupal 5.12, 2008-10-22
-----------------------
- fixed security issues, (File inclusion), see SA-2008-067
Drupal 5.11, 2008-10-08
-----------------------
- fixed a variety of small bugs.
- fixed security issues, (File upload access bypass, Access rules bypass,
BlogAPI access bypass, Node validation bypass), see SA-2008-060
Drupal 5.10, 2008-08-13
-----------------------
- fixed a variety of small bugs.
- fixed security issues, (Cross site scripting, Arbitrary file uploads via
BlogAPI and Cross site request forgery), see SA-2008-047
Drupal 5.9, 2008-07-23
----------------------
- fixed a variety of small bugs.
- fixed security issues, (Session fixation), see SA-2008-046
Drupal 5.8, 2008-07-09
----------------------
- fixed a variety of small bugs.
- fixed security issues, (Cross site scripting, cross site request forgery, and
session fixation), see SA-2008-044
Drupal 5.7, 2008-01-28 Drupal 5.7, 2008-01-28
---------------------- ----------------------
- fixed the input format configuration page. - fixed the input format configuration page.
...@@ -736,7 +1153,7 @@ Drupal 4.5.0, 2004-10-18 ...@@ -736,7 +1153,7 @@ Drupal 4.5.0, 2004-10-18
- Filter system: - Filter system:
* Added support for using multiple input formats on the site * Added support for using multiple input formats on the site
* Expanded the embedded PHP-code feature so it can be used everywhere * Expanded the embedded PHP-code feature so it can be used everywhere
* Added support for role-dependant filtering, through input formats * Added support for role-dependent filtering, through input formats
- UI translation: - UI translation:
* Managing translations is now completely done through the administration interface * Managing translations is now completely done through the administration interface
* Added support for importing/exporting gettext .po files * Added support for importing/exporting gettext .po files
......
// $Id: COPYRIGHT.txt,v 1.6 2010/01/02 10:20:21 dries Exp $
All Drupal code is Copyright 2001 - 2010 by the original authors. All Drupal code is Copyright 2001 - 2010 by the original authors.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation. the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
......
// $Id: INSTALL.mysql.txt,v 1.12 2010/01/11 16:25:15 webchick Exp $
CREATE THE MySQL DATABASE CREATE THE MySQL DATABASE
-------------------------- --------------------------
This step is only necessary if you don't already have a database set-up (e.g. by This step is only necessary if you don't already have a database set up (e.g.,
your host). In the following examples, 'username' is an example MySQL user which by your host). In the following examples, 'username' is an example MySQL user
has the CREATE and GRANT privileges. Use the appropriate user name for your which has the CREATE and GRANT privileges. Use the appropriate user name for
system. your system.
First, you must create a new database for your Drupal site (here, 'databasename' First, you must create a new database for your Drupal site (here, 'databasename'
is the name of the new database): is the name of the new database):
...@@ -19,7 +18,7 @@ initial database files. Next you must log in and set the access database rights: ...@@ -19,7 +18,7 @@ initial database files. Next you must log in and set the access database rights:
mysql -u username -p mysql -u username -p
Again, you will be asked for the 'username' database password. At the MySQL Again, you will be asked for the 'username' database password. At the MySQL
prompt, enter following command: prompt, enter the following command:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER
ON databasename.* ON databasename.*
......
// $Id: INSTALL.pgsql.txt,v 1.9 2010/04/07 15:07:58 dries Exp $
CREATE THE PostgreSQL DATABASE CREATE THE PostgreSQL DATABASE
------------------------------ ------------------------------
...@@ -7,38 +6,39 @@ Note that the database must be created with UTF-8 (Unicode) encoding. ...@@ -7,38 +6,39 @@ Note that the database must be created with UTF-8 (Unicode) encoding.
1. CREATE DATABASE USER 1. CREATE DATABASE USER
This step is only necessary if you don't already have a user set up (e.g. This step is only necessary if you don't already have a user set up (e.g., by
by your host) or you want to create new user for use with Drupal only. The your host), or want to create a new user for use with Drupal only. The
following command creates a new user named "username" and asks for a following command creates a new user named 'username' and asks for a password
password for that user: for that user:
createuser --pwprompt --encrypted --no-createrole --no-createdb username createuser --pwprompt --encrypted --no-createrole --no-createdb username
If there are no errors then the command was successful If there are no errors, then the command was successful.
2. CREATE THE DRUPAL DATABASE 2. CREATE DRUPAL DATABASE
This step is only necessary if you don't already have a database set up (e.g. This step is only necessary if you don't already have a database set up
by your host) or you want to create new database for use with Drupal only. (e.g., by your host) or want to create a new database for use with Drupal
The following command creates a new database named "databasename", which is only. The following command creates a new database named 'databasename',
owned by previously created "username": which is owned by the previously created 'username':
createdb --encoding=UTF8 --owner=username databasename createdb --encoding=UTF8 --owner=username databasename
If there are no errors then the command was successful If there are no errors, then the command was successful.
3. CREATE A SCHEMA OR SCHEMAS (Optional advanced) 3. CREATE SCHEMA OR SCHEMAS (Optional advanced step)
Drupal will run across different schemas within your database if you so wish. Drupal will run across different schemas within your database if you so wish.
By default, Drupal runs inside the 'public' schema but you can use $db_prefix By default, Drupal runs inside the 'public' schema but you can use $db_prefix
inside settings.php to define a schema for Drupal to inside of or specify tables inside settings.php to define a schema for Drupal to run inside of, or
that are shared inside of a separate schema. Drupal will not create schemas for specify tables that are shared inside of a separate schema. Drupal will not
you, infact the user that Drupal runs as should not be allowed to. You'll need create schemas for you. In fact, the user that Drupal runs as should not be
execute the SQL below as a superuser (such as a postgres user) and replace allowed to do this. You'll need to execute the SQL below as a superuser,
'drupaluser' with the username that Drupal uses to connect to PostgreSQL with replace 'username' with the username that Drupal uses to connect to
and replace schema_name with a schema name you wish to use such as 'shared': PostgreSQL, and replace 'schema_name' with a schema name you wish to use,
such as 'shared':
CREATE SCHEMA schema_name AUTHORIZATION drupaluser;
CREATE SCHEMA schema_name AUTHORIZATION username;
Do this for as many schemas as you need. See default.settings.php for how to
set which tables use which schemas. Do this for as many schemas as you need. See default.settings.php for
instructions on how to set which tables use which schemas.
// $Id: INSTALL.sqlite.txt,v 1.3 2010/09/01 02:39:57 dries Exp $
SQLITE REQUIREMENTS SQLITE REQUIREMENTS
------------------- -------------------
To use SQLite with your Drupal installation, the following requirements must To use SQLite with your Drupal installation, the following requirements must be
be met: server has PHP 5.2 or later with PDO, and the PDO SQLite driver must met: Server has PHP 5.2 or later with PDO, and the PDO SQLite driver must be
be enabled. enabled.
SQLITE DATABASE CREATION SQLITE DATABASE CREATION
------------------------ ------------------------
The Drupal installer will create the SQLite database for you. The only The Drupal installer will create the SQLite database for you. The only
requirement is the installer must have write permissions the directory where requirement is that the installer must have write permissions to the directory
the database file resides. This directory (not just the database file) also has where the database file resides. This directory (not just the database file) also
to remain writeable by the web server going forward for SQLite to continue to be has to remain writeable by the web server going forward for SQLite to continue to
able to operate. be able to operate.
On the "Database configuration" form in the "Database name" field, you must On the "Database configuration" form in the "Database file" field, you must
supply the exact path to where you wish your database file to reside. It is supply the exact path to where you wish your database file to reside. It is
strongly suggested that you choose a path that is outside of the webroot, yet strongly suggested that you choose a path that is outside of the webroot, yet
ensure that the directory is writeable by the web server. ensure that the directory is writeable by the web server.
If you must place your database file in your webroot, you could try using the If you must place your database file in your webroot, you could try using the
following in your "Database name" field: following in your "Database file" field:
sites/default/files/.ht.sqlite sites/default/files/.ht.sqlite
...@@ -30,8 +29,3 @@ Note: The .ht in the name will tell Apache to prevent the database from being ...@@ -30,8 +29,3 @@ Note: The .ht in the name will tell Apache to prevent the database from being
downloaded. Please check that the file is, indeed, protected by your webserver. downloaded. Please check that the file is, indeed, protected by your webserver.
If not, please consult the documentation of your webserver on how to protect a If not, please consult the documentation of your webserver on how to protect a
file from downloading. file from downloading.
USERNAME, PASSWORD, and ADVANCED OPTIONS
----------------------------------------
No username, password, or advanced options are necessary, and they should not be
used.
This diff is collapsed.
// $Id: LICENSE.txt,v 1.7 2009/01/26 14:08:40 dries Exp $
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
Version 2, June 1991 Version 2, June 1991
......
// $Id: MAINTAINERS.txt,v 1.48 2010/09/30 13:28:08 dries Exp $
Drupal core is maintained by the community. To participate, go to
http://drupal.org/contribute
The people listed here have agreed to do more quality assurance work for
particular areas of Drupal. All of them are subject to change.
Drupal core is built and maintained by the Drupal project community. Everyone is
encouraged to submit issues and changes (patches) to improve Drupal, and to
contribute in other ways -- see http://drupal.org/contribute to find out how.
Branch maintainers Branch maintainers
------------------ ------------------
Drupal 7 The Drupal Core branch maintainers oversee the development of Drupal as a whole.
The branch maintainers for Drupal 7 are:
- Dries Buytaert 'dries' <http://drupal.org/user/1> - Dries Buytaert 'dries' <http://drupal.org/user/1>
- Angela Byron 'webchick' <http://drupal.org/user/24967> - Angela Byron 'webchick' <http://drupal.org/user/24967>
...@@ -19,7 +16,12 @@ Drupal 7 ...@@ -19,7 +16,12 @@ Drupal 7
Component maintainers Component maintainers
--------------------- ---------------------
AJAX system The Drupal Core component maintainers oversee the development of Drupal
subsystems. See http://drupal.org/contribute/core-maintainers for more
information on their responsibilities, and to find out how to become a component
maintainer. Current component maintainers for Drupal 7:
Ajax system
- Alex Bronstein 'effulgentsia' <http://drupal.org/user/78040> - Alex Bronstein 'effulgentsia' <http://drupal.org/user/78040>
- Randy Fay 'rfay' <http://drupal.org/user/30906> - Randy Fay 'rfay' <http://drupal.org/user/30906>
- Earl Miles 'merlinofchaos' <http://drupal.org/user/26979> - Earl Miles 'merlinofchaos' <http://drupal.org/user/26979>
...@@ -34,6 +36,7 @@ Batch system ...@@ -34,6 +36,7 @@ Batch system
Cache system Cache system
- Damien Tournoud 'DamZ' <http://drupal.org/user/22211> - Damien Tournoud 'DamZ' <http://drupal.org/user/22211>
- Nathaniel Catchpole 'catch' <http://drupal.org/user/35733>
Cron system Cron system
- Károly Négyesi 'chx' <http://drupal.org/user/9446> - Károly Négyesi 'chx' <http://drupal.org/user/9446>
...@@ -44,7 +47,7 @@ Database system ...@@ -44,7 +47,7 @@ Database system
- MySQL driver - MySQL driver
- Larry Garfield 'Crell' <http://drupal.org/user/26398> - Larry Garfield 'Crell' <http://drupal.org/user/26398>
- David Strauss 'David Strauss' <hhttp://drupal.org/user/93254> - David Strauss 'David Strauss' <http://drupal.org/user/93254>
- PostgreSQL driver - PostgreSQL driver
- Damien Tournoud 'DamZ' <http://drupal.org/user/22211> - Damien Tournoud 'DamZ' <http://drupal.org/user/22211>
...@@ -54,6 +57,9 @@ Database system ...@@ -54,6 +57,9 @@ Database system
- Damien Tournoud 'DamZ' <http://drupal.org/user/22211> - Damien Tournoud 'DamZ' <http://drupal.org/user/22211>
- Károly Négyesi 'chx' <http://drupal.org/user/9446> - Károly Négyesi 'chx' <http://drupal.org/user/9446>
Database update system
- Károly Négyesi 'chx' <http://drupal.org/user/9446>
Entity system Entity system
- Nathaniel Catchpole 'catch' <http://drupal.org/user/35733> - Nathaniel Catchpole 'catch' <http://drupal.org/user/35733>
- Franz Heinzmann 'Frando' <http://drupal.org/user/21850> - Franz Heinzmann 'Frando' <http://drupal.org/user/21850>
...@@ -90,7 +96,7 @@ Mail system ...@@ -90,7 +96,7 @@ Mail system
- ? - ?
Markup Markup
- Jacine Rodriguez 'Jacine' <http://drupal.org/user/88931> - Jacine Luisi 'Jacine' <http://drupal.org/user/88931>
- Daniel F. Kudwien 'sun' <http://drupal.org/user/54136> - Daniel F. Kudwien 'sun' <http://drupal.org/user/54136>
Menu system Menu system
...@@ -110,13 +116,11 @@ Theme system ...@@ -110,13 +116,11 @@ Theme system
- Earl Miles 'merlinofchaos' <http://drupal.org/user/26979> - Earl Miles 'merlinofchaos' <http://drupal.org/user/26979>
- Alex Bronstein 'effulgentsia' <http://drupal.org/user/78040> - Alex Bronstein 'effulgentsia' <http://drupal.org/user/78040>
- Joon Park 'dvessel' <http://drupal.org/user/56782> - Joon Park 'dvessel' <http://drupal.org/user/56782>
- John Albin Wilkins 'JohnAlbin' <http://drupal.org/user/32095>
Token system Token system
- Dave Reid 'davereid' <http://drupal.org/user/53892> - Dave Reid 'davereid' <http://drupal.org/user/53892>
Update system
- ?
XML-RPC system XML-RPC system
- Frederic G. Marand 'fgm' <http://drupal.org/user/27985> - Frederic G. Marand 'fgm' <http://drupal.org/user/27985>
...@@ -129,7 +133,6 @@ Accessibility ...@@ -129,7 +133,6 @@ Accessibility
- Brandon Bowersox 'brandonojc' <http://drupal.org/user/186415> - Brandon Bowersox 'brandonojc' <http://drupal.org/user/186415>
Documentation Documentation
- Addison Berry 'add1sun' <http://drupal.org/user/65088>
- Jennifer Hodgdon 'jhodgdon' <http://drupal.org/user/155601> - Jennifer Hodgdon 'jhodgdon' <http://drupal.org/user/155601>
Security Security
...@@ -150,7 +153,7 @@ Aggregator module ...@@ -150,7 +153,7 @@ Aggregator module
- ? - ?
Block module Block module
- ? - John Albin Wilkins 'JohnAlbin' <http://drupal.org/user/32095>
Blog module Blog module
- ? - ?
...@@ -190,7 +193,7 @@ Filter module ...@@ -190,7 +193,7 @@ Filter module
- Daniel F. Kudwien 'sun' <http://drupal.org/user/54136> - Daniel F. Kudwien 'sun' <http://drupal.org/user/54136>
Forum module Forum module
- ? - Lee Rowlands 'larowlan' <http://drupal.org/user/395439>
Help module Help module
- ? - ?
...@@ -209,6 +212,7 @@ Node module ...@@ -209,6 +212,7 @@ Node module
- David Strauss 'David Strauss' <http://drupal.org/user/93254> - David Strauss 'David Strauss' <http://drupal.org/user/93254>
OpenID module OpenID module
- Vojtech Kusy 'wojtha' <http://drupal.org/user/56154>
- Heine Deelstra 'Heine' <http://drupal.org/user/17943> - Heine Deelstra 'Heine' <http://drupal.org/user/17943>
- Christian Schmidt 'c960657' <http://drupal.org/user/216078> - Christian Schmidt 'c960657' <http://drupal.org/user/216078>
- Damien Tournoud 'DamZ' <http://drupal.org/user/22211> - Damien Tournoud 'DamZ' <http://drupal.org/user/22211>
...@@ -236,6 +240,7 @@ Search module ...@@ -236,6 +240,7 @@ Search module
Shortcut module Shortcut module
- David Rothstein 'David_Rothstein' <http://drupal.org/user/124982> - David Rothstein 'David_Rothstein' <http://drupal.org/user/124982>
- Kristof De Jaeger 'swentel' <http://drupal.org/user/107403>
Simpletest module Simpletest module
- Jimmy Berry 'boombatower' <http://drupal.org/user/214218> - Jimmy Berry 'boombatower' <http://drupal.org/user/214218>
...@@ -251,6 +256,7 @@ System module ...@@ -251,6 +256,7 @@ System module
- ? - ?
Taxonomy module Taxonomy module
- Jess Myrbo 'xjm' <http://drupal.org/user/65776>
- Nathaniel Catchpole 'catch' <http://drupal.org/user/35733> - Nathaniel Catchpole 'catch' <http://drupal.org/user/35733>
- Benjamin Doherty 'bangpound' <http://drupal.org/user/100456> - Benjamin Doherty 'bangpound' <http://drupal.org/user/100456>
...@@ -268,7 +274,6 @@ Trigger module ...@@ -268,7 +274,6 @@ Trigger module
Update module Update module
- Derek Wright 'dww' <http://drupal.org/user/46549> - Derek Wright 'dww' <http://drupal.org/user/46549>
- Dave Reid 'davereid' <http://drupal.org/user/53892>
User module User module
- Moshe Weitzman 'moshe weitzman' <http://drupal.org/user/23> - Moshe Weitzman 'moshe weitzman' <http://drupal.org/user/23>
...@@ -283,11 +288,10 @@ Bartik theme ...@@ -283,11 +288,10 @@ Bartik theme
- Jeff Burns 'Jeff Burnz' <http://drupal.org/user/61393> - Jeff Burns 'Jeff Burnz' <http://drupal.org/user/61393>
Garland theme Garland theme
- ? - John Albin Wilkins 'JohnAlbin' <http://drupal.org/user/32095>
Seven theme Seven theme
- Jeff Burns 'Jeff Burnz' <http://drupal.org/user/61393> - Jeff Burns 'Jeff Burnz' <http://drupal.org/user/61393>
Stark theme Stark theme
- John Wilkins 'JohnAlbin' <http://drupal.org/user/32095> - John Albin Wilkins 'JohnAlbin' <http://drupal.org/user/32095>
/*****************************************************
* Install Issues:
*/
Can't create a new site with Drush/UNL Cron if pdo_pgsql is enabled
* http://gforge.unl.edu/gf/project/wdn_thm_drupal/tracker/?action=TrackerItemEdit&tracker_item_id=987
* If pdo_pgsql is enabled on the php install that is running drush/unl cron then it will fail without modification.
* Adding the following junk values for pgsql solves the problem at line 414 (D7.10) of install_run_task inside install.core.inc
$form_state['values']['pgsql']['username'] = 'xxxx'; //add this
$form_state['values']['pgsql']['database'] = 'xxxx'; //add this
drupal_form_submit($function, $form_state); //existing code
$errors = form_get_errors(); //existing code
/*****************************************************
* Hacks of Core:
*/
includes/bootstrap.inc
function drupal_settings_initialize()
* UNL change: include a "global" settings file that applies to all sites.
function conf_path()
* UNL change: Add $default_domains array support for sites.php to list which domains are ok to use with 'unl.edu.*' site_dirs.
If no $default_domains array is defined in sites.php, this code will do nothing.
------------------------------------
includes/bootstrap.inc
* Fix so that drupal_serve_page_from_cache() won't override a cached Vary header.
* http://drupal.org/node/1321086
------------------------------------
rewrite.php
* Used to allow public files to be accessed without the sites/<site_dir>/files prefix
------------------------------------
sites/sites.php
* Added support for $default_domains array. See includes/bootstrap.inc conf_path().
------------------------------------
sites/example.sites.php
* Added an example of the $default_domains array.
* Added the stub record needed for creating site aliases.
------------------------------------
modules/image/image.field.inc
* theme_image_formatter ignores attributes so classes can't be added to an image in a theme (needed for photo frame)
* http://drupal.org/node/1025796#comment-4298698
* http://drupal.org/files/issues/1025796.patch
/*****************************************************
* Hacks of Contrib modules:
*/
drush/commands/core/drupal/site_install.inc
function drush_core_site_install_version()
* UNL change! Setting this to FALSE because we don't want them and they're hard coded.
------------------------------------
drush/commands/core/site_install.drush.inc
function drush_core_pre_site_install()
* UNL change: Inserted a return before code that would otherwise drop the entire database.
------------------------------------
drush/includes/environment.inc
* Fix so that drush pulls in the correct uri parameter.
* http://drupal.org/node/1331106
------------------------------------
form_builder/modules/webform/form_builder_webform.module
* In form_builder_webform_components_page() load jquery.ui.datepicker.min.js so the Date element will work on a new form that does not have ui.datepicker loaded
* http://drupal.org/node/1307838
------------------------------------
Add Trigger Support Patch to Workbench Moderation
* Trigger support not in 7.x-1.1
* http://drupal.org/files/issues/trigger_support_for_wb_moderation-1079134-23.patch
* from http://drupal.org/node/1079134
* Don't upgrade WB Moderation without first applying this patch unless the new version supports Triggers
Fix broken books in Workbench Moderation
* mode in workbench_moderation.module in workbench_moderation_node_presave()
* http://drupal.org/node/1505060
------------------------------------
wysiwyg/editors/js/tinymce-3.js
* Comment out the part that switches wrappers from table-based to div. We need the original TinyMCE code for the PDW toggle plugin to work
CONTENTS OF THIS FILE
---------------------
* About Drupal
* Configuration and features
* Appearance
* Developing for Drupal
ABOUT DRUPAL
------------
Drupal is an open source content management platform supporting a variety of
websites ranging from personal weblogs to large community-driven websites. For
more information, see the Drupal website at http://drupal.org/, and join the
Drupal community at http://drupal.org/community.
Legal information about Drupal:
* Know your rights when using Drupal:
See LICENSE.txt in the same directory as this document.
* Learn about the Drupal trademark and logo policy:
http://drupal.com/trademark
CONFIGURATION AND FEATURES
--------------------------
Drupal core (what you get when you download and extract a drupal-x.y.tar.gz or
drupal-x.y.zip file from http://drupal.org/project/drupal) has what you need to
get started with your website. It includes several modules (extensions that add
functionality) for common website features, such as managing content, user
accounts, image uploading, and search. Core comes with many options that allow
site-specific configuration. In addition to the core modules, there are
thousands of contributed modules (for functionality not included with Drupal
core) available for download.
More about configuration:
* Install, upgrade, and maintain Drupal:
See INSTALL.txt and UPGRADE.txt in the same directory as this document.
* Learn about how to use Drupal to create your site:
http://drupal.org/documentation
* Download contributed modules to sites/all/modules to extend Drupal's
functionality:
http://drupal.org/project/modules
* See also: "Developing for Drupal" for writing your own modules, below.
APPEARANCE
----------
In Drupal, the appearance of your site is set by the theme (themes are
extensions that set fonts, colors, and layout). Drupal core comes with several
themes. More themes are available for download, and you can also create your own
custom theme.
More about themes:
* Download contributed themes to sites/all/themes to modify Drupal's
appearance:
http://drupal.org/project/themes
* Develop your own theme:
http://drupal.org/documentation/theme
DEVELOPING FOR DRUPAL
---------------------
Drupal contains an extensive API that allows you to add to and modify the
functionality of your site. The API consists of "hooks", which allow modules to
react to system events and customize Drupal's behavior, and functions that
standardize common operations such as database queries and form generation. The
flexible hook architecture means that you should never need to directly modify
the files that come with Drupal core to achieve the functionality you want;
instead, functionality modifications take the form of modules.
When you need new functionality for your Drupal site, search for existing
contributed modules. If you find a module that matches except for a bug or an
additional needed feature, change the module and contribute your improvements
back to the project in the form of a "patch". Create new custom modules only
when nothing existing comes close to what you need.
More about developing:
* Search for existing contributed modules:
http://drupal.org/project/modules
* Contribute a patch:
http://drupal.org/patch/submit
* Develop your own module:
http://drupal.org/developing/modules
* Follow best practices:
http://drupal.org/best-practices
* Refer to the API documentation:
http://api.drupal.org/api/drupal/7
// $Id: UPGRADE.txt,v 1.26 2010/10/22 00:31:59 dries Exp $
INTRODUCTION INTRODUCTION
------------ ------------
This document describes how to: This document describes how to:
* Update your Drupal site from one minor 7.x version to another minor 7.x * Update your Drupal site from one minor 7.x version to another minor 7.x
version; for example, from 7.9 to 7.10. version; for example, from 7.8 to 7.9, or from 7.6 to 7.10.
* Upgrade your Drupal site's major version from 6.x to 7.x. * Upgrade your Drupal site's major version from 6.x to 7.x.
...@@ -13,18 +11,24 @@ First steps and definitions: ...@@ -13,18 +11,24 @@ First steps and definitions:
* If you are upgrading to Drupal version x.y, then x is known as the major * If you are upgrading to Drupal version x.y, then x is known as the major
version number, and y is known as the minor version number. The download version number, and y is known as the minor version number. The download
file will be named drupal-x.y.tar.gz. file will be named drupal-x.y.tar.gz (or drupal-x.y.zip).
* The "Don't hack core" principle is respected. If you modified core files
outside of the 'sites' directory, see http://drupal.org/node/144376.
* All directories mentioned in this document are always relative to the * All directories mentioned in this document are relative to the directory of
directory of your Drupal installation. your Drupal installation.
* Make a full backup of all files, directories, and your database(s) before * Make a full backup of all files, directories, and your database(s) before
starting. Instructions may be found at starting, and save it outside your Drupal installation directory.
http://drupal.org/upgrade/backing-up-the-db Instructions may be found at http://drupal.org/upgrade/backing-up-the-db
* It is wise to try an update or upgrade on a test copy of your site before
applying it to your live site. Even minor updates can cause your site's
behavior to change.
* Each new release of Drupal has release notes, which explain the changes made
since the previous version and any special instructions needed to update or
upgrade to the new version. You can find a link to the release notes for the
version you are upgrading or updating to on the Drupal project page
(http://drupal.org/project/drupal).
UPGRADE PROBLEMS UPGRADE PROBLEMS
---------------- ----------------
...@@ -36,29 +40,40 @@ If you encounter errors during this process, ...@@ -36,29 +40,40 @@ If you encounter errors during this process,
you created before you started the upgrade process. Do not attempt to do you created before you started the upgrade process. Do not attempt to do
further upgrades on a site that had update problems. further upgrades on a site that had update problems.
* Consult one of the support options listed on http://drupal.org/support. * Consult one of the support options listed on http://drupal.org/support
More in-depth information on upgrading can be found at http://drupal.org/upgrade More in-depth information on upgrading can be found at http://drupal.org/upgrade
MINOR VERSION UPDATES MINOR VERSION UPDATES
--------------------- ---------------------
To update from one minor 7.x version of Drupal to another 7.x version, after To update from one minor 7.x version of Drupal to any later 7.x version, after
following the instructions in the INTRODUCTION section at the top of this file: following the instructions in the INTRODUCTION section at the top of this file:
1. Log in as a user with the permission "Administer software updates". 1. Log in as a user with the permission "Administer software updates".
IMPORTANT! Do not close your browser until the final step is complete.
2. Go to Administer » Configuration » Development » Maintenance mode. 2. Go to Administration > Configuration > Development > Maintenance mode.
Enable the "Put site into maintenance mode" checkbox and save the Enable the "Put site into maintenance mode" checkbox and save the
configuration. configuration.
3. Remove all old core files and directories, EXCEPT for the 'sites' directory 3. Remove all old core files and directories, except for the 'sites' directory
and any custom files you added elsewhere. and any custom files you added elsewhere.
If you made modifications to files like .htaccess or robots.txt, you will If you made modifications to files like .htaccess or robots.txt, you will
need to re-apply them from your backup, after the new files are in place. need to re-apply them from your backup, after the new files are in place.
Sometimes an update includes changes to default.settings.php (this will be
noted in the release notes). If that's the case, follow these steps:
- Make a backup copy of your settings.php file, with a different file name.
- Make a copy of the new default.settings.php file, and name the copy
settings.php (overwriting your previous settings.php file).
- Copy the custom and site-specific entries from the backup you made into the
new settings.php file. You will definitely need the lines giving the
database information, and you will also want to copy in any other
customizations you have added.
4. Download the latest Drupal 7.x release from http://drupal.org to a 4. Download the latest Drupal 7.x release from http://drupal.org to a
directory outside of your web root. Extract the archive and copy the files directory outside of your web root. Extract the archive and copy the files
into your Drupal directory. into your Drupal directory.
...@@ -88,7 +103,7 @@ following the instructions in the INTRODUCTION section at the top of this file: ...@@ -88,7 +103,7 @@ following the instructions in the INTRODUCTION section at the top of this file:
- Open settings.php with a text editor. - Open settings.php with a text editor.
- There is a line that says: - Find the line that says:
$update_free_access = FALSE; $update_free_access = FALSE;
- Change it into: - Change it into:
...@@ -96,63 +111,72 @@ following the instructions in the INTRODUCTION section at the top of this file: ...@@ -96,63 +111,72 @@ following the instructions in the INTRODUCTION section at the top of this file:
- Once the upgrade is done, $update_free_access must be reverted to FALSE. - Once the upgrade is done, $update_free_access must be reverted to FALSE.
7. Go to Administration » Reports » Status report. Verify that everything is 7. Go to Administration > Reports > Status report. Verify that everything is
is working as expected. working as expected.
8. Ensure that $update_free_access is FALSE in settings.php. 8. Ensure that $update_free_access is FALSE in settings.php.
9. Go to Administration » Configuration » Development » Maintenance mode. 9. Go to Administration > Configuration > Development > Maintenance mode.
Disable the "Put site into maintenance mode" checkbox and save the Disable the "Put site into maintenance mode" checkbox and save the
configuration. configuration.
MAJOR VERSION UPGRADE MAJOR VERSION UPGRADE
--------------------- ---------------------
To upgrade from a previous major version of Drupal to Drupal 7.x, after To upgrade from a previous major version of Drupal to Drupal 7.x, after
following the instructions in the INTRODUCTION section at the top of this file: following the instructions in the INTRODUCTION section at the top of this file:
1. Update to the latest available version of Drupal 6.x. 1. Check on the Drupal 7 status of your contributed and custom modules and
themes. See http://drupal.org/node/948216 for information on upgrading
contributed modules and themes. See http://drupal.org/node/895314 for a list
of modules that have been moved into core for Drupal 7, and instructions on
how to update them. See http://drupal.org/update/modules for information on
how to update your custom modules, and http://drupal.org/update/theme for
custom themes.
You may decide at this point that you cannot upgrade your site, because
needed modules or themes are not ready for Drupal 7.
If your current version is Drupal 5.x, you have to upgrade to 6.x first. 2. Update to the latest available version of Drupal 6.x (if your current version
Download Drupal 6.x and follow the instructions in UPGRADE.txt instead. is Drupal 5.x, you have to upgrade to 6.x first). If you need to update,
This document only applies for upgrades from 6.x to 7.x. download Drupal 6.x and follow the instructions in its UPGRADE.txt. This
document only applies for upgrades from 6.x to 7.x.
2. Check the availability of your modules and themes for Drupal 7.x. See 3. In addition to updating to the latest available version of Drupal 7.x core,
http://drupal.org/node/948216 you must also upgrade all of your contributed modules for Drupal to their
latest Drupal 6.x versions.
3. Log in as user ID 1 (the site maintenance user). 4. Log in as user ID 1 (the site maintenance user).
4. Go to Administer » Site configuration » Site maintenance. Select "Off-line" 5. Go to Administer > Site configuration > Site maintenance. Select
and save the configuration. "Off-line" and save the configuration.
5. Go to Administer » Site building » Themes. Enable "Garland" and select it as 6. Go to Administer > Site building > Themes. Enable "Garland" and select it as
default theme. the default theme.
6. Go to Administer » Site building » Modules. Disable all modules that are not 7. Go to Administer > Site building > Modules. Disable all modules that are not
listed under "Core - required" or "Core - optional". It is possible that some listed under "Core - required" or "Core - optional". It is possible that some
modules cannot be disabled, because others depend on them. Repeat this step modules cannot be disabled, because others depend on them. Repeat this step
until all non-core modules are disabled. until all non-core modules are disabled.
In case you already know that you will not re-enable some modules for Drupal If you know that you will not re-enable some modules for Drupal 7.x and you
7.x and you no longer need their data, then you can uninstall them under the no longer need their data, then you can uninstall them under the Uninstall
Uninstall tab afterwards. See http://drupal.org/node/895314 for a list of tab after disabling them.
modules whose functionality has been moved into core for Drupal 7.x.
7. On the command line or in your FTP client, remove the file 8. On the command line or in your FTP client, remove the file
sites/default/default.settings.php sites/default/default.settings.php
8. Remove all old core files and directories, EXCEPT for the 'sites' directory 9. Remove all old core files and directories, except for the 'sites' directory
and any custom files you added elsewhere. and any custom files you added elsewhere.
If you made modifications to files like .htaccess or robots.txt, you will If you made modifications to files like .htaccess or robots.txt, you will
need to re-apply them from your backup, after the new files are in place. need to re-apply them from your backup, after the new files are in place.
9. If you uninstalled any modules, remove them from the sites/all/modules and 10. If you uninstalled any modules, remove them from the sites/all/modules and
other sites/*/modules directories. Leave other modules in place, even though other sites/*/modules directories. Leave other modules in place, even though
they are incompatible with Drupal 7.x. they are incompatible with Drupal 7.x.
10. Download the latest Drupal 7.x release from http://drupal.org to a 11. Download the latest Drupal 7.x release from http://drupal.org to a
directory outside of your web root. Extract the archive and copy the files directory outside of your web root. Extract the archive and copy the files
into your Drupal directory. into your Drupal directory.
...@@ -171,14 +195,14 @@ following the instructions in the INTRODUCTION section at the top of this file: ...@@ -171,14 +195,14 @@ following the instructions in the INTRODUCTION section at the top of this file:
from http://drupal.org using your web browser, extract it, and then use an from http://drupal.org using your web browser, extract it, and then use an
FTP client to upload the files to your web root. FTP client to upload the files to your web root.
11. Re-apply any modifications to files such as .htaccess or robots.txt. 12. Re-apply any modifications to files such as .htaccess or robots.txt.
12. Make your settings.php file writeable, so that the update process can 13. Make your settings.php file writeable, so that the update process can
convert it to the format of Drupal 7.x. settings.php is usually located in convert it to the format of Drupal 7.x. settings.php is usually located in
sites/default/settings.php sites/default/settings.php
13. Run update.php by visiting http://www.example.com/update.php (replace 14. Run update.php by visiting http://www.example.com/update.php (replace
www.example.com with your domain name). This will update the core database www.example.com with your domain name). This will update the core database
tables. tables.
...@@ -186,7 +210,7 @@ following the instructions in the INTRODUCTION section at the top of this file: ...@@ -186,7 +210,7 @@ following the instructions in the INTRODUCTION section at the top of this file:
- Open settings.php with a text editor. - Open settings.php with a text editor.
- There is a line that says: - Find the line that says:
$update_free_access = FALSE; $update_free_access = FALSE;
- Change it into: - Change it into:
...@@ -194,30 +218,19 @@ following the instructions in the INTRODUCTION section at the top of this file: ...@@ -194,30 +218,19 @@ following the instructions in the INTRODUCTION section at the top of this file:
- Once the upgrade is done, $update_free_access must be reverted to FALSE. - Once the upgrade is done, $update_free_access must be reverted to FALSE.
14. Backup your database after the core upgrade has run. 15. Backup your database after the core upgrade has run.
15. Replace your non-core modules, following this procedure:
- Check your notes for any special upgrade instructions.
- Entirely delete the old module directory in sites/all/modules/.
- Download, extract, and move the new module directory to sites/all/modules/.
16. Go to Administration » Modules. Re-enable your non-core modules. 16. Replace and update your non-core modules and themes, following the
procedures at http://drupal.org/node/948216
17. Re-run update.php. 17. Go to Administration > Reports > Status report. Verify that everything is
working as expected.
18. If applicable, return the site to its original theme following the same 18. Ensure that $update_free_access is FALSE in settings.php.
procedure as in 15., but putting the theme in sites/all/themes/.
19. Go to Administration » Reports » Status report. Verify that everything is 19. Go to Administration > Configuration > Development > Maintenance mode.
is working as expected.
20. Ensure that $update_free_access is FALSE in settings.php.
21. Go to Administration » Configuration » Development » Maintenance mode.
Disable the "Put site into maintenance mode" checkbox and save the Disable the "Put site into maintenance mode" checkbox and save the
configuration. configuration.
To get started with Drupal 7 administration, visit To get started with Drupal 7 administration, visit
http://drupal.org/getting-started/7/admin http://drupal.org/getting-started/7/admin
<?php <?php
// $Id: authorize.php,v 1.8 2010/04/22 10:16:24 webchick Exp $
/** /**
* @file * @file
...@@ -36,7 +35,7 @@ define('DRUPAL_ROOT', getcwd()); ...@@ -36,7 +35,7 @@ define('DRUPAL_ROOT', getcwd());
define('MAINTENANCE_MODE', 'update'); define('MAINTENANCE_MODE', 'update');
/** /**
* Render a 403 access denied page for authorize.php * Renders a 403 access denied page for authorize.php.
*/ */
function authorize_access_denied_page() { function authorize_access_denied_page() {
drupal_add_http_header('Status', '403 Forbidden'); drupal_add_http_header('Status', '403 Forbidden');
...@@ -46,7 +45,7 @@ function authorize_access_denied_page() { ...@@ -46,7 +45,7 @@ function authorize_access_denied_page() {
} }
/** /**
* Determine if the current user is allowed to run authorize.php. * Determines if the current user is allowed to run authorize.php.
* *
* The killswitch in settings.php overrides all else, otherwise, the user must * The killswitch in settings.php overrides all else, otherwise, the user must
* have access to the 'administer software updates' permission. * have access to the 'administer software updates' permission.
...@@ -75,7 +74,7 @@ drupal_bootstrap(DRUPAL_BOOTSTRAP_SESSION); ...@@ -75,7 +74,7 @@ drupal_bootstrap(DRUPAL_BOOTSTRAP_SESSION);
global $conf; global $conf;
// We have to enable the user and system modules, even to check access and // We have to enable the user and system modules, even to check access and
// display errors via the maintainence theme. // display errors via the maintenance theme.
$module_list['system']['filename'] = 'modules/system/system.module'; $module_list['system']['filename'] = 'modules/system/system.module';
$module_list['user']['filename'] = 'modules/user/user.module'; $module_list['user']['filename'] = 'modules/user/user.module';
module_list(TRUE, FALSE, FALSE, $module_list); module_list(TRUE, FALSE, FALSE, $module_list);
...@@ -113,7 +112,7 @@ if (authorize_access_allowed()) { ...@@ -113,7 +112,7 @@ if (authorize_access_allowed()) {
} }
if (isset($_SESSION['authorize_operation']['page_title'])) { if (isset($_SESSION['authorize_operation']['page_title'])) {
drupal_set_title(check_plain($_SESSION['authorize_operation']['page_title'])); drupal_set_title($_SESSION['authorize_operation']['page_title']);
} }
else { else {
drupal_set_title(t('Authorize file system changes')); drupal_set_title(t('Authorize file system changes'));
...@@ -125,10 +124,10 @@ if (authorize_access_allowed()) { ...@@ -125,10 +124,10 @@ if (authorize_access_allowed()) {
// Clear the session out. // Clear the session out.
unset($_SESSION['authorize_results']); unset($_SESSION['authorize_results']);
unset($_SESSION['authorize_operation']); unset($_SESSION['authorize_operation']);
unset($_SESSION['authorize_filetransfer_backends']); unset($_SESSION['authorize_filetransfer_info']);
if (!empty($results['page_title'])) { if (!empty($results['page_title'])) {
drupal_set_title(check_plain($results['page_title'])); drupal_set_title($results['page_title']);
} }
if (!empty($results['page_message'])) { if (!empty($results['page_message'])) {
drupal_set_message($results['page_message']['message'], $results['page_message']['type']); drupal_set_message($results['page_message']['message'], $results['page_message']['type']);
...@@ -140,20 +139,21 @@ if (authorize_access_allowed()) { ...@@ -140,20 +139,21 @@ if (authorize_access_allowed()) {
if (is_array($results['tasks'])) { if (is_array($results['tasks'])) {
$links += $results['tasks']; $links += $results['tasks'];
} }
else {
$links = array_merge($links, array( $links = array_merge($links, array(
l(t('Administration pages'), 'admin'), l(t('Administration pages'), 'admin'),
l(t('Front page'), '<front>'), l(t('Front page'), '<front>'),
)); ));
}
$output .= theme('item_list', array('items' => $links)); $output .= theme('item_list', array('items' => $links, 'title' => t('Next steps')));
} }
// If a batch is running, let it run. // If a batch is running, let it run.
elseif (isset($_GET['batch'])) { elseif (isset($_GET['batch'])) {
$output = _batch_page(); $output = _batch_page();
} }
else { else {
if (empty($_SESSION['authorize_operation']) || empty($_SESSION['authorize_filetransfer_backends'])) { if (empty($_SESSION['authorize_operation']) || empty($_SESSION['authorize_filetransfer_info'])) {
$output = t('It appears you have reached this page in error.'); $output = t('It appears you have reached this page in error.');
} }
elseif (!$batch = batch_get()) { elseif (!$batch = batch_get()) {
...@@ -172,4 +172,3 @@ else { ...@@ -172,4 +172,3 @@ else {
if (!empty($output)) { if (!empty($output)) {
print theme('update_page', array('content' => $output, 'show_messages' => $show_messages)); print theme('update_page', array('content' => $output, 'show_messages' => $show_messages));
} }
<?php <?php
// $Id: cron.php,v 1.43 2009/11/02 03:30:49 webchick Exp $
/** /**
* @file * @file
......
#
# robots.txt
#
# This file is to prevent the crawling and indexing of certain parts
# of your site by web crawlers and spiders run by sites like Yahoo!
# and Google. By telling these "robots" where not to go on your site,
# you save bandwidth and server resources.
#
# This file will be ignored unless it is at the root of your host:
# Used: http://example.com/robots.txt
# Ignored: http://example.com/site/robots.txt
#
# For more information about the robots.txt standard, see:
# http://www.robotstxt.org/wc/robots.html
#
# For syntax checking, see:
# http://www.sxw.org.uk/computing/robots/check.html
User-agent: *
Crawl-delay: 10
# Directories
Disallow: /includes/
Disallow: /misc/
Disallow: /modules/
Disallow: /profiles/
Disallow: /scripts/
Disallow: /themes/
# Files
Disallow: /CHANGELOG.txt
Disallow: /cron.php
Disallow: /INSTALL.mysql.txt
Disallow: /INSTALL.pgsql.txt
Disallow: /INSTALL.sqlite.txt
Disallow: /install.php
Disallow: /INSTALL.txt
Disallow: /LICENSE.txt
Disallow: /MAINTAINERS.txt
Disallow: /update.php
Disallow: /UPGRADE.txt
Disallow: /xmlrpc.php
# Paths (clean URLs)
Disallow: /admin/
Disallow: /comment/reply/
Disallow: /filter/tips/
Disallow: /node/add/
Disallow: /search/
Disallow: /user/register/
Disallow: /user/password/
Disallow: /user/login/
Disallow: /user/logout/
# Paths (no clean URLs)
Disallow: /?q=admin/
Disallow: /?q=comment/reply/
Disallow: /?q=filter/tips/
Disallow: /?q=node/add/
Disallow: /?q=search/
Disallow: /?q=user/password/
Disallow: /?q=user/register/
Disallow: /?q=user/login/
Disallow: /?q=user/logout/
<?php <?php
// $Id: actions.inc,v 1.39 2010/08/22 11:04:09 dries Exp $
/** /**
* @file * @file
...@@ -23,7 +22,7 @@ ...@@ -23,7 +22,7 @@
* - $a1, $a2: Optional additional information, which can be passed into * - $a1, $a2: Optional additional information, which can be passed into
* actions_do() and will be passed along to the action function. * actions_do() and will be passed along to the action function.
* *
* @} End of "defgroup actions". * @}
*/ */
/** /**
...@@ -49,6 +48,7 @@ ...@@ -49,6 +48,7 @@
* Passed along to the callback. * Passed along to the callback.
* @param $a2 * @param $a2
* Passed along to the callback. * Passed along to the callback.
*
* @return * @return
* An associative array containing the results of the functions that * An associative array containing the results of the functions that
* perform the actions, keyed on action ID. * perform the actions, keyed on action ID.
...@@ -150,6 +150,7 @@ function actions_do($action_ids, $object = NULL, $context = NULL, $a1 = NULL, $a ...@@ -150,6 +150,7 @@ function actions_do($action_ids, $object = NULL, $context = NULL, $a1 = NULL, $a
* *
* @param $reset * @param $reset
* Reset the action info static cache. * Reset the action info static cache.
*
* @return * @return
* An associative array keyed on action function name, with the same format * An associative array keyed on action function name, with the same format
* as the return value of hook_action_info(), containing all * as the return value of hook_action_info(), containing all
...@@ -177,9 +178,9 @@ function actions_list($reset = FALSE) { ...@@ -177,9 +178,9 @@ function actions_list($reset = FALSE) {
* function and the actions returned by actions_list() are partially * function and the actions returned by actions_list() are partially
* synchronized. Non-configurable actions from hook_action_info() * synchronized. Non-configurable actions from hook_action_info()
* implementations are put into the database when actions_synchronize() is * implementations are put into the database when actions_synchronize() is
* called, which happens when admin/config/system/actions is visited. Configurable * called, which happens when admin/config/system/actions is visited.
* actions are not added to the database until they are configured in the * Configurable actions are not added to the database until they are configured
* user interface, in which case a database row is created for each * in the user interface, in which case a database row is created for each
* configuration of each action. * configuration of each action.
* *
* @return * @return
...@@ -206,6 +207,7 @@ function actions_get_all_actions() { ...@@ -206,6 +207,7 @@ function actions_get_all_actions() {
* An associative array with function names or action IDs as keys * An associative array with function names or action IDs as keys
* and associative arrays with keys 'label', 'type', etc. as values. * and associative arrays with keys 'label', 'type', etc. as values.
* This is usually the output of actions_list() or actions_get_all_actions(). * This is usually the output of actions_list() or actions_get_all_actions().
*
* @return * @return
* An associative array whose keys are hashes of the input array keys, and * An associative array whose keys are hashes of the input array keys, and
* whose corresponding values are associative arrays with components * whose corresponding values are associative arrays with components
...@@ -224,7 +226,7 @@ function actions_actions_map($actions) { ...@@ -224,7 +226,7 @@ function actions_actions_map($actions) {
} }
/** /**
* Given a hash of an action array key, returns the key (function or ID). * Returns an action array key (function or ID), given its hash.
* *
* Faster than actions_actions_map() when you only need the function name or ID. * Faster than actions_actions_map() when you only need the function name or ID.
* *
...@@ -232,6 +234,7 @@ function actions_actions_map($actions) { ...@@ -232,6 +234,7 @@ function actions_actions_map($actions) {
* Hash of a function name or action ID array key. The array key * Hash of a function name or action ID array key. The array key
* is a key into the return value of actions_list() (array key is the action * is a key into the return value of actions_list() (array key is the action
* function name) or actions_get_all_actions() (array key is the action ID). * function name) or actions_get_all_actions() (array key is the action ID).
*
* @return * @return
* The corresponding array key, or FALSE if no match is found. * The corresponding array key, or FALSE if no match is found.
*/ */
...@@ -278,7 +281,7 @@ function actions_synchronize($delete_orphans = FALSE) { ...@@ -278,7 +281,7 @@ function actions_synchronize($delete_orphans = FALSE) {
// user adds the action. // user adds the action.
if (!$array['configurable']) { if (!$array['configurable']) {
// If we already have an action ID for this action, no need to assign aid. // If we already have an action ID for this action, no need to assign aid.
if (array_key_exists($callback, $actions_in_db)) { if (isset($actions_in_db[$callback])) {
unset($actions_in_db[$callback]); unset($actions_in_db[$callback]);
} }
else { else {
...@@ -312,7 +315,7 @@ function actions_synchronize($delete_orphans = FALSE) { ...@@ -312,7 +315,7 @@ function actions_synchronize($delete_orphans = FALSE) {
$link = l(t('Remove orphaned actions'), 'admin/config/system/actions/orphan'); $link = l(t('Remove orphaned actions'), 'admin/config/system/actions/orphan');
$count = count($actions_in_db); $count = count($actions_in_db);
$orphans = implode(', ', $orphaned); $orphans = implode(', ', $orphaned);
watchdog('actions', format_plural($count, 'One orphaned action (%orphans) exists in the actions table. !link', '@count orphaned actions (%orphans) exist in the actions table. !link'), array('@count' => $count, '%orphans' => $orphans, '!link' => $link), WATCHDOG_WARNING); watchdog('actions', '@count orphaned actions (%orphans) exist in the actions table. !link', array('@count' => $count, '%orphans' => $orphans, '!link' => $link), WATCHDOG_INFO);
} }
} }
} }
...@@ -333,6 +336,7 @@ function actions_synchronize($delete_orphans = FALSE) { ...@@ -333,6 +336,7 @@ function actions_synchronize($delete_orphans = FALSE) {
* to Jim'. * to Jim'.
* @param $aid * @param $aid
* The ID of this action. If omitted, a new action is created. * The ID of this action. If omitted, a new action is created.
*
* @return * @return
* The ID of the action. * The ID of the action.
*/ */
...@@ -362,6 +366,7 @@ function actions_save($function, $type, $params, $label, $aid = NULL) { ...@@ -362,6 +366,7 @@ function actions_save($function, $type, $params, $label, $aid = NULL) {
* *
* @param $aid * @param $aid
* The ID of the action to retrieve. * The ID of the action to retrieve.
*
* @return * @return
* The appropriate action row from the database as an object. * The appropriate action row from the database as an object.
*/ */
...@@ -381,4 +386,3 @@ function actions_delete($aid) { ...@@ -381,4 +386,3 @@ function actions_delete($aid) {
->execute(); ->execute();
module_invoke_all('actions_delete', $aid); module_invoke_all('actions_delete', $aid);
} }
This diff is collapsed.
<?php <?php
// $Id: archiver.inc,v 1.5 2010/02/01 07:17:59 webchick Exp $
/** /**
* @file * @file
...@@ -7,12 +6,12 @@ ...@@ -7,12 +6,12 @@
*/ */
/** /**
* Common interface for all Archiver classes. * Defines the common interface for all Archiver classes.
*/ */
interface ArchiverInterface { interface ArchiverInterface {
/** /**
* Constructor for a new archiver instance. * Constructs a new archiver instance.
* *
* @param $file_path * @param $file_path
* The full system path of the archive to manipulate. Only local files * The full system path of the archive to manipulate. Only local files
...@@ -22,46 +21,48 @@ interface ArchiverInterface { ...@@ -22,46 +21,48 @@ interface ArchiverInterface {
public function __construct($file_path); public function __construct($file_path);
/** /**
* Add the specified file or directory to the archive. * Adds the specified file or directory to the archive.
* *
* @param $file_path * @param $file_path
* The full system path of the file or directory to add. Only local files * The full system path of the file or directory to add. Only local files
* and directories are supported. * and directories are supported.
*
* @return ArchiverInterface * @return ArchiverInterface
* The called object. * The called object.
*/ */
public function add($file_path); public function add($file_path);
/** /**
* Remove the specified file from the archive. * Removes the specified file from the archive.
* *
* @param $path * @param $path
* The file name relative to the root of the archive to remove. * The file name relative to the root of the archive to remove.
*
* @return ArchiverInterface * @return ArchiverInterface
* The called object. * The called object.
*/ */
public function remove($path); public function remove($path);
/** /**
* Extract multiple files in the archive to the specified path. * Extracts multiple files in the archive to the specified path.
* *
* @param $path * @param $path
* A full system path of the directory to which to extract files. * A full system path of the directory to which to extract files.
* @param $files * @param $files
* Optionally specify a list of files to be extracted. Files are * Optionally specify a list of files to be extracted. Files are
* relative to the root of the archive. If not specified, all files * relative to the root of the archive. If not specified, all files
* in the archive will be extracted * in the archive will be extracted.
*
* @return ArchiverInterface * @return ArchiverInterface
* The called object. * The called object.
*/ */
public function extract($path, Array $files = array()); public function extract($path, array $files = array());
/** /**
* List all files in the archive. * Lists all files in the archive.
* *
* @return * @return
* An array of file names relative to the root of the archive. * An array of file names relative to the root of the archive.
*/ */
public function listContents(); public function listContents();
} }
<?php <?php
// $Id: authorize.inc,v 1.11 2010/05/14 04:50:18 webchick Exp $
/** /**
* @file * @file
...@@ -7,9 +6,15 @@ ...@@ -7,9 +6,15 @@
*/ */
/** /**
* Build the form for choosing a FileTransfer type and supplying credentials. * Form constructor for the file transfer authorization form.
*
* Allows the user to choose a FileTransfer type and supply credentials.
*
* @see authorize_filetransfer_form_validate()
* @see authorize_filetransfer_form_submit()
* @ingroup forms
*/ */
function authorize_filetransfer_form($form_state) { function authorize_filetransfer_form($form, &$form_state) {
global $base_url, $is_https; global $base_url, $is_https;
$form = array(); $form = array();
...@@ -21,15 +26,18 @@ function authorize_filetransfer_form($form_state) { ...@@ -21,15 +26,18 @@ function authorize_filetransfer_form($form_state) {
$form['#attached']['js'][] = $base_url . '/misc/authorize.js'; $form['#attached']['js'][] = $base_url . '/misc/authorize.js';
// Get all the available ways to transfer files. // Get all the available ways to transfer files.
if (empty($_SESSION['authorize_filetransfer_backends'])) { if (empty($_SESSION['authorize_filetransfer_info'])) {
drupal_set_message(t('Unable to continue, no available methods of file transfer'), 'error'); drupal_set_message(t('Unable to continue, no available methods of file transfer'), 'error');
return array(); return array();
} }
$available_backends = $_SESSION['authorize_filetransfer_backends']; $available_backends = $_SESSION['authorize_filetransfer_info'];
uasort($available_backends, 'drupal_sort_weight');
if (!$is_https) { if (!$is_https) {
drupal_set_message(t('WARNING: You are not using an encrypted connection, so your password will be sent in plain text. <a href="@https-link">Learn more</a>.', array('@https-link' => 'http://drupal.org/https-information')), 'error'); $form['information']['https_warning'] = array(
'#prefix' => '<div class="messages error">',
'#markup' => t('WARNING: You are not using an encrypted connection, so your password will be sent in plain text. <a href="@https-link">Learn more</a>.', array('@https-link' => 'http://drupal.org/https-information')),
'#suffix' => '</div>',
);
} }
// Decide on a default backend. // Decide on a default backend.
...@@ -78,17 +86,20 @@ function authorize_filetransfer_form($form_state) { ...@@ -78,17 +86,20 @@ function authorize_filetransfer_form($form_state) {
'#attributes' => array('style' => 'display:none'), '#attributes' => array('style' => 'display:none'),
); );
// Build a hidden fieldset for each one. // Build a container for each connection type.
foreach ($available_backends as $name => $backend) { foreach ($available_backends as $name => $backend) {
$form['connection_settings']['authorize_filetransfer_default']['#options'][$name] = $backend['title']; $form['connection_settings']['authorize_filetransfer_default']['#options'][$name] = $backend['title'];
$form['connection_settings'][$name] = array( $form['connection_settings'][$name] = array(
'#type' => 'fieldset', '#type' => 'container',
'#attributes' => array('class' => array("filetransfer-$name", 'filetransfer')), '#attributes' => array('class' => array("filetransfer-$name", 'filetransfer')),
'#title' => t('@backend connection settings', array('@backend' => $backend['title'])), );
// We can't use #prefix on the container itself since then the header won't
// be hidden and shown when the containers are being manipulated via JS.
$form['connection_settings'][$name]['header'] = array(
'#markup' => '<h4>' . t('@backend connection settings', array('@backend' => $backend['title'])) . '</h4>',
); );
$current_settings = variable_get('authorize_filetransfer_connection_settings_' . $name, array()); $form['connection_settings'][$name] += _authorize_filetransfer_connection_settings($name);
$form['connection_settings'][$name] += system_get_filetransfer_settings_form($name, $current_settings);
// Start non-JS code. // Start non-JS code.
if (isset($form_state['values']['connection_settings']['authorize_filetransfer_default']) && $form_state['values']['connection_settings']['authorize_filetransfer_default'] == $name) { if (isset($form_state['values']['connection_settings']['authorize_filetransfer_default']) && $form_state['values']['connection_settings']['authorize_filetransfer_default'] == $name) {
...@@ -113,7 +124,7 @@ function authorize_filetransfer_form($form_state) { ...@@ -113,7 +124,7 @@ function authorize_filetransfer_form($form_state) {
'#type' => 'submit', '#type' => 'submit',
'#value' => t('Change connection type'), '#value' => t('Change connection type'),
'#weight' => -5, '#weight' => -5,
'#attributes' => array('class' => 'filetransfer-change-connection-type'), '#attributes' => array('class' => array('filetransfer-change-connection-type')),
); );
} }
// End non-JS code. // End non-JS code.
...@@ -122,11 +133,76 @@ function authorize_filetransfer_form($form_state) { ...@@ -122,11 +133,76 @@ function authorize_filetransfer_form($form_state) {
} }
/** /**
* Validate callback for the filetransfer authorization form. * Generates the Form API array for a given connection backend's settings.
*
* @param $backend
* The name of the backend (e.g. 'ftp', 'ssh', etc).
*
* @return
* Form API array of connection settings for the given backend.
*
* @see hook_filetransfer_backends()
*/
function _authorize_filetransfer_connection_settings($backend) {
$defaults = variable_get('authorize_filetransfer_connection_settings_' . $backend, array());
$form = array();
// Create an instance of the file transfer class to get its settings form.
$filetransfer = authorize_get_filetransfer($backend);
if ($filetransfer) {
$form = $filetransfer->getSettingsForm();
}
// Fill in the defaults based on the saved settings, if any.
_authorize_filetransfer_connection_settings_set_defaults($form, NULL, $defaults);
return $form;
}
/**
* Sets the default settings on a file transfer connection form recursively.
*
* The default settings for the file transfer connection forms are saved in
* the database. The settings are stored as a nested array in the case of a
* settings form that has fieldsets or otherwise uses a nested structure.
* Therefore, to properly add defaults, we need to walk through all the
* children form elements and process those defaults recursively.
*
* @param $element
* Reference to the Form API form element we're operating on.
* @param $key
* The key for our current form element, if any.
* @param array $defaults
* The default settings for the file transfer backend we're operating on.
*/
function _authorize_filetransfer_connection_settings_set_defaults(&$element, $key, array $defaults) {
// If we're operating on a form element which isn't a fieldset, and we have
// a default setting saved, stash it in #default_value.
if (!empty($key) && isset($defaults[$key]) && isset($element['#type']) && $element['#type'] != 'fieldset') {
$element['#default_value'] = $defaults[$key];
}
// Now, we walk through all the child elements, and recursively invoke
// ourself on each one. Since the $defaults settings array can be nested
// (because of #tree, any values inside fieldsets will be nested), if
// there's a subarray of settings for the form key we're currently
// processing, pass in that subarray to the recursive call. Otherwise, just
// pass on the whole $defaults array.
foreach (element_children($element) as $child_key) {
_authorize_filetransfer_connection_settings_set_defaults($element[$child_key], $child_key, ((isset($defaults[$key]) && is_array($defaults[$key])) ? $defaults[$key] : $defaults));
}
}
/**
* Form validation handler for authorize_filetransfer_form().
* *
* @see authorize_filetransfer_form() * @see authorize_filetransfer_form()
* @see authorize_filetransfer_submit()
*/ */
function authorize_filetransfer_form_validate($form, &$form_state) { function authorize_filetransfer_form_validate($form, &$form_state) {
// Only validate the form if we have collected all of the user input and are
// ready to proceed with updating or installing.
if ($form_state['triggering_element']['#name'] != 'process_updates') {
return;
}
if (isset($form_state['values']['connection_settings'])) { if (isset($form_state['values']['connection_settings'])) {
$backend = $form_state['values']['connection_settings']['authorize_filetransfer_default']; $backend = $form_state['values']['connection_settings']['authorize_filetransfer_default'];
$filetransfer = authorize_get_filetransfer($backend, $form_state['values']['connection_settings'][$backend]); $filetransfer = authorize_get_filetransfer($backend, $form_state['values']['connection_settings'][$backend]);
...@@ -137,19 +213,25 @@ function authorize_filetransfer_form_validate($form, &$form_state) { ...@@ -137,19 +213,25 @@ function authorize_filetransfer_form_validate($form, &$form_state) {
$filetransfer->connect(); $filetransfer->connect();
} }
catch (Exception $e) { catch (Exception $e) {
form_set_error('connection_settings', $e->getMessage()); // The format of this error message is similar to that used on the
// database connection form in the installer.
form_set_error('connection_settings', t('Failed to connect to the server. The server reports the following message: !message For more help installing or updating code on your server, see the <a href="@handbook_url">handbook</a>.', array(
'!message' => '<p class="error">' . $e->getMessage() . '</p>',
'@handbook_url' => 'http://drupal.org/documentation/install/modules-themes',
)));
} }
} }
} }
/** /**
* Submit callback when a file transfer is being authorized. * Form submission handler for authorize_filetransfer_form().
* *
* @see authorize_filetransfer_form() * @see authorize_filetransfer_form()
* @see authorize_filetransfer_validate()
*/ */
function authorize_filetransfer_form_submit($form, &$form_state) { function authorize_filetransfer_form_submit($form, &$form_state) {
global $base_url; global $base_url;
switch ($form_state['clicked_button']['#name']) { switch ($form_state['triggering_element']['#name']) {
case 'process_updates': case 'process_updates':
// Save the connection settings to the DB. // Save the connection settings to the DB.
...@@ -205,7 +287,7 @@ function authorize_filetransfer_form_submit($form, &$form_state) { ...@@ -205,7 +287,7 @@ function authorize_filetransfer_form_submit($form, &$form_state) {
} }
/** /**
* Run the operation specified in $_SESSION['authorize_operation'] * Runs the operation specified in $_SESSION['authorize_operation'].
* *
* @param $filetransfer * @param $filetransfer
* The FileTransfer object to use for running the operation. * The FileTransfer object to use for running the operation.
...@@ -215,7 +297,7 @@ function authorize_run_operation($filetransfer) { ...@@ -215,7 +297,7 @@ function authorize_run_operation($filetransfer) {
unset($_SESSION['authorize_operation']); unset($_SESSION['authorize_operation']);
if (!empty($operation['page_title'])) { if (!empty($operation['page_title'])) {
drupal_set_title(check_plain($operation['page_title'])); drupal_set_title($operation['page_title']);
} }
require_once DRUPAL_ROOT . '/' . $operation['file']; require_once DRUPAL_ROOT . '/' . $operation['file'];
...@@ -223,21 +305,30 @@ function authorize_run_operation($filetransfer) { ...@@ -223,21 +305,30 @@ function authorize_run_operation($filetransfer) {
} }
/** /**
* Get a FileTransfer class for a specific transfer method and settings. * Gets a FileTransfer class for a specific transfer method and settings.
* *
* @param $backend * @param $backend
* The FileTransfer backend to get the class for. * The FileTransfer backend to get the class for.
* @param $settings * @param $settings
* Array of settings for the FileTransfer. * Array of settings for the FileTransfer.
*
* @return * @return
* An instantiated FileTransfer object for the requested method and settings, * An instantiated FileTransfer object for the requested method and settings,
* or FALSE if there was an error finding or instantiating it. * or FALSE if there was an error finding or instantiating it.
*/ */
function authorize_get_filetransfer($backend, $settings = array()) { function authorize_get_filetransfer($backend, $settings = array()) {
$filetransfer = FALSE; $filetransfer = FALSE;
if (!empty($_SESSION['authorize_filetransfer_backends'][$backend])) { if (!empty($_SESSION['authorize_filetransfer_info'][$backend])) {
$filetransfer = call_user_func_array(array($_SESSION['authorize_filetransfer_backends'][$backend]['class'], 'factory'), array(DRUPAL_ROOT, $settings)); $backend_info = $_SESSION['authorize_filetransfer_info'][$backend];
if (!empty($backend_info['file'])) {
$file = $backend_info['file path'] . '/' . $backend_info['file'];
require_once $file;
}
if (class_exists($backend_info['class'])) {
// PHP 5.2 doesn't support $class::factory() syntax, so we have to
// use call_user_func_array() until we can require PHP 5.3.
$filetransfer = call_user_func_array(array($backend_info['class'], 'factory'), array(DRUPAL_ROOT, $settings));
}
} }
return $filetransfer; return $filetransfer;
} }
<?php <?php
// $Id: batch.inc,v 1.53 2010/10/04 07:34:26 webchick Exp $
/** /**
* @file * @file
...@@ -22,6 +20,7 @@ ...@@ -22,6 +20,7 @@
* @param $id * @param $id
* The ID of the batch to load. When a progressive batch is being processed, * The ID of the batch to load. When a progressive batch is being processed,
* the relevant ID is found in $_REQUEST['id']. * the relevant ID is found in $_REQUEST['id'].
*
* @return * @return
* An array representing the batch, or FALSE if no batch was found. * An array representing the batch, or FALSE if no batch was found.
*/ */
...@@ -37,7 +36,7 @@ function batch_load($id) { ...@@ -37,7 +36,7 @@ function batch_load($id) {
} }
/** /**
* State-based dispatcher for the batch processing page. * Renders the batch processing page based on the current state of the batch.
* *
* @see _batch_shutdown() * @see _batch_shutdown()
*/ */
...@@ -95,7 +94,7 @@ function _batch_page() { ...@@ -95,7 +94,7 @@ function _batch_page() {
} }
/** /**
* Initialize the batch processing. * Initializes the batch processing.
* *
* JavaScript-enabled clients are identified by the 'has_js' cookie set in * JavaScript-enabled clients are identified by the 'has_js' cookie set in
* drupal.js. If no JavaScript-enabled page has been visited during the current * drupal.js. If no JavaScript-enabled page has been visited during the current
...@@ -111,7 +110,7 @@ function _batch_start() { ...@@ -111,7 +110,7 @@ function _batch_start() {
} }
/** /**
* Output a batch processing page with JavaScript support. * Outputs a batch processing page with JavaScript support.
* *
* This initializes the batch and error messages. Note that in JavaScript-based * This initializes the batch and error messages. Note that in JavaScript-based
* processing, the batch processing page is displayed only once and updated via * processing, the batch processing page is displayed only once and updated via
...@@ -139,14 +138,13 @@ function _batch_progress_page_js() { ...@@ -139,14 +138,13 @@ function _batch_progress_page_js() {
), ),
); );
drupal_add_js($js_setting, 'setting'); drupal_add_js($js_setting, 'setting');
drupal_add_js('misc/progress.js', array('cache' => FALSE)); drupal_add_library('system', 'drupal.batch');
drupal_add_js('misc/batch.js', array('cache' => FALSE));
return '<div id="progress"></div>'; return '<div id="progress"></div>';
} }
/** /**
* Do one execution pass in JavaScript-mode and return progress to the browser. * Does one execution pass with JavaScript and returns progress to the browser.
* *
* @see _batch_progress_page_js() * @see _batch_progress_page_js()
* @see _batch_process() * @see _batch_process()
...@@ -166,7 +164,7 @@ function _batch_do() { ...@@ -166,7 +164,7 @@ function _batch_do() {
} }
/** /**
* Output a batch processing page without JavaScript support. * Outputs a batch processing page without JavaScript support.
* *
* @see _batch_process() * @see _batch_process()
*/ */
...@@ -230,7 +228,7 @@ function _batch_progress_page_nojs() { ...@@ -230,7 +228,7 @@ function _batch_progress_page_nojs() {
} }
/** /**
* Process sets in a batch. * Processes sets in a batch.
* *
* If the batch was marked for progressive execution (default), this executes as * If the batch was marked for progressive execution (default), this executes as
* many operations in batch sets until an execution time of 1 second has been * many operations in batch sets until an execution time of 1 second has been
...@@ -341,6 +339,8 @@ function _batch_process() { ...@@ -341,6 +339,8 @@ function _batch_process() {
$progress_message = $old_set['progress_message']; $progress_message = $old_set['progress_message'];
} }
// Total progress is the number of operations that have fully run plus the
// completion level of the current operation.
$current = $total - $remaining + $finished; $current = $total - $remaining + $finished;
$percentage = _batch_api_percentage($total, $current); $percentage = _batch_api_percentage($total, $current);
$elapsed = isset($current_set['elapsed']) ? $current_set['elapsed'] : 0; $elapsed = isset($current_set['elapsed']) ? $current_set['elapsed'] : 0;
...@@ -370,17 +370,23 @@ function _batch_process() { ...@@ -370,17 +370,23 @@ function _batch_process() {
} }
/** /**
* Helper function for _batch_process(): returns the formatted percentage. * Formats the percent completion for a batch set.
* *
* @param $total * @param $total
* The total number of operations. * The total number of operations.
* @param $current * @param $current
* The number of the current operation. * The number of the current operation. This may be a floating point number
* rather than an integer in the case of a multi-step operation that is not
* yet complete; in that case, the fractional part of $current represents the
* fraction of the operation that has been completed.
*
* @return * @return
* The properly formatted percentage, as a string. We output percentages * The properly formatted percentage, as a string. We output percentages
* using the correct number of decimal places so that we never print "100%" * using the correct number of decimal places so that we never print "100%"
* until we are finished, but we also never print more decimal places than * until we are finished, but we also never print more decimal places than
* are meaningful. * are meaningful.
*
* @see _batch_process()
*/ */
function _batch_api_percentage($total, $current) { function _batch_api_percentage($total, $current) {
if (!$total || $total == $current) { if (!$total || $total == $current) {
...@@ -392,13 +398,22 @@ function _batch_api_percentage($total, $current) { ...@@ -392,13 +398,22 @@ function _batch_api_percentage($total, $current) {
// We add a new digit at 200, 2000, etc. (since, for example, 199/200 // We add a new digit at 200, 2000, etc. (since, for example, 199/200
// would round up to 100% if we didn't). // would round up to 100% if we didn't).
$decimal_places = max(0, floor(log10($total / 2.0)) - 1); $decimal_places = max(0, floor(log10($total / 2.0)) - 1);
do {
// Calculate the percentage to the specified number of decimal places.
$percentage = sprintf('%01.' . $decimal_places . 'f', round($current / $total * 100, $decimal_places)); $percentage = sprintf('%01.' . $decimal_places . 'f', round($current / $total * 100, $decimal_places));
// When $current is an integer, the above calculation will always be
// correct. However, if $current is a floating point number (in the case
// of a multi-step batch operation that is not yet complete), $percentage
// may be erroneously rounded up to 100%. To prevent that, we add one
// more decimal place and try again.
$decimal_places++;
} while ($percentage == '100');
} }
return $percentage; return $percentage;
} }
/** /**
* Return the batch set being currently processed. * Returns the batch set being currently processed.
*/ */
function &_batch_current_set() { function &_batch_current_set() {
$batch = &batch_get(); $batch = &batch_get();
...@@ -406,7 +421,7 @@ function &_batch_current_set() { ...@@ -406,7 +421,7 @@ function &_batch_current_set() {
} }
/** /**
* Retrieve the next set in a batch. * Retrieves the next set in a batch.
* *
* If there is a subsequent set in this batch, assign it as the new set to * If there is a subsequent set in this batch, assign it as the new set to
* process and execute its form submit handler (if defined), which may add * process and execute its form submit handler (if defined), which may add
...@@ -430,7 +445,7 @@ function _batch_next_set() { ...@@ -430,7 +445,7 @@ function _batch_next_set() {
} }
/** /**
* End the batch processing. * Ends the batch processing.
* *
* Call the 'finished' callback of each batch set to allow custom handling of * Call the 'finished' callback of each batch set to allow custom handling of
* the results and resolve page redirection. * the results and resolve page redirection.
...@@ -509,7 +524,10 @@ function _batch_finished() { ...@@ -509,7 +524,10 @@ function _batch_finished() {
} }
/** /**
* Shutdown function; store the current batch data for the next request. * Shutdown function: Stores the current batch data for the next request.
*
* @see _batch_page()
* @see drupal_register_shutdown_function()
*/ */
function _batch_shutdown() { function _batch_shutdown() {
if ($batch = batch_get()) { if ($batch = batch_get()) {
...@@ -519,4 +537,3 @@ function _batch_shutdown() { ...@@ -519,4 +537,3 @@ function _batch_shutdown() {
->execute(); ->execute();
} }
} }