- Patch #349504 by keith.smith: clean up sentence spacing in code comments.
							parent
							
								
									ee700371ac
								
							
						
					
					
						commit
						0c63d9e24f
					
				| 
						 | 
					@ -8,7 +8,7 @@ the Free Software Foundation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This program is distributed in the hope that it will be useful, but
 | 
					This program is distributed in the hope that it will be useful, but
 | 
				
			||||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 | 
					WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 | 
				
			||||||
or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
					or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
 | 
				
			||||||
for more details.
 | 
					for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You should have received a copy of the GNU General Public License
 | 
					You should have received a copy of the GNU General Public License
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -315,8 +315,8 @@ function timer_stop($name) {
 | 
				
			||||||
 * 13. $confdir/default
 | 
					 * 13. $confdir/default
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * If a file named sites.php is present in the $confdir, it will be loaded
 | 
					 * If a file named sites.php is present in the $confdir, it will be loaded
 | 
				
			||||||
 * prior to scanning for directories.  It should define an associative array
 | 
					 * prior to scanning for directories. It should define an associative array
 | 
				
			||||||
 * named $sites, which maps domains to directories.  It should be in the form
 | 
					 * named $sites, which maps domains to directories. It should be in the form
 | 
				
			||||||
 * of:
 | 
					 * of:
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * $sites = array(
 | 
					 * $sites = array(
 | 
				
			||||||
| 
						 | 
					@ -334,7 +334,7 @@ function timer_stop($name) {
 | 
				
			||||||
 * "example.com" in the sites directory whenever a request comes from
 | 
					 * "example.com" in the sites directory whenever a request comes from
 | 
				
			||||||
 * "example.com", "devexample.com", or "localhost/example". That is useful
 | 
					 * "example.com", "devexample.com", or "localhost/example". That is useful
 | 
				
			||||||
 * on development servers, where the domain name may not be the same as the
 | 
					 * on development servers, where the domain name may not be the same as the
 | 
				
			||||||
 * domain of the live server.  Since Drupal stores file paths into the database
 | 
					 * domain of the live server. Since Drupal stores file paths into the database
 | 
				
			||||||
 * (files, system table, etc.) this will ensure the paths are correct while
 | 
					 * (files, system table, etc.) this will ensure the paths are correct while
 | 
				
			||||||
 * accessed on development servers.
 | 
					 * accessed on development servers.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -409,7 +409,7 @@ function drupal_initialize_variables() {
 | 
				
			||||||
 * Validate that $_SERVER['HTTP_HOST'] is safe.
 | 
					 * Validate that $_SERVER['HTTP_HOST'] is safe.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * As $_SERVER['HTTP_HOST'] is user input, ensure it only contains characters
 | 
					 * As $_SERVER['HTTP_HOST'] is user input, ensure it only contains characters
 | 
				
			||||||
 * allowed in hostnames.  See RFC 952 (and RFC 2181). $_SERVER['HTTP_HOST'] is
 | 
					 * allowed in hostnames. See RFC 952 (and RFC 2181). $_SERVER['HTTP_HOST'] is
 | 
				
			||||||
 * lowercased.
 | 
					 * lowercased.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @return
 | 
					 * @return
 | 
				
			||||||
| 
						 | 
					@ -548,7 +548,7 @@ function drupal_get_filename($type, $name, $filename = NULL) {
 | 
				
			||||||
    // nothing
 | 
					    // nothing
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  // Verify that we have an active database connection, before querying
 | 
					  // Verify that we have an active database connection, before querying
 | 
				
			||||||
  // the database.  This is required because this function is called both
 | 
					  // the database. This is required because this function is called both
 | 
				
			||||||
  // before we have a database connection (i.e. during installation) and
 | 
					  // before we have a database connection (i.e. during installation) and
 | 
				
			||||||
  // when a database connection fails.
 | 
					  // when a database connection fails.
 | 
				
			||||||
  elseif (db_is_active() && (($file = db_query("SELECT filename FROM {system} WHERE name = :name AND type = :type", array(':name' => $name, ':type' => $type))->fetchField()) && file_exists($file))) {
 | 
					  elseif (db_is_active() && (($file = db_query("SELECT filename FROM {system} WHERE name = :name AND type = :type", array(':name' => $name, ':type' => $type))->fetchField()) && file_exists($file))) {
 | 
				
			||||||
| 
						 | 
					@ -708,7 +708,7 @@ function drupal_load($type, $name) {
 | 
				
			||||||
 * Set HTTP headers in preparation for a page response.
 | 
					 * Set HTTP headers in preparation for a page response.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Authenticated users are always given a 'no-cache' header, and will
 | 
					 * Authenticated users are always given a 'no-cache' header, and will
 | 
				
			||||||
 * fetch a fresh page on every request.  This prevents authenticated
 | 
					 * fetch a fresh page on every request. This prevents authenticated
 | 
				
			||||||
 * users seeing locally cached pages that show them as logged out.
 | 
					 * users seeing locally cached pages that show them as logged out.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @see page_set_cache()
 | 
					 * @see page_set_cache()
 | 
				
			||||||
| 
						 | 
					@ -724,7 +724,7 @@ function drupal_page_header() {
 | 
				
			||||||
 * Set HTTP headers in preparation for a cached page response.
 | 
					 * Set HTTP headers in preparation for a cached page response.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * The general approach here is that anonymous users can keep a local
 | 
					 * The general approach here is that anonymous users can keep a local
 | 
				
			||||||
 * cache of the page, but must revalidate it on every request.  Then,
 | 
					 * cache of the page, but must revalidate it on every request. Then,
 | 
				
			||||||
 * they are given a '304 Not Modified' response as long as they stay
 | 
					 * they are given a '304 Not Modified' response as long as they stay
 | 
				
			||||||
 * logged out and the page has not been modified.
 | 
					 * logged out and the page has not been modified.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -887,8 +887,8 @@ function watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static $in_error_state = FALSE;
 | 
					  static $in_error_state = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // It is possible that the error handling will itself trigger an error.  In that case, we could
 | 
					  // It is possible that the error handling will itself trigger an error. In that case, we could
 | 
				
			||||||
  // end up in an infinite loop.  To avoid that, we implement a simple static semaphore.
 | 
					  // end up in an infinite loop. To avoid that, we implement a simple static semaphore.
 | 
				
			||||||
  if (!$in_error_state) {
 | 
					  if (!$in_error_state) {
 | 
				
			||||||
    $in_error_state = TRUE;
 | 
					    $in_error_state = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1064,7 +1064,7 @@ function drupal_bootstrap($phase = NULL) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Return the current bootstrap phase for this Drupal process.  The
 | 
					 * Return the current bootstrap phase for this Drupal process. The
 | 
				
			||||||
 * current phase is the one most recently completed by
 | 
					 * current phase is the one most recently completed by
 | 
				
			||||||
 * drupal_bootstrap().
 | 
					 * drupal_bootstrap().
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -1101,7 +1101,7 @@ function _drupal_bootstrap($phase) {
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    case DRUPAL_BOOTSTRAP_DATABASE:
 | 
					    case DRUPAL_BOOTSTRAP_DATABASE:
 | 
				
			||||||
      // Initialize the database system.  Note that the connection
 | 
					      // Initialize the database system. Note that the connection
 | 
				
			||||||
      // won't be initialized until it is actually requested.
 | 
					      // won't be initialized until it is actually requested.
 | 
				
			||||||
      require_once DRUPAL_ROOT . '/includes/database/database.inc';
 | 
					      require_once DRUPAL_ROOT . '/includes/database/database.inc';
 | 
				
			||||||
      // Register autoload functions so that we can access classes and interfaces.
 | 
					      // Register autoload functions so that we can access classes and interfaces.
 | 
				
			||||||
| 
						 | 
					@ -1268,7 +1268,7 @@ function language_default($property = NULL) {
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * If Drupal is behind a reverse proxy, we use the X-Forwarded-For header
 | 
					 * If Drupal is behind a reverse proxy, we use the X-Forwarded-For header
 | 
				
			||||||
 * instead of $_SERVER['REMOTE_ADDR'], which would be the IP address of
 | 
					 * instead of $_SERVER['REMOTE_ADDR'], which would be the IP address of
 | 
				
			||||||
 * the proxy server, and not the client's.  If Drupal is run in a cluster
 | 
					 * the proxy server, and not the client's. If Drupal is run in a cluster
 | 
				
			||||||
 * we use the X-Cluster-Client-Ip header instead.
 | 
					 * we use the X-Cluster-Client-Ip header instead.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param $reset
 | 
					 * @param $reset
 | 
				
			||||||
| 
						 | 
					@ -1344,7 +1344,7 @@ function drupal_get_schema($table = NULL, $rebuild = FALSE) {
 | 
				
			||||||
        // was last called with, which is not always what you want.
 | 
					        // was last called with, which is not always what you want.
 | 
				
			||||||
        // module_load_all_includes() calls module_list(), but if this function
 | 
					        // module_load_all_includes() calls module_list(), but if this function
 | 
				
			||||||
        // is called very early in the bootstrap process then it will be
 | 
					        // is called very early in the bootstrap process then it will be
 | 
				
			||||||
        // uninitialized and therefore return no modules.  Instead, we have to
 | 
					        // uninitialized and therefore return no modules. Instead, we have to
 | 
				
			||||||
        // "prime" module_list() here to to values we want, specifically
 | 
					        // "prime" module_list() here to to values we want, specifically
 | 
				
			||||||
        // "yes rebuild the list and don't limit to bootstrap".
 | 
					        // "yes rebuild the list and don't limit to bootstrap".
 | 
				
			||||||
        // TODO: Remove this call after http://drupal.org/node/222109 is fixed.
 | 
					        // TODO: Remove this call after http://drupal.org/node/222109 is fixed.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1532,7 +1532,7 @@ function format_date($timestamp, $type = 'medium', $format = '', $timezone = NUL
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param $path
 | 
					 * @param $path
 | 
				
			||||||
 *   The Drupal path being linked to, such as "admin/content/node", or an
 | 
					 *   The Drupal path being linked to, such as "admin/content/node", or an
 | 
				
			||||||
 *   existing URL like "http://drupal.org/".  The special path
 | 
					 *   existing URL like "http://drupal.org/". The special path
 | 
				
			||||||
 *   '<front>' may also be given and will generate the site's base URL.
 | 
					 *   '<front>' may also be given and will generate the site's base URL.
 | 
				
			||||||
 * @param $options
 | 
					 * @param $options
 | 
				
			||||||
 *   An associative array of additional options, with the following keys:
 | 
					 *   An associative array of additional options, with the following keys:
 | 
				
			||||||
| 
						 | 
					@ -2777,7 +2777,7 @@ function drupal_random_bytes($count)  {
 | 
				
			||||||
  // Note that it may be important that our $random_state is passed
 | 
					  // Note that it may be important that our $random_state is passed
 | 
				
			||||||
  // through md5() prior to being rolled into $output, that the two md5()
 | 
					  // through md5() prior to being rolled into $output, that the two md5()
 | 
				
			||||||
  // invocations are different, and that the extra input into the first one -
 | 
					  // invocations are different, and that the extra input into the first one -
 | 
				
			||||||
  // the microtime() - is prepended rather than appended.  This is to avoid
 | 
					  // the microtime() - is prepended rather than appended. This is to avoid
 | 
				
			||||||
  // directly leaking $random_state via the $output stream, which could
 | 
					  // directly leaking $random_state via the $output stream, which could
 | 
				
			||||||
  // allow for trivial prediction of further "random" numbers.
 | 
					  // allow for trivial prediction of further "random" numbers.
 | 
				
			||||||
  while (strlen($output) < $count) {
 | 
					  while (strlen($output) < $count) {
 | 
				
			||||||
| 
						 | 
					@ -3045,7 +3045,7 @@ function drupal_system_listing($mask, $directory, $key = 'name', $min_depth = 1)
 | 
				
			||||||
  $searchdir[] = 'sites/all/' . $directory;
 | 
					  $searchdir[] = 'sites/all/' . $directory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // The 'profiles' directory contains pristine collections of modules and
 | 
					  // The 'profiles' directory contains pristine collections of modules and
 | 
				
			||||||
  // themes as organized by a distribution.  It is pristine in the same way
 | 
					  // themes as organized by a distribution. It is pristine in the same way
 | 
				
			||||||
  // that /modules is pristine for core; users should avoid changing anything
 | 
					  // that /modules is pristine for core; users should avoid changing anything
 | 
				
			||||||
  // there in favor of sites/all or sites/<domain> directories.
 | 
					  // there in favor of sites/all or sites/<domain> directories.
 | 
				
			||||||
  if (file_exists("profiles/$profile/$directory")) {
 | 
					  if (file_exists("profiles/$profile/$directory")) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,10 +12,10 @@
 | 
				
			||||||
 * Allow the use of different database servers using the same code base.
 | 
					 * Allow the use of different database servers using the same code base.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Drupal provides a database abstraction layer to provide developers with
 | 
					 * Drupal provides a database abstraction layer to provide developers with
 | 
				
			||||||
 * the ability to support multiple database servers easily.  The intent of
 | 
					 * the ability to support multiple database servers easily. The intent of
 | 
				
			||||||
 * this layer is to preserve the syntax and power of SQL as much as possible,
 | 
					 * this layer is to preserve the syntax and power of SQL as much as possible,
 | 
				
			||||||
 * but also allow developers a way to leverage more complex functionality in
 | 
					 * but also allow developers a way to leverage more complex functionality in
 | 
				
			||||||
 * a unified way.  It also provides a structured interface for dynamically
 | 
					 * a unified way. It also provides a structured interface for dynamically
 | 
				
			||||||
 * constructing queries when appropriate, and enforcing security checks and
 | 
					 * constructing queries when appropriate, and enforcing security checks and
 | 
				
			||||||
 * similar good practices.
 | 
					 * similar good practices.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -48,14 +48,14 @@
 | 
				
			||||||
 * Finally, note the PDO-based ability to foreach() over the result set.
 | 
					 * Finally, note the PDO-based ability to foreach() over the result set.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * All queries are passed as a prepared statement string.  A
 | 
					 * All queries are passed as a prepared statement string. A
 | 
				
			||||||
 * prepared statement is a "template" of a query that omits literal or variable
 | 
					 * prepared statement is a "template" of a query that omits literal or variable
 | 
				
			||||||
 * values in favor of placeholders.  The values to place into those
 | 
					 * values in favor of placeholders. The values to place into those
 | 
				
			||||||
 * placeholders are passed separately, and the database driver handles
 | 
					 * placeholders are passed separately, and the database driver handles
 | 
				
			||||||
 * inserting the values into the query in a secure fashion.  That means you
 | 
					 * inserting the values into the query in a secure fashion. That means you
 | 
				
			||||||
 * should never quote or string-escape a value to be inserted into the query.
 | 
					 * should never quote or string-escape a value to be inserted into the query.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * There are two formats for placeholders: named and unnamed.  Named placeholders
 | 
					 * There are two formats for placeholders: named and unnamed. Named placeholders
 | 
				
			||||||
 * are strongly preferred in all cases as they are more flexible and
 | 
					 * are strongly preferred in all cases as they are more flexible and
 | 
				
			||||||
 * self-documenting.
 | 
					 * self-documenting.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -65,13 +65,13 @@
 | 
				
			||||||
 * @endcode
 | 
					 * @endcode
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * ":uid" is a placeholder that will be replaced with a literal value when
 | 
					 * ":uid" is a placeholder that will be replaced with a literal value when
 | 
				
			||||||
 * the query is executed.  A given placeholder label cannot be repeated in a
 | 
					 * the query is executed. A given placeholder label cannot be repeated in a
 | 
				
			||||||
 * given query, even if the value should be the same.  When using named
 | 
					 * given query, even if the value should be the same. When using named
 | 
				
			||||||
 * placeholders, the array of arguments to the query must be an associative
 | 
					 * placeholders, the array of arguments to the query must be an associative
 | 
				
			||||||
 * array where keys are a placeholder label (e.g., :uid) and the value is the
 | 
					 * array where keys are a placeholder label (e.g., :uid) and the value is the
 | 
				
			||||||
 * corresponding value to use.  The array may be in any order.
 | 
					 * corresponding value to use. The array may be in any order.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Unnamed placeholders are simply a question mark.  Example:
 | 
					 * Unnamed placeholders are simply a question mark. Example:
 | 
				
			||||||
 * @code
 | 
					 * @code
 | 
				
			||||||
 * SELECT nid, title FROM {node} WHERE uid=?
 | 
					 * SELECT nid, title FROM {node} WHERE uid=?
 | 
				
			||||||
 * @endcode
 | 
					 * @endcode
 | 
				
			||||||
| 
						 | 
					@ -79,9 +79,9 @@
 | 
				
			||||||
 * In this case, the array of arguments must be an indexed array of values to
 | 
					 * In this case, the array of arguments must be an indexed array of values to
 | 
				
			||||||
 * use in the exact same order as the placeholders in the query.
 | 
					 * use in the exact same order as the placeholders in the query.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Note that placeholders should be a "complete" value.  For example, when
 | 
					 * Note that placeholders should be a "complete" value. For example, when
 | 
				
			||||||
 * running a LIKE query the SQL wildcard character, %, should be part of the
 | 
					 * running a LIKE query the SQL wildcard character, %, should be part of the
 | 
				
			||||||
 * value, not the query itself.  Thus, the following is incorrect:
 | 
					 * value, not the query itself. Thus, the following is incorrect:
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @code
 | 
					 * @code
 | 
				
			||||||
 * SELECT nid, title FROM {node} WHERE title LIKE :title%
 | 
					 * SELECT nid, title FROM {node} WHERE title LIKE :title%
 | 
				
			||||||
| 
						 | 
					@ -93,17 +93,17 @@
 | 
				
			||||||
 * SELECT nid, title FROM {node} WHERE title LIKE :title
 | 
					 * SELECT nid, title FROM {node} WHERE title LIKE :title
 | 
				
			||||||
 * @endcode
 | 
					 * @endcode
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * and the value for :title should include a % as appropriate.  Again, note the
 | 
					 * and the value for :title should include a % as appropriate. Again, note the
 | 
				
			||||||
 * lack of quotation marks around :title.  Because the value is not inserted
 | 
					 * lack of quotation marks around :title. Because the value is not inserted
 | 
				
			||||||
 * into the query as one big string but as an explicitly separate value, the
 | 
					 * into the query as one big string but as an explicitly separate value, the
 | 
				
			||||||
 * database server knows where the query ends and a value begins.  That is
 | 
					 * database server knows where the query ends and a value begins. That is
 | 
				
			||||||
 * considerably more secure against SQL injection than trying to remember
 | 
					 * considerably more secure against SQL injection than trying to remember
 | 
				
			||||||
 * which values need quotation marks and string escaping and which don't.
 | 
					 * which values need quotation marks and string escaping and which don't.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * INSERT, UPDATE, and DELETE queries need special care in order to behave
 | 
					 * INSERT, UPDATE, and DELETE queries need special care in order to behave
 | 
				
			||||||
 * consistently across all different databases.  Therefore, they use a special
 | 
					 * consistently across all different databases. Therefore, they use a special
 | 
				
			||||||
 * object-oriented API for defining a query structurally.  For example, rather than
 | 
					 * object-oriented API for defining a query structurally. For example, rather than
 | 
				
			||||||
 * @code
 | 
					 * @code
 | 
				
			||||||
 * INSERT INTO node (nid, title, body) VALUES (1, 'my title', 'my body')
 | 
					 * INSERT INTO node (nid, title, body) VALUES (1, 'my title', 'my body')
 | 
				
			||||||
 * @endcode
 | 
					 * @endcode
 | 
				
			||||||
| 
						 | 
					@ -113,7 +113,7 @@
 | 
				
			||||||
 * db_insert('my_table')->fields($fields)->execute();
 | 
					 * db_insert('my_table')->fields($fields)->execute();
 | 
				
			||||||
 * @endcode
 | 
					 * @endcode
 | 
				
			||||||
 * This method allows databases that need special data type handling to do so,
 | 
					 * This method allows databases that need special data type handling to do so,
 | 
				
			||||||
 * while also allowing optimizations such as multi-insert queries.  UPDATE and
 | 
					 * while also allowing optimizations such as multi-insert queries. UPDATE and
 | 
				
			||||||
 * DELETE queries have a similar pattern.
 | 
					 * DELETE queries have a similar pattern.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -250,45 +250,45 @@ abstract class DatabaseConnection extends PDO {
 | 
				
			||||||
   * A given query can be customized with a number of option flags in an
 | 
					   * A given query can be customized with a number of option flags in an
 | 
				
			||||||
   * associative array.
 | 
					   * associative array.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   *   target - The database "target" against which to execute a query.  Valid
 | 
					   *   target - The database "target" against which to execute a query. Valid
 | 
				
			||||||
   *   values are "default" or "slave".  The system will first try to open a
 | 
					   *   values are "default" or "slave". The system will first try to open a
 | 
				
			||||||
   *   connection to a database specified with the user-supplied key.  If one
 | 
					   *   connection to a database specified with the user-supplied key. If one
 | 
				
			||||||
   *   is not available, it will silently fall back to the "default" target.
 | 
					   *   is not available, it will silently fall back to the "default" target.
 | 
				
			||||||
   *   If multiple databases connections are specified with the same target,
 | 
					   *   If multiple databases connections are specified with the same target,
 | 
				
			||||||
   *   one will be selected at random for the duration of the request.
 | 
					   *   one will be selected at random for the duration of the request.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   *   fetch - This element controls how rows from a result set will be returned.
 | 
					   *   fetch - This element controls how rows from a result set will be returned.
 | 
				
			||||||
   *   legal values include PDO::FETCH_ASSOC, PDO::FETCH_BOTH, PDO::FETCH_OBJ,
 | 
					   *   legal values include PDO::FETCH_ASSOC, PDO::FETCH_BOTH, PDO::FETCH_OBJ,
 | 
				
			||||||
   *   PDO::FETCH_NUM, or a string representing the name of a class.  If a string
 | 
					   *   PDO::FETCH_NUM, or a string representing the name of a class. If a string
 | 
				
			||||||
   *   is specified, each record will be fetched into a new object of that class.
 | 
					   *   is specified, each record will be fetched into a new object of that class.
 | 
				
			||||||
   *   The behavior of all other values is defined by PDO.  See
 | 
					   *   The behavior of all other values is defined by PDO. See
 | 
				
			||||||
   *   http://www.php.net/PDOStatement-fetch
 | 
					   *   http://www.php.net/PDOStatement-fetch
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   *   return - Depending on the type of query, different return values may be
 | 
					   *   return - Depending on the type of query, different return values may be
 | 
				
			||||||
   *   meaningful.  This directive instructs the system which type of return
 | 
					   *   meaningful. This directive instructs the system which type of return
 | 
				
			||||||
   *   value is desired.  The system will generally set the correct value
 | 
					   *   value is desired. The system will generally set the correct value
 | 
				
			||||||
   *   automatically, so it is extremely rare that a module developer will ever
 | 
					   *   automatically, so it is extremely rare that a module developer will ever
 | 
				
			||||||
   *   need to specify this value.  Setting it incorrectly will likely lead to
 | 
					   *   need to specify this value. Setting it incorrectly will likely lead to
 | 
				
			||||||
   *   unpredictable results or fatal errors.  Legal values include:
 | 
					   *   unpredictable results or fatal errors. Legal values include:
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   *     Database::RETURN_STATEMENT - Return the prepared statement object for the
 | 
					   *     Database::RETURN_STATEMENT - Return the prepared statement object for the
 | 
				
			||||||
   *     query.  This is usually only meaningful for SELECT queries, where the
 | 
					   *     query. This is usually only meaningful for SELECT queries, where the
 | 
				
			||||||
   *     statement object is how one accesses the result set returned by the query.
 | 
					   *     statement object is how one accesses the result set returned by the query.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   *     Database::RETURN_AFFECTED - Return the number of rows affected by an
 | 
					   *     Database::RETURN_AFFECTED - Return the number of rows affected by an
 | 
				
			||||||
   *     UPDATE or DELETE query.  Be aware that means the number of rows
 | 
					   *     UPDATE or DELETE query. Be aware that means the number of rows
 | 
				
			||||||
   *     actually changed, not the number of rows matched by the WHERE clause.
 | 
					   *     actually changed, not the number of rows matched by the WHERE clause.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   *     Database::RETURN_INSERT_ID - Return the sequence ID (primary key)
 | 
					   *     Database::RETURN_INSERT_ID - Return the sequence ID (primary key)
 | 
				
			||||||
   *     created by an INSERT statement on a table that contains a serial column.
 | 
					   *     created by an INSERT statement on a table that contains a serial column.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   *     Database::RETURN_NULL - Do not return anything, as there is no
 | 
					   *     Database::RETURN_NULL - Do not return anything, as there is no
 | 
				
			||||||
   *     meaningful value to return.  That is the case for INSERT queries on
 | 
					   *     meaningful value to return. That is the case for INSERT queries on
 | 
				
			||||||
   *     tables that do not contain a serial column.
 | 
					   *     tables that do not contain a serial column.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   *   throw_exception - By default, the database system will catch any errors
 | 
					   *   throw_exception - By default, the database system will catch any errors
 | 
				
			||||||
   *   on a query as an Exception, log it, and then rethrow it so that code
 | 
					   *   on a query as an Exception, log it, and then rethrow it so that code
 | 
				
			||||||
   *   further up the call chain can take an appropriate action.  To supress
 | 
					   *   further up the call chain can take an appropriate action. To supress
 | 
				
			||||||
   *   that behavior and simply return NULL on failure, set this option to FALSE.
 | 
					   *   that behavior and simply return NULL on failure, set this option to FALSE.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
| 
						 | 
					@ -344,7 +344,7 @@ abstract class DatabaseConnection extends PDO {
 | 
				
			||||||
   * Prepare a query string and return the prepared statement.
 | 
					   * Prepare a query string and return the prepared statement.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This method caches prepared statements, reusing them when
 | 
					   * This method caches prepared statements, reusing them when
 | 
				
			||||||
   * possible.  It also prefixes tables names enclosed in curly-braces.
 | 
					   * possible. It also prefixes tables names enclosed in curly-braces.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $query
 | 
					   * @param $query
 | 
				
			||||||
   *   The query string as SQL, with curly-braces surrounding the
 | 
					   *   The query string as SQL, with curly-braces surrounding the
 | 
				
			||||||
| 
						 | 
					@ -364,13 +364,13 @@ abstract class DatabaseConnection extends PDO {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Tell this connection object what its target value is.
 | 
					   * Tell this connection object what its target value is.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This is needed for logging and auditing.  It's sloppy to do in the
 | 
					   * This is needed for logging and auditing. It's sloppy to do in the
 | 
				
			||||||
   * constructor because the constructor for child classes has a different
 | 
					   * constructor because the constructor for child classes has a different
 | 
				
			||||||
   * signature.  We therefore also ensure that this function is only ever
 | 
					   * signature. We therefore also ensure that this function is only ever
 | 
				
			||||||
   * called once.
 | 
					   * called once.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $target
 | 
					   * @param $target
 | 
				
			||||||
   *   The target this connection is for.  Set to NULL (default) to disable
 | 
					   *   The target this connection is for. Set to NULL (default) to disable
 | 
				
			||||||
   *   logging entirely.
 | 
					   *   logging entirely.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function setTarget($target = NULL) {
 | 
					  public function setTarget($target = NULL) {
 | 
				
			||||||
| 
						 | 
					@ -403,7 +403,7 @@ abstract class DatabaseConnection extends PDO {
 | 
				
			||||||
   * Get the current logging object for this connection.
 | 
					   * Get the current logging object for this connection.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The current logging object for this connection.  If there isn't one,
 | 
					   *   The current logging object for this connection. If there isn't one,
 | 
				
			||||||
   *   NULL is returned.
 | 
					   *   NULL is returned.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function getLogger() {
 | 
					  public function getLogger() {
 | 
				
			||||||
| 
						 | 
					@ -414,7 +414,7 @@ abstract class DatabaseConnection extends PDO {
 | 
				
			||||||
   * Create the appropriate sequence name for a given table and serial field.
 | 
					   * Create the appropriate sequence name for a given table and serial field.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This information is exposed to all database drivers, although it is only
 | 
					   * This information is exposed to all database drivers, although it is only
 | 
				
			||||||
   * useful on some of them.  This method is table prefix-aware.
 | 
					   * useful on some of them. This method is table prefix-aware.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $table
 | 
					   * @param $table
 | 
				
			||||||
   *   The table name to use for the sequence.
 | 
					   *   The table name to use for the sequence.
 | 
				
			||||||
| 
						 | 
					@ -431,32 +431,32 @@ abstract class DatabaseConnection extends PDO {
 | 
				
			||||||
   * Executes a query string against the database.
 | 
					   * Executes a query string against the database.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This method provides a central handler for the actual execution
 | 
					   * This method provides a central handler for the actual execution
 | 
				
			||||||
   * of every query.  All queries executed by Drupal are executed as
 | 
					   * of every query. All queries executed by Drupal are executed as
 | 
				
			||||||
   * PDO prepared statements.
 | 
					   * PDO prepared statements.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $query
 | 
					   * @param $query
 | 
				
			||||||
   *   The query to execute.  In most cases this will be a string containing
 | 
					   *   The query to execute. In most cases this will be a string containing
 | 
				
			||||||
   *   an SQL query with placeholders.  An already-prepared instance of
 | 
					   *   an SQL query with placeholders. An already-prepared instance of
 | 
				
			||||||
   *   DatabaseStatementInterface may also be passed in order to allow calling code
 | 
					   *   DatabaseStatementInterface may also be passed in order to allow calling code
 | 
				
			||||||
   *   to manually bind variables to a query.  If a DatabaseStatementInterface
 | 
					   *   to manually bind variables to a query. If a DatabaseStatementInterface
 | 
				
			||||||
   *   is passed, the $args array will be ignored.
 | 
					   *   is passed, the $args array will be ignored.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   *   It is extremely rare that module code will need to pass a statement
 | 
					   *   It is extremely rare that module code will need to pass a statement
 | 
				
			||||||
   *   object to this method.  It is used primarily for database drivers for
 | 
					   *   object to this method. It is used primarily for database drivers for
 | 
				
			||||||
   *   databases that require special LOB field handling.
 | 
					   *   databases that require special LOB field handling.
 | 
				
			||||||
   * @param $args
 | 
					   * @param $args
 | 
				
			||||||
   *   An array of arguments for the prepared statement.  If the prepared
 | 
					   *   An array of arguments for the prepared statement. If the prepared
 | 
				
			||||||
   *   statement uses ? placeholders, this array must be an indexed array.
 | 
					   *   statement uses ? placeholders, this array must be an indexed array.
 | 
				
			||||||
   *   If it contains named placeholders, it must be an associative array.
 | 
					   *   If it contains named placeholders, it must be an associative array.
 | 
				
			||||||
   * @param $options
 | 
					   * @param $options
 | 
				
			||||||
   *   An associative array of options to control how the query is run.  See
 | 
					   *   An associative array of options to control how the query is run. See
 | 
				
			||||||
   *   the documentation for DatabaseConnection::defaultOptions() for details.
 | 
					   *   the documentation for DatabaseConnection::defaultOptions() for details.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   This method will return one of: The executed statement, the number of
 | 
					   *   This method will return one of: The executed statement, the number of
 | 
				
			||||||
   *   rows affected by the query (not the number matched), or the generated
 | 
					   *   rows affected by the query (not the number matched), or the generated
 | 
				
			||||||
   *   insert id of the last query, depending on the value of $options['return'].
 | 
					   *   insert id of the last query, depending on the value of $options['return'].
 | 
				
			||||||
   *   Typically that value will be set by default or a query builder and should
 | 
					   *   Typically that value will be set by default or a query builder and should
 | 
				
			||||||
   *   not be set by a user.  If there is an error, this method will return NULL
 | 
					   *   not be set by a user. If there is an error, this method will return NULL
 | 
				
			||||||
   *   and may throw an exception if $options['throw_exception'] is TRUE.
 | 
					   *   and may throw an exception if $options['throw_exception'] is TRUE.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function query($query, array $args = array(), $options = array()) {
 | 
					  public function query($query, array $args = array(), $options = array()) {
 | 
				
			||||||
| 
						 | 
					@ -513,7 +513,7 @@ abstract class DatabaseConnection extends PDO {
 | 
				
			||||||
   * @see SelectQuery
 | 
					   * @see SelectQuery
 | 
				
			||||||
   * @param $table
 | 
					   * @param $table
 | 
				
			||||||
   *   The base table for this query, that is, the first table in the FROM
 | 
					   *   The base table for this query, that is, the first table in the FROM
 | 
				
			||||||
   *   clause.  This table will also be used as the "base" table for query_alter
 | 
					   *   clause. This table will also be used as the "base" table for query_alter
 | 
				
			||||||
   *   hook implementations.
 | 
					   *   hook implementations.
 | 
				
			||||||
   * @param $alias
 | 
					   * @param $alias
 | 
				
			||||||
   *   The alias of the base table of this query.
 | 
					   *   The alias of the base table of this query.
 | 
				
			||||||
| 
						 | 
					@ -653,7 +653,7 @@ abstract class DatabaseConnection extends PDO {
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $required
 | 
					   * @param $required
 | 
				
			||||||
   *   If executing an operation that absolutely must use transactions, specify
 | 
					   *   If executing an operation that absolutely must use transactions, specify
 | 
				
			||||||
   *   TRUE for this parameter.  If the connection does not support transactions,
 | 
					   *   TRUE for this parameter. If the connection does not support transactions,
 | 
				
			||||||
   *   this method will throw an exception and the operation will not be possible.
 | 
					   *   this method will throw an exception and the operation will not be possible.
 | 
				
			||||||
   * @see DatabaseTransaction
 | 
					   * @see DatabaseTransaction
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					@ -715,7 +715,7 @@ abstract class DatabaseConnection extends PDO {
 | 
				
			||||||
   *   The name of the temporary table to select into. This name will not be
 | 
					   *   The name of the temporary table to select into. This name will not be
 | 
				
			||||||
   *   prefixed as there is no risk of collision.
 | 
					   *   prefixed as there is no risk of collision.
 | 
				
			||||||
   * @param $options
 | 
					   * @param $options
 | 
				
			||||||
   *   An associative array of options to control how the query is run.  See
 | 
					   *   An associative array of options to control how the query is run. See
 | 
				
			||||||
   *   the documentation for DatabaseConnection::defaultOptions() for details.
 | 
					   *   the documentation for DatabaseConnection::defaultOptions() for details.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   A database query result resource, or FALSE if the query was not executed
 | 
					   *   A database query result resource, or FALSE if the query was not executed
 | 
				
			||||||
| 
						 | 
					@ -750,13 +750,13 @@ abstract class DatabaseConnection extends PDO {
 | 
				
			||||||
   * Gets any special processing requirements for the condition operator.
 | 
					   * Gets any special processing requirements for the condition operator.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Some condition types require special processing, such as IN, because
 | 
					   * Some condition types require special processing, such as IN, because
 | 
				
			||||||
   * the value data they pass in is not a simple value.  This is a simple
 | 
					   * the value data they pass in is not a simple value. This is a simple
 | 
				
			||||||
   * overridable lookup function.  Database connections should define only
 | 
					   * overridable lookup function. Database connections should define only
 | 
				
			||||||
   * those operators they wish to be handled differently than the default.
 | 
					   * those operators they wish to be handled differently than the default.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @see DatabaseCondition::compile().
 | 
					   * @see DatabaseCondition::compile().
 | 
				
			||||||
   * @param $operator
 | 
					   * @param $operator
 | 
				
			||||||
   *   The condition operator, such as "IN", "BETWEEN", etc.  Case-sensitive.
 | 
					   *   The condition operator, such as "IN", "BETWEEN", etc. Case-sensitive.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The extra handling directives for the specified operator, or NULL.
 | 
					   *   The extra handling directives for the specified operator, or NULL.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					@ -766,7 +766,7 @@ abstract class DatabaseConnection extends PDO {
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Primary front-controller for the database system.
 | 
					 * Primary front-controller for the database system.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This class is uninstantiatable and un-extendable.  It acts to encapsulate
 | 
					 * This class is uninstantiatable and un-extendable. It acts to encapsulate
 | 
				
			||||||
 * all control and shepherding of database connections into a single location
 | 
					 * all control and shepherding of database connections into a single location
 | 
				
			||||||
 * without the use of globals.
 | 
					 * without the use of globals.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -798,7 +798,7 @@ abstract class Database {
 | 
				
			||||||
  const RETURN_INSERT_ID = 3;
 | 
					  const RETURN_INSERT_ID = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * An nested array of all active connections.  It is keyed by database name and target.
 | 
					   * An nested array of all active connections. It is keyed by database name and target.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @var array
 | 
					   * @var array
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					@ -848,7 +848,7 @@ abstract class Database {
 | 
				
			||||||
   * @param $key
 | 
					   * @param $key
 | 
				
			||||||
   *   The database connection key for which we want to log.
 | 
					   *   The database connection key for which we want to log.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The query log object.  Note that the log object does support richer
 | 
					   *   The query log object. Note that the log object does support richer
 | 
				
			||||||
   *   methods than the few exposed through the Database class, so in some
 | 
					   *   methods than the few exposed through the Database class, so in some
 | 
				
			||||||
   *   cases it may be desirable to access it directly.
 | 
					   *   cases it may be desirable to access it directly.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					@ -872,7 +872,7 @@ abstract class Database {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Retrieve the queries logged on for given logging key.
 | 
					   * Retrieve the queries logged on for given logging key.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This method also ends logging for the specified key.  To get the query log
 | 
					   * This method also ends logging for the specified key. To get the query log
 | 
				
			||||||
   * to date without ending the logger request the logging object by starting
 | 
					   * to date without ending the logger request the logging object by starting
 | 
				
			||||||
   * it again (which does nothing to an open log key) and call methods on it as
 | 
					   * it again (which does nothing to an open log key) and call methods on it as
 | 
				
			||||||
   * desired.
 | 
					   * desired.
 | 
				
			||||||
| 
						 | 
					@ -984,7 +984,7 @@ abstract class Database {
 | 
				
			||||||
    foreach ($databaseInfo as $index => $info) {
 | 
					    foreach ($databaseInfo as $index => $info) {
 | 
				
			||||||
      foreach ($databaseInfo[$index] as $target => $value) {
 | 
					      foreach ($databaseInfo[$index] as $target => $value) {
 | 
				
			||||||
        // If there is no "driver" property, then we assume it's an array of
 | 
					        // If there is no "driver" property, then we assume it's an array of
 | 
				
			||||||
        // possible connections for this target.  Pick one at random.  That
 | 
					        // possible connections for this target. Pick one at random. That
 | 
				
			||||||
        // allows us to have, for example, multiple slave servers.
 | 
					        // allows us to have, for example, multiple slave servers.
 | 
				
			||||||
        if (empty($value['driver'])) {
 | 
					        if (empty($value['driver'])) {
 | 
				
			||||||
          $databaseInfo[$index][$target] = $databaseInfo[$index][$target][mt_rand(0, count($databaseInfo[$index][$target]) - 1)];
 | 
					          $databaseInfo[$index][$target] = $databaseInfo[$index][$target][mt_rand(0, count($databaseInfo[$index][$target]) - 1)];
 | 
				
			||||||
| 
						 | 
					@ -1000,7 +1000,7 @@ abstract class Database {
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This method allows the addition of new connection credentials at runtime.
 | 
					   * This method allows the addition of new connection credentials at runtime.
 | 
				
			||||||
   * Under normal circumstances the preferred way to specify database credentials
 | 
					   * Under normal circumstances the preferred way to specify database credentials
 | 
				
			||||||
   * is via settings.php.  However, this method allows them to be added at
 | 
					   * is via settings.php. However, this method allows them to be added at
 | 
				
			||||||
   * arbitrary times, such as during unit tests, when connecting to admin-defined
 | 
					   * arbitrary times, such as during unit tests, when connecting to admin-defined
 | 
				
			||||||
   * third party databases, etc.
 | 
					   * third party databases, etc.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
| 
						 | 
					@ -1042,7 +1042,7 @@ abstract class Database {
 | 
				
			||||||
   * Open a connection to the server specified by the given key and target.
 | 
					   * Open a connection to the server specified by the given key and target.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $key
 | 
					   * @param $key
 | 
				
			||||||
   *   The database connection key, as specified in settings.php.  The default
 | 
					   *   The database connection key, as specified in settings.php. The default
 | 
				
			||||||
   *   is "default".
 | 
					   *   is "default".
 | 
				
			||||||
   * @param $target
 | 
					   * @param $target
 | 
				
			||||||
   *   The database target to open.
 | 
					   *   The database target to open.
 | 
				
			||||||
| 
						 | 
					@ -1084,7 +1084,7 @@ abstract class Database {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    catch (Exception $e) {
 | 
					    catch (Exception $e) {
 | 
				
			||||||
      // It is extremely rare that an exception will be generated here other
 | 
					      // It is extremely rare that an exception will be generated here other
 | 
				
			||||||
      // than when installing.  We therefore intercept it and try the installer,
 | 
					      // than when installing. We therefore intercept it and try the installer,
 | 
				
			||||||
      // passing on the exception otherwise.
 | 
					      // passing on the exception otherwise.
 | 
				
			||||||
      _db_check_install_needed();
 | 
					      _db_check_install_needed();
 | 
				
			||||||
      throw $e;
 | 
					      throw $e;
 | 
				
			||||||
| 
						 | 
					@ -1094,7 +1094,7 @@ abstract class Database {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Instruct the system to temporarily ignore a given key/target.
 | 
					   * Instruct the system to temporarily ignore a given key/target.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * At times we need to temporarily disable slave queries.  To do so,
 | 
					   * At times we need to temporarily disable slave queries. To do so,
 | 
				
			||||||
   * call this method with the database key and the target to disable.
 | 
					   * call this method with the database key and the target to disable.
 | 
				
			||||||
   * That database key will then always fall back to 'default' for that
 | 
					   * That database key will then always fall back to 'default' for that
 | 
				
			||||||
   * key, even if it's defined.
 | 
					   * key, even if it's defined.
 | 
				
			||||||
| 
						 | 
					@ -1115,7 +1115,7 @@ abstract class Database {
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This exception will be thrown when a transaction is started that does not
 | 
					 * This exception will be thrown when a transaction is started that does not
 | 
				
			||||||
 * allow for the "silent fallback" of no transaction and the database connection
 | 
					 * allow for the "silent fallback" of no transaction and the database connection
 | 
				
			||||||
 * in use does not support transactions.  The calling code must then take
 | 
					 * in use does not support transactions. The calling code must then take
 | 
				
			||||||
 * appropriate action.
 | 
					 * appropriate action.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class TransactionsNotSupportedException extends PDOException { }
 | 
					class TransactionsNotSupportedException extends PDOException { }
 | 
				
			||||||
| 
						 | 
					@ -1123,16 +1123,16 @@ class TransactionsNotSupportedException extends PDOException { }
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * A wrapper class for creating and managing database transactions.
 | 
					 * A wrapper class for creating and managing database transactions.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Not all databases or database configurations support transactions.  For
 | 
					 * Not all databases or database configurations support transactions. For
 | 
				
			||||||
 * example, MySQL MyISAM tables do not.  It is also easy to begin a transaction
 | 
					 * example, MySQL MyISAM tables do not. It is also easy to begin a transaction
 | 
				
			||||||
 * and then forget to commit it, which can lead to connection errors when
 | 
					 * and then forget to commit it, which can lead to connection errors when
 | 
				
			||||||
 * another transaction is started.
 | 
					 * another transaction is started.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This class acts as a wrapper for transactions.  To begin a transaction,
 | 
					 * This class acts as a wrapper for transactions. To begin a transaction,
 | 
				
			||||||
 * simply instantiate it.  When the object goes out of scope and is destroyed
 | 
					 * simply instantiate it. When the object goes out of scope and is destroyed
 | 
				
			||||||
 * it will automatically commit.  It also will check to see if the specified
 | 
					 * it will automatically commit. It also will check to see if the specified
 | 
				
			||||||
 * connection supports transactions.  If not, it will simply skip any transaction
 | 
					 * connection supports transactions. If not, it will simply skip any transaction
 | 
				
			||||||
 * commands, allowing user-space code to proceed normally.  The only difference
 | 
					 * commands, allowing user-space code to proceed normally. The only difference
 | 
				
			||||||
 * is that rollbacks won't actually do anything.
 | 
					 * is that rollbacks won't actually do anything.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * In the vast majority of cases, you should not instantiate this class directly.
 | 
					 * In the vast majority of cases, you should not instantiate this class directly.
 | 
				
			||||||
| 
						 | 
					@ -1174,7 +1174,7 @@ class DatabaseTransaction {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Track the number of "layers" of transactions currently active.
 | 
					   * Track the number of "layers" of transactions currently active.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * On many databases transactions cannot nest.  Instead, we track
 | 
					   * On many databases transactions cannot nest. Instead, we track
 | 
				
			||||||
   * nested calls to transactions and collapse them into a single
 | 
					   * nested calls to transactions and collapse them into a single
 | 
				
			||||||
   * transaction.
 | 
					   * transaction.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
| 
						 | 
					@ -1325,7 +1325,7 @@ interface DatabaseStatementInterface extends Traversable {
 | 
				
			||||||
   * Return a single field out of the current
 | 
					   * Return a single field out of the current
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $index
 | 
					   * @param $index
 | 
				
			||||||
   *   The numeric index of the field to return.  Defaults to the first field.
 | 
					   *   The numeric index of the field to return. Defaults to the first field.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   A single field from the next record.
 | 
					   *   A single field from the next record.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					@ -1343,7 +1343,7 @@ interface DatabaseStatementInterface extends Traversable {
 | 
				
			||||||
   * Fetches the next row and returns it as an associative array.
 | 
					   * Fetches the next row and returns it as an associative array.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This method corresponds to PDOStatement::fetchObject(),
 | 
					   * This method corresponds to PDOStatement::fetchObject(),
 | 
				
			||||||
   * but for associative arrays.  For some reason PDOStatement does
 | 
					   * but for associative arrays. For some reason PDOStatement does
 | 
				
			||||||
   * not have a corresponding array helper method, so one is added.
 | 
					   * not have a corresponding array helper method, so one is added.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
| 
						 | 
					@ -1407,7 +1407,7 @@ interface DatabaseStatementInterface extends Traversable {
 | 
				
			||||||
   * @param $key
 | 
					   * @param $key
 | 
				
			||||||
   *   The name of the field on which to index the array.
 | 
					   *   The name of the field on which to index the array.
 | 
				
			||||||
   * @param $fetch
 | 
					   * @param $fetch
 | 
				
			||||||
   *   The fetchmode to use.  If set to PDO::FETCH_ASSOC, PDO::FETCH_NUM, or
 | 
					   *   The fetchmode to use. If set to PDO::FETCH_ASSOC, PDO::FETCH_NUM, or
 | 
				
			||||||
   *   PDO::FETCH_BOTH the returned value with be an array of arrays. For any
 | 
					   *   PDO::FETCH_BOTH the returned value with be an array of arrays. For any
 | 
				
			||||||
   *   other value it will be an array of objects.
 | 
					   *   other value it will be an array of objects.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
| 
						 | 
					@ -1420,8 +1420,8 @@ interface DatabaseStatementInterface extends Traversable {
 | 
				
			||||||
 * Default implementation of DatabaseStatementInterface.
 | 
					 * Default implementation of DatabaseStatementInterface.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * PDO allows us to extend the PDOStatement class to provide additional
 | 
					 * PDO allows us to extend the PDOStatement class to provide additional
 | 
				
			||||||
 * functionality beyond that offered by default.  We do need extra
 | 
					 * functionality beyond that offered by default. We do need extra
 | 
				
			||||||
 * functionality.  By default, this class is not driver-specific.  If a given
 | 
					 * functionality. By default, this class is not driver-specific. If a given
 | 
				
			||||||
 * driver needs to set a custom statement class, it may do so in its constructor.
 | 
					 * driver needs to set a custom statement class, it may do so in its constructor.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @link http://us.php.net/pdostatement
 | 
					 * @link http://us.php.net/pdostatement
 | 
				
			||||||
| 
						 | 
					@ -1523,18 +1523,18 @@ class DatabaseStatementBase extends PDOStatement implements DatabaseStatementInt
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Execute an arbitrary query string against the active database.
 | 
					 * Execute an arbitrary query string against the active database.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Do not use this function for INSERT, UPDATE, or DELETE queries.  Those should
 | 
					 * Do not use this function for INSERT, UPDATE, or DELETE queries. Those should
 | 
				
			||||||
 * be handled via the appropriate query builder factory.  Use this function for
 | 
					 * be handled via the appropriate query builder factory. Use this function for
 | 
				
			||||||
 * SELECT queries that do not require a query builder.
 | 
					 * SELECT queries that do not require a query builder.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @see DatabaseConnection::defaultOptions()
 | 
					 * @see DatabaseConnection::defaultOptions()
 | 
				
			||||||
 * @param $query
 | 
					 * @param $query
 | 
				
			||||||
 *   The prepared statement query to run.  Although it will accept both
 | 
					 *   The prepared statement query to run. Although it will accept both
 | 
				
			||||||
 *   named and unnamed placeholders, named placeholders are strongly preferred
 | 
					 *   named and unnamed placeholders, named placeholders are strongly preferred
 | 
				
			||||||
 *   as they are more self-documenting.
 | 
					 *   as they are more self-documenting.
 | 
				
			||||||
 * @param $args
 | 
					 * @param $args
 | 
				
			||||||
 *   An array of values to substitute into the query.  If the query uses named
 | 
					 *   An array of values to substitute into the query. If the query uses named
 | 
				
			||||||
 *   placeholders, this is an associative array in any order.  If the query uses
 | 
					 *   placeholders, this is an associative array in any order. If the query uses
 | 
				
			||||||
 *   unnamed placeholders (?), this is an indexed array and the order must match
 | 
					 *   unnamed placeholders (?), this is an indexed array and the order must match
 | 
				
			||||||
 *   the order of placeholders in the query string.
 | 
					 *   the order of placeholders in the query string.
 | 
				
			||||||
 * @param $options
 | 
					 * @param $options
 | 
				
			||||||
| 
						 | 
					@ -1557,12 +1557,12 @@ function db_query($query, $args = array(), $options = array()) {
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @see DatabaseConnection::defaultOptions()
 | 
					 * @see DatabaseConnection::defaultOptions()
 | 
				
			||||||
 * @param $query
 | 
					 * @param $query
 | 
				
			||||||
 *   The prepared statement query to run.  Although it will accept both
 | 
					 *   The prepared statement query to run. Although it will accept both
 | 
				
			||||||
 *   named and unnamed placeholders, named placeholders are strongly preferred
 | 
					 *   named and unnamed placeholders, named placeholders are strongly preferred
 | 
				
			||||||
 *   as they are more self-documenting.
 | 
					 *   as they are more self-documenting.
 | 
				
			||||||
 * @param $args
 | 
					 * @param $args
 | 
				
			||||||
 *   An array of values to substitute into the query.  If the query uses named
 | 
					 *   An array of values to substitute into the query. If the query uses named
 | 
				
			||||||
 *   placeholders, this is an associative array in any order.  If the query uses
 | 
					 *   placeholders, this is an associative array in any order. If the query uses
 | 
				
			||||||
 *   unnamed placeholders (?), this is an indexed array and the order must match
 | 
					 *   unnamed placeholders (?), this is an indexed array and the order must match
 | 
				
			||||||
 *   the order of placeholders in the query string.
 | 
					 *   the order of placeholders in the query string.
 | 
				
			||||||
 * @param $from
 | 
					 * @param $from
 | 
				
			||||||
| 
						 | 
					@ -1591,12 +1591,12 @@ function db_query_range($query, $args, $from = 0, $count = 0, $options = array()
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @see DatabaseConnection::defaultOptions()
 | 
					 * @see DatabaseConnection::defaultOptions()
 | 
				
			||||||
 * @param $query
 | 
					 * @param $query
 | 
				
			||||||
 *   The prepared statement query to run.  Although it will accept both
 | 
					 *   The prepared statement query to run. Although it will accept both
 | 
				
			||||||
 *   named and unnamed placeholders, named placeholders are strongly preferred
 | 
					 *   named and unnamed placeholders, named placeholders are strongly preferred
 | 
				
			||||||
 *   as they are more self-documenting.
 | 
					 *   as they are more self-documenting.
 | 
				
			||||||
 * @param $args
 | 
					 * @param $args
 | 
				
			||||||
 *   An array of values to substitute into the query.  If the query uses named
 | 
					 *   An array of values to substitute into the query. If the query uses named
 | 
				
			||||||
 *   placeholders, this is an associative array in any order.  If the query uses
 | 
					 *   placeholders, this is an associative array in any order. If the query uses
 | 
				
			||||||
 *   unnamed placeholders (?), this is an indexed array and the order must match
 | 
					 *   unnamed placeholders (?), this is an indexed array and the order must match
 | 
				
			||||||
 *   the order of placeholders in the query string.
 | 
					 *   the order of placeholders in the query string.
 | 
				
			||||||
 * @param $tablename
 | 
					 * @param $tablename
 | 
				
			||||||
| 
						 | 
					@ -1687,8 +1687,8 @@ function db_delete($table, array $options = array()) {
 | 
				
			||||||
 * Returns a new SelectQuery object for the active database.
 | 
					 * Returns a new SelectQuery object for the active database.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param $table
 | 
					 * @param $table
 | 
				
			||||||
 *   The base table for this query.  May be a string or another SelectQuery
 | 
					 *   The base table for this query. May be a string or another SelectQuery
 | 
				
			||||||
 *   object.  If a query object is passed, it will be used as a subselect.
 | 
					 *   object. If a query object is passed, it will be used as a subselect.
 | 
				
			||||||
 * @param $alias
 | 
					 * @param $alias
 | 
				
			||||||
 *   The alias for the base table of this query.
 | 
					 *   The alias for the base table of this query.
 | 
				
			||||||
 * @param $options
 | 
					 * @param $options
 | 
				
			||||||
| 
						 | 
					@ -1746,7 +1746,7 @@ function db_escape_table($table) {
 | 
				
			||||||
 * Perform an SQL query and return success or failure.
 | 
					 * Perform an SQL query and return success or failure.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param $sql
 | 
					 * @param $sql
 | 
				
			||||||
 *   A string containing a complete SQL query.  %-substitution
 | 
					 *   A string containing a complete SQL query. %-substitution
 | 
				
			||||||
 *   parameters are not supported.
 | 
					 *   parameters are not supported.
 | 
				
			||||||
 * @return
 | 
					 * @return
 | 
				
			||||||
 *   An array containing the keys:
 | 
					 *   An array containing the keys:
 | 
				
			||||||
| 
						 | 
					@ -1893,7 +1893,7 @@ function db_type_placeholder($type) {
 | 
				
			||||||
      return '\'%s\'';
 | 
					      return '\'%s\'';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    case 'numeric':
 | 
					    case 'numeric':
 | 
				
			||||||
      // Numeric values are arbitrary precision numbers.  Syntacically, numerics
 | 
					      // Numeric values are arbitrary precision numbers. Syntacically, numerics
 | 
				
			||||||
      // should be specified directly in SQL. However, without single quotes
 | 
					      // should be specified directly in SQL. However, without single quotes
 | 
				
			||||||
      // the %s placeholder does not protect against non-numeric characters such
 | 
					      // the %s placeholder does not protect against non-numeric characters such
 | 
				
			||||||
      // as spaces which would expose us to SQL injection.
 | 
					      // as spaces which would expose us to SQL injection.
 | 
				
			||||||
| 
						 | 
					@ -1972,7 +1972,7 @@ function db_drop_table(&$ret, $table) {
 | 
				
			||||||
 * @param $keys_new
 | 
					 * @param $keys_new
 | 
				
			||||||
 *   Optional keys and indexes specification to be created on the
 | 
					 *   Optional keys and indexes specification to be created on the
 | 
				
			||||||
 *   table along with adding the field. The format is the same as a
 | 
					 *   table along with adding the field. The format is the same as a
 | 
				
			||||||
 *   table specification but without the 'fields' element.  If you are
 | 
					 *   table specification but without the 'fields' element. If you are
 | 
				
			||||||
 *   adding a type 'serial' field, you MUST specify at least one key
 | 
					 *   adding a type 'serial' field, you MUST specify at least one key
 | 
				
			||||||
 *   or index including it in this array. @see db_change_field for more
 | 
					 *   or index including it in this array. @see db_change_field for more
 | 
				
			||||||
 *   explanation why.
 | 
					 *   explanation why.
 | 
				
			||||||
| 
						 | 
					@ -2132,7 +2132,7 @@ function db_drop_index(&$ret, $table, $name) {
 | 
				
			||||||
 * );
 | 
					 * );
 | 
				
			||||||
 * @endcode
 | 
					 * @endcode
 | 
				
			||||||
 * and you want to change foo.bar to be type serial, leaving it as the
 | 
					 * and you want to change foo.bar to be type serial, leaving it as the
 | 
				
			||||||
 * primary key.  The correct sequence is:
 | 
					 * primary key. The correct sequence is:
 | 
				
			||||||
 * @code
 | 
					 * @code
 | 
				
			||||||
 * db_drop_primary_key($ret, 'foo');
 | 
					 * db_drop_primary_key($ret, 'foo');
 | 
				
			||||||
 * db_change_field($ret, 'foo', 'bar', 'bar',
 | 
					 * db_change_field($ret, 'foo', 'bar', 'bar',
 | 
				
			||||||
| 
						 | 
					@ -2147,10 +2147,10 @@ function db_drop_index(&$ret, $table, $name) {
 | 
				
			||||||
 * sequences (from serial-type fields) that use the changed field to be dropped.
 | 
					 * sequences (from serial-type fields) that use the changed field to be dropped.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * On MySQL, all type 'serial' fields must be part of at least one key
 | 
					 * On MySQL, all type 'serial' fields must be part of at least one key
 | 
				
			||||||
 * or index as soon as they are created.  You cannot use
 | 
					 * or index as soon as they are created. You cannot use
 | 
				
			||||||
 * db_add_{primary_key,unique_key,index}() for this purpose because
 | 
					 * db_add_{primary_key,unique_key,index}() for this purpose because
 | 
				
			||||||
 * the ALTER TABLE command will fail to add the column without a key
 | 
					 * the ALTER TABLE command will fail to add the column without a key
 | 
				
			||||||
 * or index specification.  The solution is to use the optional
 | 
					 * or index specification. The solution is to use the optional
 | 
				
			||||||
 * $keys_new argument to create the key or index at the same time as
 | 
					 * $keys_new argument to create the key or index at the same time as
 | 
				
			||||||
 * field.
 | 
					 * field.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -2199,7 +2199,7 @@ function _db_error_page($error = '') {
 | 
				
			||||||
 * @ingroup database-legacy
 | 
					 * @ingroup database-legacy
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * These functions are no longer necessary, as the DatabaseStatementInterface interface
 | 
					 * These functions are no longer necessary, as the DatabaseStatementInterface interface
 | 
				
			||||||
 * offers this and much more functionality.  They are kept temporarily for backward
 | 
					 * offers this and much more functionality. They are kept temporarily for backward
 | 
				
			||||||
 * compatibility during conversion and should be removed as soon as possible.
 | 
					 * compatibility during conversion and should be removed as soon as possible.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @{
 | 
					 * @{
 | 
				
			||||||
| 
						 | 
					@ -2234,7 +2234,7 @@ function _db_check_install_needed() {
 | 
				
			||||||
 * Backward-compatibility utility.
 | 
					 * Backward-compatibility utility.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This function should be removed after all queries have been converted
 | 
					 * This function should be removed after all queries have been converted
 | 
				
			||||||
 * to the new API.  It is temporary only.
 | 
					 * to the new API. It is temporary only.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @todo Remove this once the query conversion is complete.
 | 
					 * @todo Remove this once the query conversion is complete.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					@ -2247,7 +2247,7 @@ function _db_query_process_args($query, $args, $options) {
 | 
				
			||||||
    $options['target'] = 'default';
 | 
					    $options['target'] = 'default';
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Temporary backward-compatibliity hacks.  Remove later.
 | 
					  // Temporary backward-compatibliity hacks. Remove later.
 | 
				
			||||||
  $old_query = $query;
 | 
					  $old_query = $query;
 | 
				
			||||||
  $query = str_replace(array('%n', '%d', '%f', '%b', "'%s'", '%s'), '?', $old_query);
 | 
					  $query = str_replace(array('%n', '%d', '%f', '%b', "'%s'", '%s'), '?', $old_query);
 | 
				
			||||||
  if ($old_query !== $query) {
 | 
					  if ($old_query !== $query) {
 | 
				
			||||||
| 
						 | 
					@ -2256,7 +2256,7 @@ function _db_query_process_args($query, $args, $options) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // A large number of queries pass FALSE or empty-string for
 | 
					  // A large number of queries pass FALSE or empty-string for
 | 
				
			||||||
  // int/float fields because the previous version of db_query()
 | 
					  // int/float fields because the previous version of db_query()
 | 
				
			||||||
  // casted them to int/float, resulting in 0.  MySQL PDO happily
 | 
					  // casted them to int/float, resulting in 0. MySQL PDO happily
 | 
				
			||||||
  // accepts these values as zero but PostgreSQL PDO does not, and I
 | 
					  // accepts these values as zero but PostgreSQL PDO does not, and I
 | 
				
			||||||
  // do not feel like tracking down and fixing every such query at
 | 
					  // do not feel like tracking down and fixing every such query at
 | 
				
			||||||
  // this time.
 | 
					  // this time.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,7 @@
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * We log queries in a separate object rather than in the connection object
 | 
					 * We log queries in a separate object rather than in the connection object
 | 
				
			||||||
 * because we want to be able to see all queries sent to a given database, not
 | 
					 * because we want to be able to see all queries sent to a given database, not
 | 
				
			||||||
 * database target.  If we logged the queries in each connection object we
 | 
					 * database target. If we logged the queries in each connection object we
 | 
				
			||||||
 * would not be able to track what queries went to which target.
 | 
					 * would not be able to track what queries went to which target.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Every connection has one and only one logging object on it for all targets
 | 
					 * Every connection has one and only one logging object on it for all targets
 | 
				
			||||||
| 
						 | 
					@ -20,7 +20,7 @@
 | 
				
			||||||
class DatabaseLog {
 | 
					class DatabaseLog {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Cache of logged queries.  This will only be used if the query logger is enabled.
 | 
					   * Cache of logged queries. This will only be used if the query logger is enabled.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * The structure for the logging array is as follows:
 | 
					   * The structure for the logging array is as follows:
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
| 
						 | 
					@ -58,7 +58,7 @@ class DatabaseLog {
 | 
				
			||||||
   * If the specified logging key is already running this method does nothing.
 | 
					   * If the specified logging key is already running this method does nothing.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $logging_key
 | 
					   * @param $logging_key
 | 
				
			||||||
   *   The identification key for this log request.  By specifying different
 | 
					   *   The identification key for this log request. By specifying different
 | 
				
			||||||
   *   logging keys we are able to start and stop multiple logging runs
 | 
					   *   logging keys we are able to start and stop multiple logging runs
 | 
				
			||||||
   *   simultaneously without them colliding.
 | 
					   *   simultaneously without them colliding.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					@ -83,7 +83,7 @@ class DatabaseLog {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Empty the query log for the specified logging key.
 | 
					   * Empty the query log for the specified logging key.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This method does not stop logging, it simply clears the log.  To stop
 | 
					   * This method does not stop logging, it simply clears the log. To stop
 | 
				
			||||||
   * logging, use the end() method.
 | 
					   * logging, use the end() method.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $logging_key
 | 
					   * @param $logging_key
 | 
				
			||||||
| 
						 | 
					@ -129,14 +129,14 @@ class DatabaseLog {
 | 
				
			||||||
   * Determine the routine that called this query.
 | 
					   * Determine the routine that called this query.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * We define "the routine that called this query" as the first entry in
 | 
					   * We define "the routine that called this query" as the first entry in
 | 
				
			||||||
   * the call stack that is not inside includes/database.  That makes the
 | 
					   * the call stack that is not inside includes/database. That makes the
 | 
				
			||||||
   * climbing logic very simple, and handles the variable stack depth caused
 | 
					   * climbing logic very simple, and handles the variable stack depth caused
 | 
				
			||||||
   * by the query builders.
 | 
					   * by the query builders.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @link http://www.php.net/debug_backtrace
 | 
					   * @link http://www.php.net/debug_backtrace
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   This method returns a stack trace entry similar to that generated by
 | 
					   *   This method returns a stack trace entry similar to that generated by
 | 
				
			||||||
   *   debug_backtrace().  However, it flattens the trace entry and the trace
 | 
					   *   debug_backtrace(). However, it flattens the trace entry and the trace
 | 
				
			||||||
   *   entry before it so that we get the function and args of the function that
 | 
					   *   entry before it so that we get the function and args of the function that
 | 
				
			||||||
   *   called into the database system, not the function and args of the
 | 
					   *   called into the database system, not the function and args of the
 | 
				
			||||||
   *   database call itself.
 | 
					   *   database call itself.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,7 +66,7 @@ class InsertQuery_mysql extends InsertQuery {
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
      // If there are no values, then this is a default-only query.  We still need to handle that.
 | 
					      // If there are no values, then this is a default-only query. We still need to handle that.
 | 
				
			||||||
      $placeholders = array_fill(0, count($this->defaultFields), 'default');
 | 
					      $placeholders = array_fill(0, count($this->defaultFields), 'default');
 | 
				
			||||||
      $values[] = '(' . implode(', ', $placeholders) .')';
 | 
					      $values[] = '(' . implode(', ', $placeholders) .')';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -95,7 +95,7 @@ class MergeQuery_mysql extends MergeQuery {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $max_placeholder = 0;
 | 
					    $max_placeholder = 0;
 | 
				
			||||||
    $values = array();
 | 
					    $values = array();
 | 
				
			||||||
    // We assume that the order here is the same as in __toString().  If that's
 | 
					    // We assume that the order here is the same as in __toString(). If that's
 | 
				
			||||||
    // not the case, then we have serious problems.
 | 
					    // not the case, then we have serious problems.
 | 
				
			||||||
    foreach ($insert_fields as $value) {
 | 
					    foreach ($insert_fields as $value) {
 | 
				
			||||||
      $values[':db_insert_placeholder_' . $max_placeholder++] = $value;
 | 
					      $values[':db_insert_placeholder_' . $max_placeholder++] = $value;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -136,7 +136,7 @@ class DatabaseSchema_mysql extends DatabaseSchema {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public function getFieldTypeMap() {
 | 
					  public function getFieldTypeMap() {
 | 
				
			||||||
    // Put :normal last so it gets preserved by array_flip.  This makes
 | 
					    // Put :normal last so it gets preserved by array_flip. This makes
 | 
				
			||||||
    // it much easier for modules (such as schema.module) to map
 | 
					    // it much easier for modules (such as schema.module) to map
 | 
				
			||||||
    // database types back into schema types.
 | 
					    // database types back into schema types.
 | 
				
			||||||
    static $map = array(
 | 
					    static $map = array(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -91,7 +91,7 @@ class DatabaseConnection_pgsql extends DatabaseConnection {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public function mapConditionOperator($operator) {
 | 
					  public function mapConditionOperator($operator) {
 | 
				
			||||||
    static $specials = array(
 | 
					    static $specials = array(
 | 
				
			||||||
      // In PostgreSQL, 'LIKE' is case-sensitive.  For case-insensitive LIKE
 | 
					      // In PostgreSQL, 'LIKE' is case-sensitive. For case-insensitive LIKE
 | 
				
			||||||
      // statements, we need to use ILIKE instead.
 | 
					      // statements, we need to use ILIKE instead.
 | 
				
			||||||
      'LIKE' => array('operator' => 'ILIKE'),
 | 
					      'LIKE' => array('operator' => 'ILIKE'),
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -96,7 +96,7 @@ class InsertQuery_pgsql extends InsertQuery {
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
      // If there are no values, then this is a default-only query.  We still need to handle that.
 | 
					      // If there are no values, then this is a default-only query. We still need to handle that.
 | 
				
			||||||
      $placeholders = array_fill(0, count($this->defaultFields), 'default');
 | 
					      $placeholders = array_fill(0, count($this->defaultFields), 'default');
 | 
				
			||||||
      $values[] = '(' . implode(', ', $placeholders) .')';
 | 
					      $values[] = '(' . implode(', ', $placeholders) .')';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -137,7 +137,7 @@ class DatabaseSchema_pgsql extends DatabaseSchema {
 | 
				
			||||||
   * to the engine-specific data type.
 | 
					   * to the engine-specific data type.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  function getFieldTypeMap() {
 | 
					  function getFieldTypeMap() {
 | 
				
			||||||
    // Put :normal last so it gets preserved by array_flip.  This makes
 | 
					    // Put :normal last so it gets preserved by array_flip. This makes
 | 
				
			||||||
    // it much easier for modules (such as schema.module) to map
 | 
					    // it much easier for modules (such as schema.module) to map
 | 
				
			||||||
    // database types back into schema types.
 | 
					    // database types back into schema types.
 | 
				
			||||||
    $map = array(
 | 
					    $map = array(
 | 
				
			||||||
| 
						 | 
					@ -235,7 +235,7 @@ class DatabaseSchema_pgsql extends DatabaseSchema {
 | 
				
			||||||
   * @param $keys_new
 | 
					   * @param $keys_new
 | 
				
			||||||
   *   Optional keys and indexes specification to be created on the
 | 
					   *   Optional keys and indexes specification to be created on the
 | 
				
			||||||
   *   table along with adding the field. The format is the same as a
 | 
					   *   table along with adding the field. The format is the same as a
 | 
				
			||||||
   *   table specification but without the 'fields' element.  If you are
 | 
					   *   table specification but without the 'fields' element. If you are
 | 
				
			||||||
   *   adding a type 'serial' field, you MUST specify at least one key
 | 
					   *   adding a type 'serial' field, you MUST specify at least one key
 | 
				
			||||||
   *   or index including it in this array. @see db_change_field for more
 | 
					   *   or index including it in this array. @see db_change_field for more
 | 
				
			||||||
   *   explanation why.
 | 
					   *   explanation why.
 | 
				
			||||||
| 
						 | 
					@ -424,7 +424,7 @@ class DatabaseSchema_pgsql extends DatabaseSchema {
 | 
				
			||||||
   * );
 | 
					   * );
 | 
				
			||||||
   * @endcode
 | 
					   * @endcode
 | 
				
			||||||
   * and you want to change foo.bar to be type serial, leaving it as the
 | 
					   * and you want to change foo.bar to be type serial, leaving it as the
 | 
				
			||||||
   * primary key.  The correct sequence is:
 | 
					   * primary key. The correct sequence is:
 | 
				
			||||||
   * @code
 | 
					   * @code
 | 
				
			||||||
   * db_drop_primary_key($ret, 'foo');
 | 
					   * db_drop_primary_key($ret, 'foo');
 | 
				
			||||||
   * db_change_field($ret, 'foo', 'bar', 'bar',
 | 
					   * db_change_field($ret, 'foo', 'bar', 'bar',
 | 
				
			||||||
| 
						 | 
					@ -439,10 +439,10 @@ class DatabaseSchema_pgsql extends DatabaseSchema {
 | 
				
			||||||
   * sequences (from serial-type fields) that use the changed field to be dropped.
 | 
					   * sequences (from serial-type fields) that use the changed field to be dropped.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * On MySQL, all type 'serial' fields must be part of at least one key
 | 
					   * On MySQL, all type 'serial' fields must be part of at least one key
 | 
				
			||||||
   * or index as soon as they are created.  You cannot use
 | 
					   * or index as soon as they are created. You cannot use
 | 
				
			||||||
   * db_add_{primary_key,unique_key,index}() for this purpose because
 | 
					   * db_add_{primary_key,unique_key,index}() for this purpose because
 | 
				
			||||||
   * the ALTER TABLE command will fail to add the column without a key
 | 
					   * the ALTER TABLE command will fail to add the column without a key
 | 
				
			||||||
   * or index specification.  The solution is to use the optional
 | 
					   * or index specification. The solution is to use the optional
 | 
				
			||||||
   * $new_keys argument to create the key or index at the same time as
 | 
					   * $new_keys argument to create the key or index at the same time as
 | 
				
			||||||
   * field.
 | 
					   * field.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,21 +13,21 @@ interface QueryConditionInterface {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Helper function to build most common conditional clauses.
 | 
					   * Helper function to build most common conditional clauses.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This method can take a variable number of parameters.  If called with two
 | 
					   * This method can take a variable number of parameters. If called with two
 | 
				
			||||||
   * parameters, they are taken as $field and $value with $operator having a value
 | 
					   * parameters, they are taken as $field and $value with $operator having a value
 | 
				
			||||||
   * of =.
 | 
					   * of =.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $field
 | 
					   * @param $field
 | 
				
			||||||
   *   The name of the field to check.
 | 
					   *   The name of the field to check.
 | 
				
			||||||
   * @param $value
 | 
					   * @param $value
 | 
				
			||||||
   *   The value to test the field against.  In most cases, this is a scalar. For more
 | 
					   *   The value to test the field against. In most cases, this is a scalar. For more
 | 
				
			||||||
   *   complex options, it is an array.  The meaning of each element in the array is
 | 
					   *   complex options, it is an array. The meaning of each element in the array is
 | 
				
			||||||
   *   dependent on the $operator.
 | 
					   *   dependent on the $operator.
 | 
				
			||||||
   * @param $operator
 | 
					   * @param $operator
 | 
				
			||||||
   *   The comparison operator, such as =, <, or >=.  It also accepts more complex
 | 
					   *   The comparison operator, such as =, <, or >=. It also accepts more complex
 | 
				
			||||||
   *   options such as IN, LIKE, or BETWEEN.
 | 
					   *   options such as IN, LIKE, or BETWEEN.
 | 
				
			||||||
   * @param $num_args
 | 
					   * @param $num_args
 | 
				
			||||||
   *   For internal use only.  This argument is used to track the recursive calls when
 | 
					   *   For internal use only. This argument is used to track the recursive calls when
 | 
				
			||||||
   *   processing complex conditions.
 | 
					   *   processing complex conditions.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The called object.
 | 
					   *   The called object.
 | 
				
			||||||
| 
						 | 
					@ -38,7 +38,7 @@ interface QueryConditionInterface {
 | 
				
			||||||
   * Add an arbitrary WHERE clause to the query.
 | 
					   * Add an arbitrary WHERE clause to the query.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $snippet
 | 
					   * @param $snippet
 | 
				
			||||||
   *   A portion of a WHERE clause as a prepared statement.  It must use named placeholders,
 | 
					   *   A portion of a WHERE clause as a prepared statement. It must use named placeholders,
 | 
				
			||||||
   *   not ? placeholders.
 | 
					   *   not ? placeholders.
 | 
				
			||||||
   * @param $args
 | 
					   * @param $args
 | 
				
			||||||
   *   An associative array of arguments.
 | 
					   *   An associative array of arguments.
 | 
				
			||||||
| 
						 | 
					@ -50,7 +50,7 @@ interface QueryConditionInterface {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Gets a complete list of all conditions in this conditional clause.
 | 
					   * Gets a complete list of all conditions in this conditional clause.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This method returns by reference.  That allows alter hooks to access the
 | 
					   * This method returns by reference. That allows alter hooks to access the
 | 
				
			||||||
   * data structure directly and manipulate it before it gets compiled.
 | 
					   * data structure directly and manipulate it before it gets compiled.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * The data structure that is returned is an indexed array of entries, where
 | 
					   * The data structure that is returned is an indexed array of entries, where
 | 
				
			||||||
| 
						 | 
					@ -100,10 +100,10 @@ interface QueryAlterableInterface {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Adds a tag to a query.
 | 
					   * Adds a tag to a query.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Tags are strings that identify a query.  A query may have any number of
 | 
					   * Tags are strings that identify a query. A query may have any number of
 | 
				
			||||||
   * tags.  Tags are used to mark a query so that alter hooks may decide if they
 | 
					   * tags. Tags are used to mark a query so that alter hooks may decide if they
 | 
				
			||||||
   * wish to take action.  Tags should be all lower-case and contain only letters,
 | 
					   * wish to take action. Tags should be all lower-case and contain only letters,
 | 
				
			||||||
   * numbers, and underscore, and start with a letter.  That is, they should
 | 
					   * numbers, and underscore, and start with a letter. That is, they should
 | 
				
			||||||
   * follow the same rules as PHP identifiers in general.
 | 
					   * follow the same rules as PHP identifiers in general.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $tag
 | 
					   * @param $tag
 | 
				
			||||||
| 
						 | 
					@ -146,14 +146,14 @@ interface QueryAlterableInterface {
 | 
				
			||||||
   * Adds additional metadata to the query.
 | 
					   * Adds additional metadata to the query.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Often, a query may need to provide additional contextual data to alter
 | 
					   * Often, a query may need to provide additional contextual data to alter
 | 
				
			||||||
   * hooks.  Alter hooks may then use that information to decide if and how
 | 
					   * hooks. Alter hooks may then use that information to decide if and how
 | 
				
			||||||
   * to take action.
 | 
					   * to take action.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $key
 | 
					   * @param $key
 | 
				
			||||||
   *   The unique identifier for this piece of metadata.  Must be a string that
 | 
					   *   The unique identifier for this piece of metadata. Must be a string that
 | 
				
			||||||
   *   follows the same rules as any other PHP identifier.
 | 
					   *   follows the same rules as any other PHP identifier.
 | 
				
			||||||
   * @param $object
 | 
					   * @param $object
 | 
				
			||||||
   *   The additional data to add to the query.  May be any valid PHP variable.
 | 
					   *   The additional data to add to the query. May be any valid PHP variable.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function addMetaData($key, $object);
 | 
					  public function addMetaData($key, $object);
 | 
				
			||||||
| 
						 | 
					@ -219,7 +219,7 @@ class InsertQuery extends Query {
 | 
				
			||||||
  protected $table;
 | 
					  protected $table;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Whether or not this query is "delay-safe".  Different database drivers
 | 
					   * Whether or not this query is "delay-safe". Different database drivers
 | 
				
			||||||
   * may or may not implement this feature in their own ways.
 | 
					   * may or may not implement this feature in their own ways.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @var boolean
 | 
					   * @var boolean
 | 
				
			||||||
| 
						 | 
					@ -243,10 +243,10 @@ class InsertQuery extends Query {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * A nested array of values to insert.
 | 
					   * A nested array of values to insert.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * $insertValues itself is an array of arrays.  Each sub-array is an array of
 | 
					   * $insertValues itself is an array of arrays. Each sub-array is an array of
 | 
				
			||||||
   * field names to values to insert.  Whether multiple insert sets
 | 
					   * field names to values to insert. Whether multiple insert sets
 | 
				
			||||||
   * will be run in a single query or multiple queries is left to individual drivers
 | 
					   * will be run in a single query or multiple queries is left to individual drivers
 | 
				
			||||||
   * to implement in whatever manner is most efficient.  The order of values in each
 | 
					   * to implement in whatever manner is most efficient. The order of values in each
 | 
				
			||||||
   * sub-array must match the order of fields in $insertFields.
 | 
					   * sub-array must match the order of fields in $insertFields.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @var string
 | 
					   * @var string
 | 
				
			||||||
| 
						 | 
					@ -263,18 +263,18 @@ class InsertQuery extends Query {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Add a set of field->value pairs to be inserted.
 | 
					   * Add a set of field->value pairs to be inserted.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This method may only be called once.  Calling it a second time will be
 | 
					   * This method may only be called once. Calling it a second time will be
 | 
				
			||||||
   * ignored.  To queue up multiple sets of values to be inserted at once,
 | 
					   * ignored. To queue up multiple sets of values to be inserted at once,
 | 
				
			||||||
   * use the values() method.
 | 
					   * use the values() method.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $fields
 | 
					   * @param $fields
 | 
				
			||||||
   *   An array of fields on which to insert.  This array may be indexed or
 | 
					   *   An array of fields on which to insert. This array may be indexed or
 | 
				
			||||||
   *   associative.  If indexed, the array is taken to be the list of fields.
 | 
					   *   associative. If indexed, the array is taken to be the list of fields.
 | 
				
			||||||
   *   If associative, the keys of the array are taken to be the fields and
 | 
					   *   If associative, the keys of the array are taken to be the fields and
 | 
				
			||||||
   *   the values are taken to be corresponding values to insert.  If a
 | 
					   *   the values are taken to be corresponding values to insert. If a
 | 
				
			||||||
   *   $values argument is provided, $fields must be indexed.
 | 
					   *   $values argument is provided, $fields must be indexed.
 | 
				
			||||||
   * @param $values
 | 
					   * @param $values
 | 
				
			||||||
   *   An array of fields to insert into the database.  The values must be
 | 
					   *   An array of fields to insert into the database. The values must be
 | 
				
			||||||
   *   specified in the same order as the $fields array.
 | 
					   *   specified in the same order as the $fields array.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The called object.
 | 
					   *   The called object.
 | 
				
			||||||
| 
						 | 
					@ -300,7 +300,7 @@ class InsertQuery extends Query {
 | 
				
			||||||
   * Add another set of values to the query to be inserted.
 | 
					   * Add another set of values to the query to be inserted.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * If $values is a numeric array, it will be assumed to be in the same
 | 
					   * If $values is a numeric array, it will be assumed to be in the same
 | 
				
			||||||
   * order as the original fields() call.  If it is associative, it may be
 | 
					   * order as the original fields() call. If it is associative, it may be
 | 
				
			||||||
   * in any order as long as the keys of the array match the names of the
 | 
					   * in any order as long as the keys of the array match the names of the
 | 
				
			||||||
   * fields.
 | 
					   * fields.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
| 
						 | 
					@ -329,7 +329,7 @@ class InsertQuery extends Query {
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * If you want to force a given field to use the database-defined default,
 | 
					   * If you want to force a given field to use the database-defined default,
 | 
				
			||||||
   * not NULL or undefined, use this method to instruct the database to use
 | 
					   * not NULL or undefined, use this method to instruct the database to use
 | 
				
			||||||
   * default values explicitly.  In most cases this will not be necessary
 | 
					   * default values explicitly. In most cases this will not be necessary
 | 
				
			||||||
   * unless you are inserting a row that is all default values, as you cannot
 | 
					   * unless you are inserting a row that is all default values, as you cannot
 | 
				
			||||||
   * specify no values in an INSERT query.
 | 
					   * specify no values in an INSERT query.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
| 
						 | 
					@ -351,17 +351,17 @@ class InsertQuery extends Query {
 | 
				
			||||||
   * Flag this query as being delay-safe or not.
 | 
					   * Flag this query as being delay-safe or not.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * If this method is never called, it is assumed that the query must be
 | 
					   * If this method is never called, it is assumed that the query must be
 | 
				
			||||||
   * executed immediately.  If delay is set to TRUE, then the query will be
 | 
					   * executed immediately. If delay is set to TRUE, then the query will be
 | 
				
			||||||
   * flagged to run "delayed" or "low priority" on databases that support such
 | 
					   * flagged to run "delayed" or "low priority" on databases that support such
 | 
				
			||||||
   * capabilities.  In that case, the database will return immediately and the
 | 
					   * capabilities. In that case, the database will return immediately and the
 | 
				
			||||||
   * query will be run at some point in the future.  That makes it useful for
 | 
					   * query will be run at some point in the future. That makes it useful for
 | 
				
			||||||
   * logging-style queries.
 | 
					   * logging-style queries.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * If the database does not support delayed INSERT queries, this method
 | 
					   * If the database does not support delayed INSERT queries, this method
 | 
				
			||||||
   * has no effect.
 | 
					   * has no effect.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Note that for a delayed query there is no serial ID returned, as it won't
 | 
					   * Note that for a delayed query there is no serial ID returned, as it won't
 | 
				
			||||||
   * be created until later when the query runs.  It should therefore not be
 | 
					   * be created until later when the query runs. It should therefore not be
 | 
				
			||||||
   * used if the value of the ID is known.
 | 
					   * used if the value of the ID is known.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $delay
 | 
					   * @param $delay
 | 
				
			||||||
| 
						 | 
					@ -378,9 +378,9 @@ class InsertQuery extends Query {
 | 
				
			||||||
   * Executes the insert query.
 | 
					   * Executes the insert query.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The last insert ID of the query, if one exists.  If the query
 | 
					   *   The last insert ID of the query, if one exists. If the query
 | 
				
			||||||
   *   was given multiple sets of values to insert, the return value is
 | 
					   *   was given multiple sets of values to insert, the return value is
 | 
				
			||||||
   *   undefined.  If the query is flagged "delayed", then the insert ID
 | 
					   *   undefined. If the query is flagged "delayed", then the insert ID
 | 
				
			||||||
   *   won't be created until later when the query actually runs so the
 | 
					   *   won't be created until later when the query actually runs so the
 | 
				
			||||||
   *   return value is also undefined. If no fields are specified, this
 | 
					   *   return value is also undefined. If no fields are specified, this
 | 
				
			||||||
   *   method will do nothing and return NULL. That makes it safe to use
 | 
					   *   method will do nothing and return NULL. That makes it safe to use
 | 
				
			||||||
| 
						 | 
					@ -400,8 +400,8 @@ class InsertQuery extends Query {
 | 
				
			||||||
      return NULL;
 | 
					      return NULL;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Each insert happens in its own query in the degenerate case.  However,
 | 
					    // Each insert happens in its own query in the degenerate case. However,
 | 
				
			||||||
    // we wrap it in a transaction so that it is atomic where possible.  On many
 | 
					    // we wrap it in a transaction so that it is atomic where possible. On many
 | 
				
			||||||
    // databases, such as SQLite, this is also a notable performance boost.
 | 
					    // databases, such as SQLite, this is also a notable performance boost.
 | 
				
			||||||
    $transaction = $this->connection->startTransaction();
 | 
					    $transaction = $this->connection->startTransaction();
 | 
				
			||||||
    $sql = (string)$this;
 | 
					    $sql = (string)$this;
 | 
				
			||||||
| 
						 | 
					@ -495,8 +495,8 @@ class MergeQuery extends Query {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Set the field->value pairs to be merged into the table.
 | 
					   * Set the field->value pairs to be merged into the table.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This method should only be called once.  It may be called either
 | 
					   * This method should only be called once. It may be called either
 | 
				
			||||||
   * with a single associative array or two indexed arrays.  If called
 | 
					   * with a single associative array or two indexed arrays. If called
 | 
				
			||||||
   * with an associative array, the keys are taken to be the fields
 | 
					   * with an associative array, the keys are taken to be the fields
 | 
				
			||||||
   * and the values are taken to be the corresponding values to set.
 | 
					   * and the values are taken to be the corresponding values to set.
 | 
				
			||||||
   * If called with two arrays, the first array is taken as the fields
 | 
					   * If called with two arrays, the first array is taken as the fields
 | 
				
			||||||
| 
						 | 
					@ -505,7 +505,7 @@ class MergeQuery extends Query {
 | 
				
			||||||
   * @param $fields
 | 
					   * @param $fields
 | 
				
			||||||
   *   An array of fields to set.
 | 
					   *   An array of fields to set.
 | 
				
			||||||
   * @param $values
 | 
					   * @param $values
 | 
				
			||||||
   *   An array of fields to set into the database.  The values must be
 | 
					   *   An array of fields to set into the database. The values must be
 | 
				
			||||||
   *   specified in the same order as the $fields array.
 | 
					   *   specified in the same order as the $fields array.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The called object.
 | 
					   *   The called object.
 | 
				
			||||||
| 
						 | 
					@ -522,24 +522,24 @@ class MergeQuery extends Query {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Set the key field(s) to be used to insert or update into the table.
 | 
					   * Set the key field(s) to be used to insert or update into the table.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This method should only be called once.  It may be called either
 | 
					   * This method should only be called once. It may be called either
 | 
				
			||||||
   * with a single associative array or two indexed arrays.  If called
 | 
					   * with a single associative array or two indexed arrays. If called
 | 
				
			||||||
   * with an associative array, the keys are taken to be the fields
 | 
					   * with an associative array, the keys are taken to be the fields
 | 
				
			||||||
   * and the values are taken to be the corresponding values to set.
 | 
					   * and the values are taken to be the corresponding values to set.
 | 
				
			||||||
   * If called with two arrays, the first array is taken as the fields
 | 
					   * If called with two arrays, the first array is taken as the fields
 | 
				
			||||||
   * and the second array is taken as the corresponding values.
 | 
					   * and the second array is taken as the corresponding values.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * These fields are the "pivot" fields of the query.  Typically they
 | 
					   * These fields are the "pivot" fields of the query. Typically they
 | 
				
			||||||
   * will be the fields of the primary key.  If the record does not
 | 
					   * will be the fields of the primary key. If the record does not
 | 
				
			||||||
   * yet exist, they will be inserted into the table along with the
 | 
					   * yet exist, they will be inserted into the table along with the
 | 
				
			||||||
   * values set in the fields() method.  If the record does exist,
 | 
					   * values set in the fields() method. If the record does exist,
 | 
				
			||||||
   * these fields will be used in the WHERE clause to select the
 | 
					   * these fields will be used in the WHERE clause to select the
 | 
				
			||||||
   * record to update.
 | 
					   * record to update.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $fields
 | 
					   * @param $fields
 | 
				
			||||||
   *   An array of fields to set.
 | 
					   *   An array of fields to set.
 | 
				
			||||||
   * @param $values
 | 
					   * @param $values
 | 
				
			||||||
   *   An array of fields to set into the database.  The values must be
 | 
					   *   An array of fields to set into the database. The values must be
 | 
				
			||||||
   *   specified in the same order as the $fields array.
 | 
					   *   specified in the same order as the $fields array.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The called object.
 | 
					   *   The called object.
 | 
				
			||||||
| 
						 | 
					@ -557,13 +557,13 @@ class MergeQuery extends Query {
 | 
				
			||||||
   * Specify fields to update in case of a duplicate record.
 | 
					   * Specify fields to update in case of a duplicate record.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * If a record with the values in keys() already exists, the fields and values
 | 
					   * If a record with the values in keys() already exists, the fields and values
 | 
				
			||||||
   * specified here will be updated in that record.  If this method is not called,
 | 
					   * specified here will be updated in that record. If this method is not called,
 | 
				
			||||||
   * it defaults to the same values as were passed to the fields() method.
 | 
					   * it defaults to the same values as were passed to the fields() method.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $fields
 | 
					   * @param $fields
 | 
				
			||||||
   *   An array of fields to set.
 | 
					   *   An array of fields to set.
 | 
				
			||||||
   * @param $values
 | 
					   * @param $values
 | 
				
			||||||
   *   An array of fields to set into the database.  The values must be
 | 
					   *   An array of fields to set into the database. The values must be
 | 
				
			||||||
   *   specified in the same order as the $fields array.
 | 
					   *   specified in the same order as the $fields array.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The called object.
 | 
					   *   The called object.
 | 
				
			||||||
| 
						 | 
					@ -586,7 +586,7 @@ class MergeQuery extends Query {
 | 
				
			||||||
   * is, calling this method is equivalent to calling update() with identical
 | 
					   * is, calling this method is equivalent to calling update() with identical
 | 
				
			||||||
   * parameters as fields() minus the keys specified here.
 | 
					   * parameters as fields() minus the keys specified here.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * The update() method takes precedent over this method.  If update() is called,
 | 
					   * The update() method takes precedent over this method. If update() is called,
 | 
				
			||||||
   * this method has no effect.
 | 
					   * this method has no effect.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $exclude_fields
 | 
					   * @param $exclude_fields
 | 
				
			||||||
| 
						 | 
					@ -609,14 +609,14 @@ class MergeQuery extends Query {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Specify fields to be updated as an expression.
 | 
					   * Specify fields to be updated as an expression.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Expression fields are cases such as counter=counter+1.  This method only
 | 
					   * Expression fields are cases such as counter=counter+1. This method only
 | 
				
			||||||
   * applies if a duplicate key is detected.  This method takes precedent over
 | 
					   * applies if a duplicate key is detected. This method takes precedent over
 | 
				
			||||||
   * both update() and updateExcept().
 | 
					   * both update() and updateExcept().
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $field
 | 
					   * @param $field
 | 
				
			||||||
   *   The field to set.
 | 
					   *   The field to set.
 | 
				
			||||||
   * @param $expression
 | 
					   * @param $expression
 | 
				
			||||||
   *   The field will be set to the value of this expression.  This parameter
 | 
					   *   The field will be set to the value of this expression. This parameter
 | 
				
			||||||
   *   may include named placeholders.
 | 
					   *   may include named placeholders.
 | 
				
			||||||
   * @param $arguments
 | 
					   * @param $arguments
 | 
				
			||||||
   *   If specified, this is an array of key/value pairs for named placeholders
 | 
					   *   If specified, this is an array of key/value pairs for named placeholders
 | 
				
			||||||
| 
						 | 
					@ -638,7 +638,7 @@ class MergeQuery extends Query {
 | 
				
			||||||
    // In the degenerate case of this query type, we have to run multiple
 | 
					    // In the degenerate case of this query type, we have to run multiple
 | 
				
			||||||
    // queries as there is no universal single-query mechanism that will work.
 | 
					    // queries as there is no universal single-query mechanism that will work.
 | 
				
			||||||
    // Our degenerate case is not designed for performance efficiency but
 | 
					    // Our degenerate case is not designed for performance efficiency but
 | 
				
			||||||
    // for comprehensibility.  Any practical database driver will override
 | 
					    // for comprehensibility. Any practical database driver will override
 | 
				
			||||||
    // this method with database-specific logic, so this function serves only
 | 
					    // this method with database-specific logic, so this function serves only
 | 
				
			||||||
    // as a fallback to aid developers of new drivers.
 | 
					    // as a fallback to aid developers of new drivers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -712,7 +712,7 @@ class DeleteQuery extends Query implements QueryConditionInterface {
 | 
				
			||||||
  protected $table;
 | 
					  protected $table;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * The condition object for this query.  Condition handling is handled via
 | 
					   * The condition object for this query. Condition handling is handled via
 | 
				
			||||||
   * composition.
 | 
					   * composition.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @var DatabaseCondition
 | 
					   * @var DatabaseCondition
 | 
				
			||||||
| 
						 | 
					@ -803,7 +803,7 @@ class UpdateQuery extends Query implements QueryConditionInterface {
 | 
				
			||||||
  protected $arguments = array();
 | 
					  protected $arguments = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * The condition object for this query.  Condition handling is handled via
 | 
					   * The condition object for this query. Condition handling is handled via
 | 
				
			||||||
   * composition.
 | 
					   * composition.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @var DatabaseCondition
 | 
					   * @var DatabaseCondition
 | 
				
			||||||
| 
						 | 
					@ -861,7 +861,7 @@ class UpdateQuery extends Query implements QueryConditionInterface {
 | 
				
			||||||
   * Add a set of field->value pairs to be updated.
 | 
					   * Add a set of field->value pairs to be updated.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $fields
 | 
					   * @param $fields
 | 
				
			||||||
   *   An associative array of fields to write into the database.  The array keys
 | 
					   *   An associative array of fields to write into the database. The array keys
 | 
				
			||||||
   *   are the field names while the values are the values to which to set them.
 | 
					   *   are the field names while the values are the values to which to set them.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The called object.
 | 
					   *   The called object.
 | 
				
			||||||
| 
						 | 
					@ -874,13 +874,13 @@ class UpdateQuery extends Query implements QueryConditionInterface {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Specify fields to be updated as an expression.
 | 
					   * Specify fields to be updated as an expression.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Expression fields are cases such as counter=counter+1.  This method takes
 | 
					   * Expression fields are cases such as counter=counter+1. This method takes
 | 
				
			||||||
   * precedence over fields().
 | 
					   * precedence over fields().
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $field
 | 
					   * @param $field
 | 
				
			||||||
   *   The field to set.
 | 
					   *   The field to set.
 | 
				
			||||||
   * @param $expression
 | 
					   * @param $expression
 | 
				
			||||||
   *   The field will be set to the value of this expression.  This parameter
 | 
					   *   The field will be set to the value of this expression. This parameter
 | 
				
			||||||
   *   may include named placeholders.
 | 
					   *   may include named placeholders.
 | 
				
			||||||
   * @param $arguments
 | 
					   * @param $arguments
 | 
				
			||||||
   *   If specified, this is an array of key/value pairs for named placeholders
 | 
					   *   If specified, this is an array of key/value pairs for named placeholders
 | 
				
			||||||
| 
						 | 
					@ -968,7 +968,7 @@ class DatabaseCondition implements QueryConditionInterface, Countable {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Return the size of this conditional.  This is part of the Countable interface.
 | 
					   * Return the size of this conditional. This is part of the Countable interface.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * The size of the conditional is the size of its conditional array minus
 | 
					   * The size of the conditional is the size of its conditional array minus
 | 
				
			||||||
   * one, because one element is the the conjunction.
 | 
					   * one, because one element is the the conjunction.
 | 
				
			||||||
| 
						 | 
					@ -1014,9 +1014,9 @@ class DatabaseCondition implements QueryConditionInterface, Countable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public function compile(DatabaseConnection $connection) {
 | 
					  public function compile(DatabaseConnection $connection) {
 | 
				
			||||||
    // This value is static, so it will increment across the entire request
 | 
					    // This value is static, so it will increment across the entire request
 | 
				
			||||||
    // rather than just this query.  That is OK, because we only need definitive
 | 
					    // rather than just this query. That is OK, because we only need definitive
 | 
				
			||||||
    // placeholder names if we're going to use them for _alter hooks, which we
 | 
					    // placeholder names if we're going to use them for _alter hooks, which we
 | 
				
			||||||
    // are not.  The alter hook would intervene before compilation.
 | 
					    // are not. The alter hook would intervene before compilation.
 | 
				
			||||||
    static $next_placeholder = 1;
 | 
					    static $next_placeholder = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ($this->changed) {
 | 
					    if ($this->changed) {
 | 
				
			||||||
| 
						 | 
					@ -1061,7 +1061,7 @@ class DatabaseCondition implements QueryConditionInterface, Countable {
 | 
				
			||||||
              $arguments += $condition['value']->arguments();
 | 
					              $arguments += $condition['value']->arguments();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            // We assume that if there is a delimiter, then the value is an
 | 
					            // We assume that if there is a delimiter, then the value is an
 | 
				
			||||||
            // array.  If not, it is a scalar.  For simplicity, we first convert
 | 
					            // array. If not, it is a scalar. For simplicity, we first convert
 | 
				
			||||||
            // up to an array so that we can build the placeholders in the same way.
 | 
					            // up to an array so that we can build the placeholders in the same way.
 | 
				
			||||||
            elseif (!$operator['delimiter']) {
 | 
					            elseif (!$operator['delimiter']) {
 | 
				
			||||||
              $condition['value'] = array($condition['value']);
 | 
					              $condition['value'] = array($condition['value']);
 | 
				
			||||||
| 
						 | 
					@ -1096,11 +1096,11 @@ class DatabaseCondition implements QueryConditionInterface, Countable {
 | 
				
			||||||
   * Gets any special processing requirements for the condition operator.
 | 
					   * Gets any special processing requirements for the condition operator.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Some condition types require special processing, such as IN, because
 | 
					   * Some condition types require special processing, such as IN, because
 | 
				
			||||||
   * the value data they pass in is not a simple value.  This is a simple
 | 
					   * the value data they pass in is not a simple value. This is a simple
 | 
				
			||||||
   * overridable lookup function.
 | 
					   * overridable lookup function.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $operator
 | 
					   * @param $operator
 | 
				
			||||||
   *   The condition operator, such as "IN", "BETWEEN", etc.  Case-sensitive.
 | 
					   *   The condition operator, such as "IN", "BETWEEN", etc. Case-sensitive.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The extra handling directives for the specified operator, or NULL.
 | 
					   *   The extra handling directives for the specified operator, or NULL.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,25 +27,25 @@
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *   - 'description': A string describing this table and its purpose.
 | 
					 *   - 'description': A string describing this table and its purpose.
 | 
				
			||||||
 *     References to other tables should be enclosed in
 | 
					 *     References to other tables should be enclosed in
 | 
				
			||||||
 *     curly-brackets.  For example, the node_revisions table
 | 
					 *     curly-brackets. For example, the node_revisions table
 | 
				
			||||||
 *     description field might contain "Stores per-revision title and
 | 
					 *     description field might contain "Stores per-revision title and
 | 
				
			||||||
 *     body data for each {node}."
 | 
					 *     body data for each {node}."
 | 
				
			||||||
 *   - 'fields': An associative array ('fieldname' => specification)
 | 
					 *   - 'fields': An associative array ('fieldname' => specification)
 | 
				
			||||||
 *     that describes the table's database columns.  The specification
 | 
					 *     that describes the table's database columns. The specification
 | 
				
			||||||
 *     is also an array.  The following specification parameters are defined:
 | 
					 *     is also an array. The following specification parameters are defined:
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     - 'description': A string describing this field and its purpose.
 | 
					 *     - 'description': A string describing this field and its purpose.
 | 
				
			||||||
 *       References to other tables should be enclosed in
 | 
					 *       References to other tables should be enclosed in
 | 
				
			||||||
 *       curly-brackets.  For example, the node table vid field
 | 
					 *       curly-brackets. For example, the node table vid field
 | 
				
			||||||
 *       description might contain "Always holds the largest (most
 | 
					 *       description might contain "Always holds the largest (most
 | 
				
			||||||
 *       recent) {node_revision}.vid value for this nid."
 | 
					 *       recent) {node_revision}.vid value for this nid."
 | 
				
			||||||
 *     - 'type': The generic datatype: 'varchar', 'int', 'serial'
 | 
					 *     - 'type': The generic datatype: 'varchar', 'int', 'serial'
 | 
				
			||||||
 *       'float', 'numeric', 'text', 'blob' or 'datetime'.  Most types
 | 
					 *       'float', 'numeric', 'text', 'blob' or 'datetime'. Most types
 | 
				
			||||||
 *       just map to the according database engine specific
 | 
					 *       just map to the according database engine specific
 | 
				
			||||||
 *       datatypes.  Use 'serial' for auto incrementing fields. This
 | 
					 *       datatypes. Use 'serial' for auto incrementing fields. This
 | 
				
			||||||
 *       will expand to 'int auto_increment' on mysql.
 | 
					 *       will expand to 'int auto_increment' on mysql.
 | 
				
			||||||
 *     - 'size': The data size: 'tiny', 'small', 'medium', 'normal',
 | 
					 *     - 'size': The data size: 'tiny', 'small', 'medium', 'normal',
 | 
				
			||||||
 *       'big'.  This is a hint about the largest value the field will
 | 
					 *       'big'. This is a hint about the largest value the field will
 | 
				
			||||||
 *       store and determines which of the database engine specific
 | 
					 *       store and determines which of the database engine specific
 | 
				
			||||||
 *       datatypes will be used (e.g. on MySQL, TINYINT vs. INT vs. BIGINT).
 | 
					 *       datatypes will be used (e.g. on MySQL, TINYINT vs. INT vs. BIGINT).
 | 
				
			||||||
 *       'normal', the default, selects the base type (e.g. on MySQL,
 | 
					 *       'normal', the default, selects the base type (e.g. on MySQL,
 | 
				
			||||||
| 
						 | 
					@ -54,21 +54,21 @@
 | 
				
			||||||
 *       Not all sizes are available for all data types. See
 | 
					 *       Not all sizes are available for all data types. See
 | 
				
			||||||
 *       db_type_map() for possible combinations.
 | 
					 *       db_type_map() for possible combinations.
 | 
				
			||||||
 *     - 'not null': If true, no NULL values will be allowed in this
 | 
					 *     - 'not null': If true, no NULL values will be allowed in this
 | 
				
			||||||
 *       database column.  Defaults to false.
 | 
					 *       database column. Defaults to false.
 | 
				
			||||||
 *     - 'default': The field's default value.  The PHP type of the
 | 
					 *     - 'default': The field's default value. The PHP type of the
 | 
				
			||||||
 *       value matters: '', '0', and 0 are all different.  If you
 | 
					 *       value matters: '', '0', and 0 are all different. If you
 | 
				
			||||||
 *       specify '0' as the default value for a type 'int' field it
 | 
					 *       specify '0' as the default value for a type 'int' field it
 | 
				
			||||||
 *       will not work because '0' is a string containing the
 | 
					 *       will not work because '0' is a string containing the
 | 
				
			||||||
 *       character "zero", not an integer.
 | 
					 *       character "zero", not an integer.
 | 
				
			||||||
 *     - 'length': The maximal length of a type 'varchar' or 'text'
 | 
					 *     - 'length': The maximal length of a type 'varchar' or 'text'
 | 
				
			||||||
 *       field.  Ignored for other field types.
 | 
					 *       field. Ignored for other field types.
 | 
				
			||||||
 *     - 'unsigned': A boolean indicating whether a type 'int', 'float'
 | 
					 *     - 'unsigned': A boolean indicating whether a type 'int', 'float'
 | 
				
			||||||
 *       and 'numeric' only is signed or unsigned.  Defaults to
 | 
					 *       and 'numeric' only is signed or unsigned. Defaults to
 | 
				
			||||||
 *       FALSE.  Ignored for other field types.
 | 
					 *       FALSE. Ignored for other field types.
 | 
				
			||||||
 *     - 'precision', 'scale': For type 'numeric' fields, indicates
 | 
					 *     - 'precision', 'scale': For type 'numeric' fields, indicates
 | 
				
			||||||
 *       the precision (total number of significant digits) and scale
 | 
					 *       the precision (total number of significant digits) and scale
 | 
				
			||||||
 *       (decimal digits right of the decimal point).  Both values are
 | 
					 *       (decimal digits right of the decimal point). Both values are
 | 
				
			||||||
 *       mandatory.  Ignored for other field types.
 | 
					 *       mandatory. Ignored for other field types.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     All parameters apart from 'type' are optional except that type
 | 
					 *     All parameters apart from 'type' are optional except that type
 | 
				
			||||||
 *     'numeric' columns must specify 'precision' and 'scale'.
 | 
					 *     'numeric' columns must specify 'precision' and 'scale'.
 | 
				
			||||||
| 
						 | 
					@ -76,10 +76,10 @@
 | 
				
			||||||
 *  - 'primary key': An array of one or more key column specifiers (see below)
 | 
					 *  - 'primary key': An array of one or more key column specifiers (see below)
 | 
				
			||||||
 *    that form the primary key.
 | 
					 *    that form the primary key.
 | 
				
			||||||
 *  - 'unique key': An associative array of unique keys ('keyname' =>
 | 
					 *  - 'unique key': An associative array of unique keys ('keyname' =>
 | 
				
			||||||
 *    specification).  Each specification is an array of one or more
 | 
					 *    specification). Each specification is an array of one or more
 | 
				
			||||||
 *    key column specifiers (see below) that form a unique key on the table.
 | 
					 *    key column specifiers (see below) that form a unique key on the table.
 | 
				
			||||||
 *  - 'indexes':  An associative array of indexes ('indexame' =>
 | 
					 *  - 'indexes':  An associative array of indexes ('indexame' =>
 | 
				
			||||||
 *    specification).  Each specification is an array of one or more
 | 
					 *    specification). Each specification is an array of one or more
 | 
				
			||||||
 *    key column specifiers (see below) that form an index on the
 | 
					 *    key column specifiers (see below) that form an index on the
 | 
				
			||||||
 *    table.
 | 
					 *    table.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -88,7 +88,7 @@
 | 
				
			||||||
 * of the named column.
 | 
					 * of the named column.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * As an example, here is a SUBSET of the schema definition for
 | 
					 * As an example, here is a SUBSET of the schema definition for
 | 
				
			||||||
 * Drupal's 'node' table.  It show four fields (nid, vid, type, and
 | 
					 * Drupal's 'node' table. It show four fields (nid, vid, type, and
 | 
				
			||||||
 * title), the primary key on field 'nid', a unique key named 'vid' on
 | 
					 * title), the primary key on field 'nid', a unique key named 'vid' on
 | 
				
			||||||
 * field 'vid', and two indexes, one named 'nid' on field 'nid' and
 | 
					 * field 'vid', and two indexes, one named 'nid' on field 'nid' and
 | 
				
			||||||
 * one named 'node_title_type' on the field 'title' and the first four
 | 
					 * one named 'node_title_type' on the field 'title' and the first four
 | 
				
			||||||
| 
						 | 
					@ -180,7 +180,7 @@ abstract class DatabaseSchema {
 | 
				
			||||||
   * @param $keys_new
 | 
					   * @param $keys_new
 | 
				
			||||||
   *   Optional keys and indexes specification to be created on the
 | 
					   *   Optional keys and indexes specification to be created on the
 | 
				
			||||||
   *   table along with adding the field. The format is the same as a
 | 
					   *   table along with adding the field. The format is the same as a
 | 
				
			||||||
   *   table specification but without the 'fields' element.  If you are
 | 
					   *   table specification but without the 'fields' element. If you are
 | 
				
			||||||
   *   adding a type 'serial' field, you MUST specify at least one key
 | 
					   *   adding a type 'serial' field, you MUST specify at least one key
 | 
				
			||||||
   *   or index including it in this array. @see db_change_field for more
 | 
					   *   or index including it in this array. @see db_change_field for more
 | 
				
			||||||
   *   explanation why.
 | 
					   *   explanation why.
 | 
				
			||||||
| 
						 | 
					@ -321,7 +321,7 @@ abstract class DatabaseSchema {
 | 
				
			||||||
   * );
 | 
					   * );
 | 
				
			||||||
   * @endcode
 | 
					   * @endcode
 | 
				
			||||||
   * and you want to change foo.bar to be type serial, leaving it as the
 | 
					   * and you want to change foo.bar to be type serial, leaving it as the
 | 
				
			||||||
   * primary key.  The correct sequence is:
 | 
					   * primary key. The correct sequence is:
 | 
				
			||||||
   * @code
 | 
					   * @code
 | 
				
			||||||
   * db_drop_primary_key($ret, 'foo');
 | 
					   * db_drop_primary_key($ret, 'foo');
 | 
				
			||||||
   * db_change_field($ret, 'foo', 'bar', 'bar',
 | 
					   * db_change_field($ret, 'foo', 'bar', 'bar',
 | 
				
			||||||
| 
						 | 
					@ -336,10 +336,10 @@ abstract class DatabaseSchema {
 | 
				
			||||||
   * sequences (from serial-type fields) that use the changed field to be dropped.
 | 
					   * sequences (from serial-type fields) that use the changed field to be dropped.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * On MySQL, all type 'serial' fields must be part of at least one key
 | 
					   * On MySQL, all type 'serial' fields must be part of at least one key
 | 
				
			||||||
   * or index as soon as they are created.  You cannot use
 | 
					   * or index as soon as they are created. You cannot use
 | 
				
			||||||
   * db_add_{primary_key,unique_key,index}() for this purpose because
 | 
					   * db_add_{primary_key,unique_key,index}() for this purpose because
 | 
				
			||||||
   * the ALTER TABLE command will fail to add the column without a key
 | 
					   * the ALTER TABLE command will fail to add the column without a key
 | 
				
			||||||
   * or index specification.  The solution is to use the optional
 | 
					   * or index specification. The solution is to use the optional
 | 
				
			||||||
   * $keys_new argument to create the key or index at the same time as
 | 
					   * $keys_new argument to create the key or index at the same time as
 | 
				
			||||||
   * field.
 | 
					   * field.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,8 +28,8 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * The tables against which to JOIN.
 | 
					   * The tables against which to JOIN.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This property is a nested array.  Each entry is an array representing
 | 
					   * This property is a nested array. Each entry is an array representing
 | 
				
			||||||
   * a single table against which to join.  The structure of each entry is:
 | 
					   * a single table against which to join. The structure of each entry is:
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * array(
 | 
					   * array(
 | 
				
			||||||
   *   'type' => $join_type (one of INNER, LEFT OUTER, RIGHT OUTER),
 | 
					   *   'type' => $join_type (one of INNER, LEFT OUTER, RIGHT OUTER),
 | 
				
			||||||
| 
						 | 
					@ -40,7 +40,7 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   *   'all_fields' => TRUE to SELECT $alias.*, FALSE or NULL otherwise.
 | 
					   *   'all_fields' => TRUE to SELECT $alias.*, FALSE or NULL otherwise.
 | 
				
			||||||
   * )
 | 
					   * )
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * If $table is a string, it is taken as the name of a table.  If it is
 | 
					   * If $table is a string, it is taken as the name of a table. If it is
 | 
				
			||||||
   * a SelectQuery object, it is taken as a subquery.
 | 
					   * a SelectQuery object, it is taken as a subquery.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @var array
 | 
					   * @var array
 | 
				
			||||||
| 
						 | 
					@ -50,7 +50,7 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * The fields by which to order this query.
 | 
					   * The fields by which to order this query.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This is an associative array.  The keys are the fields to order, and the value
 | 
					   * This is an associative array. The keys are the fields to order, and the value
 | 
				
			||||||
   * is the direction to order, either ASC or DESC.
 | 
					   * is the direction to order, either ASC or DESC.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @var array
 | 
					   * @var array
 | 
				
			||||||
| 
						 | 
					@ -186,7 +186,7 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * Returns a reference to the fields array for this query.
 | 
					   * Returns a reference to the fields array for this query.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Because this method returns by reference, alter hooks may edit the fields
 | 
					   * Because this method returns by reference, alter hooks may edit the fields
 | 
				
			||||||
   * array directly to make their changes.  If just adding fields, however, the
 | 
					   * array directly to make their changes. If just adding fields, however, the
 | 
				
			||||||
   * use of addField() is preferred.
 | 
					   * use of addField() is preferred.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Note that this method must be called by reference as well:
 | 
					   * Note that this method must be called by reference as well:
 | 
				
			||||||
| 
						 | 
					@ -206,7 +206,7 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * Returns a reference to the expressions array for this query.
 | 
					   * Returns a reference to the expressions array for this query.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Because this method returns by reference, alter hooks may edit the expressions
 | 
					   * Because this method returns by reference, alter hooks may edit the expressions
 | 
				
			||||||
   * array directly to make their changes.  If just adding expressions, however, the
 | 
					   * array directly to make their changes. If just adding expressions, however, the
 | 
				
			||||||
   * use of addExpression() is preferred.
 | 
					   * use of addExpression() is preferred.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Note that this method must be called by reference as well:
 | 
					   * Note that this method must be called by reference as well:
 | 
				
			||||||
| 
						 | 
					@ -226,7 +226,7 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * Returns a reference to the order by array for this query.
 | 
					   * Returns a reference to the order by array for this query.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Because this method returns by reference, alter hooks may edit the order-by
 | 
					   * Because this method returns by reference, alter hooks may edit the order-by
 | 
				
			||||||
   * array directly to make their changes.  If just adding additional ordering
 | 
					   * array directly to make their changes. If just adding additional ordering
 | 
				
			||||||
   * fields, however, the use of orderBy() is preferred.
 | 
					   * fields, however, the use of orderBy() is preferred.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Note that this method must be called by reference as well:
 | 
					   * Note that this method must be called by reference as well:
 | 
				
			||||||
| 
						 | 
					@ -246,7 +246,7 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * Returns a reference to the tables array for this query.
 | 
					   * Returns a reference to the tables array for this query.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Because this method returns by reference, alter hooks may edit the tables
 | 
					   * Because this method returns by reference, alter hooks may edit the tables
 | 
				
			||||||
   * array directly to make their changes.  If just adding tables, however, the
 | 
					   * array directly to make their changes. If just adding tables, however, the
 | 
				
			||||||
   * use of the join() methods is preferred.
 | 
					   * use of the join() methods is preferred.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * Note that this method must be called by reference as well:
 | 
					   * Note that this method must be called by reference as well:
 | 
				
			||||||
| 
						 | 
					@ -318,14 +318,14 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * Adds a field to the list to be SELECTed.
 | 
					   * Adds a field to the list to be SELECTed.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $table_alias
 | 
					   * @param $table_alias
 | 
				
			||||||
   *   The name of the table from which the field comes, as an alias.  Generally
 | 
					   *   The name of the table from which the field comes, as an alias. Generally
 | 
				
			||||||
   *   you will want to use the return value of join() here to ensure that it is
 | 
					   *   you will want to use the return value of join() here to ensure that it is
 | 
				
			||||||
   *   valid.
 | 
					   *   valid.
 | 
				
			||||||
   * @param $field
 | 
					   * @param $field
 | 
				
			||||||
   *   The name of the field.
 | 
					   *   The name of the field.
 | 
				
			||||||
   * @param $alias
 | 
					   * @param $alias
 | 
				
			||||||
   *   The alias for this field.  If not specified, one will be generated
 | 
					   *   The alias for this field. If not specified, one will be generated
 | 
				
			||||||
   *   automatically based on the $table_alias and $field.  The alias will be
 | 
					   *   automatically based on the $table_alias and $field. The alias will be
 | 
				
			||||||
   *   checked for uniqueness, so the requested alias may not be the alias
 | 
					   *   checked for uniqueness, so the requested alias may not be the alias
 | 
				
			||||||
   *   that is assigned in all cases.
 | 
					   *   that is assigned in all cases.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
| 
						 | 
					@ -362,20 +362,20 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Add multiple fields from the same table to be SELECTed.
 | 
					   * Add multiple fields from the same table to be SELECTed.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * This method does not return the aliases set for the passed fields.  In the
 | 
					   * This method does not return the aliases set for the passed fields. In the
 | 
				
			||||||
   * majority of cases that is not a problem, as the alias will be the field
 | 
					   * majority of cases that is not a problem, as the alias will be the field
 | 
				
			||||||
   * name.  However, if you do need to know the alias you can call getFields()
 | 
					   * name. However, if you do need to know the alias you can call getFields()
 | 
				
			||||||
   * and examine the result to determine what alias was created.  Alternatively,
 | 
					   * and examine the result to determine what alias was created. Alternatively,
 | 
				
			||||||
   * simply use addField() for the few fields you care about and this method for
 | 
					   * simply use addField() for the few fields you care about and this method for
 | 
				
			||||||
   * the rest.
 | 
					   * the rest.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $table_alias
 | 
					   * @param $table_alias
 | 
				
			||||||
   *   The name of the table from which the field comes, as an alias.  Generally
 | 
					   *   The name of the table from which the field comes, as an alias. Generally
 | 
				
			||||||
   *   you will want to use the return value of join() here to ensure that it is
 | 
					   *   you will want to use the return value of join() here to ensure that it is
 | 
				
			||||||
   *   valid.
 | 
					   *   valid.
 | 
				
			||||||
   * @param $fields
 | 
					   * @param $fields
 | 
				
			||||||
   *   An indexed array of fields present in the specified table that should be
 | 
					   *   An indexed array of fields present in the specified table that should be
 | 
				
			||||||
   *   included in this query.  If not specified, $table_alias.* will be generated
 | 
					   *   included in this query. If not specified, $table_alias.* will be generated
 | 
				
			||||||
   *   without any aliases.
 | 
					   *   without any aliases.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The called object.
 | 
					   *   The called object.
 | 
				
			||||||
| 
						 | 
					@ -406,15 +406,15 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Adds an expression to the list of "fields" to be SELECTed.
 | 
					   * Adds an expression to the list of "fields" to be SELECTed.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * An expression can be any arbitrary string that is valid SQL.  That includes
 | 
					   * An expression can be any arbitrary string that is valid SQL. That includes
 | 
				
			||||||
   * various functions, which may in some cases be database-dependant.  This
 | 
					   * various functions, which may in some cases be database-dependant. This
 | 
				
			||||||
   * method makes no effort to correct for database-specific functions.
 | 
					   * method makes no effort to correct for database-specific functions.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $expression
 | 
					   * @param $expression
 | 
				
			||||||
   *   The expression string.  May contain placeholders.
 | 
					   *   The expression string. May contain placeholders.
 | 
				
			||||||
   * @param $alias
 | 
					   * @param $alias
 | 
				
			||||||
   *   The alias for this expression.  If not specified, one will be generated
 | 
					   *   The alias for this expression. If not specified, one will be generated
 | 
				
			||||||
   *   automatically in the form "expression_#".  The alias will be checked for
 | 
					   *   automatically in the form "expression_#". The alias will be checked for
 | 
				
			||||||
   *   uniqueness, so the requested alias may not be the alias that is assigned
 | 
					   *   uniqueness, so the requested alias may not be the alias that is assigned
 | 
				
			||||||
   *   in all cases.
 | 
					   *   in all cases.
 | 
				
			||||||
   * @param $arguments
 | 
					   * @param $arguments
 | 
				
			||||||
| 
						 | 
					@ -451,12 +451,12 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * @param $table
 | 
					   * @param $table
 | 
				
			||||||
   *   The table against which to join.
 | 
					   *   The table against which to join.
 | 
				
			||||||
   * @param $alias
 | 
					   * @param $alias
 | 
				
			||||||
   *   The alias for the table.  In most cases this should be the first letter
 | 
					   *   The alias for the table. In most cases this should be the first letter
 | 
				
			||||||
   *   of the table, or the first letter of each "word" in the table.
 | 
					   *   of the table, or the first letter of each "word" in the table.
 | 
				
			||||||
   * @param $condition
 | 
					   * @param $condition
 | 
				
			||||||
   *   The condition on which to join this table.  If the join requires values,
 | 
					   *   The condition on which to join this table. If the join requires values,
 | 
				
			||||||
   *   this clause should use a named placeholder and the value or values to
 | 
					   *   this clause should use a named placeholder and the value or values to
 | 
				
			||||||
   *   insert should be passed in the 4th parameter.  For the first table joined
 | 
					   *   insert should be passed in the 4th parameter. For the first table joined
 | 
				
			||||||
   *   on a query, this value is ignored as the first table is taken as the base
 | 
					   *   on a query, this value is ignored as the first table is taken as the base
 | 
				
			||||||
   *   table.
 | 
					   *   table.
 | 
				
			||||||
   * @param $arguments
 | 
					   * @param $arguments
 | 
				
			||||||
| 
						 | 
					@ -474,12 +474,12 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * @param $table
 | 
					   * @param $table
 | 
				
			||||||
   *   The table against which to join.
 | 
					   *   The table against which to join.
 | 
				
			||||||
   * @param $alias
 | 
					   * @param $alias
 | 
				
			||||||
   *   The alias for the table.  In most cases this should be the first letter
 | 
					   *   The alias for the table. In most cases this should be the first letter
 | 
				
			||||||
   *   of the table, or the first letter of each "word" in the table.
 | 
					   *   of the table, or the first letter of each "word" in the table.
 | 
				
			||||||
   * @param $condition
 | 
					   * @param $condition
 | 
				
			||||||
   *   The condition on which to join this table.  If the join requires values,
 | 
					   *   The condition on which to join this table. If the join requires values,
 | 
				
			||||||
   *   this clause should use a named placeholder and the value or values to
 | 
					   *   this clause should use a named placeholder and the value or values to
 | 
				
			||||||
   *   insert should be passed in the 4th parameter.  For the first table joined
 | 
					   *   insert should be passed in the 4th parameter. For the first table joined
 | 
				
			||||||
   *   on a query, this value is ignored as the first table is taken as the base
 | 
					   *   on a query, this value is ignored as the first table is taken as the base
 | 
				
			||||||
   *   table.
 | 
					   *   table.
 | 
				
			||||||
   * @param $arguments
 | 
					   * @param $arguments
 | 
				
			||||||
| 
						 | 
					@ -497,12 +497,12 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * @param $table
 | 
					   * @param $table
 | 
				
			||||||
   *   The table against which to join.
 | 
					   *   The table against which to join.
 | 
				
			||||||
   * @param $alias
 | 
					   * @param $alias
 | 
				
			||||||
   *   The alias for the table.  In most cases this should be the first letter
 | 
					   *   The alias for the table. In most cases this should be the first letter
 | 
				
			||||||
   *   of the table, or the first letter of each "word" in the table.
 | 
					   *   of the table, or the first letter of each "word" in the table.
 | 
				
			||||||
   * @param $condition
 | 
					   * @param $condition
 | 
				
			||||||
   *   The condition on which to join this table.  If the join requires values,
 | 
					   *   The condition on which to join this table. If the join requires values,
 | 
				
			||||||
   *   this clause should use a named placeholder and the value or values to
 | 
					   *   this clause should use a named placeholder and the value or values to
 | 
				
			||||||
   *   insert should be passed in the 4th parameter.  For the first table joined
 | 
					   *   insert should be passed in the 4th parameter. For the first table joined
 | 
				
			||||||
   *   on a query, this value is ignored as the first table is taken as the base
 | 
					   *   on a query, this value is ignored as the first table is taken as the base
 | 
				
			||||||
   *   table.
 | 
					   *   table.
 | 
				
			||||||
   * @param $arguments
 | 
					   * @param $arguments
 | 
				
			||||||
| 
						 | 
					@ -520,12 +520,12 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * @param $table
 | 
					   * @param $table
 | 
				
			||||||
   *   The table against which to join.
 | 
					   *   The table against which to join.
 | 
				
			||||||
   * @param $alias
 | 
					   * @param $alias
 | 
				
			||||||
   *   The alias for the table.  In most cases this should be the first letter
 | 
					   *   The alias for the table. In most cases this should be the first letter
 | 
				
			||||||
   *   of the table, or the first letter of each "word" in the table.
 | 
					   *   of the table, or the first letter of each "word" in the table.
 | 
				
			||||||
   * @param $condition
 | 
					   * @param $condition
 | 
				
			||||||
   *   The condition on which to join this table.  If the join requires values,
 | 
					   *   The condition on which to join this table. If the join requires values,
 | 
				
			||||||
   *   this clause should use a named placeholder and the value or values to
 | 
					   *   this clause should use a named placeholder and the value or values to
 | 
				
			||||||
   *   insert should be passed in the 4th parameter.  For the first table joined
 | 
					   *   insert should be passed in the 4th parameter. For the first table joined
 | 
				
			||||||
   *   on a query, this value is ignored as the first table is taken as the base
 | 
					   *   on a query, this value is ignored as the first table is taken as the base
 | 
				
			||||||
   *   table.
 | 
					   *   table.
 | 
				
			||||||
   * @param $arguments
 | 
					   * @param $arguments
 | 
				
			||||||
| 
						 | 
					@ -545,18 +545,18 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * fields on which to join.
 | 
					   * fields on which to join.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $type
 | 
					   * @param $type
 | 
				
			||||||
   *   The type of join.  Typically one one of INNER, LEFT OUTER, and RIGHT OUTER.
 | 
					   *   The type of join. Typically one one of INNER, LEFT OUTER, and RIGHT OUTER.
 | 
				
			||||||
   * @param $table
 | 
					   * @param $table
 | 
				
			||||||
   *   The table against which to join.  May be a string or another SelectQuery
 | 
					   *   The table against which to join. May be a string or another SelectQuery
 | 
				
			||||||
   *   object.  If a query object is passed, it will be used as a subselect.
 | 
					   *   object. If a query object is passed, it will be used as a subselect.
 | 
				
			||||||
   * @param $alias
 | 
					   * @param $alias
 | 
				
			||||||
   *   The alias for the table.  In most cases this should be the first letter
 | 
					   *   The alias for the table. In most cases this should be the first letter
 | 
				
			||||||
   *   of the table, or the first letter of each "word" in the table.  If omitted,
 | 
					   *   of the table, or the first letter of each "word" in the table. If omitted,
 | 
				
			||||||
   *   one will be dynamically generated.
 | 
					   *   one will be dynamically generated.
 | 
				
			||||||
   * @param $condition
 | 
					   * @param $condition
 | 
				
			||||||
   *   The condition on which to join this table.  If the join requires values,
 | 
					   *   The condition on which to join this table. If the join requires values,
 | 
				
			||||||
   *   this clause should use a named placeholder and the value or values to
 | 
					   *   this clause should use a named placeholder and the value or values to
 | 
				
			||||||
   *   insert should be passed in the 4th parameter.  For the first table joined
 | 
					   *   insert should be passed in the 4th parameter. For the first table joined
 | 
				
			||||||
   *   on a query, this value is ignored as the first table is taken as the base
 | 
					   *   on a query, this value is ignored as the first table is taken as the base
 | 
				
			||||||
   *   table.
 | 
					   *   table.
 | 
				
			||||||
   * @param $argments
 | 
					   * @param $argments
 | 
				
			||||||
| 
						 | 
					@ -602,7 +602,7 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * @param $field
 | 
					   * @param $field
 | 
				
			||||||
   *   The field on which to order.
 | 
					   *   The field on which to order.
 | 
				
			||||||
   * @param $direction
 | 
					   * @param $direction
 | 
				
			||||||
   *   The direction to sort.  Legal values are "ASC" and "DESC".
 | 
					   *   The direction to sort. Legal values are "ASC" and "DESC".
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The called object.
 | 
					   *   The called object.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					@ -618,7 +618,7 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * directives that have been set.
 | 
					   * directives that have been set.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $start
 | 
					   * @param $start
 | 
				
			||||||
   *   The first record from the result set to return.  If NULL, removes any
 | 
					   *   The first record from the result set to return. If NULL, removes any
 | 
				
			||||||
   *   range directives that are set.
 | 
					   *   range directives that are set.
 | 
				
			||||||
   * @param $limit
 | 
					   * @param $limit
 | 
				
			||||||
   *   The number of records to return from the result set.
 | 
					   *   The number of records to return from the result set.
 | 
				
			||||||
| 
						 | 
					@ -634,7 +634,7 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   * Groups the result set by the specified field.
 | 
					   * Groups the result set by the specified field.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @param $field
 | 
					   * @param $field
 | 
				
			||||||
   *   The field on which to group.  This should be the field as aliased.
 | 
					   *   The field on which to group. This should be the field as aliased.
 | 
				
			||||||
   * @return
 | 
					   * @return
 | 
				
			||||||
   *   The called object.
 | 
					   *   The called object.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					@ -649,7 +649,7 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
   *   A new SelectQuery object with no fields or expressions besides COUNT(*).
 | 
					   *   A new SelectQuery object with no fields or expressions besides COUNT(*).
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function countQuery() {
 | 
					  public function countQuery() {
 | 
				
			||||||
    // Shallow-clone this query.  We don't want to duplicate any of the
 | 
					    // Shallow-clone this query. We don't want to duplicate any of the
 | 
				
			||||||
    // referenced objects, so a shallow query is all we need.
 | 
					    // referenced objects, so a shallow query is all we need.
 | 
				
			||||||
    $count = clone($this);
 | 
					    $count = clone($this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -756,7 +756,7 @@ class SelectQuery extends Query implements QueryConditionInterface, QueryAlterab
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public function __clone() {
 | 
					  public function __clone() {
 | 
				
			||||||
    // On cloning, also clone the conditional objects.  However, we do not
 | 
					    // On cloning, also clone the conditional objects. However, we do not
 | 
				
			||||||
    // want to clone the database connection object as that would duplicate the
 | 
					    // want to clone the database connection object as that would duplicate the
 | 
				
			||||||
    // connection itself.
 | 
					    // connection itself.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Image toolkits are discovered based on the associated module's
 | 
					 * Image toolkits are discovered based on the associated module's
 | 
				
			||||||
 * hook_image_toolkits. Additionally the image toolkit include file
 | 
					 * hook_image_toolkits. Additionally the image toolkit include file
 | 
				
			||||||
 * must be identified in the files array in the module.info file.  The
 | 
					 * must be identified in the files array in the module.info file. The
 | 
				
			||||||
 * toolkit must then be enabled using the admin/settings/image-toolkit
 | 
					 * toolkit must then be enabled using the admin/settings/image-toolkit
 | 
				
			||||||
 * form.
 | 
					 * form.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -139,7 +139,7 @@ function image_get_info($file) {
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Scales an image to the exact width and height given. Achieves the
 | 
					 * Scales an image to the exact width and height given. Achieves the
 | 
				
			||||||
 * target aspect ratio by cropping the original image equally on both
 | 
					 * target aspect ratio by cropping the original image equally on both
 | 
				
			||||||
 * sides, or equally on the top and bottom.  This function is, for
 | 
					 * sides, or equally on the top and bottom. This function is, for
 | 
				
			||||||
 * example, useful to create uniform sized avatars from larger images.
 | 
					 * example, useful to create uniform sized avatars from larger images.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * The resulting image always has the exact target dimensions.
 | 
					 * The resulting image always has the exact target dimensions.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -207,7 +207,7 @@ function drupal_detect_database_types() {
 | 
				
			||||||
  $databases = array();
 | 
					  $databases = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // We define a driver as a directory in /includes/database that in turn
 | 
					  // We define a driver as a directory in /includes/database that in turn
 | 
				
			||||||
  // contains a database.inc file.  That allows us to drop in additional drivers
 | 
					  // contains a database.inc file. That allows us to drop in additional drivers
 | 
				
			||||||
  // without modifying the installer.
 | 
					  // without modifying the installer.
 | 
				
			||||||
  // Because we have no registry yet, we need to also include the install.inc
 | 
					  // Because we have no registry yet, we need to also include the install.inc
 | 
				
			||||||
  // file for the driver explicitly.
 | 
					  // file for the driver explicitly.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -239,9 +239,9 @@ define('MENU_MAX_DEPTH', 9);
 | 
				
			||||||
 * part of the path. If the bit is 1, then it represents the original
 | 
					 * part of the path. If the bit is 1, then it represents the original
 | 
				
			||||||
 * value while 0 means wildcard. If the path is node/12/edit/foo
 | 
					 * value while 0 means wildcard. If the path is node/12/edit/foo
 | 
				
			||||||
 * then the 1011 bitstring represents node/%/edit/foo where % means that
 | 
					 * then the 1011 bitstring represents node/%/edit/foo where % means that
 | 
				
			||||||
 * any argument matches that part.  We limit ourselves to using binary
 | 
					 * any argument matches that part. We limit ourselves to using binary
 | 
				
			||||||
 * numbers that correspond the patterns of wildcards of router items that
 | 
					 * numbers that correspond the patterns of wildcards of router items that
 | 
				
			||||||
 * actually exists.  This list of 'masks' is built in menu_rebuild().
 | 
					 * actually exists. This list of 'masks' is built in menu_rebuild().
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param $parts
 | 
					 * @param $parts
 | 
				
			||||||
 *   An array of path parts, for the above example
 | 
					 *   An array of path parts, for the above example
 | 
				
			||||||
| 
						 | 
					@ -822,7 +822,7 @@ function menu_tree_output($tree) {
 | 
				
			||||||
 * @param $menu_name
 | 
					 * @param $menu_name
 | 
				
			||||||
 *   The named menu links to return
 | 
					 *   The named menu links to return
 | 
				
			||||||
 * @param $item
 | 
					 * @param $item
 | 
				
			||||||
 *   A fully loaded menu link, or NULL.  If a link is supplied, only the
 | 
					 *   A fully loaded menu link, or NULL. If a link is supplied, only the
 | 
				
			||||||
 *   path to root will be included in the returned tree- as if this link
 | 
					 *   path to root will be included in the returned tree- as if this link
 | 
				
			||||||
 *   represented the current page in a visible menu.
 | 
					 *   represented the current page in a visible menu.
 | 
				
			||||||
 * @return
 | 
					 * @return
 | 
				
			||||||
| 
						 | 
					@ -887,7 +887,7 @@ function menu_tree_all_data($menu_name = 'navigation', $item = NULL) {
 | 
				
			||||||
        // Get all links in this menu.
 | 
					        // Get all links in this menu.
 | 
				
			||||||
        $parents = array();
 | 
					        $parents = array();
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      // Select the links from the table, and recursively build the tree.  We
 | 
					      // Select the links from the table, and recursively build the tree. We
 | 
				
			||||||
      // LEFT JOIN since there is no match in {menu_router} for an external
 | 
					      // LEFT JOIN since there is no match in {menu_router} for an external
 | 
				
			||||||
      // link.
 | 
					      // link.
 | 
				
			||||||
      $data['tree'] = menu_tree_data($query->execute(), $parents);
 | 
					      $data['tree'] = menu_tree_data($query->execute(), $parents);
 | 
				
			||||||
| 
						 | 
					@ -1621,7 +1621,7 @@ function menu_set_active_trail($new_trail = NULL) {
 | 
				
			||||||
    if ($item['tab_parent']) {
 | 
					    if ($item['tab_parent']) {
 | 
				
			||||||
      // The title of a local task is used for the tab, never the page title.
 | 
					      // The title of a local task is used for the tab, never the page title.
 | 
				
			||||||
      // Thus, replace it with the item corresponding to the root path to get
 | 
					      // Thus, replace it with the item corresponding to the root path to get
 | 
				
			||||||
      // the relevant href and title.  For example, the menu item corresponding
 | 
					      // the relevant href and title. For example, the menu item corresponding
 | 
				
			||||||
      // to 'admin' is used when on the 'By module' tab at 'admin/by-module'.
 | 
					      // to 'admin' is used when on the 'By module' tab at 'admin/by-module'.
 | 
				
			||||||
      $parts = explode('/', $item['tab_root']);
 | 
					      $parts = explode('/', $item['tab_root']);
 | 
				
			||||||
      $args = arg();
 | 
					      $args = arg();
 | 
				
			||||||
| 
						 | 
					@ -1759,7 +1759,7 @@ function menu_cache_clear($menu_name = 'navigation') {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Clears all cached menu data.  This should be called any time broad changes
 | 
					 * Clears all cached menu data. This should be called any time broad changes
 | 
				
			||||||
 * might have been made to the router items or menu links.
 | 
					 * might have been made to the router items or menu links.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function menu_cache_clear_all() {
 | 
					function menu_cache_clear_all() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -392,7 +392,7 @@ function module_hook($module, $hook) {
 | 
				
			||||||
 *     MODULE_IMPLEMENTS_WRITE_CACHE: Write the stored list of hook
 | 
					 *     MODULE_IMPLEMENTS_WRITE_CACHE: Write the stored list of hook
 | 
				
			||||||
 *     implementations into the cache_registry table.
 | 
					 *     implementations into the cache_registry table.
 | 
				
			||||||
 * @param $sort
 | 
					 * @param $sort
 | 
				
			||||||
 *   By default, modules are ordered by weight and filename.  By setting this
 | 
					 *   By default, modules are ordered by weight and filename. By setting this
 | 
				
			||||||
 *   option to TRUE, modules will be ordered by module name.
 | 
					 *   option to TRUE, modules will be ordered by module name.
 | 
				
			||||||
 * @return
 | 
					 * @return
 | 
				
			||||||
 *   An array with the names of the modules which are implementing this hook.
 | 
					 *   An array with the names of the modules which are implementing this hook.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -218,7 +218,7 @@ function user_check_password($password, $account) {
 | 
				
			||||||
 * Check whether a user's hashed password needs to be replaced with a new hash.
 | 
					 * Check whether a user's hashed password needs to be replaced with a new hash.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This is typically called during the login process when the plain text
 | 
					 * This is typically called during the login process when the plain text
 | 
				
			||||||
 * password is available.  A new hash is needed when the desired iteration count
 | 
					 * password is available. A new hash is needed when the desired iteration count
 | 
				
			||||||
 * has changed through a change in the variable password_count_log2 or
 | 
					 * has changed through a change in the variable password_count_log2 or
 | 
				
			||||||
 * DRUPAL_HASH_COUNT or if the user's password hash was generated in an update
 | 
					 * DRUPAL_HASH_COUNT or if the user's password hash was generated in an update
 | 
				
			||||||
 * like user_update_7000().
 | 
					 * like user_update_7000().
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,10 +25,10 @@
 | 
				
			||||||
function _registry_rebuild() {
 | 
					function _registry_rebuild() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // The registry serves as a central autoloader for all classes, including
 | 
					  // The registry serves as a central autoloader for all classes, including
 | 
				
			||||||
  // the database query builders.  However, the registry rebuild process
 | 
					  // the database query builders. However, the registry rebuild process
 | 
				
			||||||
  // requires write ability to the database, which means having access to the
 | 
					  // requires write ability to the database, which means having access to the
 | 
				
			||||||
  // query builders that require the registry in order to be loaded.  That
 | 
					  // query builders that require the registry in order to be loaded. That
 | 
				
			||||||
  // causes a fatal race condition.  Therefore we manually include the
 | 
					  // causes a fatal race condition. Therefore we manually include the
 | 
				
			||||||
  // appropriate query builders for the currently active database before the
 | 
					  // appropriate query builders for the currently active database before the
 | 
				
			||||||
  // registry rebuild process runs.
 | 
					  // registry rebuild process runs.
 | 
				
			||||||
  $connection_info = Database::getConnectionInfo();
 | 
					  $connection_info = Database::getConnectionInfo();
 | 
				
			||||||
| 
						 | 
					@ -173,7 +173,7 @@ function _registry_parse_file($filename, $contents, $module = '', $weight = 0) {
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        // Because some systems, such as cache, currently use duplicate function
 | 
					        // Because some systems, such as cache, currently use duplicate function
 | 
				
			||||||
        // names in separate files an insert query cannot be used here as it
 | 
					        // names in separate files an insert query cannot be used here as it
 | 
				
			||||||
        // would cause a key constraint violation.  Instead we use a merge query.
 | 
					        // would cause a key constraint violation. Instead we use a merge query.
 | 
				
			||||||
        // In practice this should not be an issue as those systems all initialize
 | 
					        // In practice this should not be an issue as those systems all initialize
 | 
				
			||||||
        // pre-registry and therefore are never loaded by the registry so it
 | 
					        // pre-registry and therefore are never loaded by the registry so it
 | 
				
			||||||
        // doesn't matter if those records in the registry table point to one
 | 
					        // doesn't matter if those records in the registry table point to one
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,7 +26,7 @@ define('MAINTENANCE_MODE', 'install');
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function install_main() {
 | 
					function install_main() {
 | 
				
			||||||
  // The user agent header is used to pass a database prefix in the request when
 | 
					  // The user agent header is used to pass a database prefix in the request when
 | 
				
			||||||
  // running tests.  However, for security reasons, it is imperative that no
 | 
					  // running tests. However, for security reasons, it is imperative that no
 | 
				
			||||||
  // installation be permitted using such a prefix.
 | 
					  // installation be permitted using such a prefix.
 | 
				
			||||||
  if (preg_match("/^simpletest\d+$/", $_SERVER['HTTP_USER_AGENT'])) {
 | 
					  if (preg_match("/^simpletest\d+$/", $_SERVER['HTTP_USER_AGENT'])) {
 | 
				
			||||||
    header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
 | 
					    header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
 | 
				
			||||||
| 
						 | 
					@ -69,7 +69,7 @@ function install_main() {
 | 
				
			||||||
    require_once DRUPAL_ROOT . '/includes/cache.inc';
 | 
					    require_once DRUPAL_ROOT . '/includes/cache.inc';
 | 
				
			||||||
    $conf['cache_inc'] = 'includes/cache.inc';
 | 
					    $conf['cache_inc'] = 'includes/cache.inc';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Initialize the database system.  Note that the connection
 | 
					    // Initialize the database system. Note that the connection
 | 
				
			||||||
    // won't be initialized until it is actually requested.
 | 
					    // won't be initialized until it is actually requested.
 | 
				
			||||||
    require_once DRUPAL_ROOT . '/includes/database/database.inc';
 | 
					    require_once DRUPAL_ROOT . '/includes/database/database.inc';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -741,7 +741,7 @@ if (Drupal.jsEnabled) {
 | 
				
			||||||
      // Build menu to allow clean URL check.
 | 
					      // Build menu to allow clean URL check.
 | 
				
			||||||
      menu_rebuild();
 | 
					      menu_rebuild();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Cache a fully-built schema.  This is necessary for any
 | 
					      // Cache a fully-built schema. This is necessary for any
 | 
				
			||||||
      // invocation of index.php because: (1) setting cache table
 | 
					      // invocation of index.php because: (1) setting cache table
 | 
				
			||||||
      // entries requires schema information, (2) that occurs during
 | 
					      // entries requires schema information, (2) that occurs during
 | 
				
			||||||
      // bootstrap before any module are loaded, so (3) if there is no
 | 
					      // bootstrap before any module are loaded, so (3) if there is no
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@ Drupal.behaviors.textarea = {
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      var textarea = $(this).addClass('textarea-processed'), staticOffset = null;
 | 
					      var textarea = $(this).addClass('textarea-processed'), staticOffset = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // When wrapping the text area, work around an IE margin bug.  See:
 | 
					      // When wrapping the text area, work around an IE margin bug. See:
 | 
				
			||||||
      // http://jaspan.com/ie-inherited-margin-bug-form-elements-and-haslayout
 | 
					      // http://jaspan.com/ie-inherited-margin-bug-form-elements-and-haslayout
 | 
				
			||||||
      $(this).wrap('<div class="resizable-textarea"><span></span></div>')
 | 
					      $(this).wrap('<div class="resizable-textarea"><span></span></div>')
 | 
				
			||||||
        .parent().append($('<div class="grippie"></div>').mousedown(startDrag));
 | 
					        .parent().append($('<div class="grippie"></div>').mousedown(startDrag));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,7 +47,7 @@ function _book_install_type_create() {
 | 
				
			||||||
 * Drupal 5.x to 6.x update.
 | 
					 * Drupal 5.x to 6.x update.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This function moves any existing book hierarchy into the new structure used
 | 
					 * This function moves any existing book hierarchy into the new structure used
 | 
				
			||||||
 * in the 6.x module.  Rather than storing the hierarchy in the {book} table,
 | 
					 * in the 6.x module. Rather than storing the hierarchy in the {book} table,
 | 
				
			||||||
 * the menu API is used to store the hierarchy in the {menu_links} table and the
 | 
					 * the menu API is used to store the hierarchy in the {menu_links} table and the
 | 
				
			||||||
 * {book} table serves to uniquely connect a node to a menu link.
 | 
					 * {book} table serves to uniquely connect a node to a menu link.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -575,7 +575,7 @@ function book_update_bid($book_link) {
 | 
				
			||||||
 * @return
 | 
					 * @return
 | 
				
			||||||
 *   A linear array of menu links in the order that the links are shown in the
 | 
					 *   A linear array of menu links in the order that the links are shown in the
 | 
				
			||||||
 *   menu, so the previous and next pages are the elements before and after the
 | 
					 *   menu, so the previous and next pages are the elements before and after the
 | 
				
			||||||
 *   element corresponding to $node.  The children of $node (if any) will come
 | 
					 *   element corresponding to $node. The children of $node (if any) will come
 | 
				
			||||||
 *   immediately after it in the array.
 | 
					 *   immediately after it in the array.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function book_get_flat_menu($book_link) {
 | 
					function book_get_flat_menu($book_link) {
 | 
				
			||||||
| 
						 | 
					@ -963,7 +963,7 @@ function _book_toc_recurse($tree, $indent, &$toc, $exclude, $depth_limit) {
 | 
				
			||||||
 * @param $bid
 | 
					 * @param $bid
 | 
				
			||||||
 *   The ID of the book whose pages are to be listed.
 | 
					 *   The ID of the book whose pages are to be listed.
 | 
				
			||||||
 * @param $exclude
 | 
					 * @param $exclude
 | 
				
			||||||
 *   Optional array of mlid values.  Any link whose mlid is in this array
 | 
					 *   Optional array of mlid values. Any link whose mlid is in this array
 | 
				
			||||||
 *   will be excluded (along with its children).
 | 
					 *   will be excluded (along with its children).
 | 
				
			||||||
 * @param $depth_limit
 | 
					 * @param $depth_limit
 | 
				
			||||||
 *   Any link deeper than this value will be excluded (along with its children).
 | 
					 *   Any link deeper than this value will be excluded (along with its children).
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -221,7 +221,7 @@ function book_remove_form_submit($form, &$form_state) {
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * AJAX callback to replace the book parent select options.
 | 
					 * AJAX callback to replace the book parent select options.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This function is called when the selected book is changed.  It updates the
 | 
					 * This function is called when the selected book is changed. It updates the
 | 
				
			||||||
 * cached form (either the node form or the book outline form) and returns
 | 
					 * cached form (either the node form or the book outline form) and returns
 | 
				
			||||||
 * rendered output to be used to replace the select containing the possible
 | 
					 * rendered output to be used to replace the select containing the possible
 | 
				
			||||||
 * parent pages in the newly selected book.
 | 
					 * parent pages in the newly selected book.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1508,7 +1508,7 @@ function comment_form(&$form_state, $edit, $title = NULL) {
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Only show the save button if comment previews are optional or if we are
 | 
					  // Only show the save button if comment previews are optional or if we are
 | 
				
			||||||
  // already previewing the submission.  However, if there are form errors,
 | 
					  // already previewing the submission. However, if there are form errors,
 | 
				
			||||||
  // we hide the save button no matter what, so that optional form elements
 | 
					  // we hide the save button no matter what, so that optional form elements
 | 
				
			||||||
  // (e.g., captchas) can be updated.
 | 
					  // (e.g., captchas) can be updated.
 | 
				
			||||||
  if (!form_get_errors() && ((variable_get('comment_preview_' . $node->type, COMMENT_PREVIEW_REQUIRED) == COMMENT_PREVIEW_OPTIONAL) || ($op == t('Preview')) || ($op == t('Save')))) {
 | 
					  if (!form_get_errors() && ((variable_get('comment_preview_' . $node->type, COMMENT_PREVIEW_REQUIRED) == COMMENT_PREVIEW_OPTIONAL) || ($op == t('Preview')) || ($op == t('Save')))) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,7 +92,7 @@
 | 
				
			||||||
 * @param $text
 | 
					 * @param $text
 | 
				
			||||||
 *   The content to filter (applies to 'prepare' and 'process').
 | 
					 *   The content to filter (applies to 'prepare' and 'process').
 | 
				
			||||||
 * @param $langcode
 | 
					 * @param $langcode
 | 
				
			||||||
 *   The language code associated with the content, e.g. 'en' for English.  This
 | 
					 *   The language code associated with the content, e.g. 'en' for English. This
 | 
				
			||||||
 *   enables filters to be language aware and can be used to implement language
 | 
					 *   enables filters to be language aware and can be used to implement language
 | 
				
			||||||
 *   specific text replacements.
 | 
					 *   specific text replacements.
 | 
				
			||||||
 * @param $cache_id
 | 
					 * @param $cache_id
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -412,7 +412,7 @@ function filter_list_format($format) {
 | 
				
			||||||
 *    the default format.
 | 
					 *    the default format.
 | 
				
			||||||
 * @param $langcode
 | 
					 * @param $langcode
 | 
				
			||||||
 *    Optional: the language code of the text to be filtered, e.g. 'en' for
 | 
					 *    Optional: the language code of the text to be filtered, e.g. 'en' for
 | 
				
			||||||
 *    English.  This allows filters to be language aware so language specific
 | 
					 *    English. This allows filters to be language aware so language specific
 | 
				
			||||||
 *    text replacement can be implemented.
 | 
					 *    text replacement can be implemented.
 | 
				
			||||||
 * @param $check
 | 
					 * @param $check
 | 
				
			||||||
 *    Whether to check the $format with filter_access() first. Defaults to TRUE.
 | 
					 *    Whether to check the $format with filter_access() first. Defaults to TRUE.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,7 +42,7 @@ function filter_tips_long() {
 | 
				
			||||||
 * @param $long
 | 
					 * @param $long
 | 
				
			||||||
 *   (optional) Whether the passed in filter tips contain extended explanations,
 | 
					 *   (optional) Whether the passed in filter tips contain extended explanations,
 | 
				
			||||||
 *   i.e. intended to be output on the path 'filter/tips' (TRUE), or are in a
 | 
					 *   i.e. intended to be output on the path 'filter/tips' (TRUE), or are in a
 | 
				
			||||||
 *   short format, i.e. suitable to be displayed below a form element.  Defaults
 | 
					 *   short format, i.e. suitable to be displayed below a form element. Defaults
 | 
				
			||||||
 *   to FALSE.
 | 
					 *   to FALSE.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @see _filter_tips()
 | 
					 * @see _filter_tips()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -103,7 +103,7 @@ function forum_schema() {
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Create the forum vocabulary if does not exist. Assign the
 | 
					 * Create the forum vocabulary if does not exist. Assign the
 | 
				
			||||||
 * vocabulary a low weight so it will appear first in forum topic
 | 
					 * vocabulary a low weight so it will appear first in forum topic
 | 
				
			||||||
 * create and edit forms.  Do not just call forum_enable() because in
 | 
					 * create and edit forms. Do not just call forum_enable() because in
 | 
				
			||||||
 * future versions it might do something different.
 | 
					 * future versions it might do something different.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function forum_update_6000() {
 | 
					function forum_update_6000() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -165,7 +165,7 @@ function forum_init() {
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function _forum_nodeapi_check_node_type($node, $vocabulary) {
 | 
					function _forum_nodeapi_check_node_type($node, $vocabulary) {
 | 
				
			||||||
  // We are going to return if $node->type is not one of the node
 | 
					  // We are going to return if $node->type is not one of the node
 | 
				
			||||||
  // types assigned to the forum vocabulary.  If forum_nav_vocabulary
 | 
					  // types assigned to the forum vocabulary. If forum_nav_vocabulary
 | 
				
			||||||
  // is undefined or the vocabulary does not exist, it clearly cannot
 | 
					  // is undefined or the vocabulary does not exist, it clearly cannot
 | 
				
			||||||
  // be assigned to $node->type, so return to avoid E_ALL warnings.
 | 
					  // be assigned to $node->type, so return to avoid E_ALL warnings.
 | 
				
			||||||
  if (empty($vocabulary)) {
 | 
					  if (empty($vocabulary)) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,11 +34,11 @@
 | 
				
			||||||
 *   An array that corresponds to the return of the arg() function - if a module
 | 
					 *   An array that corresponds to the return of the arg() function - if a module
 | 
				
			||||||
 *   needs to provide help for a page with additional parameters after the
 | 
					 *   needs to provide help for a page with additional parameters after the
 | 
				
			||||||
 *   Drupal path or help for a specific value for a wildcard in the path, then
 | 
					 *   Drupal path or help for a specific value for a wildcard in the path, then
 | 
				
			||||||
 *   the values in this array can be referenced.  For example you could provide
 | 
					 *   the values in this array can be referenced. For example you could provide
 | 
				
			||||||
 *   help for user/1 by looking for the path user/% and $arg[1] == '1'.  This
 | 
					 *   help for user/1 by looking for the path user/% and $arg[1] == '1'. This
 | 
				
			||||||
 *   array should always be used rather than directly invoking arg(). Note that
 | 
					 *   array should always be used rather than directly invoking arg(). Note that
 | 
				
			||||||
 *   depending on which module is invoking hook_help, $arg may contain only,
 | 
					 *   depending on which module is invoking hook_help, $arg may contain only,
 | 
				
			||||||
 *   empty strings.  Regardless, $arg[0] to $arg[11] will always be set.
 | 
					 *   empty strings. Regardless, $arg[0] to $arg[11] will always be set.
 | 
				
			||||||
 * @return
 | 
					 * @return
 | 
				
			||||||
 *   A localized string containing the help text. Every web link, l(), or
 | 
					 *   A localized string containing the help text. Every web link, l(), or
 | 
				
			||||||
 *   url() must be replaced with %something and put into the final t()
 | 
					 *   url() must be replaced with %something and put into the final t()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -117,7 +117,7 @@ function locale_update_6000() {
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Change locale column to language. The language column is added by
 | 
					 * Change locale column to language. The language column is added by
 | 
				
			||||||
 * update_fix_d6_requirements() in update.php to avoid a large number
 | 
					 * update_fix_d6_requirements() in update.php to avoid a large number
 | 
				
			||||||
 * of error messages from update.php.  All we need to do here is copy
 | 
					 * of error messages from update.php. All we need to do here is copy
 | 
				
			||||||
 * locale to language and then drop locale.
 | 
					 * locale to language and then drop locale.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function locale_update_6001() {
 | 
					function locale_update_6001() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@ class LocaleTestCase extends DrupalWebTestCase {
 | 
				
			||||||
  function getInfo() {
 | 
					  function getInfo() {
 | 
				
			||||||
    return array(
 | 
					    return array(
 | 
				
			||||||
      'name' => t('String translate and validate'),
 | 
					      'name' => t('String translate and validate'),
 | 
				
			||||||
      'description' => 'Adds a new locale and translates its name.  Checks the validation of translation strings.',
 | 
					      'description' => 'Adds a new locale and translates its name. Checks the validation of translation strings.',
 | 
				
			||||||
      'group' => 'Locale',
 | 
					      'group' => 'Locale',
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@
 | 
				
			||||||
 *     visits the path. If omitted, the parent menu item's callback will be used
 | 
					 *     visits the path. If omitted, the parent menu item's callback will be used
 | 
				
			||||||
 *     instead.
 | 
					 *     instead.
 | 
				
			||||||
 *   - "page arguments": An array of arguments to pass to the page callback
 | 
					 *   - "page arguments": An array of arguments to pass to the page callback
 | 
				
			||||||
 *     function.  Integer values pass the corresponding URL component (see arg()).
 | 
					 *     function. Integer values pass the corresponding URL component (see arg()).
 | 
				
			||||||
 *   - "access callback": A  function returning a boolean value that determines
 | 
					 *   - "access callback": A  function returning a boolean value that determines
 | 
				
			||||||
 *     whether the user has access rights to this menu item. Defaults to
 | 
					 *     whether the user has access rights to this menu item. Defaults to
 | 
				
			||||||
 *     user_access() unless a value is inherited from a parent menu item..
 | 
					 *     user_access() unless a value is inherited from a parent menu item..
 | 
				
			||||||
| 
						 | 
					@ -85,8 +85,8 @@ function hook_menu() {
 | 
				
			||||||
 * Alter the data being saved to the {menu_router} table after hook_menu is invoked.
 | 
					 * Alter the data being saved to the {menu_router} table after hook_menu is invoked.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This hook is invoked by menu_router_build(). The menu definitions are passed
 | 
					 * This hook is invoked by menu_router_build(). The menu definitions are passed
 | 
				
			||||||
 * in by reference.  Each element of the $callbacks array is one item returned
 | 
					 * in by reference. Each element of the $callbacks array is one item returned
 | 
				
			||||||
 * by a module from hook_menu.  Additional items may be added, or existing items
 | 
					 * by a module from hook_menu. Additional items may be added, or existing items
 | 
				
			||||||
 * altered.
 | 
					 * altered.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param $callbacks
 | 
					 * @param $callbacks
 | 
				
			||||||
| 
						 | 
					@ -125,7 +125,7 @@ function hook_menu_link_alter(&$item, $menu) {
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This hook may be used, for example, to add a page-specific query string.
 | 
					 * This hook may be used, for example, to add a page-specific query string.
 | 
				
			||||||
 * For performance reasons, only links that have $item['options']['alter'] == TRUE
 | 
					 * For performance reasons, only links that have $item['options']['alter'] == TRUE
 | 
				
			||||||
 * will be passed into this hook.  The $item['options']['alter'] flag should
 | 
					 * will be passed into this hook. The $item['options']['alter'] flag should
 | 
				
			||||||
 * generally be set using hook_menu_link_alter().
 | 
					 * generally be set using hook_menu_link_alter().
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param $item
 | 
					 * @param $item
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,7 +54,7 @@ function theme_node_admin_overview($name, $type) {
 | 
				
			||||||
function node_type_form(&$form_state, $type = NULL) {
 | 
					function node_type_form(&$form_state, $type = NULL) {
 | 
				
			||||||
  drupal_add_js(drupal_get_path('module', 'node') .'/content_types.js');
 | 
					  drupal_add_js(drupal_get_path('module', 'node') .'/content_types.js');
 | 
				
			||||||
  if (!isset($type->type)) {
 | 
					  if (!isset($type->type)) {
 | 
				
			||||||
    // This is a new type.  Node module managed types are custom and unlocked.
 | 
					    // This is a new type. Node module managed types are custom and unlocked.
 | 
				
			||||||
    $type = node_type_set_defaults(array('custom' => 1, 'locked' => 0));
 | 
					    $type = node_type_set_defaults(array('custom' => 1, 'locked' => 0));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -561,7 +561,7 @@ function node_admin_nodes_submit($form, &$form_state) {
 | 
				
			||||||
    cache_clear_all();
 | 
					    cache_clear_all();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  else {
 | 
					  else {
 | 
				
			||||||
    // We need to rebuild the form to go to a second step.  For example, to
 | 
					    // We need to rebuild the form to go to a second step. For example, to
 | 
				
			||||||
    // show the confirmation form for the deletion of nodes.
 | 
					    // show the confirmation form for the deletion of nodes.
 | 
				
			||||||
    $form_state['rebuild'] = TRUE;
 | 
					    $form_state['rebuild'] = TRUE;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -739,8 +739,8 @@ function hook_update($node) {
 | 
				
			||||||
 * this module), use hook_nodeapi() instead.
 | 
					 * this module), use hook_nodeapi() instead.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Changes made to the $node object within a hook_validate() function will
 | 
					 * Changes made to the $node object within a hook_validate() function will
 | 
				
			||||||
 * have no effect.  The preferred method to change a node's content is to use
 | 
					 * have no effect. The preferred method to change a node's content is to use
 | 
				
			||||||
 * hook_submit() or hook_nodeapi($op='submit') instead.  If it is really
 | 
					 * hook_submit() or hook_nodeapi($op='submit') instead. If it is really
 | 
				
			||||||
 * necessary to change the node at the validate stage, you can use function
 | 
					 * necessary to change the node at the validate stage, you can use function
 | 
				
			||||||
 * form_set_value().
 | 
					 * form_set_value().
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -382,7 +382,7 @@ function node_teaser($body, $format = NULL, $size = NULL) {
 | 
				
			||||||
  // Initialize it to maximum in order to find the minimum.
 | 
					  // Initialize it to maximum in order to find the minimum.
 | 
				
			||||||
  $min_rpos = $max_rpos;
 | 
					  $min_rpos = $max_rpos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Store the reverse of the teaser.  We use strpos on the reversed needle and
 | 
					  // Store the reverse of the teaser. We use strpos on the reversed needle and
 | 
				
			||||||
  // haystack for speed and convenience.
 | 
					  // haystack for speed and convenience.
 | 
				
			||||||
  $reversed = strrev($teaser);
 | 
					  $reversed = strrev($teaser);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -417,7 +417,7 @@ function node_teaser($body, $format = NULL, $size = NULL) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // If a break point was found in this group, slice and return the teaser.
 | 
					    // If a break point was found in this group, slice and return the teaser.
 | 
				
			||||||
    if ($min_rpos !== $max_rpos) {
 | 
					    if ($min_rpos !== $max_rpos) {
 | 
				
			||||||
      // Don't slice with length 0.  Length must be <0 to slice from RHS.
 | 
					      // Don't slice with length 0. Length must be <0 to slice from RHS.
 | 
				
			||||||
      return ($min_rpos === 0) ? $teaser : substr($teaser, 0, 0 - $min_rpos);
 | 
					      return ($min_rpos === 0) ? $teaser : substr($teaser, 0, 0 - $min_rpos);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -1003,7 +1003,7 @@ function node_save(&$node) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // When inserting a node, $node->log must be set because
 | 
					    // When inserting a node, $node->log must be set because
 | 
				
			||||||
    // {node_revision}.log does not (and cannot) have a default
 | 
					    // {node_revision}.log does not (and cannot) have a default
 | 
				
			||||||
    // value.  If the user does not have permission to create
 | 
					    // value. If the user does not have permission to create
 | 
				
			||||||
    // revisions, however, the form will not contain an element for
 | 
					    // revisions, however, the form will not contain an element for
 | 
				
			||||||
    // log so $node->log will be unset at this point.
 | 
					    // log so $node->log will be unset at this point.
 | 
				
			||||||
    if (!isset($node->log)) {
 | 
					    if (!isset($node->log)) {
 | 
				
			||||||
| 
						 | 
					@ -1011,7 +1011,7 @@ function node_save(&$node) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // For the same reasons, make sure we have $node->teaser and
 | 
					    // For the same reasons, make sure we have $node->teaser and
 | 
				
			||||||
    // $node->body.  We should consider making these fields nullable
 | 
					    // $node->body. We should consider making these fields nullable
 | 
				
			||||||
    // in a future version since node types are not required to use them.
 | 
					    // in a future version since node types are not required to use them.
 | 
				
			||||||
    if (!isset($node->teaser)) {
 | 
					    if (!isset($node->teaser)) {
 | 
				
			||||||
      $node->teaser = '';
 | 
					      $node->teaser = '';
 | 
				
			||||||
| 
						 | 
					@ -3012,4 +3012,4 @@ function node_elements() {
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function theme_node_links($element) {
 | 
					function theme_node_links($element) {
 | 
				
			||||||
  return theme('links', $element['#value'],  array('class' => 'links inline'));
 | 
					  return theme('links', $element['#value'],  array('class' => 'links inline'));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -434,7 +434,7 @@ function search_index($sid, $type, $text) {
 | 
				
			||||||
  global $base_url;
 | 
					  global $base_url;
 | 
				
			||||||
  $node_regexp = '@href=[\'"]?(?:' . preg_quote($base_url, '@') . '/|' . preg_quote(base_path(), '@') . ')(?:\?q=)?/?((?![a-z]+:)[^\'">]+)[\'">]@i';
 | 
					  $node_regexp = '@href=[\'"]?(?:' . preg_quote($base_url, '@') . '/|' . preg_quote(base_path(), '@') . ')(?:\?q=)?/?((?![a-z]+:)[^\'">]+)[\'">]@i';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Multipliers for scores of words inside certain HTML tags.  The weights are stored
 | 
					  // Multipliers for scores of words inside certain HTML tags. The weights are stored
 | 
				
			||||||
  // in a variable so that modules can overwrite the default weights.
 | 
					  // in a variable so that modules can overwrite the default weights.
 | 
				
			||||||
  // Note: 'a' must be included for link ranking to work.
 | 
					  // Note: 'a' must be included for link ranking to work.
 | 
				
			||||||
  $tags = variable_get('search_tag_weights', array(
 | 
					  $tags = variable_get('search_tag_weights', array(
 | 
				
			||||||
| 
						 | 
					@ -585,7 +585,7 @@ function search_index($sid, $type, $text) {
 | 
				
			||||||
  // Insert results into search index
 | 
					  // Insert results into search index
 | 
				
			||||||
  foreach ($results[0] as $word => $score) {
 | 
					  foreach ($results[0] as $word => $score) {
 | 
				
			||||||
    // If a word already exists in the database, its score gets increased
 | 
					    // If a word already exists in the database, its score gets increased
 | 
				
			||||||
    // appropriately.  If not, we create a new record with the appropriate
 | 
					    // appropriately. If not, we create a new record with the appropriate
 | 
				
			||||||
    // starting score.
 | 
					    // starting score.
 | 
				
			||||||
    db_merge('search_index')->key(array(
 | 
					    db_merge('search_index')->key(array(
 | 
				
			||||||
      'word' => $word,
 | 
					      'word' => $word,
 | 
				
			||||||
| 
						 | 
					@ -656,7 +656,7 @@ function search_nodeapi_update_index($node) {
 | 
				
			||||||
 * Implementation of hook_nodeapi_update().
 | 
					 * Implementation of hook_nodeapi_update().
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function search_nodeapi_update($node) {
 | 
					function search_nodeapi_update($node) {
 | 
				
			||||||
  // Reindex the node when it is updated.  The node is automatically indexed
 | 
					  // Reindex the node when it is updated. The node is automatically indexed
 | 
				
			||||||
  // when it is added, simply by being added to the node table.
 | 
					  // when it is added, simply by being added to the node table.
 | 
				
			||||||
  search_touch_node($node->nid);
 | 
					  search_touch_node($node->nid);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -880,7 +880,7 @@ function _search_parse_query(&$word, &$scores, $not = FALSE) {
 | 
				
			||||||
 * indexed search (and thus, implements hook_update_index()).
 | 
					 * indexed search (and thus, implements hook_update_index()).
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Results are retrieved in two logical passes. However, the two passes are
 | 
					 * Results are retrieved in two logical passes. However, the two passes are
 | 
				
			||||||
 * joined together into a single query.  And in the case of most simple
 | 
					 * joined together into a single query. And in the case of most simple
 | 
				
			||||||
 * queries the second pass is not even used.
 | 
					 * queries the second pass is not even used.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * The first pass selects a set of all possible matches, which has the benefit
 | 
					 * The first pass selects a set of all possible matches, which has the benefit
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -806,7 +806,7 @@ class DrupalWebTestCase {
 | 
				
			||||||
    drupal_install_modules($modules);
 | 
					    drupal_install_modules($modules);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Because the schema is static cached, we need to flush
 | 
					    // Because the schema is static cached, we need to flush
 | 
				
			||||||
    // it between each run.  If we don't, then it will contain
 | 
					    // it between each run. If we don't, then it will contain
 | 
				
			||||||
    // stale data for the previous run's database prefix and all
 | 
					    // stale data for the previous run's database prefix and all
 | 
				
			||||||
    // calls to it will fail.
 | 
					    // calls to it will fail.
 | 
				
			||||||
    drupal_get_schema(NULL, TRUE);
 | 
					    drupal_get_schema(NULL, TRUE);
 | 
				
			||||||
| 
						 | 
					@ -1033,8 +1033,8 @@ class DrupalWebTestCase {
 | 
				
			||||||
  protected function drupalGet($path, array $options = array(), array $headers = array()) {
 | 
					  protected function drupalGet($path, array $options = array(), array $headers = array()) {
 | 
				
			||||||
    $options['absolute'] = TRUE;
 | 
					    $options['absolute'] = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // We re-using a CURL connection here.  If that connection still has certain
 | 
					    // We re-using a CURL connection here. If that connection still has certain
 | 
				
			||||||
    // options set, it might change the GET into a POST.  Make sure we clear out
 | 
					    // options set, it might change the GET into a POST. Make sure we clear out
 | 
				
			||||||
    // previous options.
 | 
					    // previous options.
 | 
				
			||||||
    $out = $this->curlExec(array(CURLOPT_HTTPGET => TRUE, CURLOPT_URL => url($path, $options), CURLOPT_NOBODY => FALSE, CURLOPT_HTTPHEADER => $headers));
 | 
					    $out = $this->curlExec(array(CURLOPT_HTTPGET => TRUE, CURLOPT_URL => url($path, $options), CURLOPT_NOBODY => FALSE, CURLOPT_HTTPHEADER => $headers));
 | 
				
			||||||
    $this->refreshVariables(); // Ensure that any changes to variables in the other thread are picked up.
 | 
					    $this->refreshVariables(); // Ensure that any changes to variables in the other thread are picked up.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,8 +5,8 @@
 | 
				
			||||||
 * Dummy class for fetching into a class.
 | 
					 * Dummy class for fetching into a class.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * PDO supports using a new instance of an arbitrary class for records
 | 
					 * PDO supports using a new instance of an arbitrary class for records
 | 
				
			||||||
 * rather than just a stdClass or array.  This class is for testing that
 | 
					 * rather than just a stdClass or array. This class is for testing that
 | 
				
			||||||
 * functionality.  (See testQueryFetchClass() below)
 | 
					 * functionality. (See testQueryFetchClass() below)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class FakeRecord { }
 | 
					class FakeRecord { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -941,7 +941,7 @@ class DatabaseMergeTestCase extends DatabaseTestCase {
 | 
				
			||||||
    // This is a very contrived example, as I have no idea why you'd want to
 | 
					    // This is a very contrived example, as I have no idea why you'd want to
 | 
				
			||||||
    // change age this way, but that's beside the point.
 | 
					    // change age this way, but that's beside the point.
 | 
				
			||||||
    // Note that we are also double-setting age here, once as a literal and
 | 
					    // Note that we are also double-setting age here, once as a literal and
 | 
				
			||||||
    // once as an expression.  This test will only pass if the expression wins,
 | 
					    // once as an expression. This test will only pass if the expression wins,
 | 
				
			||||||
    // which is what is supposed to happen.
 | 
					    // which is what is supposed to happen.
 | 
				
			||||||
    db_merge('test_people')
 | 
					    db_merge('test_people')
 | 
				
			||||||
      ->key(array('job' => 'Speaker'))
 | 
					      ->key(array('job' => 'Speaker'))
 | 
				
			||||||
| 
						 | 
					@ -1446,7 +1446,7 @@ class DatabaseSelectComplexTestCase extends DatabaseTestCase {
 | 
				
			||||||
  function testNestedConditions() {
 | 
					  function testNestedConditions() {
 | 
				
			||||||
    // This query should translate to:
 | 
					    // This query should translate to:
 | 
				
			||||||
    // "SELECT job FROM {test} WHERE name = 'Paul' AND (age = 26 OR age = 27)"
 | 
					    // "SELECT job FROM {test} WHERE name = 'Paul' AND (age = 26 OR age = 27)"
 | 
				
			||||||
    // That should find only one record.  Yes it's a non-optimal way of writing
 | 
					    // That should find only one record. Yes it's a non-optimal way of writing
 | 
				
			||||||
    // that query but that's not the point!
 | 
					    // that query but that's not the point!
 | 
				
			||||||
    $query = db_select('test');
 | 
					    $query = db_select('test');
 | 
				
			||||||
    $query->addField('test', 'job');
 | 
					    $query->addField('test', 'job');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1300,7 +1300,7 @@ function hook_requirements($phase) {
 | 
				
			||||||
 * details on schema definition structures.
 | 
					 * details on schema definition structures.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @return
 | 
					 * @return
 | 
				
			||||||
 * A schema definition structure array.  For each element of the
 | 
					 * A schema definition structure array. For each element of the
 | 
				
			||||||
 * array, the key is a table name and the value is a table structure
 | 
					 * array, the key is a table name and the value is a table structure
 | 
				
			||||||
 * definition.
 | 
					 * definition.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1330,7 +1330,7 @@ function system_update_6000() {
 | 
				
			||||||
function system_update_6001() {
 | 
					function system_update_6001() {
 | 
				
			||||||
  $ret = array();
 | 
					  $ret = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Add vid to term-node relation.  The schema says it is unsigned.
 | 
					  // Add vid to term-node relation. The schema says it is unsigned.
 | 
				
			||||||
  db_add_field($ret, 'term_node', 'vid', array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0));
 | 
					  db_add_field($ret, 'term_node', 'vid', array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0));
 | 
				
			||||||
  db_drop_primary_key($ret, 'term_node');
 | 
					  db_drop_primary_key($ret, 'term_node');
 | 
				
			||||||
  db_add_primary_key($ret, 'term_node', array('vid', 'tid', 'nid'));
 | 
					  db_add_primary_key($ret, 'term_node', array('vid', 'tid', 'nid'));
 | 
				
			||||||
| 
						 | 
					@ -1362,13 +1362,13 @@ function system_update_6003() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * This update used to add an index on users created column (#127941).
 | 
					 * This update used to add an index on users created column (#127941).
 | 
				
			||||||
 * However, system_update_1022() does the same thing.  This update
 | 
					 * However, system_update_1022() does the same thing. This update
 | 
				
			||||||
 * tried to detect if 1022 had already run but failed to do so,
 | 
					 * tried to detect if 1022 had already run but failed to do so,
 | 
				
			||||||
 * resulting in an "index already exists" error.
 | 
					 * resulting in an "index already exists" error.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Adding the index here is never necessary.  Sites installed before
 | 
					 * Adding the index here is never necessary. Sites installed before
 | 
				
			||||||
 * 1022 will run 1022, getting the update.  Sites installed on/after 1022
 | 
					 * 1022 will run 1022, getting the update. Sites installed on/after 1022
 | 
				
			||||||
 * got the index when the table was first created.  Therefore, this
 | 
					 * got the index when the table was first created. Therefore, this
 | 
				
			||||||
 * function is now a no-op.
 | 
					 * function is now a no-op.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function system_update_6004() {
 | 
					function system_update_6004() {
 | 
				
			||||||
| 
						 | 
					@ -1386,16 +1386,16 @@ function system_update_6005() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // As of system.install:1.85 (before the new language
 | 
					      // As of system.install:1.85 (before the new language
 | 
				
			||||||
      // subsystem), new installs got a unique key named
 | 
					      // subsystem), new installs got a unique key named
 | 
				
			||||||
      // url_alias_dst_key on url_alias.dst.  Unfortunately,
 | 
					      // url_alias_dst_key on url_alias.dst. Unfortunately,
 | 
				
			||||||
      // system_update_162 created a unique key inconsistently named
 | 
					      // system_update_162 created a unique key inconsistently named
 | 
				
			||||||
      // url_alias_dst_idx on url_alias.dst (keys should have the _key
 | 
					      // url_alias_dst_idx on url_alias.dst (keys should have the _key
 | 
				
			||||||
      // suffix, indexes the _idx suffix).  Therefore, sites installed
 | 
					      // suffix, indexes the _idx suffix). Therefore, sites installed
 | 
				
			||||||
      // before system_update_162 have a unique key with a different
 | 
					      // before system_update_162 have a unique key with a different
 | 
				
			||||||
      // name than sites installed after system_update_162().  Now, we
 | 
					      // name than sites installed after system_update_162(). Now, we
 | 
				
			||||||
      // want to drop the unique key on dst which may have either one
 | 
					      // want to drop the unique key on dst which may have either one
 | 
				
			||||||
      // of two names and create a new unique key on (dst, language).
 | 
					      // of two names and create a new unique key on (dst, language).
 | 
				
			||||||
      // There is no way to know which key name exists so we have to
 | 
					      // There is no way to know which key name exists so we have to
 | 
				
			||||||
      // drop both, causing an SQL error.  Thus, we just hide the
 | 
					      // drop both, causing an SQL error. Thus, we just hide the
 | 
				
			||||||
      // error and only report the update_sql results that work.
 | 
					      // error and only report the update_sql results that work.
 | 
				
			||||||
      $err = error_reporting(0);
 | 
					      $err = error_reporting(0);
 | 
				
			||||||
      $ret1 = update_sql('DROP INDEX {url_alias}_dst_idx');
 | 
					      $ret1 = update_sql('DROP INDEX {url_alias}_dst_idx');
 | 
				
			||||||
| 
						 | 
					@ -1456,9 +1456,9 @@ function system_update_6007() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Add info files to themes.  The info and owner columns are added by
 | 
					 * Add info files to themes. The info and owner columns are added by
 | 
				
			||||||
 * update_fix_d6_requirements() in update.php to avoid a large number
 | 
					 * update_fix_d6_requirements() in update.php to avoid a large number
 | 
				
			||||||
 * of error messages from update.php.  All we need to do here is copy
 | 
					 * of error messages from update.php. All we need to do here is copy
 | 
				
			||||||
 * description to owner and then drop description.
 | 
					 * description to owner and then drop description.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function system_update_6008() {
 | 
					function system_update_6008() {
 | 
				
			||||||
| 
						 | 
					@ -1527,7 +1527,7 @@ function system_update_6011() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Add serialized field to cache tables.  This is now handled directly
 | 
					 * Add serialized field to cache tables. This is now handled directly
 | 
				
			||||||
 * by update.php, so this function is a no-op.
 | 
					 * by update.php, so this function is a no-op.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function system_update_6012() {
 | 
					function system_update_6012() {
 | 
				
			||||||
| 
						 | 
					@ -1690,11 +1690,11 @@ function system_update_6018() {
 | 
				
			||||||
 * and pgsql schemas so they are the same and can be represented by a
 | 
					 * and pgsql schemas so they are the same and can be represented by a
 | 
				
			||||||
 * single schema structure.
 | 
					 * single schema structure.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Note that the mysql and pgsql cases make different changes.  This
 | 
					 * Note that the mysql and pgsql cases make different changes. This
 | 
				
			||||||
 * is because each schema needs to be tweaked in different ways to
 | 
					 * is because each schema needs to be tweaked in different ways to
 | 
				
			||||||
 * conform to the new schema structure.  Also, since they operate on
 | 
					 * conform to the new schema structure. Also, since they operate on
 | 
				
			||||||
 * tables defined by many optional core modules which may not ever
 | 
					 * tables defined by many optional core modules which may not ever
 | 
				
			||||||
 * have been installed, they must test each table for existence.  If
 | 
					 * have been installed, they must test each table for existence. If
 | 
				
			||||||
 * the modules are first installed after this update exists the tables
 | 
					 * the modules are first installed after this update exists the tables
 | 
				
			||||||
 * will be created from the schema structure and will start out
 | 
					 * will be created from the schema structure and will start out
 | 
				
			||||||
 * correct.
 | 
					 * correct.
 | 
				
			||||||
| 
						 | 
					@ -1728,10 +1728,10 @@ function system_update_6019() {
 | 
				
			||||||
        db_change_field($ret, 'search_total', 'count', 'count', array('type' => 'float'));
 | 
					        db_change_field($ret, 'search_total', 'count', 'count', array('type' => 'float'));
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Replace unique index dst_language with a unique constraint.  The
 | 
					      // Replace unique index dst_language with a unique constraint. The
 | 
				
			||||||
      // result is the same but the unique key fits our current schema
 | 
					      // result is the same but the unique key fits our current schema
 | 
				
			||||||
      // structure.  Also, the postgres documentation implies that
 | 
					      // structure. Also, the postgres documentation implies that
 | 
				
			||||||
      // unique constraints are preferable to unique indexes.  See
 | 
					      // unique constraints are preferable to unique indexes. See
 | 
				
			||||||
      // http://www.postgresql.org/docs/8.2/interactive/indexes-unique.html.
 | 
					      // http://www.postgresql.org/docs/8.2/interactive/indexes-unique.html.
 | 
				
			||||||
      if (db_table_exists('url_alias')) {
 | 
					      if (db_table_exists('url_alias')) {
 | 
				
			||||||
        db_drop_index($ret, 'url_alias', 'dst_language');
 | 
					        db_drop_index($ret, 'url_alias', 'dst_language');
 | 
				
			||||||
| 
						 | 
					@ -2015,7 +2015,7 @@ function system_update_6021() {
 | 
				
			||||||
    $menu_primary_menu = variable_get('menu_primary_menu', 0);
 | 
					    $menu_primary_menu = variable_get('menu_primary_menu', 0);
 | 
				
			||||||
    // Ensure that we wind up with a system menu named 'primary-links'.
 | 
					    // Ensure that we wind up with a system menu named 'primary-links'.
 | 
				
			||||||
    if (isset($_SESSION['menu_menu_map'][2])) {
 | 
					    if (isset($_SESSION['menu_menu_map'][2])) {
 | 
				
			||||||
      // The primary links menu that ships with Drupal 5 has mid = 2.  If this
 | 
					      // The primary links menu that ships with Drupal 5 has mid = 2. If this
 | 
				
			||||||
      // menu hasn't been deleted by the site admin, we use that.
 | 
					      // menu hasn't been deleted by the site admin, we use that.
 | 
				
			||||||
      $updated_primary_links_menu = 2;
 | 
					      $updated_primary_links_menu = 2;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -2232,14 +2232,14 @@ function system_update_6028() {
 | 
				
			||||||
function system_update_6029() {
 | 
					function system_update_6029() {
 | 
				
			||||||
  // The watchdog table is now owned by dblog, which is not yet
 | 
					  // The watchdog table is now owned by dblog, which is not yet
 | 
				
			||||||
  // "installed" according to the system table, but the table already
 | 
					  // "installed" according to the system table, but the table already
 | 
				
			||||||
  // exists.  We set the module as "installed" here to avoid an error
 | 
					  // exists. We set the module as "installed" here to avoid an error
 | 
				
			||||||
  // later.
 | 
					  // later.
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Although not the case for the initial D6 release, it is likely
 | 
					  // Although not the case for the initial D6 release, it is likely
 | 
				
			||||||
  // that dblog.install will have its own update functions eventually.
 | 
					  // that dblog.install will have its own update functions eventually.
 | 
				
			||||||
  // However, dblog did not exist in D5 and this update is part of the
 | 
					  // However, dblog did not exist in D5 and this update is part of the
 | 
				
			||||||
  // initial D6 release, so we know that dblog is not installed yet.
 | 
					  // initial D6 release, so we know that dblog is not installed yet.
 | 
				
			||||||
  // It is therefore correct to install it as version 0.  If
 | 
					  // It is therefore correct to install it as version 0. If
 | 
				
			||||||
  // dblog updates exist, the next run of update.php will get them.
 | 
					  // dblog updates exist, the next run of update.php will get them.
 | 
				
			||||||
  drupal_set_installed_schema_version('dblog', 0);
 | 
					  drupal_set_installed_schema_version('dblog', 0);
 | 
				
			||||||
  module_enable(array('dblog'));
 | 
					  module_enable(array('dblog'));
 | 
				
			||||||
| 
						 | 
					@ -2313,7 +2313,7 @@ function system_update_6033() {
 | 
				
			||||||
  if (db_table_exists('node_comment_statistics')) {
 | 
					  if (db_table_exists('node_comment_statistics')) {
 | 
				
			||||||
    // On pgsql but not mysql, db_change_field() drops all keys
 | 
					    // On pgsql but not mysql, db_change_field() drops all keys
 | 
				
			||||||
    // involving the changed field, which in this case is the primary
 | 
					    // involving the changed field, which in this case is the primary
 | 
				
			||||||
    // key.  The normal approach is explicitly drop the pkey, change the
 | 
					    // key. The normal approach is explicitly drop the pkey, change the
 | 
				
			||||||
    // field, and re-create the pkey.
 | 
					    // field, and re-create the pkey.
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // Unfortunately, in this case that won't work on mysql; we CANNOT
 | 
					    // Unfortunately, in this case that won't work on mysql; we CANNOT
 | 
				
			||||||
| 
						 | 
					@ -2321,7 +2321,7 @@ function system_update_6033() {
 | 
				
			||||||
    // included in at least one key or index.
 | 
					    // included in at least one key or index.
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // Since we cannot drop the pkey before db_change_field(), after
 | 
					    // Since we cannot drop the pkey before db_change_field(), after
 | 
				
			||||||
    // db_change_field() we may or may not still have a pkey.  The
 | 
					    // db_change_field() we may or may not still have a pkey. The
 | 
				
			||||||
    // simple way out is to re-create the pkey only when using pgsql.
 | 
					    // simple way out is to re-create the pkey only when using pgsql.
 | 
				
			||||||
    // Realistic requirements trump idealistic purity.
 | 
					    // Realistic requirements trump idealistic purity.
 | 
				
			||||||
    db_change_field($ret, 'node_comment_statistics', 'nid', 'nid', array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0));
 | 
					    db_change_field($ret, 'node_comment_statistics', 'nid', 'nid', array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0));
 | 
				
			||||||
| 
						 | 
					@ -2519,7 +2519,7 @@ function system_update_6043() {
 | 
				
			||||||
  db_add_index($ret, 'flood', 'allow', array('event', 'hostname', 'timestamp'));
 | 
					  db_add_index($ret, 'flood', 'allow', array('event', 'hostname', 'timestamp'));
 | 
				
			||||||
  db_add_index($ret, 'history', 'nid', array('nid'));
 | 
					  db_add_index($ret, 'history', 'nid', array('nid'));
 | 
				
			||||||
  // Change length of theme field in {blocks} to be consistent with module, and
 | 
					  // Change length of theme field in {blocks} to be consistent with module, and
 | 
				
			||||||
  // to avoid a MySQL error regarding a too-long index.  Also add new indices.
 | 
					  // to avoid a MySQL error regarding a too-long index. Also add new indices.
 | 
				
			||||||
  db_change_field($ret, 'blocks', 'theme', 'theme', array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''),array(
 | 
					  db_change_field($ret, 'blocks', 'theme', 'theme', array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''),array(
 | 
				
			||||||
                  'unique keys' => array('tmd' => array('theme', 'module', 'delta'),),
 | 
					                  'unique keys' => array('tmd' => array('theme', 'module', 'delta'),),
 | 
				
			||||||
                  'indexes' => array('list' => array('theme', 'status', 'region', 'weight', 'module'),),));
 | 
					                  'indexes' => array('list' => array('theme', 'status', 'region', 'weight', 'module'),),));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,12 +28,12 @@
 | 
				
			||||||
 *    following key-value pairs:
 | 
					 *    following key-value pairs:
 | 
				
			||||||
 *     - 'type': (required) the type is determined by what object the action
 | 
					 *     - 'type': (required) the type is determined by what object the action
 | 
				
			||||||
 *       acts on. Possible choices are node, user, comment, and system. Or
 | 
					 *       acts on. Possible choices are node, user, comment, and system. Or
 | 
				
			||||||
 *       whatever your own custom type is.  So, for the nodequeue module, the
 | 
					 *       whatever your own custom type is. So, for the nodequeue module, the
 | 
				
			||||||
 *       type might be set to 'nodequeue' if the action would be performed on a
 | 
					 *       type might be set to 'nodequeue' if the action would be performed on a
 | 
				
			||||||
 *       nodequeue.
 | 
					 *       nodequeue.
 | 
				
			||||||
 *     - 'description': (required) The human-readable name of the action.
 | 
					 *     - 'description': (required) The human-readable name of the action.
 | 
				
			||||||
 *     - 'configurable': (required) If FALSE, then the action doesn't require
 | 
					 *     - 'configurable': (required) If FALSE, then the action doesn't require
 | 
				
			||||||
 *       any extra configuration.  If TRUE, then you should define a form
 | 
					 *       any extra configuration. If TRUE, then you should define a form
 | 
				
			||||||
 *       function with the same name as the key, but with '_form' appended to
 | 
					 *       function with the same name as the key, but with '_form' appended to
 | 
				
			||||||
 *       it (i.e., the form for 'node_assign_owner_action' is
 | 
					 *       it (i.e., the form for 'node_assign_owner_action' is
 | 
				
			||||||
 *       'node_assign_owner_action_form'.)
 | 
					 *       'node_assign_owner_action_form'.)
 | 
				
			||||||
| 
						 | 
					@ -41,22 +41,22 @@
 | 
				
			||||||
 *       paired with the usual _submit function, and possibly a _validate
 | 
					 *       paired with the usual _submit function, and possibly a _validate
 | 
				
			||||||
 *       function.
 | 
					 *       function.
 | 
				
			||||||
 *     - 'hooks': (required) An array of all of the operations this action is
 | 
					 *     - 'hooks': (required) An array of all of the operations this action is
 | 
				
			||||||
 *       appropriate for, keyed by hook name.  The trigger module uses this to
 | 
					 *       appropriate for, keyed by hook name. The trigger module uses this to
 | 
				
			||||||
 *       filter out inappropriate actions when presenting the interface for
 | 
					 *       filter out inappropriate actions when presenting the interface for
 | 
				
			||||||
 *       assigning actions to events.  If you are writing actions in your own
 | 
					 *       assigning actions to events. If you are writing actions in your own
 | 
				
			||||||
 *       modules and you simply want to declare support for all possible hooks,
 | 
					 *       modules and you simply want to declare support for all possible hooks,
 | 
				
			||||||
 *       you can set 'hooks' => array('any' => TRUE).  Common hooks are 'user',
 | 
					 *       you can set 'hooks' => array('any' => TRUE). Common hooks are 'user',
 | 
				
			||||||
 *       'nodeapi', 'comment', or 'taxonomy'. Any hook that has been described
 | 
					 *       'nodeapi', 'comment', or 'taxonomy'. Any hook that has been described
 | 
				
			||||||
 *       to Drupal in hook_hook_info() will work is a possiblity.
 | 
					 *       to Drupal in hook_hook_info() will work is a possiblity.
 | 
				
			||||||
 *     - 'behavior': (optional) Human-readable array of behavior descriptions.
 | 
					 *     - 'behavior': (optional) Human-readable array of behavior descriptions.
 | 
				
			||||||
 *       The only one we have now is 'changes node property'.  You will almost
 | 
					 *       The only one we have now is 'changes node property'. You will almost
 | 
				
			||||||
 *       certainly never have to return this in your own implementations of this
 | 
					 *       certainly never have to return this in your own implementations of this
 | 
				
			||||||
 *       hook.
 | 
					 *       hook.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * The function that is called when the action is triggered is passed two
 | 
					 * The function that is called when the action is triggered is passed two
 | 
				
			||||||
 * parameters - an object of the same type as the 'type' value of the
 | 
					 * parameters - an object of the same type as the 'type' value of the
 | 
				
			||||||
 * hook_action_info array, and a context variable that contains the context
 | 
					 * hook_action_info array, and a context variable that contains the context
 | 
				
			||||||
 * under which the action is currently running, sent as an array.  For example,
 | 
					 * under which the action is currently running, sent as an array. For example,
 | 
				
			||||||
 * the actions module sets the 'hook' and 'op' keys of the context array (so,
 | 
					 * the actions module sets the 'hook' and 'op' keys of the context array (so,
 | 
				
			||||||
 * 'hook' may be 'nodeapi' and 'op' may be 'insert').
 | 
					 * 'hook' may be 'nodeapi' and 'op' may be 'insert').
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					@ -113,8 +113,8 @@ function hook_action_info_alter(&$actions) {
 | 
				
			||||||
 * See also hook_action_info().
 | 
					 * See also hook_action_info().
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @return
 | 
					 * @return
 | 
				
			||||||
 *   - A nested array.  The outermost key defines the module that the triggers
 | 
					 *   - A nested array. The outermost key defines the module that the triggers
 | 
				
			||||||
 *     are from.  The menu system will use the key to look at the .info file of
 | 
					 *     are from. The menu system will use the key to look at the .info file of
 | 
				
			||||||
 *     the module and make a local task (a tab) in the trigger UI.
 | 
					 *     the module and make a local task (a tab) in the trigger UI.
 | 
				
			||||||
 *     - The next key defines the hook being described.
 | 
					 *     - The next key defines the hook being described.
 | 
				
			||||||
 *       - Inside of that array are a list of arrays keyed by hook operation.
 | 
					 *       - Inside of that array are a list of arrays keyed by hook operation.
 | 
				
			||||||
| 
						 | 
					@ -122,8 +122,8 @@ function hook_action_info_alter(&$actions) {
 | 
				
			||||||
 *           an English description of the hook.
 | 
					 *           an English description of the hook.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * For example, the node_hook_info implementation has 'node' as the outermost
 | 
					 * For example, the node_hook_info implementation has 'node' as the outermost
 | 
				
			||||||
 * key, as that's the module it's in.  Next it has 'nodeapi' as the next key,
 | 
					 * key, as that's the module it's in. Next it has 'nodeapi' as the next key,
 | 
				
			||||||
 * as hook_nodeapi() is what applies to changes in nodes.  Finally the keys
 | 
					 * as hook_nodeapi() is what applies to changes in nodes. Finally the keys
 | 
				
			||||||
 * after that are the various operations for hook_nodeapi() that the node module
 | 
					 * after that are the various operations for hook_nodeapi() that the node module
 | 
				
			||||||
 * is exposing as triggers.
 | 
					 * is exposing as triggers.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -444,7 +444,7 @@ function update_calculate_project_data($available) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // If we're running a dev snapshot and have a timestamp, stop
 | 
					        // If we're running a dev snapshot and have a timestamp, stop
 | 
				
			||||||
        // searching for security updates once we hit an official release
 | 
					        // searching for security updates once we hit an official release
 | 
				
			||||||
        // older than what we've got.  Allow 100 seconds of leeway to handle
 | 
					        // older than what we've got. Allow 100 seconds of leeway to handle
 | 
				
			||||||
        // differences between the datestamp in the .info file and the
 | 
					        // differences between the datestamp in the .info file and the
 | 
				
			||||||
        // timestamp of the tarball itself (which are usually off by 1 or 2
 | 
					        // timestamp of the tarball itself (which are usually off by 1 or 2
 | 
				
			||||||
        // seconds) so that we don't flag that as a new release.
 | 
					        // seconds) so that we don't flag that as a new release.
 | 
				
			||||||
| 
						 | 
					@ -579,7 +579,7 @@ function update_calculate_project_data($available) {
 | 
				
			||||||
function update_project_cache($cid) {
 | 
					function update_project_cache($cid) {
 | 
				
			||||||
  $projects = array();
 | 
					  $projects = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // In some cases, we must clear the cache.  Rather than do so on a time
 | 
					  // In some cases, we must clear the cache. Rather than do so on a time
 | 
				
			||||||
  // basis, we check for specific paths.
 | 
					  // basis, we check for specific paths.
 | 
				
			||||||
  $q = $_GET['q'];
 | 
					  $q = $_GET['q'];
 | 
				
			||||||
  $paths = array('admin/build/modules', 'admin/build/themes', 'admin/reports', 'admin/reports/updates', 'admin/reports/status', 'admin/reports/updates/check');
 | 
					  $paths = array('admin/build/modules', 'admin/build/themes', 'admin/reports', 'admin/reports/updates', 'admin/reports/status', 'admin/reports/updates/check');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -203,7 +203,7 @@ function user_load($array = array()) {
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param $edit
 | 
					 * @param $edit
 | 
				
			||||||
 *   An array of fields and values to save. For example array('name'
 | 
					 *   An array of fields and values to save. For example array('name'
 | 
				
			||||||
 *   => 'My name').  Keys that do not belong to columns in the user-related
 | 
					 *   => '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
 | 
					 *   tables are added to the a serialized array in the 'data' column
 | 
				
			||||||
 *   and will be loaded in the $user->data array by user_load().
 | 
					 *   and will be loaded in the $user->data array by user_load().
 | 
				
			||||||
 *   Setting a field to NULL deletes it from the data column.
 | 
					 *   Setting a field to NULL deletes it from the data column.
 | 
				
			||||||
| 
						 | 
					@ -840,7 +840,7 @@ function user_block_view($delta = '') {
 | 
				
			||||||
        // Count users active within the defined period.
 | 
					        // Count users active within the defined period.
 | 
				
			||||||
        $interval = REQUEST_TIME - variable_get('user_block_seconds_online', 900);
 | 
					        $interval = REQUEST_TIME - variable_get('user_block_seconds_online', 900);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Perform database queries to gather online user lists.  We use s.timestamp
 | 
					        // Perform database queries to gather online user lists. We use s.timestamp
 | 
				
			||||||
        // rather than u.access because it is much faster.
 | 
					        // rather than u.access because it is much faster.
 | 
				
			||||||
        $anonymous_count = drupal_session_count($interval);
 | 
					        $anonymous_count = drupal_session_count($interval);
 | 
				
			||||||
        $authenticated_count = db_query("SELECT COUNT(DISTINCT s.uid) FROM {sessions} s WHERE s.timestamp >= :timestamp AND s.uid > 0", array(':timestamp' => $interval))->fetchField();
 | 
					        $authenticated_count = db_query("SELECT COUNT(DISTINCT s.uid) FROM {sessions} s WHERE s.timestamp >= :timestamp AND s.uid > 0", array(':timestamp' => $interval))->fetchField();
 | 
				
			||||||
| 
						 | 
					@ -2072,7 +2072,7 @@ function theme_user_signature($signature) {
 | 
				
			||||||
 * Return an array of token to value mappings for user e-mail messages.
 | 
					 * Return an array of token to value mappings for user e-mail messages.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param $account
 | 
					 * @param $account
 | 
				
			||||||
 *  The user object of the account being notified.  Must contain at
 | 
					 *  The user object of the account being notified. Must contain at
 | 
				
			||||||
 *  least the fields 'uid', 'name', and 'mail'.
 | 
					 *  least the fields 'uid', 'name', and 'mail'.
 | 
				
			||||||
 * @param $language
 | 
					 * @param $language
 | 
				
			||||||
 *  Language object to generate the tokens with.
 | 
					 *  Language object to generate the tokens with.
 | 
				
			||||||
| 
						 | 
					@ -2129,7 +2129,7 @@ function user_preferred_language($account, $default = NULL) {
 | 
				
			||||||
 * @see drupal_mail()
 | 
					 * @see drupal_mail()
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param $op
 | 
					 * @param $op
 | 
				
			||||||
 *  The operation being performed on the account.  Possible values:
 | 
					 *  The operation being performed on the account. Possible values:
 | 
				
			||||||
 *  'register_admin_created': Welcome message for user created by the admin
 | 
					 *  'register_admin_created': Welcome message for user created by the admin
 | 
				
			||||||
 *  'register_no_approval_required': Welcome message when user self-registers
 | 
					 *  'register_no_approval_required': Welcome message when user self-registers
 | 
				
			||||||
 *  'register_pending_approval': Welcome message, user pending admin approval
 | 
					 *  'register_pending_approval': Welcome message, user pending admin approval
 | 
				
			||||||
| 
						 | 
					@ -2139,7 +2139,7 @@ function user_preferred_language($account, $default = NULL) {
 | 
				
			||||||
 *  'status_deleted': Account deleted
 | 
					 *  'status_deleted': Account deleted
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param $account
 | 
					 * @param $account
 | 
				
			||||||
 *  The user object of the account being notified.  Must contain at
 | 
					 *  The user object of the account being notified. Must contain at
 | 
				
			||||||
 *  least the fields 'uid', 'name', and 'mail'.
 | 
					 *  least the fields 'uid', 'name', and 'mail'.
 | 
				
			||||||
 * @param $language
 | 
					 * @param $language
 | 
				
			||||||
 *  Optional language to use for the notification, overriding account language.
 | 
					 *  Optional language to use for the notification, overriding account language.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -181,7 +181,7 @@ code-style.pl - Review drupal code for style
 | 
				
			||||||
=head1 DESCRIPTION
 | 
					=head1 DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Originally written for Drupal (http://drupal.org/) to ensure stylish
 | 
					Originally written for Drupal (http://drupal.org/) to ensure stylish
 | 
				
			||||||
code.  This program reviews PHP code, and tries to show as many code
 | 
					code. This program reviews PHP code, and tries to show as many code
 | 
				
			||||||
improvements as possible with no false positives.
 | 
					improvements as possible with no false positives.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 OPTIONS
 | 
					=head1 OPTIONS
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,15 +36,15 @@ All arguments are long options.
 | 
				
			||||||
              produce errors from setting the session.
 | 
					              produce errors from setting the session.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  URI         The URI to execute, i.e. http://default/foo/bar for executing
 | 
					  URI         The URI to execute, i.e. http://default/foo/bar for executing
 | 
				
			||||||
              the path '/foo/bar' in your site 'default'.  URI has to be
 | 
					              the path '/foo/bar' in your site 'default'. URI has to be
 | 
				
			||||||
              enclosed by quotation marks if there are ampersands in it
 | 
					              enclosed by quotation marks if there are ampersands in it
 | 
				
			||||||
              (f.e. index.php?q=node&foo=bar).  Prefix 'http://' is required,
 | 
					              (f.e. index.php?q=node&foo=bar). Prefix 'http://' is required,
 | 
				
			||||||
              and the domain must exist in Drupal's sites-directory.
 | 
					              and the domain must exist in Drupal's sites-directory.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              If the given path and file exists it will be executed directly,
 | 
					              If the given path and file exists it will be executed directly,
 | 
				
			||||||
              i.e. if URI is set to http://default/bar/foo.php
 | 
					              i.e. if URI is set to http://default/bar/foo.php
 | 
				
			||||||
              and bar/foo.php exists, this script will be executed without
 | 
					              and bar/foo.php exists, this script will be executed without
 | 
				
			||||||
              bootstrapping Drupal.  To execute Drupal's cron.php, specify
 | 
					              bootstrapping Drupal. To execute Drupal's cron.php, specify
 | 
				
			||||||
              http://default/cron.php as the URI.
 | 
					              http://default/cron.php as the URI.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@ if (version_compare(PHP_VERSION, "5.2.0", "<")) {
 | 
				
			||||||
  $version  = PHP_VERSION;
 | 
					  $version  = PHP_VERSION;
 | 
				
			||||||
  echo <<<EOF
 | 
					  echo <<<EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ERROR: This script requires at least PHP version 5.2.0.  You invoked it with
 | 
					ERROR: This script requires at least PHP version 5.2.0. You invoked it with
 | 
				
			||||||
       PHP version {$version}.
 | 
					       PHP version {$version}.
 | 
				
			||||||
\n
 | 
					\n
 | 
				
			||||||
EOF;
 | 
					EOF;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -133,13 +133,13 @@ All arguments are long options.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <test1>[,<test2>[,<test3> ...]]
 | 
					  <test1>[,<test2>[,<test3> ...]]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
              One or more tests to be run.  By default, these are interpreted
 | 
					              One or more tests to be run. By default, these are interpreted
 | 
				
			||||||
              as the names of test groups as shown at ?q=admin/build/testing.
 | 
					              as the names of test groups as shown at ?q=admin/build/testing.
 | 
				
			||||||
              These group names typically correspond to module names like "User"
 | 
					              These group names typically correspond to module names like "User"
 | 
				
			||||||
              or "Profile" or "System", but there is also a group "XML-RPC".
 | 
					              or "Profile" or "System", but there is also a group "XML-RPC".
 | 
				
			||||||
              If --class is specified then these are interpreted as the names of
 | 
					              If --class is specified then these are interpreted as the names of
 | 
				
			||||||
              specific test classes whose test methods will be run.  Tests must
 | 
					              specific test classes whose test methods will be run. Tests must
 | 
				
			||||||
              be separated by commas.  Ignored if --all is specified.
 | 
					              be separated by commas. Ignored if --all is specified.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
To run this script you will normally invoke it from the root directory of your
 | 
					To run this script you will normally invoke it from the root directory of your
 | 
				
			||||||
Drupal installation as the webserver user (differs per configuration), or root:
 | 
					Drupal installation as the webserver user (differs per configuration), or root:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -524,11 +524,11 @@ function update_check_incompatibility($name, $type = 'module') {
 | 
				
			||||||
 * to function properly.
 | 
					 * to function properly.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This function runs when update.php is run the first time for 6.x,
 | 
					 * This function runs when update.php is run the first time for 6.x,
 | 
				
			||||||
 * even before updates are selected or performed.  It is important
 | 
					 * even before updates are selected or performed. It is important
 | 
				
			||||||
 * that if updates are not ultimately performed that no changes are
 | 
					 * that if updates are not ultimately performed that no changes are
 | 
				
			||||||
 * made which make it impossible to continue using the prior version.
 | 
					 * made which make it impossible to continue using the prior version.
 | 
				
			||||||
 * Just adding columns is safe.  However, renaming the
 | 
					 * Just adding columns is safe. However, renaming the
 | 
				
			||||||
 * system.description column to owner is not.  Therefore, we add the
 | 
					 * system.description column to owner is not. Therefore, we add the
 | 
				
			||||||
 * system.owner column and leave it to system_update_6008() to copy
 | 
					 * system.owner column and leave it to system_update_6008() to copy
 | 
				
			||||||
 * the data from description and remove description. The same for
 | 
					 * the data from description and remove description. The same for
 | 
				
			||||||
 * renaming locales_target.locale to locales_target.language, which
 | 
					 * renaming locales_target.locale to locales_target.language, which
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue