[Pkg-drupal-commits] r2268 - in /branches/upstream/current-6: ./ includes/ misc/ modules/aggregator/ modules/block/ modules/blog/ modules/blogapi/ modules/book/ modules/color/ modules/comment/ modules/contact/ modules/dblog/ modules/filter/ modules/forum/ modules/help/ modules/locale/ modules/menu/ modules/node/ modules/openid/ modules/path/ modules/php/ modules/ping/ modules/poll/ modules/profile/ modules/search/ modules/statistics/ modules/syslog/ modules/system/ modules/taxonomy/ modules/throttle/ modules/tracker/ modules/translation/ modules/trigger/ modules/update/ modules/upload/ modules/user/ themes/bluemarine/ themes/chameleon/ themes/chameleon/marvin/ themes/engines/phptemplate/ themes/garland/ themes/garland/minnelli/ themes/pushbutton/

luigi at users.alioth.debian.org luigi at users.alioth.debian.org
Thu May 10 18:48:17 UTC 2012


Author: luigi
Date: Thu May 10 18:48:16 2012
New Revision: 2268

URL: http://svn.debian.org/wsvn/pkg-drupal/?sc=1&rev=2268
Log:
[svn-upgrade] new version drupal6 (6.26)

Added:
    branches/upstream/current-6/includes/lock-install.inc
Modified:
    branches/upstream/current-6/CHANGELOG.txt
    branches/upstream/current-6/INSTALL.mysql.txt
    branches/upstream/current-6/LICENSE.txt
    branches/upstream/current-6/includes/actions.inc
    branches/upstream/current-6/includes/batch.inc
    branches/upstream/current-6/includes/bootstrap.inc
    branches/upstream/current-6/includes/cache.inc
    branches/upstream/current-6/includes/common.inc
    branches/upstream/current-6/includes/database.inc
    branches/upstream/current-6/includes/database.mysql-common.inc
    branches/upstream/current-6/includes/database.mysql.inc
    branches/upstream/current-6/includes/database.mysqli.inc
    branches/upstream/current-6/includes/database.pgsql.inc
    branches/upstream/current-6/includes/file.inc
    branches/upstream/current-6/includes/form.inc
    branches/upstream/current-6/includes/locale.inc
    branches/upstream/current-6/includes/lock.inc
    branches/upstream/current-6/includes/menu.inc
    branches/upstream/current-6/includes/module.inc
    branches/upstream/current-6/includes/pager.inc
    branches/upstream/current-6/includes/session.inc
    branches/upstream/current-6/includes/theme.inc
    branches/upstream/current-6/includes/unicode.entities.inc
    branches/upstream/current-6/includes/unicode.inc
    branches/upstream/current-6/install.php
    branches/upstream/current-6/misc/drupal.js
    branches/upstream/current-6/misc/tabledrag.js
    branches/upstream/current-6/modules/aggregator/aggregator.admin.inc
    branches/upstream/current-6/modules/aggregator/aggregator.info
    branches/upstream/current-6/modules/aggregator/aggregator.module
    branches/upstream/current-6/modules/block/block.info
    branches/upstream/current-6/modules/block/block.module
    branches/upstream/current-6/modules/blog/blog.info
    branches/upstream/current-6/modules/blog/blog.pages.inc
    branches/upstream/current-6/modules/blogapi/blogapi.info
    branches/upstream/current-6/modules/book/book.info
    branches/upstream/current-6/modules/book/book.module
    branches/upstream/current-6/modules/color/color.info
    branches/upstream/current-6/modules/comment/comment.info
    branches/upstream/current-6/modules/comment/comment.install
    branches/upstream/current-6/modules/contact/contact.info
    branches/upstream/current-6/modules/dblog/dblog.admin.inc
    branches/upstream/current-6/modules/dblog/dblog.info
    branches/upstream/current-6/modules/filter/filter.info
    branches/upstream/current-6/modules/forum/forum.info
    branches/upstream/current-6/modules/forum/forum.module
    branches/upstream/current-6/modules/help/help.info
    branches/upstream/current-6/modules/locale/locale.info
    branches/upstream/current-6/modules/locale/locale.install
    branches/upstream/current-6/modules/menu/menu.info
    branches/upstream/current-6/modules/node/node.admin.inc
    branches/upstream/current-6/modules/node/node.info
    branches/upstream/current-6/modules/node/node.module
    branches/upstream/current-6/modules/openid/openid.info
    branches/upstream/current-6/modules/openid/openid.module
    branches/upstream/current-6/modules/path/path.info
    branches/upstream/current-6/modules/path/path.module
    branches/upstream/current-6/modules/php/php.info
    branches/upstream/current-6/modules/ping/ping.info
    branches/upstream/current-6/modules/poll/poll.info
    branches/upstream/current-6/modules/poll/poll.module
    branches/upstream/current-6/modules/profile/profile.info
    branches/upstream/current-6/modules/search/search.info
    branches/upstream/current-6/modules/search/search.module
    branches/upstream/current-6/modules/statistics/statistics.info
    branches/upstream/current-6/modules/syslog/syslog.info
    branches/upstream/current-6/modules/system/system.admin.inc
    branches/upstream/current-6/modules/system/system.info
    branches/upstream/current-6/modules/system/system.module
    branches/upstream/current-6/modules/taxonomy/taxonomy.info
    branches/upstream/current-6/modules/taxonomy/taxonomy.module
    branches/upstream/current-6/modules/throttle/throttle.info
    branches/upstream/current-6/modules/tracker/tracker.info
    branches/upstream/current-6/modules/translation/translation.info
    branches/upstream/current-6/modules/translation/translation.module
    branches/upstream/current-6/modules/trigger/trigger.info
    branches/upstream/current-6/modules/trigger/trigger.module
    branches/upstream/current-6/modules/update/update.fetch.inc
    branches/upstream/current-6/modules/update/update.info
    branches/upstream/current-6/modules/upload/upload.info
    branches/upstream/current-6/modules/upload/upload.module
    branches/upstream/current-6/modules/user/user.info
    branches/upstream/current-6/modules/user/user.module
    branches/upstream/current-6/robots.txt
    branches/upstream/current-6/themes/bluemarine/bluemarine.info
    branches/upstream/current-6/themes/chameleon/chameleon.info
    branches/upstream/current-6/themes/chameleon/marvin/marvin.info
    branches/upstream/current-6/themes/engines/phptemplate/phptemplate.engine
    branches/upstream/current-6/themes/garland/garland.info
    branches/upstream/current-6/themes/garland/minnelli/minnelli.info
    branches/upstream/current-6/themes/garland/style.css
    branches/upstream/current-6/themes/pushbutton/pushbutton.info
    branches/upstream/current-6/update.php

Modified: branches/upstream/current-6/CHANGELOG.txt
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/CHANGELOG.txt?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/CHANGELOG.txt (original)
+++ branches/upstream/current-6/CHANGELOG.txt Thu May 10 18:48:16 2012
@@ -1,3 +1,26 @@
+
+Drupal 6.26, 2012-05-02
+----------------------
+- Fixed a small number of bugs.
+- Made code documentation improvements.
+
+Drupal 6.25, 2012-02-29
+----------------------
+- Fixed regressions introduced in Drupal 6.24 only.
+
+Drupal 6.24, 2012-02-01
+----------------------
+- Improved performance of search indexing and user operations by adding indexes.
+- Fixed issues with themes getting disabled due to missing locking in
+  system_theme_data().
+- Fix issue with blocks being disabled on updates in _block_rehash().
+- Further improvements to PHP 5.3, PHP 4 and PostgreSQL compatibility.
+- Improved code documentation at various places.
+- Fixed a variety of other bugs.
+
+Drupal 6.23, 2012-02-01
+----------------------
+- Fixed security issues (Cross site scripting), see SA-CORE-2012-001.
 
 Drupal 6.22, 2011-05-25
 ----------------------

Modified: branches/upstream/current-6/INSTALL.mysql.txt
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/INSTALL.mysql.txt?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/INSTALL.mysql.txt (original)
+++ branches/upstream/current-6/INSTALL.mysql.txt Thu May 10 18:48:16 2012
@@ -20,8 +20,8 @@
 Again, you will be asked for the 'username' database password. At the MySQL
 prompt, enter following command:
 
-  GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER
-  ON databasename.*
+  GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER,
+  CREATE TEMPORARY TABLES ON databasename.*
   TO 'username'@'localhost' IDENTIFIED BY 'password';
 
 where

Modified: branches/upstream/current-6/LICENSE.txt
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/LICENSE.txt?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/LICENSE.txt (original)
+++ branches/upstream/current-6/LICENSE.txt Thu May 10 18:48:16 2012
@@ -1,274 +1,339 @@
-GNU GENERAL PUBLIC LICENSE
-
-              Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
-Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute
-verbatim copies of this license document, but changing it is not allowed.
-
-                  Preamble
-
-The licenses for most software are designed to take away your freedom to
-share and change it. By contrast, the GNU General Public License is
-intended to guarantee your freedom to share and change free software--to
-make sure the software is free for all its users. This General Public License
-applies to most of the Free Software Foundation's software and to any other
-program whose authors commit to using it. (Some other Free Software
-Foundation software is covered by the GNU Library General Public License
-instead.) You can apply it to your programs, too.
-
-When we speak of free software, we are referring to freedom, not price. Our
-General Public Licenses are designed to make sure that you have the
-freedom to distribute copies of free software (and charge for this service if
-you wish), that you receive source code or can get it if you want it, that you
-can change the software or use pieces of it in new free programs; and that
-you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid anyone to
-deny you these rights or to ask you to surrender the rights. These restrictions
-translate to certain responsibilities for you if you distribute copies of the
-software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis or for
-a fee, you must give the recipients all the rights that you have. You must make
-sure that they, too, receive or can get the source code. And you must show
-them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and (2)
-offer you this license which gives you legal permission to copy, distribute
-and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain that
-everyone understands that there is no warranty for this free software. If the
-software is modified by someone else and passed on, we want its recipients
-to know that what they have is not the original, so that any problems
-introduced by others will not reflect on the original authors' reputations.
-
-Finally, any free program is threatened constantly by software patents. We
-wish to avoid the danger that redistributors of a free program will individually
-obtain patent licenses, in effect making the program proprietary. To prevent
-this, we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and modification
-follow.
-
-           GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
-               MODIFICATION
-
-0. This License applies to any program or other work which contains a notice
-placed by the copyright holder saying it may be distributed under the terms
-of this General Public License. The "Program", below, refers to any such
-program or work, and a "work based on the Program" means either the
-Program or any derivative work under copyright law: that is to say, a work
-containing the Program or a portion of it, either verbatim or with
-modifications and/or translated into another language. (Hereinafter, translation
-is included without limitation in the term "modification".) Each licensee is
-addressed as "you".
-
-Activities other than copying, distribution and modification are not covered
-by this License; they are outside its scope. The act of running the Program is
-not restricted, and the output from the Program is covered only if its contents
-constitute a work based on the Program (independent of having been made
-by running the Program). Whether that is true depends on what the Program
-does.
-
-1. You may copy and distribute verbatim copies of the Program's source
-code as you receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice and
-disclaimer of warranty; keep intact all the notices that refer to this License
-and to the absence of any warranty; and give any other recipients of the
-Program a copy of this License along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and you
-may at your option offer warranty protection in exchange for a fee.
-
-2. You may modify your copy or copies of the Program or any portion of it,
-thus forming a work based on the Program, and copy and distribute such
-modifications or work under the terms of Section 1 above, provided that you
-also meet all of these conditions:
-
-a) You must cause the modified files to carry prominent notices stating that
-you changed the files and the date of any change.
-
-b) You must cause any work that you distribute or publish, that in whole or in
-part contains or is derived from the Program or any part thereof, to be
-licensed as a whole at no charge to all third parties under the terms of this
-License.
-
-c) If the modified program normally reads commands interactively when run,
-you must cause it, when started running for such interactive use in the most
-ordinary way, to print or display an announcement including an appropriate
-copyright notice and a notice that there is no warranty (or else, saying that
-you provide a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this License.
-(Exception: if the Program itself is interactive but does not normally print such
-an announcement, your work based on the Program is not required to print
-an announcement.)
-
-These requirements apply to the modified work as a whole. If identifiable
-sections of that work are not derived from the Program, and can be
-reasonably considered independent and separate works in themselves, then
-this License, and its terms, do not apply to those sections when you distribute
-them as separate works. But when you distribute the same sections as part
-of a whole which is a work based on the Program, the distribution of the
-whole must be on the terms of this License, whose permissions for other
-licensees extend to the entire whole, and thus to each and every part
-regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest your rights to
-work written entirely by you; rather, the intent is to exercise the right to
-control the distribution of derivative or collective works based on the
-Program.
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
 
 In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of a
-storage or distribution medium does not bring the other work under the scope
-of this License.
-
-3. You may copy and distribute the Program (or a work based on it, under
-Section 2) in object code or executable form under the terms of Sections 1
-and 2 above provided that you also do one of the following:
-
-a) Accompany it with the complete corresponding machine-readable source
-code, which must be distributed under the terms of Sections 1 and 2 above
-on a medium customarily used for software interchange; or,
-
-b) Accompany it with a written offer, valid for at least three years, to give
-any third party, for a charge no more than your cost of physically performing
-source distribution, a complete machine-readable copy of the corresponding
-source code, to be distributed under the terms of Sections 1 and 2 above on
-a medium customarily used for software interchange; or,
-
-c) Accompany it with the information you received as to the offer to distribute
-corresponding source code. (This alternative is allowed only for
-noncommercial distribution and only if you received the program in object
-code or executable form with such an offer, in accord with Subsection b
-above.)
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
 
 The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source code
-means all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation and
-installation of the executable. However, as a special exception, the source
-code distributed need not include anything that is normally distributed (in
-either source or binary form) with the major components (compiler, kernel,
-and so on) of the operating system on which the executable runs, unless that
-component itself accompanies the executable.
-
-If distribution of executable or object code is made by offering access to
-copy from a designated place, then offering equivalent access to copy the
-source code from the same place counts as distribution of the source code,
-even though third parties are not compelled to copy the source along with the
-object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program except as
-expressly provided under this License. Any attempt otherwise to copy,
-modify, sublicense or distribute the Program is void, and will automatically
-terminate your rights under this License. However, parties who have received
-copies, or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-5. You are not required to accept this License, since you have not signed it.
-However, nothing else grants you permission to modify or distribute the
-Program or its derivative works. These actions are prohibited by law if you
-do not accept this License. Therefore, by modifying or distributing the
-Program (or any work based on the Program), you indicate your acceptance
-of this License to do so, and all its terms and conditions for copying,
-distributing or modifying the Program or works based on it.
-
-6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the original
-licensor to copy, distribute or modify the Program subject to these terms and
-conditions. You may not impose any further restrictions on the recipients'
-exercise of the rights granted herein. You are not responsible for enforcing
-compliance by third parties to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues), conditions
-are imposed on you (whether by court order, agreement or otherwise) that
-contradict the conditions of this License, they do not excuse you from the
-conditions of this License. If you cannot distribute so as to satisfy
-simultaneously your obligations under this License and any other pertinent
-obligations, then as a consequence you may not distribute the Program at all.
-For example, if a patent license would not permit royalty-free redistribution
-of the Program by all those who receive copies directly or indirectly through
-you, then the only way you could satisfy both it and this License would be to
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
 refrain entirely from distribution of the Program.
 
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply and
-the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any patents or
-other property right claims or to contest validity of any such claims; this
-section has the sole purpose of protecting the integrity of the free software
-distribution system, which is implemented by public license practices. Many
-people have made generous contributions to the wide range of software
-distributed through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing to
-distribute software through any other system and a licensee cannot impose
-that choice.
-
-This section is intended to make thoroughly clear what is believed to be a
-consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in certain
-countries either by patents or by copyrighted interfaces, the original copyright
-holder who places the Program under this License may add an explicit
-geographical distribution limitation excluding those countries, so that
-distribution is permitted only in or among countries not thus excluded. In such
-case, this License incorporates the limitation as if written in the body of this
-License.
-
-9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will be
-similar in spirit to the present version, but may differ in detail to address new
-problems or concerns.
-
-Each version is given a distinguishing version number. If the Program specifies
-a version number of this License which applies to it and "any later version",
-you have the option of following the terms and conditions either of that
-version or of any later version published by the Free Software Foundation. If
-the Program does not specify a version number of this License, you may
-choose any version ever published by the Free Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free programs
-whose distribution conditions are different, write to the author to ask for
-permission. For software which is copyrighted by the Free Software
-Foundation, write to the Free Software Foundation; we sometimes make
-exceptions for this. Our decision will be guided by the two goals of
-preserving the free status of all derivatives of our free software and of
-promoting the sharing and reuse of software generally.
-
-               NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE,
-THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT
-PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
-STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
-WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
-NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR
-AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR
-ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
-LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
-SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OR INABILITY TO USE THE
-PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
-OR DATA BEING RENDERED INACCURATE OR LOSSES
-SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
-PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN
-IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.
-
-          END OF TERMS AND CONDITIONS
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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
+    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 WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.

Modified: branches/upstream/current-6/includes/actions.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/actions.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/actions.inc (original)
+++ branches/upstream/current-6/includes/actions.inc Thu May 10 18:48:16 2012
@@ -3,25 +3,6 @@
 /**
  * @file
  * This is the actions engine for executing stored actions.
- */
-
-/**
- * @defgroup actions Actions
- * @{
- * Functions that perform an action on a certain system object.
- *
- * All modules should declare their action functions to be in this group and
- * each action function should reference its configuration form, validate, and
- * submit functions using \@see. Conversely, form, validate, and submit
- * functions should reference the action function using \@see. For examples of
- * this see comment_unpublish_by_keyword_action(), which has the following in
- * its doxygen documentation:
- *
- * \@ingroup actions
- * \@see comment_unpublish_by_keyword_action_form().
- * \@see comment_unpublish_by_keyword_action_submit().
- *
- * @} End of "defgroup actions".
  */
 
 /**
@@ -355,7 +336,7 @@
     else {
       $link = l(t('Remove orphaned actions'), 'admin/settings/actions/orphan');
       $count = count($actions_in_db);
-      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', 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_INFO);
     }
   }
 }

Modified: branches/upstream/current-6/includes/batch.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/batch.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/batch.inc (original)
+++ branches/upstream/current-6/includes/batch.inc Thu May 10 18:48:16 2012
@@ -189,7 +189,7 @@
       call_user_func_array($function, array_merge($args, array(&$batch_context)));
     }
 
-    if ($finished == 1) {
+    if ($finished >= 1) {
       // Make sure this step isn't counted double when computing $current.
       $finished = 0;
       // Remove the operation and clear the sandbox.

Modified: branches/upstream/current-6/includes/bootstrap.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/bootstrap.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/bootstrap.inc (original)
+++ branches/upstream/current-6/includes/bootstrap.inc Thu May 10 18:48:16 2012
@@ -378,6 +378,10 @@
   global $db_url, $db_prefix, $db_collation, $cookie_domain, $conf, $installed_profile, $update_free_access;
   $conf = array();
 
+  if (!isset($_SERVER['SERVER_PROTOCOL']) || ($_SERVER['SERVER_PROTOCOL'] != 'HTTP/1.0' && $_SERVER['SERVER_PROTOCOL'] != 'HTTP/1.1')) {
+    $_SERVER['SERVER_PROTOCOL'] = 'HTTP/1.0';
+  }
+
   if (isset($_SERVER['HTTP_HOST'])) {
     // As HTTP_HOST is user input, ensure it only contains characters allowed
     // in hostnames. See RFC 952 (and RFC 2181).
@@ -385,7 +389,7 @@
     $_SERVER['HTTP_HOST'] = strtolower($_SERVER['HTTP_HOST']);
     if (!drupal_valid_http_host($_SERVER['HTTP_HOST'])) {
       // HTTP_HOST is invalid, e.g. if containing slashes it may be an attack.
-      header('HTTP/1.1 400 Bad Request');
+      header($_SERVER['SERVER_PROTOCOL'] .' 400 Bad Request');
       exit;
     }
   }
@@ -749,7 +753,7 @@
   if ($if_modified_since && $if_none_match
       && $if_none_match == $etag // etag must match
       && $if_modified_since == $last_modified) {  // if-modified-since must match
-    header('HTTP/1.1 304 Not Modified');
+    header($_SERVER['SERVER_PROTOCOL'] .' 304 Not Modified');
     // All 304 responses must send an etag if the 200 response for the same object contained an etag
     header("Etag: $etag");
     return;
@@ -1149,7 +1153,7 @@
     case DRUPAL_BOOTSTRAP_ACCESS:
       // Deny access to hosts which were banned - t() is not yet available.
       if (drupal_is_denied('host', ip_address())) {
-        header('HTTP/1.1 403 Forbidden');
+        header($_SERVER['SERVER_PROTOCOL'] .' 403 Forbidden');
         print 'Sorry, '. check_plain(ip_address()) .' has been banned.';
         exit();
       }

Modified: branches/upstream/current-6/includes/cache.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/cache.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/cache.inc (original)
+++ branches/upstream/current-6/includes/cache.inc Thu May 10 18:48:16 2012
@@ -9,6 +9,8 @@
  * @param $table
  *   The table $table to store the data in. Valid core values are 'cache_filter',
  *   'cache_menu', 'cache_page', or 'cache' for the default cache.
+ *
+ *   @see cache_set()
  */
 function cache_get($cid, $table = 'cache') {
   global $user;
@@ -97,6 +99,8 @@
  *     the given time, after which it behaves like CACHE_TEMPORARY.
  * @param $headers
  *   A string containing HTTP header information for cached pages.
+ *
+ *   @see cache_get()
  */
 function cache_set($cid, $data, $table = 'cache', $expire = CACHE_PERMANENT, $headers = NULL) {
   $serialized = 0;

Modified: branches/upstream/current-6/includes/common.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/common.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/common.inc (original)
+++ branches/upstream/current-6/includes/common.inc Thu May 10 18:48:16 2012
@@ -29,6 +29,12 @@
 if (!defined('E_DEPRECATED')) {
   define('E_DEPRECATED', 8192);
 }
+
+/**
+ * Error code indicating that the request made by drupal_http_request() exceeded
+ * the specified timeout.
+ */
+define('HTTP_REQUEST_TIMEOUT', -1);
 
 /**
  * Set content for a specified region.
@@ -292,7 +298,8 @@
  * @param $path
  *   A Drupal path or a full URL.
  * @param $query
- *   A query string component, if any.
+ *   A URL-encoded query string to append to the link, or an array of query
+ *   key/value-pairs without any URL-encoding. Passed to url().
  * @param $fragment
  *   A destination fragment identifier (named anchor).
  * @param $http_response_code
@@ -354,7 +361,7 @@
  */
 function drupal_site_offline() {
   drupal_maintenance_theme();
-  drupal_set_header('HTTP/1.1 503 Service unavailable');
+  drupal_set_header($_SERVER['SERVER_PROTOCOL'] .' 503 Service unavailable');
   drupal_set_title(t('Site off-line'));
   print theme('maintenance_page', filter_xss_admin(variable_get('site_offline_message',
     t('@site is currently under maintenance. We should be back shortly. Thank you for your patience.', array('@site' => variable_get('site_name', 'Drupal'))))));
@@ -364,7 +371,7 @@
  * Generates a 404 error if the request can not be handled.
  */
 function drupal_not_found() {
-  drupal_set_header('HTTP/1.1 404 Not Found');
+  drupal_set_header($_SERVER['SERVER_PROTOCOL'] .' 404 Not Found');
 
   watchdog('page not found', check_plain($_GET['q']), NULL, WATCHDOG_WARNING);
 
@@ -394,7 +401,7 @@
  * Generates a 403 error if the request is not allowed.
  */
 function drupal_access_denied() {
-  drupal_set_header('HTTP/1.1 403 Forbidden');
+  drupal_set_header($_SERVER['SERVER_PROTOCOL'] .' 403 Forbidden');
 
   watchdog('access denied', check_plain($_GET['q']), NULL, WATCHDOG_WARNING);
 
@@ -435,11 +442,15 @@
  * @param $retry
  *   An integer representing how many times to retry the request in case of a
  *   redirect.
+ * @param $timeout
+ *   A float representing the maximum number of seconds the function call may
+ *   take. The default is 30 seconds. If a timeout occurs, the error code is set
+ *   to the HTTP_REQUEST_TIMEOUT constant.
  * @return
  *   An object containing the HTTP request headers, response code, protocol,
  *   status message, headers, data and redirect status.
  */
-function drupal_http_request($url, $headers = array(), $method = 'GET', $data = NULL, $retry = 3) {
+function drupal_http_request($url, $headers = array(), $method = 'GET', $data = NULL, $retry = 3, $timeout = 30.0) {
   global $db_prefix;
 
   $result = new stdClass();
@@ -458,19 +469,21 @@
     $result->code = -1002;
     return $result;
   }
+
+  timer_start(__FUNCTION__);
 
   switch ($uri['scheme']) {
     case 'http':
     case 'feed':
       $port = isset($uri['port']) ? $uri['port'] : 80;
       $host = $uri['host'] . ($port != 80 ? ':'. $port : '');
-      $fp = @fsockopen($uri['host'], $port, $errno, $errstr, 15);
+      $fp = @fsockopen($uri['host'], $port, $errno, $errstr, $timeout);
       break;
     case 'https':
       // Note: Only works for PHP 4.3 compiled with OpenSSL.
       $port = isset($uri['port']) ? $uri['port'] : 443;
       $host = $uri['host'] . ($port != 443 ? ':'. $port : '');
-      $fp = @fsockopen('ssl://'. $uri['host'], $port, $errno, $errstr, 20);
+      $fp = @fsockopen('ssl://'. $uri['host'], $port, $errno, $errstr, $timeout);
       break;
     default:
       $result->error = 'invalid schema '. $uri['scheme'];
@@ -544,17 +557,33 @@
 
   $result->request = $request;
 
-  fwrite($fp, $request);
+  // Calculate how much time is left of the original timeout value.
+  $time_left = $timeout - timer_read(__FUNCTION__) / 1000;
+  if ($time_left > 0) {
+    stream_set_timeout($fp, floor($time_left), floor(1000000 * fmod($time_left, 1)));
+    fwrite($fp, $request);
+  }
 
   // Fetch response.
   $response = '';
-  while (!feof($fp) && $chunk = fread($fp, 1024)) {
+  while (!feof($fp)) {
+    // Calculate how much time is left of the original timeout value.
+    $time_left = $timeout - timer_read(__FUNCTION__) / 1000;
+    if ($time_left <= 0) {
+      $result->code = HTTP_REQUEST_TIMEOUT;
+      $result->error = 'request timed out';
+      return $result;
+    }
+    stream_set_timeout($fp, floor($time_left), floor(1000000 * fmod($time_left, 1)));
+    $chunk = fread($fp, 1024);
     $response .= $chunk;
   }
   fclose($fp);
 
-  // Parse response.
-  list($split, $result->data) = explode("\r\n\r\n", $response, 2);
+  // Parse response headers from the response body.
+  // Be tolerant of malformed HTTP responses that separate header and body with
+  // \n\n or \r\r instead of \r\n\r\n.  See http://drupal.org/node/183435
+  list($split, $result->data) = preg_split("/\r\n\r\n|\n\n|\r\r/", $response, 2);
   $split = preg_split("/\r\n|\n|\r/", $split);
 
   list($protocol, $code, $status_message) = explode(' ', trim(array_shift($split)), 3);
@@ -597,9 +626,13 @@
     case 302: // Moved temporarily
     case 307: // Moved temporarily
       $location = $result->headers['Location'];
-
-      if ($retry) {
-        $result = drupal_http_request($result->headers['Location'], $headers, $method, $data, --$retry);
+      $timeout -= timer_read(__FUNCTION__) / 1000;
+      if ($timeout <= 0) {
+        $result->code = HTTP_REQUEST_TIMEOUT;
+        $result->error = 'request timed out';
+      }
+      elseif ($retry) {
+        $result = drupal_http_request($result->headers['Location'], $headers, $method, $data, --$retry, $timeout);
         $result->redirect_code = $result->code;
       }
       $result->redirect_url = $location;
@@ -652,7 +685,9 @@
       }
     }
 
-    $entry = check_plain($types[$errno]) .': '. filter_xss($message) .' in '. check_plain($filename) .' on line '. check_plain($line) .'.';
+    // Try to use filter_xss(). If it's too early in the bootstrap process for
+    // filter_xss() to be loaded, use check_plain() instead.
+    $entry = check_plain($types[$errno]) .': '. (function_exists('filter_xss') ? filter_xss($message) : check_plain($message)) .' in '. check_plain($filename) .' on line '. check_plain($line) .'.';
 
     // Force display of error messages in update.php.
     if (variable_get('error_level', 1) == 1 || strstr($_SERVER['SCRIPT_NAME'], 'update.php')) {
@@ -1788,8 +1823,11 @@
  *
  *   Typical candidates for caching are for example styles for nodes across
  *   the site, or used in the theme.
+ *
  * @return
  *   An array of CSS files.
+ *
+ * @see drupal_get_css()
  */
 function drupal_add_css($path = NULL, $type = 'module', $media = 'all', $preprocess = TRUE) {
   static $css = array();
@@ -1835,8 +1873,11 @@
  * @param $css
  *   (optional) An array of CSS files. If no array is provided, the default
  *   stylesheets array is used instead.
+ *
  * @return
  *   A string of XHTML CSS tags.
+ *
+ * @see drupal_add_css()
  */
 function drupal_get_css($css = NULL) {
   $output = '';
@@ -2533,8 +2574,8 @@
  *   (optional) If set, the variable will be converted to JSON and output.
  */
 function drupal_json($var = NULL) {
-  // We are returning JavaScript, so tell the browser.
-  drupal_set_header('Content-Type: text/javascript; charset=utf-8');
+  // We are returning JSON, so tell the browser.
+  drupal_set_header('Content-Type: application/json');
 
   if (isset($var)) {
     echo drupal_to_js($var);

Modified: branches/upstream/current-6/includes/database.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/database.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/database.inc (original)
+++ branches/upstream/current-6/includes/database.inc Thu May 10 18:48:16 2012
@@ -115,10 +115,11 @@
  * code.
  *
  * @param $name
- *   The name assigned to the newly active database connection. If omitted, the
+ *   The key in the $db_url global variable from settings.php. If omitted, the
  *   default connection will be made active.
  *
- * @return the name of the previously active database or FALSE if non was found.
+ * @return
+ *   The name of the previously active database, or FALSE if none was found.
  */
 function db_set_active($name = 'default') {
   global $db_url, $db_type, $active_db;
@@ -173,7 +174,7 @@
   global $db_type;
   drupal_init_language();
   drupal_maintenance_theme();
-  drupal_set_header('HTTP/1.1 503 Service Unavailable');
+  drupal_set_header($_SERVER['SERVER_PROTOCOL'] .' 503 Service Unavailable');
   drupal_set_title('Site off-line');
 
   $message = '<p>The site is currently not available due to technical problems. Please try again later. Thank you for your understanding.</p>';

Modified: branches/upstream/current-6/includes/database.mysql-common.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/database.mysql-common.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/database.mysql-common.inc (original)
+++ branches/upstream/current-6/includes/database.mysql-common.inc Thu May 10 18:48:16 2012
@@ -26,8 +26,9 @@
  *   and TRUE values to decimal 1.
  *
  * @return
- *   A database query result resource, or FALSE if the query was not
- *   executed correctly.
+ *   Successful SELECT, SHOW, DESCRIBE, EXPLAIN, or other queries which return a
+ *   set of results will return a database query result resource. Other
+ *   successful queries will return TRUE and failing queries will return FALSE.
  */
 function db_query($query) {
   $args = func_get_args();

Modified: branches/upstream/current-6/includes/database.mysql.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/database.mysql.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/database.mysql.inc (original)
+++ branches/upstream/current-6/includes/database.mysql.inc Thu May 10 18:48:16 2012
@@ -176,7 +176,7 @@
  *
  * @param $result
  *   A database query result resource, as returned from db_query().
- * 
+ *
  * @return
  *   The resulting field or FALSE.
  */
@@ -253,9 +253,9 @@
 /**
  * Runs a SELECT query and stores its results in a temporary table.
  *
- * Use this as a substitute for db_query() when the results need to stored
- * in a temporary table. Temporary tables exist for the duration of the page
- * request.
+ * Use this as a substitute for db_query() when the results need to be stored
+ * in a temporary table.
+ *
  * User-supplied arguments to the query should be passed in as separate parameters
  * so that they can be properly escaped to avoid SQL injection attacks.
  *
@@ -274,10 +274,10 @@
  *
  *   NOTE: using this syntax will cast NULL and FALSE values to decimal 0,
  *   and TRUE values to decimal 1.
- *
  * @param $table
  *   The name of the temporary table to select into. This name will not be
  *   prefixed as there is no risk of collision.
+ *
  * @return
  *   A database query result resource, or FALSE if the query was not executed
  *   correctly.

Modified: branches/upstream/current-6/includes/database.mysqli.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/database.mysqli.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/database.mysqli.inc (original)
+++ branches/upstream/current-6/includes/database.mysqli.inc Thu May 10 18:48:16 2012
@@ -253,9 +253,9 @@
 /**
  * Runs a SELECT query and stores its results in a temporary table.
  *
- * Use this as a substitute for db_query() when the results need to stored
- * in a temporary table. Temporary tables exist for the duration of the page
- * request.
+ * Use this as a substitute for db_query() when the results need to be stored
+ * in a temporary table.
+ * 
  * User-supplied arguments to the query should be passed in as separate parameters
  * so that they can be properly escaped to avoid SQL injection attacks.
  *
@@ -274,10 +274,10 @@
  *
  *   NOTE: using this syntax will cast NULL and FALSE values to decimal 0,
  *   and TRUE values to decimal 1.
- *
  * @param $table
  *   The name of the temporary table to select into. This name will not be
  *   prefixed as there is no risk of collision.
+ *
  * @return
  *   A database query result resource, or FALSE if the query was not executed
  *   correctly.

Modified: branches/upstream/current-6/includes/database.pgsql.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/database.pgsql.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/database.pgsql.inc (original)
+++ branches/upstream/current-6/includes/database.pgsql.inc Thu May 10 18:48:16 2012
@@ -287,9 +287,9 @@
 /**
  * Runs a SELECT query and stores its results in a temporary table.
  *
- * Use this as a substitute for db_query() when the results need to stored
- * in a temporary table. Temporary tables exist for the duration of the page
- * request.
+ * Use this as a substitute for db_query() when the results need to be stored
+ * in a temporary table.
+ *
  * User-supplied arguments to the query should be passed in as separate parameters
  * so that they can be properly escaped to avoid SQL injection attacks.
  *
@@ -308,10 +308,10 @@
  *
  *   NOTE: using this syntax will cast NULL and FALSE values to decimal 0,
  *   and TRUE values to decimal 1.
- *
  * @param $table
  *   The name of the temporary table to select into. This name will not be
  *   prefixed as there is no risk of collision.
+ *
  * @return
  *   A database query result resource, or FALSE if the query was not executed
  *   correctly.

Modified: branches/upstream/current-6/includes/file.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/file.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/file.inc (original)
+++ branches/upstream/current-6/includes/file.inc Thu May 10 18:48:16 2012
@@ -459,6 +459,7 @@
     }
     else {
       $name = $basename;
+      $ext = '';
     }
 
     $counter = 0;
@@ -682,7 +683,7 @@
 
   // Bypass validation for uid  = 1.
   if ($user->uid != 1) {
-    $regex = '/\.('. ereg_replace(' +', '|', preg_quote($extensions)) .')$/i';
+    $regex = '/\.('. @ereg_replace(' +', '|', preg_quote($extensions)) .')$/i';
     if (!preg_match($regex, $file->filename)) {
       $errors[] = t('Only files with the following extensions are allowed: %files-allowed.', array('%files-allowed' => $extensions));
     }
@@ -830,8 +831,13 @@
 /**
  * Set the status of a file.
  *
- * @param file A Drupal file object
- * @param status A status value to set the file to.
+ * @param $file 
+ *   A Drupal file object.
+ * @param $status
+ *   A status value to set the file to. One of:
+ *   - FILE_STATUS_PERMANENT
+ *   - FILE_STATUS_TEMPORARY
+ *
  * @return FALSE on failure, TRUE on success and $file->status will contain the
  *     status.
  */
@@ -918,6 +924,7 @@
 
 /**
  * Finds all files that match a given mask in a given directory.
+ *
  * Directories and files beginning with a period are excluded; this
  * prevents hidden files and directories (such as SVN working directories)
  * from being scanned.
@@ -934,18 +941,19 @@
  *   When TRUE, the directory scan will recurse the entire tree
  *   starting at the provided directory.
  * @param $key
- *   The key to be used for the returned array of files. Possible
- *   values are "filename", for the path starting with $dir,
- *   "basename", for the basename of the file, and "name" for the name
- *   of the file without an extension.
+ *   The key to be used for the returned associative array of files. Possible
+ *   values are "filename", for the path starting with $dir; "basename", for
+ *   the basename of the file; and "name" for the name of the file without the
+ *   extension.
  * @param $min_depth
  *   Minimum depth of directories to return files from.
  * @param $depth
- *   Current depth of recursion. This parameter is only used internally and should not be passed.
+ *   Current depth of recursion. This parameter is only used internally and
+ *   should not be passed in.
  *
  * @return
  *   An associative array (keyed on the provided key) of objects with
- *   "path", "basename", and "name" members corresponding to the
+ *   "filename", "basename", and "name" members corresponding to the
  *   matching files.
  */
 function file_scan_directory($dir, $mask, $nomask = array('.', '..', 'CVS'), $callback = 0, $recurse = TRUE, $key = 'filename', $min_depth = 0, $depth = 0) {
@@ -959,7 +967,7 @@
           // Give priority to files in this folder by merging them in after any subdirectory files.
           $files = array_merge(file_scan_directory("$dir/$file", $mask, $nomask, $callback, $recurse, $key, $min_depth, $depth + 1), $files);
         }
-        elseif ($depth >= $min_depth && ereg($mask, $file)) {
+        elseif ($depth >= $min_depth && @ereg($mask, $file)) {
           // Always use this match over anything already set in $files with the same $$key.
           $filename = "$dir/$file";
           $basename = basename($file);

Modified: branches/upstream/current-6/includes/form.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/form.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/form.inc (original)
+++ branches/upstream/current-6/includes/form.inc Thu May 10 18:48:16 2012
@@ -41,8 +41,8 @@
  *
  * For information on the format of the structured arrays used to define forms,
  * and more detailed explanations of the Form API workflow, see the
- * @link http://api.drupal.org/api/file/developer/topics/forms_api_reference.html reference @endlink
- * and the @link http://api.drupal.org/api/file/developer/topics/forms_api.html quickstart guide. @endlink
+ * @link http://api.drupal.org/api/file/developer/topics/forms_api_reference.html/6 reference @endlink
+ * and the @link http://drupal.org/node/204270 Form API guide. @endlink
  */
 
 /**
@@ -305,6 +305,11 @@
   
   $form = call_user_func_array('drupal_retrieve_form', $args);
   $form['#post'] = $form_state['values'];
+
+  // Reset form validation.
+  $form_state['must_validate'] = TRUE;
+  form_set_error(NULL, '', TRUE);
+
   drupal_prepare_form($form_id, $form, $form_state);
   drupal_process_form($form_id, $form, $form_state);
 }
@@ -575,7 +580,7 @@
 function drupal_validate_form($form_id, $form, &$form_state) {
   static $validated_forms = array();
 
-  if (isset($validated_forms[$form_id])) {
+  if (isset($validated_forms[$form_id]) && empty($form_state['must_validate'])) {
     return;
   }
 
@@ -1720,9 +1725,9 @@
 /**
  * Validates the date type to stop dates like February 30, 2006.
  */
-function date_validate($form) {
-  if (!checkdate($form['#value']['month'], $form['#value']['day'], $form['#value']['year'])) {
-    form_error($form, t('The specified date is invalid.'));
+function date_validate($element) {
+  if (!checkdate($element['#value']['month'], $element['#value']['day'], $element['#value']['year'])) {
+    form_error($element, t('The specified date is invalid.'));
   }
 }
 
@@ -2324,8 +2329,9 @@
  *   'file' => 'path_to_file_containing_myfunctions',
  * );
  * batch_set($batch);
- * // only needed if not inside a form _submit handler :
- * batch_process();
+ * // Only needed if not inside a form _submit handler.
+ * // Setting redirect in batch_process.
+ * batch_process('node/1');
  * @endcode
  *
  * Note: if the batch 'title', 'init_message', 'progress_message', or
@@ -2436,7 +2442,7 @@
  * clean code independence, ensuring that several batches submitted by
  * different parts of the code (core / contrib modules) can be processed
  * correctly while not interfering or having to cope with each other. Each
- * batch set gets to specify his own UI messages, operates on its own set
+ * batch set gets to specify its own UI messages, operates on its own set
  * of operations and results, and triggers its own 'finished' callback.
  * Batch sets are processed sequentially, with the progress bar starting
  * fresh for every new set.

Modified: branches/upstream/current-6/includes/locale.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/locale.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/locale.inc (original)
+++ branches/upstream/current-6/includes/locale.inc Thu May 10 18:48:16 2012
@@ -1293,13 +1293,10 @@
           // data untouched or if we don't have an existing plural formula.
           $header = _locale_import_parse_header($value['msgstr']);
 
-          // Get the plural formula and update in database.
+          // Get and store the plural formula if available.
           if (isset($header["Plural-Forms"]) && $p = _locale_import_parse_plural_forms($header["Plural-Forms"], $file->filename)) {
             list($nplurals, $plural) = $p;
             db_query("UPDATE {languages} SET plurals = %d, formula = '%s' WHERE language = '%s'", $nplurals, $plural, $lang);
-          }
-          else {
-            db_query("UPDATE {languages} SET plurals = %d, formula = '%s' WHERE language = '%s'", 0, '', $lang);
           }
         }
         $headerdone = TRUE;
@@ -2158,35 +2155,12 @@
   }
 
   // Construct the array for JavaScript translations.
-  // We sort on plural so that we have all plural forms before singular forms.
-  $result = db_query("SELECT s.lid, s.source, t.plid, t.plural, t.translation FROM {locales_source} s LEFT JOIN {locales_target} t ON s.lid = t.lid AND t.language = '%s' WHERE s.location LIKE '%%.js%%' AND s.textgroup = 'default' ORDER BY t.plural DESC", $language->language);
-
-  $translations = $plurals = array();
+  // Only add strings with a translation to the translations array.
+  $result = db_query("SELECT s.lid, s.source, t.translation FROM {locales_source} s INNER JOIN {locales_target} t ON s.lid = t.lid AND t.language = '%s' WHERE s.location LIKE '%%.js%%' AND s.textgroup = 'default'", $language->language);
+
+  $translations = array();
   while ($data = db_fetch_object($result)) {
-    // Only add this to the translations array when there is actually a translation.
-    if (!empty($data->translation)) {
-      if ($data->plural) {
-        // When the translation is a plural form, first add it to another array and
-        // wait for the singular (parent) translation.
-        if (!isset($plurals[$data->plid])) {
-          $plurals[$data->plid] = array($data->plural => $data->translation);
-        }
-        else {
-          $plurals[$data->plid] += array($data->plural => $data->translation);
-        }
-      }
-      elseif (isset($plurals[$data->lid])) {
-        // There are plural translations for this translation, so get them from
-        // the plurals array and add them to the final translations array.
-        $translations[$data->source] = array($data->plural => $data->translation) + $plurals[$data->lid];
-        unset($plurals[$data->lid]);
-      }
-      else {
-        // There are no plural forms for this translation, so just add it to
-        // the translations array.
-        $translations[$data->source] = $data->translation;
-      }
-    }
+    $translations[$data->source] = $data->translation;
   }
 
   // Construct the JavaScript file, if there are translations.
@@ -2621,20 +2595,21 @@
     $operations = array();
     foreach ($files as $file) {
       // We call _locale_batch_import for every batch operation.
-      $operations[] = array('_locale_batch_import', array($file->filename));    }
-      $batch = array(
-        'operations'    => $operations,
-        'title'         => $t('Importing interface translations'),
-        'init_message'  => $t('Starting import'),
-        'error_message' => $t('Error importing interface translations'),
-        'file'          => './includes/locale.inc',
-        // This is not a batch API construct, but data passed along to the
-        // installer, so we know what did we import already.
-        '#components'   => $components,
-      );
-      if (isset($finished)) {
-        $batch['finished'] = $finished;
-      }
+      $operations[] = array('_locale_batch_import', array($file->filename));
+    }
+    $batch = array(
+      'operations'    => $operations,
+      'title'         => $t('Importing interface translations'),
+      'init_message'  => $t('Starting import'),
+      'error_message' => $t('Error importing interface translations'),
+      'file'          => './includes/locale.inc',
+      // This is not a batch API construct, but data passed along to the
+      // installer, so we know what did we import already.
+      '#components'   => $components,
+    );
+    if (isset($finished)) {
+      $batch['finished'] = $finished;
+    }
     return $batch;
   }
   return FALSE;

Added: branches/upstream/current-6/includes/lock-install.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/lock-install.inc?rev=2268&op=file
==============================================================================
--- branches/upstream/current-6/includes/lock-install.inc (added)
+++ branches/upstream/current-6/includes/lock-install.inc Thu May 10 18:48:16 2012
@@ -1,0 +1,62 @@
+<?php
+
+/**
+ * @file
+ * A stub lock implementation to be used during the installation
+ * process when database access is not yet available. Because Drupal's
+ * install system should never be running in more than on concurrant
+ * request, we can bypass any need for locking.
+ */
+
+/**
+ * Initialize the locking system.
+ */
+function lock_init() {
+}
+
+/**
+ * Acquire (or renew) a lock, but do not block if it fails.
+ *
+ * @return
+ *   TRUE if the lock was acquired, FALSE if it failed.
+ */
+function lock_acquire($name, $timeout = 30.0) {
+  return TRUE;
+}
+
+/**
+ * Check if lock acquired by a different process may be available.
+ *
+ * @return
+ *   TRUE if there is no lock or it was removed, FALSE otherwise.
+ */
+function lock_may_be_available($name) {
+  return TRUE;
+}
+
+/**
+ * Wait for a lock to be available.
+ *
+ * @return
+ *   TRUE if the lock holds, FALSE if it is available.
+ */
+function lock_wait($name, $delay = 30) {
+  return FALSE;
+}
+
+/**
+ * Release a lock previously acquired by lock_acquire().
+ *
+ * This will release the named lock if it is still held by the current request.
+ *
+ * @param $name
+ *   The name of the lock.
+ */
+function lock_release($name) {
+}
+
+/**
+ * Release all previously acquired locks.
+ */
+function lock_release_all($lock_id = NULL) {
+}

Modified: branches/upstream/current-6/includes/lock.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/lock.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/lock.inc (original)
+++ branches/upstream/current-6/includes/lock.inc Thu May 10 18:48:16 2012
@@ -102,7 +102,8 @@
   $expire = (float)$usec + (float)$sec + $timeout;
   if (isset($locks[$name])) {
     // Try to extend the expiration of a lock we already acquired.
-    if (!db_result(db_query("UPDATE {semaphore} SET expire = %f WHERE name = '%s' AND value = '%s'", $expire, $name, _lock_id()))) {
+    db_query("UPDATE {semaphore} SET expire = %f WHERE name = '%s' AND value = '%s'", $expire, $name, _lock_id());
+    if (!db_affected_rows()) {
       // The lock was broken.
       unset($locks[$name]);
     }

Modified: branches/upstream/current-6/includes/menu.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/menu.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/menu.inc (original)
+++ branches/upstream/current-6/includes/menu.inc Thu May 10 18:48:16 2012
@@ -48,8 +48,9 @@
  * Access to the callback functions is also protected by the menu system.
  * The "access callback" with an optional "access arguments" of each menu
  * item is called before the page callback proceeds. If this returns TRUE,
- * then access is granted; if FALSE, then access is denied. Menu items may
- * omit this attribute to use the value provided by an ancestor item.
+ * then access is granted; if FALSE, then access is denied. Default local task
+ * menu items (see next paragraph) may omit this attribute to use the value
+ * provided by the parent item.
  *
  * In the default Drupal interface, you will notice many links rendered as
  * tabs. These are known in the menu system as "local tasks", and they are

Modified: branches/upstream/current-6/includes/module.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/module.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/module.inc (original)
+++ branches/upstream/current-6/includes/module.inc Thu May 10 18:48:16 2012
@@ -93,6 +93,14 @@
  *   The array of filesystem objects used to rebuild the cache.
  */
 function module_rebuild_cache() {
+  $write_database = TRUE;
+  // If lock not acquired, return $files data without writing to database.
+  if (!lock_acquire('module_rebuild_cache')) {
+    $write_database = FALSE;
+    // Wait for the parallel thread to be done so we are more likely
+    // to get updated and consistent data.
+    lock_wait('module_rebuild_cache');
+  }
   // Get current list of modules
   $files = drupal_system_listing('\.module$', 'modules', 'name', 0);
 
@@ -119,32 +127,39 @@
       unset($files[$filename]);
       continue;
     }
-    // Merge in defaults and save.
-    $files[$filename]->info = $file->info + $defaults;
 
     // Invoke hook_system_info_alter() to give installed modules a chance to
     // modify the data in the .info files if necessary.
     drupal_alter('system_info', $files[$filename]->info, $files[$filename]);
 
-    // Log the critical hooks implemented by this module.
-    $bootstrap = 0;
-    foreach (bootstrap_hooks() as $hook) {
-      if (module_hook($file->name, $hook)) {
-        $bootstrap = 1;
-        break;
-      }
-    }
-
-    // Update the contents of the system table:
-    if (isset($file->status) || (isset($file->old_filename) && $file->old_filename != $file->filename)) {
-      db_query("UPDATE {system} SET info = '%s', name = '%s', filename = '%s', bootstrap = %d WHERE filename = '%s'", serialize($files[$filename]->info), $file->name, $file->filename, $bootstrap, $file->old_filename);
-    }
-    else {
-      // This is a new module.
-      $files[$filename]->status = 0;
-      $files[$filename]->throttle = 0;
-      db_query("INSERT INTO {system} (name, info, type, filename, status, throttle, bootstrap) VALUES ('%s', '%s', '%s', '%s', %d, %d, %d)", $file->name, serialize($files[$filename]->info), 'module', $file->filename, 0, 0, $bootstrap);
-    }
+    // Merge in defaults and save.
+    $files[$filename]->info = $file->info + $defaults;
+  }
+
+  // If lock not acquired, return $files data without writing to database.
+  if ($write_database) {
+    foreach ($files as $filename => $file) {
+      // Log the critical hooks implemented by this module.
+      $bootstrap = 0;
+      foreach (bootstrap_hooks() as $hook) {
+        if (module_hook($file->name, $hook)) {
+          $bootstrap = 1;
+          break;
+        }
+      }
+
+      // Update the contents of the system table:
+      if (isset($file->status)) {
+        db_query("UPDATE {system} SET info = '%s', name = '%s', filename = '%s', bootstrap = %d WHERE filename = '%s'", serialize($files[$filename]->info), $file->name, $file->filename, $bootstrap, $file->old_filename);
+      }
+      else {
+        // This is a new module.
+        $files[$filename]->status = 0;
+        $files[$filename]->throttle = 0;
+        db_query("INSERT INTO {system} (name, info, type, filename, status, throttle, bootstrap) VALUES ('%s', '%s', '%s', '%s', %d, %d, %d)", $file->name, serialize($files[$filename]->info), 'module', $file->filename, 0, 0, $bootstrap);
+      }
+    }
+    lock_release('module_rebuild_cache');
   }
   $files = _module_build_dependencies($files);
   return $files;

Modified: branches/upstream/current-6/includes/pager.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/pager.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/pager.inc (original)
+++ branches/upstream/current-6/includes/pager.inc Thu May 10 18:48:16 2012
@@ -90,7 +90,7 @@
 }
 
 /**
- * Format a query pager.
+ * Returns HTML for a query pager.
  *
  * Menu callbacks that display paged query results should call theme('pager') to
  * retrieve a pager control so that users can view other results.
@@ -223,7 +223,7 @@
  */
 
 /**
- * Format a "first page" link.
+ * Returns HTML for a "first page" link.
  *
  * @param $text
  *   The name (or image) of the link.
@@ -251,7 +251,7 @@
 }
 
 /**
- * Format a "previous page" link.
+ * Returns HTML for a "previous page" link.
  *
  * @param $text
  *   The name (or image) of the link.
@@ -290,7 +290,7 @@
 }
 
 /**
- * Format a "next page" link.
+ * Returns HTML for a "next page" link.
  *
  * @param $text
  *   The name (or image) of the link.
@@ -328,7 +328,7 @@
 }
 
 /**
- * Format a "last page" link.
+ * Returns HTML for a "last page" link.
  *
  * @param $text
  *   The name (or image) of the link.
@@ -357,8 +357,13 @@
 
 
 /**
- * Format a link to a specific query result page.
- *
+ * Returns HTML for a link to a specific query result page.
+ *
+ * @param $text
+ *   The link text. Also used to figure out the title attribute of the link,
+ *   if it is not provided in $attributes['title']; in this case, $text must
+ *   be one of the standard pager link text strings that would be generated by
+ *   the pager theme functions, such as a number or t('« first').
  * @param $page_new
  *   The first result to display on the linked page.
  * @param $element
@@ -366,7 +371,7 @@
  * @param $parameters
  *   An associative array of query string parameters to append to the pager link.
  * @param $attributes
- *   An associative array of HTML attributes to apply to a pager anchor tag.
+ *   An associative array of HTML attributes to apply to the pager link.
  * @return
  *   An HTML string that generates the link.
  *

Modified: branches/upstream/current-6/includes/session.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/session.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/session.inc (original)
+++ branches/upstream/current-6/includes/session.inc Thu May 10 18:48:16 2012
@@ -13,6 +13,25 @@
   return TRUE;
 }
 
+/**
+ * Reads an entire session from the database (internal use only).
+ *
+ * Also initializes the $user object for the user associated with the session.
+ * This function is registered with session_set_save_handler() to support
+ * database-backed sessions. It is called on every page load when PHP sets
+ * up the $_SESSION superglobal.
+ *
+ * This function is an internal function and must not be called directly.
+ * Doing so may result in logging out the current user, corrupting session data
+ * or other unexpected behavior. Session data must always be accessed via the
+ * $_SESSION superglobal.
+ *
+ * @param $key
+ *   The session ID of the session to retrieve.
+ *
+ * @return
+ *   The user's session, or an empty string if no session exists.
+ */
 function sess_read($key) {
   global $user;
 
@@ -54,6 +73,24 @@
   return $user->session;
 }
 
+/**
+ * Writes an entire session to the database (internal use only).
+ *
+ * This function is registered with session_set_save_handler() to support
+ * database-backed sessions.
+ *
+ * This function is an internal function and must not be called directly.
+ * Doing so may result in corrupted session data or other unexpected behavior.
+ * Session data must always be accessed via the $_SESSION superglobal.
+ *
+ * @param $key
+ *   The session ID of the session to write to.
+ * @param $value
+ *   Session data to write as a serialized string.
+ *
+ * @return
+ *   Always returns TRUE.
+ */
 function sess_write($key, $value) {
   global $user;
 

Modified: branches/upstream/current-6/includes/theme.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/theme.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/theme.inc (original)
+++ branches/upstream/current-6/includes/theme.inc Thu May 10 18:48:16 2012
@@ -523,7 +523,7 @@
 }
 
 /**
- * Generate the themed output.
+ * Generates the themed output.
  *
  * All requests for theme hooks must go through this function. It examines
  * the request and routes it to the appropriate theme function. The theme
@@ -539,14 +539,14 @@
  * functions may be used to modify the $variables array. They are processed in
  * this order when available:
  *
- * - template_preprocess(&$variables)
+ * - template_preprocess(&$variables, $hook)
  *   This sets a default set of variables for all template implementations.
  *
  * - template_preprocess_HOOK(&$variables)
  *   This is the first preprocessor called specific to the hook; it should be
  *   implemented by the module that registers it.
  *
- * - MODULE_preprocess(&$variables)
+ * - MODULE_preprocess(&$variables, $hook)
  *   This will be called for all templates; it should only be used if there
  *   is a real need. It's purpose is similar to template_preprocess().
  *
@@ -557,7 +557,7 @@
  *   preprocess function of foo_preprocess_node() can be created to intercept
  *   and alter the variable.
  *
- * - ENGINE_engine_preprocess(&$variables)
+ * - ENGINE_engine_preprocess(&$variables, $hook)
  *   This function should only be implemented by theme engines and exists
  *   so that it can set necessary variables for all hooks.
  *
@@ -565,7 +565,7 @@
  *   This is the same as the previous function, but it is called for a single
  *   theming hook.
  *
- * - ENGINE_preprocess(&$variables)
+ * - ENGINE_preprocess(&$variables, $hook)
  *   This is meant to be used by themes that utilize a theme engine. It is
  *   provided so that the preprocessor is not locked into a specific theme.
  *   This makes it easy to share and transport code but theme authors must be
@@ -581,7 +581,7 @@
  *   The same applies from the previous function, but it is called for a
  *   specific hook.
  *
- * - THEME_preprocess(&$variables)
+ * - THEME_preprocess(&$variables, $hook)
  *   These functions are based upon the raw theme; they should primarily be
  *   used by themes that do not use an engine or by sub-themes. It serves the
  *   same purpose as ENGINE_preprocess().
@@ -606,6 +606,7 @@
  *   implementations for named objects.
  * @param ...
  *   Additional arguments to pass along to the theme function.
+ * 
  * @return
  *   An HTML string that generates the themed output.
  */
@@ -1190,12 +1191,24 @@
 }
 
 /**
- * Return a themed set of links.
+ * Returns HTML for a set of links.
  *
  * @param $links
- *   A keyed array of links to be themed.
+ *   An associative array of links to be themed. The key for each link
+ *   is used as its CSS class. Each link should be itself an array, with the
+ *   following elements:
+ *   - title: The link text.
+ *   - href: The link URL. If omitted, the 'title' is shown as a plain text
+ *     item in the links list.
+ *   - html: (optional) Whether or not 'title' is HTML. If set, the title
+ *     will not be passed through check_plain().
+ *   - attributes: (optional) Attributes for the anchor, or for the <span> tag
+ *     used in its place if no 'href' is supplied.
+ *   If the 'href' element is supplied, the entire link array is passed to l()
+ *   as its $options parameter.
  * @param $attributes
- *   A keyed array of attributes
+ *   An associative array of attributes for the UL containing the list of links.
+ *
  * @return
  *   A string containing an unordered list of links.
  */

Modified: branches/upstream/current-6/includes/unicode.entities.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/unicode.entities.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/unicode.entities.inc (original)
+++ branches/upstream/current-6/includes/unicode.entities.inc Thu May 10 18:48:16 2012
@@ -1,5 +1,4 @@
 <?php
-// $Id $
 
 /**
  * @file

Modified: branches/upstream/current-6/includes/unicode.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/includes/unicode.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/includes/unicode.inc (original)
+++ branches/upstream/current-6/includes/unicode.inc Thu May 10 18:48:16 2012
@@ -134,7 +134,7 @@
   }
 
   // Check for an encoding declaration in the XML prolog if no BOM was found.
-  if (!$bom && ereg('^<\?xml[^>]+encoding="([^"]+)"', $data, $match)) {
+  if (!$bom && @ereg('^<\?xml[^>]+encoding="([^"]+)"', $data, $match)) {
     $encoding = $match[1];
   }
 
@@ -144,7 +144,7 @@
     $out = drupal_convert_to_utf8($data, $encoding);
     if ($out !== FALSE) {
       $encoding = 'utf-8';
-      $data = ereg_replace('^(<\?xml[^>]+encoding)="([^"]+)"', '\\1="utf-8"', $out);
+      $data = @ereg_replace('^(<\?xml[^>]+encoding)="([^"]+)"', '\\1="utf-8"', $out);
     }
     else {
       watchdog('php', 'Could not convert XML encoding %s to UTF-8.', array('%s' => $encoding), WATCHDOG_WARNING);

Modified: branches/upstream/current-6/install.php
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/install.php?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/install.php (original)
+++ branches/upstream/current-6/install.php Thu May 10 18:48:16 2012
@@ -130,6 +130,12 @@
     if (!$verify) {
       install_change_settings($profile, $install_locale);
     }
+    // The default lock implementation uses a database table,
+    // so we cannot use it for install, but we still need
+    // the API functions available.
+    require_once './includes/lock-install.inc';
+    $conf['lock_inc'] = './includes/lock-install.inc';
+    lock_init();
 
     // Install system.module.
     drupal_install_system();

Modified: branches/upstream/current-6/misc/drupal.js
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/misc/drupal.js?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/misc/drupal.js (original)
+++ branches/upstream/current-6/misc/drupal.js Thu May 10 18:48:16 2012
@@ -149,7 +149,7 @@
   else {
     args['@count['+ index +']'] = args['@count'];
     delete args['@count'];
-    return Drupal.t(plural.replace('@count', '@count['+ index +']'));
+    return Drupal.t(plural.replace('@count', '@count['+ index +']'), args);
   }
 };
 

Modified: branches/upstream/current-6/misc/tabledrag.js
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/misc/tabledrag.js?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/misc/tabledrag.js (original)
+++ branches/upstream/current-6/misc/tabledrag.js Thu May 10 18:48:16 2012
@@ -1014,7 +1014,7 @@
   var siblings = new Array();
   var directions = new Array('prev', 'next');
   var rowIndentation = this.indents;
-  for (var d in directions) {
+  for (var d = 0; d < directions.length; d++) {
     var checkRow = $(this.element)[directions[d]]();
     while (checkRow.length) {
       // Check that the sibling contains a similar target field.

Modified: branches/upstream/current-6/modules/aggregator/aggregator.admin.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/aggregator/aggregator.admin.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/aggregator/aggregator.admin.inc (original)
+++ branches/upstream/current-6/modules/aggregator/aggregator.admin.inc Thu May 10 18:48:16 2012
@@ -26,7 +26,15 @@
   $header = array(t('Title'), t('Items'), t('Last update'), t('Next update'), array('data' => t('Operations'), 'colspan' => '3'));
   $rows = array();
   while ($feed = db_fetch_object($result)) {
-    $rows[] = array(l($feed->title, "aggregator/sources/$feed->fid"), format_plural($feed->items, '1 item', '@count items'), ($feed->checked ? t('@time ago', array('@time' => format_interval(time() - $feed->checked))) : t('never')), ($feed->checked ? t('%time left', array('%time' => format_interval($feed->checked + $feed->refresh - time()))) : t('never')), l(t('edit'), "admin/content/aggregator/edit/feed/$feed->fid"), l(t('remove items'), "admin/content/aggregator/remove/$feed->fid"), l(t('update items'), "admin/content/aggregator/update/$feed->fid"));
+    $rows[] = array(
+      l($feed->title, "aggregator/sources/$feed->fid"),
+      format_plural($feed->items, '1 item', '@count items'),
+      ($feed->checked ? t('@time ago', array('@time' => format_interval(time() - $feed->checked))) : t('never')),
+      ($feed->checked ? t('%time left', array('%time' => format_interval($feed->checked + $feed->refresh - time()))) : t('never')),
+      l(t('edit'), "admin/content/aggregator/edit/feed/$feed->fid"),
+      l(t('remove items'), "admin/content/aggregator/remove/$feed->fid"),
+      l(t('update items'), "admin/content/aggregator/update/$feed->fid", array('query' => array('token' => drupal_get_token("aggregator/update/$feed->fid")))),
+    );
   }
   $output .= theme('table', $header, $rows);
 
@@ -209,6 +217,9 @@
  *   An associative array describing the feed to be refreshed.
  */
 function aggregator_admin_refresh_feed($feed) {
+  if (!isset($_GET['token']) || !drupal_valid_token($_GET['token'], 'aggregator/update/' . $feed['fid'])) {
+    return drupal_access_denied();
+  }
   aggregator_refresh($feed);
   drupal_goto('admin/content/aggregator');
 }

Modified: branches/upstream/current-6/modules/aggregator/aggregator.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/aggregator/aggregator.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/aggregator/aggregator.info (original)
+++ branches/upstream/current-6/modules/aggregator/aggregator.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/aggregator/aggregator.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/aggregator/aggregator.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/aggregator/aggregator.module (original)
+++ branches/upstream/current-6/modules/aggregator/aggregator.module Thu May 10 18:48:16 2012
@@ -298,38 +298,38 @@
  * Generates blocks for the latest news items in each category and feed.
  */
 function aggregator_block($op = 'list', $delta = 0, $edit = array()) {
-  if (user_access('access news feeds')) {
-    if ($op == 'list') {
-      $result = db_query('SELECT cid, title FROM {aggregator_category} ORDER BY title');
-      while ($category = db_fetch_object($result)) {
-        $block['category-'. $category->cid]['info'] = t('!title category latest items', array('!title' => $category->title));
-      }
-      $result = db_query('SELECT fid, title FROM {aggregator_feed} ORDER BY fid');
-      while ($feed = db_fetch_object($result)) {
-        $block['feed-'. $feed->fid]['info'] = t('!title feed latest items', array('!title' => $feed->title));
-      }
-    }
-    else if ($op == 'configure') {
-      list($type, $id) = explode('-', $delta);
-      if ($type == 'category') {
-        $value = db_result(db_query('SELECT block FROM {aggregator_category} WHERE cid = %d', $id));
-      }
-      else {
-        $value = db_result(db_query('SELECT block FROM {aggregator_feed} WHERE fid = %d', $id));
-      }
-      $form['block'] = array('#type' => 'select', '#title' => t('Number of news items in block'), '#default_value' => $value, '#options' => drupal_map_assoc(array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)));
-      return $form;
-    }
-    else if ($op == 'save') {
-      list($type, $id) = explode('-', $delta);
-      if ($type == 'category') {
-        $value = db_query('UPDATE {aggregator_category} SET block = %d WHERE cid = %d', $edit['block'], $id);
-      }
-      else {
-        $value = db_query('UPDATE {aggregator_feed} SET block = %d WHERE fid = %d', $edit['block'], $id);
-      }
-    }
-    else if ($op == 'view') {
+  if ($op == 'list') {
+    $result = db_query('SELECT cid, title FROM {aggregator_category} ORDER BY title');
+    while ($category = db_fetch_object($result)) {
+      $block['category-'. $category->cid]['info'] = t('!title category latest items', array('!title' => $category->title));
+    }
+    $result = db_query('SELECT fid, title FROM {aggregator_feed} ORDER BY fid');
+    while ($feed = db_fetch_object($result)) {
+      $block['feed-'. $feed->fid]['info'] = t('!title feed latest items', array('!title' => $feed->title));
+    }
+  }
+  else if ($op == 'configure') {
+    list($type, $id) = explode('-', $delta);
+    if ($type == 'category') {
+      $value = db_result(db_query('SELECT block FROM {aggregator_category} WHERE cid = %d', $id));
+    }
+    else {
+      $value = db_result(db_query('SELECT block FROM {aggregator_feed} WHERE fid = %d', $id));
+    }
+    $form['block'] = array('#type' => 'select', '#title' => t('Number of news items in block'), '#default_value' => $value, '#options' => drupal_map_assoc(array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)));
+    return $form;
+  }
+  else if ($op == 'save') {
+    list($type, $id) = explode('-', $delta);
+    if ($type == 'category') {
+      $value = db_query('UPDATE {aggregator_category} SET block = %d WHERE cid = %d', $edit['block'], $id);
+    }
+    else {
+      $value = db_query('UPDATE {aggregator_feed} SET block = %d WHERE fid = %d', $edit['block'], $id);
+    }
+  }
+  else if ($op == 'view') {
+    if (user_access('access news feeds')) {
       list($type, $id) = explode('-', $delta);
       switch ($type) {
         case 'feed':
@@ -358,9 +358,9 @@
         $block['content'] = theme('item_list', $items) . $read_more;
       }
     }
-    if (isset($block)) {
-      return $block;
-    }
+  }
+  if (isset($block)) {
+    return $block;
   }
 }
 
@@ -751,7 +751,17 @@
     else {
       $link = $feed['link'];
     }
-    $guid = isset($item['GUID']) ? $item['GUID'] : '';
+
+    // Atom feeds use ID rather than GUID.
+    if (isset($item['GUID'])) {
+      $guid = $item['GUID'];
+    }
+    elseif (isset($item['ID'])) {
+      $guid = $item['ID'];
+    }
+    else {
+      $guid = '';
+    }
 
     // Atom feeds have a CONTENT and/or SUMMARY tag instead of a DESCRIPTION tag.
     if (!empty($item['CONTENT:ENCODED'])) {

Modified: branches/upstream/current-6/modules/block/block.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/block/block.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/block/block.info (original)
+++ branches/upstream/current-6/modules/block/block.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/block/block.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/block/block.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/block/block.module (original)
+++ branches/upstream/current-6/modules/block/block.module Thu May 10 18:48:16 2012
@@ -301,8 +301,12 @@
 
   // Remove blocks that are no longer defined by the code from the database.
   foreach ($old_blocks as $module => $old_module_blocks) {
-    foreach ($old_module_blocks as $delta => $block) {
-      db_query("DELETE FROM {blocks} WHERE module = '%s' AND delta = '%s' AND theme = '%s'", $module, $delta, $theme);
+    // This cleanup does not apply to disabled modules, to avoid configuration
+    // being lost when modules are disabled.
+    if (module_exists($module)) {
+      foreach ($old_module_blocks as $delta => $block) {
+        db_query("DELETE FROM {blocks} WHERE module = '%s' AND delta = '%s' AND theme = '%s'", $module, $delta, $theme);
+      }
     }
   }
   return $blocks;
@@ -437,14 +441,14 @@
  *   The name of a region.
  *
  * @return
- *   An array of block objects, indexed with <i>module</i>_<i>delta</i>.
- *   If you are displaying your blocks in one or two sidebars, you may check
- *   whether this array is empty to see how many columns are going to be
- *   displayed.
+ *   An array of block objects, indexed with module name and block delta
+ *   concatenated with an underscore, thus: MODULE_DELTA. If you are displaying
+ *   your blocks in one or two sidebars, you may check whether this array is
+ *   empty to see how many columns are going to be displayed.
  *
  * @todo
  *   Now that the blocks table has a primary key, we should use that as the
- *   array key instead of <i>module</i>_<i>delta</i>.
+ *   array key instead of MODULE_DELTA.
  */
 function block_list($region) {
   global $user, $theme_key;

Modified: branches/upstream/current-6/modules/blog/blog.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/blog/blog.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/blog/blog.info (original)
+++ branches/upstream/current-6/modules/blog/blog.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/blog/blog.pages.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/blog/blog.pages.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/blog/blog.pages.inc (original)
+++ branches/upstream/current-6/modules/blog/blog.pages.inc Thu May 10 18:48:16 2012
@@ -63,7 +63,7 @@
 
   $output = theme('item_list', $items);
 
-  $result = pager_query(db_rewrite_sql("SELECT n.nid, n.created FROM {node} n WHERE n.type = 'blog' AND n.status = 1 ORDER BY n.sticky DESC, n.created DESC"), variable_get('default_nodes_main', 10));
+  $result = pager_query(db_rewrite_sql("SELECT n.nid, n.sticky, n.created FROM {node} n WHERE n.type = 'blog' AND n.status = 1 ORDER BY n.sticky DESC, n.created DESC"), variable_get('default_nodes_main', 10));
   $has_posts = FALSE;
 
   while ($node = db_fetch_object($result)) {

Modified: branches/upstream/current-6/modules/blogapi/blogapi.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/blogapi/blogapi.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/blogapi/blogapi.info (original)
+++ branches/upstream/current-6/modules/blogapi/blogapi.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/book/book.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/book/book.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/book/book.info (original)
+++ branches/upstream/current-6/modules/book/book.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/book/book.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/book/book.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/book/book.module (original)
+++ branches/upstream/current-6/modules/book/book.module Thu May 10 18:48:16 2012
@@ -649,7 +649,7 @@
  * Appends book navigation to all nodes in the book, and handles book outline
  * insertions and updates via the node form.
  */
-function book_nodeapi(&$node, $op, $teaser, $page) {
+function book_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
   switch ($op) {
     case 'load':
       // Note - we cannot use book_link_load() because it will call node_load()

Modified: branches/upstream/current-6/modules/color/color.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/color/color.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/color/color.info (original)
+++ branches/upstream/current-6/modules/color/color.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/comment/comment.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/comment/comment.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/comment/comment.info (original)
+++ branches/upstream/current-6/modules/comment/comment.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/comment/comment.install
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/comment/comment.install?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/comment/comment.install (original)
+++ branches/upstream/current-6/modules/comment/comment.install Thu May 10 18:48:16 2012
@@ -66,6 +66,35 @@
   return $ret;
 }
 
+/**
+ * @defgroup updates-6.x-extra Extra system updates for 6.x
+ * @{
+ */
+
+/**
+ * Add index to to node_comment_statistics on comment_count
+ */
+function comment_update_6004() {
+  $ret = array();
+  db_add_index($ret, 'node_comment_statistics', 'comment_count', array('comment_count'));
+  return $ret;
+}
+
+/**
+ * Add indices to uid fields.
+ */
+function comment_update_6005() {
+  $ret = array();
+  db_add_index($ret, 'comments', 'comment_uid', array('uid'));
+  db_add_index($ret, 'node_comment_statistics', 'last_comment_uid', array('last_comment_uid'));
+  return $ret;
+}
+
+/**
+ * @} End of "defgroup updates-6.x-extra"
+ * The next series of updates should start at 7000.
+ */
+
 
 /**
  * Implementation of hook_schema().
@@ -166,6 +195,7 @@
     'indexes' => array(
       'pid'    => array('pid'),
       'nid'    => array('nid'),
+      'comment_uid'    => array('uid'),
       'status' => array('status'), // This index is probably unused
     ),
     'primary key' => array('cid'),
@@ -209,10 +239,11 @@
     ),
     'primary key' => array('nid'),
     'indexes' => array(
-      'node_comment_timestamp' => array('last_comment_timestamp')
+      'node_comment_timestamp' => array('last_comment_timestamp'),
+      'comment_count' => array('comment_count'),
+      'last_comment_uid' => array('last_comment_uid'),
     ),
   );
 
   return $schema;
 }
-

Modified: branches/upstream/current-6/modules/contact/contact.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/contact/contact.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/contact/contact.info (original)
+++ branches/upstream/current-6/modules/contact/contact.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/dblog/dblog.admin.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/dblog/dblog.admin.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/dblog/dblog.admin.inc (original)
+++ branches/upstream/current-6/modules/dblog/dblog.admin.inc Thu May 10 18:48:16 2012
@@ -79,7 +79,7 @@
         format_date($dblog->timestamp, 'small'),
         l(truncate_utf8(_dblog_format_message($dblog), 56, TRUE, TRUE), 'admin/reports/event/'. $dblog->wid, array('html' => TRUE)),
         theme('username', $dblog),
-        $dblog->link,
+        filter_xss($dblog->link),
       ),
       // Attributes for tr
       'class' => "dblog-". preg_replace('/[^a-z]/i', '-', $dblog->type) .' '. $classes[$dblog->severity]

Modified: branches/upstream/current-6/modules/dblog/dblog.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/dblog/dblog.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/dblog/dblog.info (original)
+++ branches/upstream/current-6/modules/dblog/dblog.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/filter/filter.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/filter/filter.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/filter/filter.info (original)
+++ branches/upstream/current-6/modules/filter/filter.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/forum/forum.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/forum/forum.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/forum/forum.info (original)
+++ branches/upstream/current-6/modules/forum/forum.info Thu May 10 18:48:16 2012
@@ -6,8 +6,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/forum/forum.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/forum/forum.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/forum/forum.module (original)
+++ branches/upstream/current-6/modules/forum/forum.module Thu May 10 18:48:16 2012
@@ -165,7 +165,7 @@
 /**
  * Implementation of hook_nodeapi().
  */
-function forum_nodeapi(&$node, $op, $teaser, $page) {
+function forum_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
   // We are going to return if $node->type is not one of the node
   // types assigned to the forum vocabulary.  If forum_nav_vocabulary
   // is undefined or the vocabulary does not exist, it clearly cannot

Modified: branches/upstream/current-6/modules/help/help.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/help/help.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/help/help.info (original)
+++ branches/upstream/current-6/modules/help/help.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/locale/locale.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/locale/locale.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/locale/locale.info (original)
+++ branches/upstream/current-6/modules/locale/locale.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/locale/locale.install
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/locale/locale.install?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/locale/locale.install (original)
+++ branches/upstream/current-6/modules/locale/locale.install Thu May 10 18:48:16 2012
@@ -225,6 +225,25 @@
  */
 
 /**
+ * @defgroup updates-6.x-extra Locale updates for 6.x
+ * @{
+ */
+
+/**
+ * Fix Drupal.formatPlural().
+ */
+function locale_update_6007() {
+  drupal_load('module', 'locale');
+  locale_inc_callback('_locale_invalidate_js');
+  return array();
+}
+
+/**
+ * @} End of "defgroup updates-6.x-extra"
+ * The next series of updates should start at 7000.
+ */
+
+/**
  * Implementation of hook_uninstall().
  */
 function locale_uninstall() {

Modified: branches/upstream/current-6/modules/menu/menu.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/menu/menu.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/menu/menu.info (original)
+++ branches/upstream/current-6/modules/menu/menu.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/node/node.admin.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/node/node.admin.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/node/node.admin.inc (original)
+++ branches/upstream/current-6/modules/node/node.admin.inc Thu May 10 18:48:16 2012
@@ -181,7 +181,7 @@
       case 'category':
         $table = "tn$index";
         $where[] = "$table.tid = %d";
-        $join .= "INNER JOIN {term_node} $table ON n.nid = $table.nid ";
+        $join .= "INNER JOIN {term_node} $table ON n.vid = $table.vid ";
         break;
       case 'type':
         $where[] = "n.type = '%s'";

Modified: branches/upstream/current-6/modules/node/node.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/node/node.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/node/node.info (original)
+++ branches/upstream/current-6/modules/node/node.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/node/node.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/node/node.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/node/node.module (original)
+++ branches/upstream/current-6/modules/node/node.module Thu May 10 18:48:16 2012
@@ -397,23 +397,30 @@
 }
 
 /**
- * Builds a list of available node types, and returns all of part of this list
- * in the specified format.
+ * Builds a list of available node types, and returns all or part of this list.
  *
  * @param $op
- *   The format in which to return the list. When this is set to 'type',
- *   'module', or 'name', only the specified node type is returned. When set to
- *   'types' or 'names', all node types are returned.
+ *   The format in which to return the list: 'type', 'types', 'module', 'name',
+ *   or 'names'. See return value section below for details.
  * @param $node
- *   A node object, array, or string that indicates the node type to return.
- *   Leave at default value (NULL) to return a list of all node types.
+ *   A node object, an array representation of a node object, or a node type
+ *   name string. See return value section below for details.
  * @param $reset
  *   Whether or not to reset this function's internal cache (defaults to
  *   FALSE).
  *
  * @return
- *   Either an array of all available node types, or a single node type, in a
- *   variable format. Returns FALSE if the node type is not found.
+ *   If $node is supplied and it doesn't correspond to a known node type,
+ *   or if $op is 'type', 'name', or 'module' and $node is not given, the
+ *   function returns FALSE. Otherwise, the return value depends on the
+ *   value of $op:
+ *   - 'types': An array of all available node type objects, keyed by machine
+ *     name.
+ *   - 'type': The single node type object indicated by $node.
+ *   - 'names': An array of the display names of all available node types,
+ *     keyed by machine name and sorted by display name.
+ *   - 'name': The single node type display name indicated by $node.
+ *   - 'module': The name of the node type module indicated by $node.
  */
 function node_get_types($op = 'types', $node = NULL, $reset = FALSE) {
   static $_node_types, $_node_names;
@@ -787,7 +794,7 @@
   // Make sure the body has the minimum number of words.
   // TODO : use a better word counting algorithm that will work in other languages
   if (!empty($type->min_word_count) && isset($node->body) && count(explode(' ', $node->body)) < $type->min_word_count) {
-    form_set_error('body', t('The body of your @type is too short. You need at least %words words.', array('%words' => $type->min_word_count, '@type' => $type->name)));
+    form_set_error('body', t('The @body_label of your @type is too short. You need at least %words words.', array('@body_label' => $type->body_label, '@type' => $type->name, '%words' => $type->min_word_count)));
   }
 
   if (isset($node->nid) && (node_last_changed($node->nid) > $node->changed)) {
@@ -1069,8 +1076,8 @@
  *   Whether the node is being displayed by itself as a page.
  *
  * @return
- *   An structured array containing the individual elements
- *   of the node's body.
+ *   A node object with its content property set to a structured array
+ *   containing the individual elements of the node's body.
  */
 function node_build_content($node, $teaser = FALSE, $page = FALSE) {
 
@@ -1625,7 +1632,7 @@
  */
 function node_revision_list($node) {
   $revisions = array();
-  $result = db_query('SELECT r.vid, r.title, r.log, r.uid, n.vid AS current_vid, r.timestamp, u.name FROM {node_revisions} r LEFT JOIN {node} n ON n.vid = r.vid INNER JOIN {users} u ON u.uid = r.uid WHERE r.nid = %d ORDER BY r.timestamp DESC', $node->nid);
+  $result = db_query('SELECT r.vid, r.title, r.log, r.uid, n.vid AS current_vid, r.timestamp, u.name FROM {node_revisions} r LEFT JOIN {node} n ON n.vid = r.vid INNER JOIN {users} u ON u.uid = r.uid WHERE r.nid = %d ORDER BY r.vid DESC', $node->nid);
   while ($revision = db_fetch_object($result)) {
     $revisions[$revision->vid] = $revision;
   }

Modified: branches/upstream/current-6/modules/openid/openid.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/openid/openid.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/openid/openid.info (original)
+++ branches/upstream/current-6/modules/openid/openid.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 package = Core - optional
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/openid/openid.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/openid/openid.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/openid/openid.module (original)
+++ branches/upstream/current-6/modules/openid/openid.module Thu May 10 18:48:16 2012
@@ -425,14 +425,17 @@
   elseif (variable_get('user_register', 1)) {
     // Register new user
     $form_state['redirect'] = NULL;
-    $form_state['values']['name'] = (empty($response['openid.sreg.nickname'])) ? '' : $response['openid.sreg.nickname'];
-    $form_state['values']['mail'] = (empty($response['openid.sreg.email'])) ? '' : $response['openid.sreg.email'];
+    // Only signed SREG keys are included as required by OpenID Simple
+    // Registration Extension 1.0, section 4.
+    $signed_keys = explode(',', $response['openid.signed']);
+    $form_state['values']['name'] = in_array('sreg.nickname', $signed_keys) ? $response['openid.sreg.nickname'] : '';
+    $form_state['values']['mail'] = in_array('sreg.email', $signed_keys) ? $response['openid.sreg.email'] : '';
     $form_state['values']['pass']  = user_password();
     $form_state['values']['status'] = variable_get('user_register', 1) == 1;
     $form_state['values']['response'] = $response;
     $form_state['values']['auth_openid'] = $identity;
 
-    if (empty($response['openid.sreg.email']) && empty($response['openid.sreg.nickname'])) {
+    if (empty($form_state['values']['name']) && empty($form_state['values']['mail'])) {
       drupal_set_message(t('Please complete the registration by filling out the form below. If you already have an account, you can <a href="@login">log in</a> now and add your OpenID under "My account".', array('@login' => url('user/login'))), 'warning');
       $success = FALSE;
     }
@@ -496,6 +499,8 @@
 }
 
 function openid_authentication_request($claimed_id, $identity, $return_to = '', $assoc_handle = '', $version = 2) {
+  global $base_url;
+
   module_load_include('inc', 'openid');
 
   $ns = ($version == 2) ? OPENID_NS_2_0 : OPENID_NS_1_0;
@@ -509,10 +514,10 @@
   );
 
   if ($version == 2) {
-    $request['openid.realm'] = url('', array('absolute' => TRUE));
-  }
-  else {
-    $request['openid.trust_root'] = url('', array('absolute' => TRUE));
+    $request['openid.realm'] = $base_url . '/';
+  }
+  else {
+    $request['openid.trust_root'] = $base_url . '/';
   }
 
   // Simple Registration

Modified: branches/upstream/current-6/modules/path/path.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/path/path.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/path/path.info (original)
+++ branches/upstream/current-6/modules/path/path.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/path/path.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/path/path.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/path/path.module (original)
+++ branches/upstream/current-6/modules/path/path.module Thu May 10 18:48:16 2012
@@ -83,8 +83,27 @@
 
 /**
  * Set an aliased path for a given Drupal path, preventing duplicates.
+ * 
+ * @param $path
+ *   Path URL. Set to NULL to delete alias.
+ * @param $alias
+ *   Alias URL. Set to NULL to delete alias.
+ * @param $pid
+ *   Path id to update. Set to NULL to create a new alias or to delete a group of aliases.
+ * @param $language
+ *   The language this alias is valid for.
  */
 function path_set_alias($path = NULL, $alias = NULL, $pid = NULL, $language = '') {
+  /* This function claimed to prevent duplicate aliases but has not done
+   * so since the end of 2007.
+   * The uniqueness of dst+language pairs was enforced on the database level
+   * until D6.16 (march 2010); trying to insert duplicate aliass would yield a
+   * database error.
+   * From D6.16 onwards, duplicates would silently be inserted, and
+   * drupal_lookup_path() consistently uses those newer aliases.
+   * While fixing an issue in D6.23, the behavior was reverted to preventing
+   * duplicates by the below code. Watchdog errors are now logged instead.
+   */
   $path = urldecode($path);
   $alias = urldecode($alias);
   // First we check if we deal with an existing alias and delete or modify it based on pid.
@@ -96,19 +115,42 @@
     }
     else {
       // Update the existing alias.
-      db_query("UPDATE {url_alias} SET src = '%s', dst = '%s', language = '%s' WHERE pid = %d", $path, $alias, $language, $pid);
-    }
-  }
-  else if ($path && $alias) {
-    // Check for existing aliases.
-    if ($alias == drupal_get_path_alias($path, $language)) {
-      // There is already such an alias, neutral or in this language.
-      // Update the alias based on alias; setting the language if not yet done.
-      db_query("UPDATE {url_alias} SET src = '%s', dst = '%s', language = '%s' WHERE dst = '%s'", $path, $alias, $language, $alias);
-    }
-    else {
+      // Check if the alias exists already.
+      $existing = db_fetch_array(db_query("SELECT pid, src FROM {url_alias} WHERE dst = '%s' AND language = '%s' ORDER BY pid DESC", $alias, $language));
+      if (!$existing || ($existing['pid'] == $pid && $existing['src'] != $path)) {
+        db_query("UPDATE {url_alias} SET src = '%s', dst = '%s', language = '%s' WHERE pid = %d", $path, $alias, $language, $pid);
+      }
+      else {
+        if ($existing['src'] != $path) {
+          watchdog('path', "The alias for path '@path' (language '@lang') was not updated to '@alias', because the path '@expath' already has the same alias.",
+            array('@path' => $path, '@lang' => $language, '@alias' => $alias, '@expath' => $existing['src']),
+            WATCHDOG_ERROR);
+        }
+        // Don't clear cache if we didn't change anything
+        return;
+      }
+    }
+  }
+  elseif ($path && $alias) {
+    // Add this alias to the database, if it's new & doesn't cause conflicts.
+    $existing = db_fetch_array(db_query("SELECT src, language, pid FROM {url_alias} WHERE dst = '%s' AND language IN('%s', '') ORDER BY language DESC, pid DESC", $alias, $language));
+    if (!$existing || ($existing['language'] != $language && $existing['src'] != $path)) {
       // A new alias. Add it to the database.
       db_query("INSERT INTO {url_alias} (src, dst, language) VALUES ('%s', '%s', '%s')", $path, $alias, $language);
+    }
+    elseif ($existing['language'] != $language) {
+      // This alias already exists ONLY for 'language neutral': update language.
+      // (We can only get here if $language != '')
+      db_query("UPDATE {url_alias} SET language = '%s' WHERE pid = %d", $language, $existing['pid']);
+    }
+    else {
+      if ($existing['src'] != $path) {
+        watchdog('path', "The alias '@alias' for path '@path' (language '@lang') was not created, because the path '@expath' already has the same alias.",
+          array('@path' => $path, '@lang' => $language, '@alias' => $alias, '@expath' => $existing['src']),
+          WATCHDOG_ERROR);
+      }
+      // Don't clear cache if we didn't change anything
+      return;
     }
   }
   else {
@@ -130,7 +172,7 @@
  * Allows URL aliases for nodes to be specified at node edit time rather
  * than through the administrative interface.
  */
-function path_nodeapi(&$node, $op, $arg) {
+function path_nodeapi(&$node, $op, $arg = NULL) {
   // Permissions are required for everything except node loading.
   if (user_access('create url aliases') || user_access('administer url aliases') || ($op == 'load')) {
     $language = isset($node->language) ? $node->language : '';
@@ -161,6 +203,10 @@
         break;
 
       case 'update':
+        // $node->pid is usually only set when updating from a node edit form
+        // (see path_form_alter). If it is not set (e.g. on most node_save()
+        // commands), we cannot be sure whether a change in $node->path is meant
+        // to replace an existing alias or add one extra, so we do the latter.
         path_set_alias('node/'. $node->nid, isset($node->path) ? $node->path : NULL, isset($node->pid) ? $node->pid : NULL, $language);
         break;
 

Modified: branches/upstream/current-6/modules/php/php.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/php/php.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/php/php.info (original)
+++ branches/upstream/current-6/modules/php/php.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/ping/ping.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/ping/ping.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/ping/ping.info (original)
+++ branches/upstream/current-6/modules/ping/ping.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/poll/poll.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/poll/poll.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/poll/poll.info (original)
+++ branches/upstream/current-6/modules/poll/poll.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/poll/poll.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/poll/poll.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/poll/poll.module (original)
+++ branches/upstream/current-6/modules/poll/poll.module Thu May 10 18:48:16 2012
@@ -127,26 +127,24 @@
  * Generates a block containing the latest poll.
  */
 function poll_block($op = 'list', $delta = 0) {
-  if (user_access('access content')) {
-    if ($op == 'list') {
-      $blocks[0]['info'] = t('Most recent poll');
-      return $blocks;
-    }
-    else if ($op == 'view') {
-      // Retrieve the latest poll.
-      $sql = db_rewrite_sql("SELECT MAX(n.created) FROM {node} n INNER JOIN {poll} p ON p.nid = n.nid WHERE n.status = 1 AND p.active = 1");
-      $timestamp = db_result(db_query($sql));
-      if ($timestamp) {
-        $poll = node_load(array('type' => 'poll', 'created' => $timestamp, 'status' => 1));
-
-        if ($poll->nid) {
-          $poll = poll_view($poll, TRUE, FALSE, TRUE);
-        }
+  if ($op == 'list') {
+    $blocks[0]['info'] = t('Most recent poll');
+    return $blocks;
+  }
+  else if ($op == 'view' && user_access('access content')) {
+    // Retrieve the latest poll.
+    $sql = db_rewrite_sql("SELECT MAX(n.created) FROM {node} n INNER JOIN {poll} p ON p.nid = n.nid WHERE n.status = 1 AND p.active = 1");
+    $timestamp = db_result(db_query($sql));
+    if ($timestamp) {
+      $poll = node_load(array('type' => 'poll', 'created' => $timestamp, 'status' => 1));
+
+      if ($poll->nid) {
+        $poll = poll_view($poll, TRUE, FALSE, TRUE);
       }
-      $block['subject'] = t('Poll');
-      $block['content'] = drupal_render($poll->content);
-      return $block;
-    }
+    }
+    $block['subject'] = t('Poll');
+    $block['content'] = drupal_render($poll->content);
+    return $block;
   }
 }
 

Modified: branches/upstream/current-6/modules/profile/profile.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/profile/profile.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/profile/profile.info (original)
+++ branches/upstream/current-6/modules/profile/profile.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/search/search.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/search/search.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/search/search.info (original)
+++ branches/upstream/current-6/modules/search/search.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/search/search.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/search/search.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/search/search.module (original)
+++ branches/upstream/current-6/modules/search/search.module Thu May 10 18:48:16 2012
@@ -43,7 +43,7 @@
 '\x{2ce5}-\x{2cff}\x{2d6f}\x{2e00}-\x{3005}\x{3007}-\x{303b}\x{303d}-\x{303f}'.
 '\x{3099}-\x{309e}\x{30a0}\x{30fb}\x{30fd}\x{30fe}\x{3190}-\x{319f}\x{31c0}-'.
 '\x{31cf}\x{3200}-\x{33ff}\x{4dc0}-\x{4dff}\x{a015}\x{a490}-\x{a716}\x{a802}'.
-'\x{a806}\x{a80b}\x{a823}-\x{a82b}\x{d800}-\x{f8ff}\x{fb1e}\x{fb29}\x{fd3e}'.
+'\x{a806}\x{a80b}\x{a823}-\x{a82b}\x{e000}-\x{f8ff}\x{fb1e}\x{fb29}\x{fd3e}'.
 '\x{fd3f}\x{fdfc}-\x{fe6b}\x{feff}-\x{ff0f}\x{ff1a}-\x{ff20}\x{ff3b}-\x{ff40}'.
 '\x{ff5b}-\x{ff65}\x{ff70}\x{ff9e}\x{ff9f}\x{ffe0}-\x{fffd}');
 
@@ -1036,7 +1036,7 @@
     '#attributes' => array('class' => 'search-form'),
   );
   $form['module'] = array('#type' => 'value', '#value' => $type);
-  $form['basic'] = array('#type' => 'item', '#title' => $prompt);
+  $form['basic'] = array('#type' => 'item', '#title' => $prompt, '#id' => 'edit-keys');
   $form['basic']['inline'] = array('#prefix' => '<div class="container-inline">', '#suffix' => '</div>');
   $form['basic']['inline']['keys'] = array(
     '#type' => 'textfield',
@@ -1058,7 +1058,7 @@
  *
  * @ingroup forms
  * @see search_box_form_submit()
- * @see theme_search_box_form()
+ * @see search-block-form.tpl.php
  */
 function search_box(&$form_state, $form_id) {
   $form[$form_id] = array(

Modified: branches/upstream/current-6/modules/statistics/statistics.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/statistics/statistics.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/statistics/statistics.info (original)
+++ branches/upstream/current-6/modules/statistics/statistics.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/syslog/syslog.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/syslog/syslog.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/syslog/syslog.info (original)
+++ branches/upstream/current-6/modules/syslog/syslog.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/system/system.admin.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/system/system.admin.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/system/system.admin.inc (original)
+++ branches/upstream/current-6/modules/system/system.admin.inc Thu May 10 18:48:16 2012
@@ -128,7 +128,7 @@
 }
 
 /**
- * Menu callback; displays a module's settings page.
+ * Menu callback: Displays the configuration overview page.
  */
 function system_settings_overview() {
   // Check database setup if necessary

Modified: branches/upstream/current-6/modules/system/system.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/system/system.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/system/system.info (original)
+++ branches/upstream/current-6/modules/system/system.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/system/system.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/system/system.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/system/system.module (original)
+++ branches/upstream/current-6/modules/system/system.module Thu May 10 18:48:16 2012
@@ -8,7 +8,7 @@
 /**
  * The current system version.
  */
-define('VERSION', '6.22');
+define('VERSION', '6.26');
 
 /**
  * Core API compatibility.
@@ -805,22 +805,52 @@
  *   Array of all available themes and their data.
  */
 function system_theme_data() {
+  $write_database = TRUE;
+  // If lock not acquired, return $files data without writing to database.
+  if (!lock_acquire('system_theme_data')) {
+    $write_database = FALSE;
+    // Wait for the parallel thread to be done so we are more likely
+    // to get updated and consistent data.
+    lock_wait('system_theme_data');
+  }
   // Scan the installation theme .info files and their engines.
   $themes = _system_theme_data();
+  foreach ($themes as $key => $theme) {
+    if (!isset($theme->owner)) {
+      $themes[$key]->owner = '';
+    }
+  }
 
   // Extract current files from database.
   system_get_files_database($themes, 'theme');
 
-  db_query("DELETE FROM {system} WHERE type = 'theme'");
-
-  foreach ($themes as $theme) {
-    if (!isset($theme->owner)) {
-      $theme->owner = '';
-    }
-
-    db_query("INSERT INTO {system} (name, owner, info, type, filename, status, throttle, bootstrap) VALUES ('%s', '%s', '%s', '%s', '%s', %d, %d, %d)", $theme->name, $theme->owner, serialize($theme->info), 'theme', $theme->filename, isset($theme->status) ? $theme->status : 0, 0, 0);
-  }
-
+  // If lock not acquired, return $themes data without writing to database.
+  if ($write_database) {
+    $filenames = array();
+
+    foreach ($themes as $theme) {
+      // Record the filename of each theme that was found.
+      $filenames[] = $theme->filename;
+      // Existing themes will always have $theme->status set, since it's a
+      // property that is only stored in the database.
+      if (isset($theme->status)) {
+        db_query("UPDATE {system} SET owner = '%s', info = '%s', filename = '%s' WHERE name = '%s' AND type = '%s'", $theme->owner, serialize($theme->info), $theme->filename, $theme->name, 'theme');
+      }
+      // New themes must get a $theme->status before they are inserted into the
+      // database. For the default theme, we force it to be enabled (to handle
+      // the initial installation of Drupal), but otherwise new themes should
+      // always start off as disabled.
+      else {
+        $theme->status = ($theme->name == variable_get('theme_default', 'garland'));
+        db_query("INSERT INTO {system} (name, owner, info, type, filename, status, throttle, bootstrap) VALUES ('%s', '%s', '%s', '%s', '%s', %d, %d, %d)", $theme->name, $theme->owner, serialize($theme->info), 'theme', $theme->filename, $theme->status, 0, 0);
+      }
+    }
+    // Delete from the system table any themes missing from the file system.
+    if ($filenames) {
+      db_query("DELETE FROM {system} WHERE type = 'theme' AND filename NOT IN (". db_placeholders($filenames, 'varchar') .")", $filenames);
+    }
+    lock_release('system_theme_data');
+  }
   return $themes;
 }
 
@@ -1666,7 +1696,7 @@
     '#default_value' => $context['message'],
     '#cols' => '80',
     '#rows' => '20',
-    '#description' => t('The message that should be sent. You may include the following variables: %site_name, %username, %node_url, %node_type, %title, %teaser, %body. Not all variables will be available in all contexts.'),
+    '#description' => t('The message that should be sent. You may include the following variables: %site_name, %username, %node_url, %node_type, %title, %teaser, %body, %term_name, %term_description, %term_id, %vocabulary_name, %vocabulary_description, %vocabulary_id. Not all variables will be available in all contexts.'),
   );
   return $form;
 }

Modified: branches/upstream/current-6/modules/taxonomy/taxonomy.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/taxonomy/taxonomy.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/taxonomy/taxonomy.info (original)
+++ branches/upstream/current-6/modules/taxonomy/taxonomy.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/taxonomy/taxonomy.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/taxonomy/taxonomy.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/taxonomy/taxonomy.module (original)
+++ branches/upstream/current-6/modules/taxonomy/taxonomy.module Thu May 10 18:48:16 2012
@@ -253,18 +253,22 @@
 
 /**
  * Dynamically check and update the hierarachy flag of a vocabulary.
+ * Checks and updates the hierarchy flag of a vocabulary.
  *
  * Checks the current parents of all terms in a vocabulary and updates the
- * vocabularies hierarchy setting to the lowest possible level. A hierarchy with
- * no parents in any of its terms will be given a hierarchy of 0. If terms
- * contain at most a single parent, the vocabulary will be given a hierarchy of
- * 1. If any term contain multiple parents, the vocabulary will be given a
- * hieararchy of 2.
+ * vocabulary's hierarchy setting to the lowest possible level. If no term
+ * has parent terms then the vocabulary will be given a hierarchy of 0.
+ * If any term has a single parent then the vocabulary will be given a
+ * hierarchy of 1. If any term has multiple parents then the vocabulary
+ * will be given a hierarchy of 2.
  *
  * @param $vocabulary
  *   An array of the vocabulary structure.
  * @param $changed_term
  *   An array of the term structure that was updated.
+ *
+ * @return
+ *   An integer that represents the level of the vocabulary's hierarchy.
  */
 function taxonomy_check_vocabulary_hierarchy($vocabulary, $changed_term) {
   $tree = taxonomy_get_tree($vocabulary['vid']);
@@ -625,11 +629,15 @@
 /**
  * Find all terms associated with the given node, ordered by vocabulary and term weight.
  */
-function taxonomy_node_get_terms($node, $key = 'tid') {
+function taxonomy_node_get_terms($node, $key = 'tid', $reset = FALSE) {
   static $terms;
 
+  if ($reset) {
+    unset($terms[$node->vid]);
+  }
+
   if (!isset($terms[$node->vid][$key])) {
-    $result = db_query(db_rewrite_sql('SELECT t.* FROM {term_node} r INNER JOIN {term_data} t ON r.tid = t.tid INNER JOIN {vocabulary} v ON t.vid = v.vid WHERE r.vid = %d ORDER BY v.weight, t.weight, t.name', 't', 'tid'), $node->vid);
+    $result = db_query(db_rewrite_sql('SELECT t.*,v.weight AS v_weight_unused FROM {term_node} r INNER JOIN {term_data} t ON r.tid = t.tid INNER JOIN {vocabulary} v ON t.vid = v.vid WHERE r.vid = %d ORDER BY v.weight, t.weight, t.name', 't', 'tid'), $node->vid);
     $terms[$node->vid][$key] = array();
     while ($term = db_fetch_object($result)) {
       $terms[$node->vid][$key][$term->$key] = $term;
@@ -660,7 +668,7 @@
 /**
  * Save term associations for a given node.
  */
-function taxonomy_node_save($node, $terms) {
+function taxonomy_node_save(&$node, $terms) {
 
   taxonomy_node_delete_revision($node);
 
@@ -717,6 +725,9 @@
       }
     }
   }
+
+  // Flush the term "cache" for this node
+  $node->taxonomy = taxonomy_node_get_terms($node, 'tid', TRUE);
 }
 
 /**
@@ -823,7 +834,8 @@
  *   for the entire vocabulary.
  *
  * @param $depth
- *   Internal use only.
+ *   Internal use only. Now deprecated and isn't used. It is left here only
+ *   because of @link http://drupal.org/node/556842 compatibility issues. @endlink
  *
  * @param $max_depth
  *   The number of levels of the tree to return. Leave NULL to return all levels.
@@ -836,12 +848,12 @@
 function taxonomy_get_tree($vid, $parent = 0, $depth = -1, $max_depth = NULL) {
   static $children, $parents, $terms;
 
-  $depth++;
-
   // We cache trees, so it's not CPU-intensive to call get_tree() on a term
   // and its children, too.
   if (!isset($children[$vid])) {
     $children[$vid] = array();
+    $parents[$vid] = array();
+    $terms[$vid] = array();
 
     $result = db_query(db_rewrite_sql('SELECT t.tid, t.*, parent FROM {term_data} t INNER JOIN {term_hierarchy} h ON t.tid = h.tid WHERE t.vid = %d ORDER BY weight, name', 't', 'tid'), $vid);
     while ($term = db_fetch_object($result)) {
@@ -851,18 +863,58 @@
     }
   }
 
-  $max_depth = (is_null($max_depth)) ? count($children[$vid]) : $max_depth;
+  $max_depth = (!isset($max_depth)) ? count($children[$vid]) : $max_depth;
   $tree = array();
-  if ($max_depth > $depth && !empty($children[$vid][$parent])) {
-    foreach ($children[$vid][$parent] as $child) {
-      $term = drupal_clone($terms[$vid][$child]);
-      $term->depth = $depth;
-      // The "parent" attribute is not useful, as it would show one parent only.
-      unset($term->parent);
-      $term->parents = $parents[$vid][$child];
-      $tree[] = $term;
-      if (!empty($children[$vid][$child])) {
-        $tree = array_merge($tree, taxonomy_get_tree($vid, $child, $depth, $max_depth));
+
+  // Keeps track of the parents we have to process, the last entry is used
+  // for the next processing step.
+  $process_parents = array();
+  $process_parents[] = $parent;
+
+  // Loops over the parent terms and adds its children to the tree array.
+  // Uses a loop instead of a recursion, because it's more efficient.
+  while (count($process_parents)) {
+    $parent = array_pop($process_parents);
+    // The number of parents determines the current depth.
+    $depth = count($process_parents);
+    if ($max_depth > $depth && !empty($children[$vid][$parent])) {
+      $has_children = FALSE;
+      $child = current($children[$vid][$parent]);
+      do {
+        if (empty($child)) {
+          break;
+        }
+        $term = $terms[$vid][$child];
+        if (count($parents[$vid][$term->tid]) > 1) {
+          // We have a term with multi parents here. Clone the term,
+          // so that the depth attribute remains correct.
+          $term = clone $term;
+        }
+        $term->depth = $depth;
+        unset($term->parent);
+        $term->parents = $parents[$vid][$term->tid];
+        $tree[] = $term;
+        if (!empty($children[$vid][$term->tid])) {
+          $has_children = TRUE;
+
+          // We have to continue with this parent later.
+          $process_parents[] = $parent;
+          // Use the current term as parent for the next iteration.
+          $process_parents[] = $term->tid;
+
+          // Reset pointers for child lists because we step in there more often
+          // with multi parents.
+          reset($children[$vid][$term->tid]);
+          // Move pointer so that we get the correct term the next time.
+          next($children[$vid][$parent]);
+          break;
+        }
+      } while ($child = next($children[$vid][$parent]));
+
+      if (!$has_children) {
+        // We processed all terms in this hierarchy-level, reset pointer
+        // so that this function works the next time it gets called.
+        reset($children[$vid][$parent]);
       }
     }
   }
@@ -1195,7 +1247,7 @@
 /**
  * Implementation of hook_nodeapi().
  */
-function taxonomy_nodeapi($node, $op, $arg = 0) {
+function taxonomy_nodeapi(&$node, $op, $arg = 0) {
   switch ($op) {
     case 'load':
       $output['taxonomy'] = taxonomy_node_get_terms($node);

Modified: branches/upstream/current-6/modules/throttle/throttle.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/throttle/throttle.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/throttle/throttle.info (original)
+++ branches/upstream/current-6/modules/throttle/throttle.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/tracker/tracker.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/tracker/tracker.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/tracker/tracker.info (original)
+++ branches/upstream/current-6/modules/tracker/tracker.info Thu May 10 18:48:16 2012
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/translation/translation.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/translation/translation.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/translation/translation.info (original)
+++ branches/upstream/current-6/modules/translation/translation.info Thu May 10 18:48:16 2012
@@ -5,8 +5,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/translation/translation.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/translation/translation.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/translation/translation.module (original)
+++ branches/upstream/current-6/modules/translation/translation.module Thu May 10 18:48:16 2012
@@ -180,7 +180,7 @@
  *
  * Manages translation information for nodes.
  */
-function translation_nodeapi(&$node, $op, $teaser, $page) {
+function translation_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
   // Only act if we are dealing with a content type supporting translations.
   if (!translation_supported_type($node->type)) {
     return;

Modified: branches/upstream/current-6/modules/trigger/trigger.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/trigger/trigger.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/trigger/trigger.info (original)
+++ branches/upstream/current-6/modules/trigger/trigger.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/trigger/trigger.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/trigger/trigger.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/trigger/trigger.module (original)
+++ branches/upstream/current-6/modules/trigger/trigger.module Thu May 10 18:48:16 2012
@@ -210,7 +210,7 @@
 /**
  * Implementation of hook_nodeapi().
  */
-function trigger_nodeapi(&$node, $op, $a3, $a4) {
+function trigger_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
   // Keep objects for reuse so that changes actions make to objects can persist.
   static $objects;
   // Prevent recursion by tracking which operations have already been called.

Modified: branches/upstream/current-6/modules/update/update.fetch.inc
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/update/update.fetch.inc?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/update/update.fetch.inc (original)
+++ branches/upstream/current-6/modules/update/update.fetch.inc Thu May 10 18:48:16 2012
@@ -221,6 +221,11 @@
         $this->current_term = array();
         $this->current_object = &$this->current_term;
         break;
+      case 'FILE':
+        unset($this->current_object);
+        $this->current_file = array();
+        $this->current_object = &$this->current_file;
+        break;
     }
   }
 
@@ -252,6 +257,13 @@
       case 'TERMS':
         $this->current_object = &$this->current_release;
         break;
+      case 'FILE':
+        unset($this->current_object);
+        $this->current_release['files'][] = $this->current_file;
+        break;
+      case 'FILES':
+        $this->current_object = &$this->current_release;
+        break;
       default:
         $this->current_object[strtolower($this->current_tag)] = trim($this->current_object[strtolower($this->current_tag)]);
         $this->current_tag = '';
@@ -259,7 +271,7 @@
   }
 
   function data($parser, $data) {
-    if ($this->current_tag && !in_array($this->current_tag, array('PROJECT', 'RELEASE', 'RELEASES', 'TERM', 'TERMS'))) {
+    if ($this->current_tag && !in_array($this->current_tag, array('PROJECT', 'RELEASE', 'RELEASES', 'TERM', 'TERMS', 'FILE', 'FILES'))) {
       $tag = strtolower($this->current_tag);
       if (isset($this->current_object[$tag])) {
         $this->current_object[$tag] .= $data;

Modified: branches/upstream/current-6/modules/update/update.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/update/update.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/update/update.info (original)
+++ branches/upstream/current-6/modules/update/update.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 package = Core - optional
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/upload/upload.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/upload/upload.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/upload/upload.info (original)
+++ branches/upstream/current-6/modules/upload/upload.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/upload/upload.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/upload/upload.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/upload/upload.module (original)
+++ branches/upstream/current-6/modules/upload/upload.module Thu May 10 18:48:16 2012
@@ -272,7 +272,7 @@
 /**
  * Implementation of hook_nodeapi().
  */
-function upload_nodeapi(&$node, $op, $teaser) {
+function upload_nodeapi(&$node, $op, $teaser = NULL) {
   switch ($op) {
 
     case 'load':
@@ -624,7 +624,12 @@
     '#tree' => FALSE,
     '#parents' => array(),
   );
-  drupal_alter('form', $form, array(), 'upload_js');
+
+  $empty_form_state = array();
+  $data = &$form;
+  $data['__drupal_alter_by_ref'] = array(&$empty_form_state);
+  drupal_alter('form', $data, 'upload_js');
+
   $form_state = array('submitted' => FALSE);
   $form = form_builder('upload_js', $form, $form_state);
   $output = theme('status_messages') . drupal_render($form);

Modified: branches/upstream/current-6/modules/user/user.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/user/user.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/user/user.info (original)
+++ branches/upstream/current-6/modules/user/user.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/modules/user/user.module
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/modules/user/user.module?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/modules/user/user.module (original)
+++ branches/upstream/current-6/modules/user/user.module Thu May 10 18:48:16 2012
@@ -13,12 +13,23 @@
  *
  * We cannot use module_invoke() for this, because the arguments need to
  * be passed by reference.
- */
-function user_module_invoke($type, &$array, &$user, $category = NULL) {
+ *
+ * @param $op
+ *   The operation to be passed as the first parameter of the hook function.
+ * @param $edit
+ *   An associative array variable containing form values to be passed
+ *   as the second parameter of the hook function.
+ * @param $account
+ *   The user account object to be passed as the third parameter of the hook
+ *   function.
+ * @param $category
+ *   The category of user information being acted upon.
+ */
+function user_module_invoke($op, &$edit, &$account, $category = NULL) {
   foreach (module_list() as $module) {
     $function = $module .'_user';
     if (function_exists($function)) {
-      $function($type, $array, $user, $category);
+      $function($op, $edit, $account, $category);
     }
   }
 }
@@ -194,14 +205,17 @@
  * Save changes to a user account or add a new user.
  *
  * @param $account
- *   The $user object for the user to modify or add. If $user->uid is
- *   omitted, a new user will be added.
- *
+ *   The user object for to modify or add. If you want to modify an existing
+ *   user account, you will need to ensure that (a) $account is an object, and
+ *   (b) you have set $account->uid to the numeric user ID of the user account
+ *   you wish to modify. Pass in NULL or any non-object to add a new user.
  * @param $array
  *   (optional) An array of fields and values to save. For example,
- *   array('name' => 'My name'); Setting a field to NULL deletes it from
- *   the data column.
- *
+ *   array('name' => 'My name'); Keys that do not belong to columns
+ *   in the user-related tables are added to the a serialized array
+ *   in the 'data' column and will be loaded in the $user->data array by
+ *   user_load(). Setting a field to NULL deletes it from the data column,
+ *   if you are modifying an existing user account.
  * @param $category
  *   (optional) The category for storing profile information in.
  *
@@ -1076,8 +1090,8 @@
     'title' => 'Delete',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('user_confirm_delete', 1),
-    'access callback' => 'user_access',
-    'access arguments' => array('administer users'),
+    'access callback' => 'user_delete_access',
+    'access arguments' => array(1),
     'type' => MENU_CALLBACK,
     'file' => 'user.pages.inc',
   );
@@ -2110,7 +2124,7 @@
  *
  * @param $account
  *  The user object of the account being notified.  Must contain at
- *  least the fields 'uid', 'name', and 'mail'.
+ *  least the fields 'uid', 'name', 'pass', 'login', and 'mail'.
  * @param $language
  *  Language object to generate the tokens with.
  * @return
@@ -2166,22 +2180,25 @@
  * @see drupal_mail()
  *
  * @param $op
- *  The operation being performed on the account.  Possible values:
- *  'register_admin_created': Welcome message for user created by the admin
- *  'register_no_approval_required': Welcome message when user self-registers
- *  'register_pending_approval': Welcome message, user pending admin approval
- *  'password_reset': Password recovery request
- *  'status_activated': Account activated
- *  'status_blocked': Account blocked
- *  'status_deleted': Account deleted
+ *   The operation being performed on the account. Possible values:
+ *   - 'register_admin_created': Welcome message for user created by the admin.
+ *   - 'register_no_approval_required': Welcome message when user
+ *     self-registers.
+ *   - 'register_pending_approval': Welcome message, user pending admin
+ *     approval.
+ *   - 'password_reset': Password recovery request.
+ *   - 'status_activated': Account activated.
+ *   - 'status_blocked': Account blocked.
+ *   - 'status_deleted': Account deleted.
  *
  * @param $account
- *  The user object of the account being notified.  Must contain at
- *  least the fields 'uid', 'name', and 'mail'.
+ *   The user object of the account being notified. Must contain at
+ *   least the fields 'uid', 'name', and 'mail'.
  * @param $language
- *  Optional language to use for the notification, overriding account language.
+ *   Optional language to use for the notification, overriding account language.
+ *
  * @return
- *  The return value from drupal_mail_send(), if ends up being called.
+ *   The return value from drupal_mail_send(), if ends up being called.
  */
 function _user_mail_notify($op, $account, $language = NULL) {
   // By default, we always notify except for deleted and blocked.
@@ -2503,7 +2520,8 @@
 }
 
 function user_register_validate($form, &$form_state) {
-  user_module_invoke('validate', $form_state['values'], $form_state['values'], 'account');
+  $account = (object) $form_state['values'];
+  user_module_invoke('validate', $form_state['values'], $account, 'account');
 }
 
 /**
@@ -2537,3 +2555,13 @@
   $destination = drupal_get_destination();
   return $destination == 'destination=user%2Flogin' ? 'destination=user' : $destination;
 }
+
+/**
+ * Menu access callback; limit access to account deletion pages.
+ *
+ * Limit access to administrative users, and prevent the anonymous user account
+ * from being deleted.
+ */
+function user_delete_access($account) {
+  return user_access('administer users') && $account->uid > 0;
+}

Modified: branches/upstream/current-6/robots.txt
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/robots.txt?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/robots.txt (original)
+++ branches/upstream/current-6/robots.txt Thu May 10 18:48:16 2012
@@ -40,6 +40,7 @@
 # Paths (clean URLs)
 Disallow: /admin/
 Disallow: /comment/reply/
+Disallow: /filter/tips/
 Disallow: /logout/
 Disallow: /node/add/
 Disallow: /search/
@@ -49,6 +50,7 @@
 # Paths (no clean URLs)
 Disallow: /?q=admin/
 Disallow: /?q=comment/reply/
+Disallow: /?q=filter/tips/
 Disallow: /?q=logout/
 Disallow: /?q=node/add/
 Disallow: /?q=search/

Modified: branches/upstream/current-6/themes/bluemarine/bluemarine.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/themes/bluemarine/bluemarine.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/themes/bluemarine/bluemarine.info (original)
+++ branches/upstream/current-6/themes/bluemarine/bluemarine.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 core = 6.x
 engine = phptemplate
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/themes/chameleon/chameleon.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/themes/chameleon/chameleon.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/themes/chameleon/chameleon.info (original)
+++ branches/upstream/current-6/themes/chameleon/chameleon.info Thu May 10 18:48:16 2012
@@ -11,8 +11,8 @@
 version = VERSION
 core = 6.x
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/themes/chameleon/marvin/marvin.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/themes/chameleon/marvin/marvin.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/themes/chameleon/marvin/marvin.info (original)
+++ branches/upstream/current-6/themes/chameleon/marvin/marvin.info Thu May 10 18:48:16 2012
@@ -6,8 +6,8 @@
 core = 6.x
 base theme = chameleon
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/themes/engines/phptemplate/phptemplate.engine
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/themes/engines/phptemplate/phptemplate.engine?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/themes/engines/phptemplate/phptemplate.engine (original)
+++ branches/upstream/current-6/themes/engines/phptemplate/phptemplate.engine Thu May 10 18:48:16 2012
@@ -1,5 +1,4 @@
 <?php
-// $Id$
 
 /**
  * @file

Modified: branches/upstream/current-6/themes/garland/garland.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/themes/garland/garland.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/themes/garland/garland.info (original)
+++ branches/upstream/current-6/themes/garland/garland.info Thu May 10 18:48:16 2012
@@ -6,8 +6,8 @@
 stylesheets[all][] = style.css
 stylesheets[print][] = print.css
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/themes/garland/minnelli/minnelli.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/themes/garland/minnelli/minnelli.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/themes/garland/minnelli/minnelli.info (original)
+++ branches/upstream/current-6/themes/garland/minnelli/minnelli.info Thu May 10 18:48:16 2012
@@ -5,8 +5,8 @@
 base theme = garland
 stylesheets[all][] = minnelli.css
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/themes/garland/style.css
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/themes/garland/style.css?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/themes/garland/style.css (original)
+++ branches/upstream/current-6/themes/garland/style.css Thu May 10 18:48:16 2012
@@ -222,7 +222,7 @@
 }
 
 tr.drag {
-  background-color: #fffff0;
+  background-color: #ffb;
 }
 
 tr.drag-previous {

Modified: branches/upstream/current-6/themes/pushbutton/pushbutton.info
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/themes/pushbutton/pushbutton.info?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/themes/pushbutton/pushbutton.info (original)
+++ branches/upstream/current-6/themes/pushbutton/pushbutton.info Thu May 10 18:48:16 2012
@@ -4,8 +4,8 @@
 core = 6.x
 engine = phptemplate
 
-; Information added by drupal.org packaging script on 2011-05-25
-version = "6.22"
+; Information added by drupal.org packaging script on 2012-05-02
+version = "6.26"
 project = "drupal"
-datestamp = "1306357015"
+datestamp = "1335977158"
 

Modified: branches/upstream/current-6/update.php
URL: http://svn.debian.org/wsvn/pkg-drupal/branches/upstream/current-6/update.php?rev=2268&op=diff
==============================================================================
--- branches/upstream/current-6/update.php (original)
+++ branches/upstream/current-6/update.php Thu May 10 18:48:16 2012
@@ -368,7 +368,7 @@
   update_task_list('info');
   drupal_set_title('Drupal database update');
   $token = drupal_get_token('update');
-  $output = '<p>Use this utility to update your database whenever a new release of Drupal or a module is installed.</p><p>For more detailed information, see the <a href="http://drupal.org/node/258">Installation and upgrading handbook</a>. If you are unsure what these terms mean you should probably contact your hosting provider.</p>';
+  $output = '<p>Use this utility to update your database whenever a new release of Drupal or a module is installed.</p><p>For more detailed information, see the <a href="http://drupal.org/upgrade">upgrading handbook</a>. If you are unsure what these terms mean you should probably contact your hosting provider.</p>';
   $output .= "<ol>\n";
   $output .= "<li><strong>Back up your database</strong>. This process will change your database values and in case of emergency you may need to revert to a backup.</li>\n";
   $output .= "<li><strong>Back up your code</strong>. Hint: when backing up module code, do not leave that backup in the 'modules' or 'sites/*/modules' directories as this may confuse Drupal's auto-discovery mechanism.</li>\n";




More information about the Pkg-drupal-commits mailing list