diff options
Diffstat (limited to 'modules')
28 files changed, 86 insertions, 195 deletions
diff --git a/modules/aggregator/aggregator.module b/modules/aggregator/aggregator.module index b4545dbc0..ce2da3c48 100644 --- a/modules/aggregator/aggregator.module +++ b/modules/aggregator/aggregator.module @@ -377,7 +377,7 @@ function aggregator_block_view($delta = '') { case 'feed': if ($feed = db_query('SELECT fid, title, block FROM {aggregator_feed} WHERE block <> 0 AND fid = :fid', array(':fid' => $id))->fetchObject()) { $block['subject'] = check_plain($feed->title); - $result = db_query_range("SELECT * FROM {aggregator_item} WHERE fid = :fid ORDER BY timestamp DESC, iid DESC", array(':fid' => $id), 0, $feed->block); + $result = db_query_range("SELECT * FROM {aggregator_item} WHERE fid = :fid ORDER BY timestamp DESC, iid DESC", 0, $feed->block, array(':fid' => $id)); $read_more = theme('more_link', url('aggregator/sources/' . $feed->fid), t("View this feed's recent news.")); } break; @@ -385,7 +385,7 @@ function aggregator_block_view($delta = '') { case 'category': if ($category = db_query('SELECT cid, title, block FROM {aggregator_category} WHERE cid = :cid', array(':cid' => $id))->fetchObject()) { $block['subject'] = check_plain($category->title); - $result = db_query_range('SELECT i.* FROM {aggregator_category_item} ci LEFT JOIN {aggregator_item} i ON ci.iid = i.iid WHERE ci.cid = :cid ORDER BY i.timestamp DESC, i.iid DESC', array(':cid' => $category->cid), 0, $category->block); + $result = db_query_range('SELECT i.* FROM {aggregator_category_item} ci LEFT JOIN {aggregator_item} i ON ci.iid = i.iid WHERE ci.cid = :cid ORDER BY i.timestamp DESC, i.iid DESC', 0, $category->block, array(':cid' => $category->cid)); $read_more = theme('more_link', url('aggregator/categories/' . $category->cid), t("View this category's recent news.")); } break; diff --git a/modules/aggregator/aggregator.pages.inc b/modules/aggregator/aggregator.pages.inc index 35583b327..62997e209 100644 --- a/modules/aggregator/aggregator.pages.inc +++ b/modules/aggregator/aggregator.pages.inc @@ -90,10 +90,10 @@ function aggregator_feed_items_load($type, $data = NULL) { $result = db_query_range('SELECT i.*, f.title AS ftitle, f.link AS flink FROM {aggregator_item} i INNER JOIN {aggregator_feed} f ON i.fid = f.fid ORDER BY i.timestamp DESC, i.iid DESC', 0, $range_limit); break; case 'source': - $result = db_query_range('SELECT * FROM {aggregator_item} WHERE fid = :fid ORDER BY timestamp DESC, iid DESC', array(':fid' => $data->fid), 0, $range_limit); + $result = db_query_range('SELECT * FROM {aggregator_item} WHERE fid = :fid ORDER BY timestamp DESC, iid DESC', 0, $range_limit, array(':fid' => $data->fid)); break; case 'category': - $result = db_query_range('SELECT i.*, f.title AS ftitle, f.link AS flink FROM {aggregator_category_item} c LEFT JOIN {aggregator_item} i ON c.iid = i.iid LEFT JOIN {aggregator_feed} f ON i.fid = f.fid WHERE cid = :cid ORDER BY timestamp DESC, i.iid DESC', array(':cid' => $data['cid']), 0, $range_limit); + $result = db_query_range('SELECT i.*, f.title AS ftitle, f.link AS flink FROM {aggregator_category_item} c LEFT JOIN {aggregator_item} i ON c.iid = i.iid LEFT JOIN {aggregator_feed} f ON i.fid = f.fid WHERE cid = :cid ORDER BY timestamp DESC, i.iid DESC', 0, $range_limit, array(':cid' => $data['cid'])); break; } @@ -304,7 +304,7 @@ function aggregator_page_sources() { // Most recent items: $summary_items = array(); if (variable_get('aggregator_summary_items', 3)) { - $items = db_query_range('SELECT i.title, i.timestamp, i.link FROM {aggregator_item} i WHERE i.fid = :fid ORDER BY i.timestamp DESC', array(':fid' => $feed->fid), 0, variable_get('aggregator_summary_items', 3)); + $items = db_query_range('SELECT i.title, i.timestamp, i.link FROM {aggregator_item} i WHERE i.fid = :fid ORDER BY i.timestamp DESC', 0, variable_get('aggregator_summary_items', 3), array(':fid' => $feed->fid)); foreach ($items as $item) { $summary_items[] = theme('aggregator_summary_item', $item); } @@ -327,7 +327,7 @@ function aggregator_page_categories() { foreach ($result as $category) { if (variable_get('aggregator_summary_items', 3)) { $summary_items = array(); - $items = db_query_range('SELECT i.title, i.timestamp, i.link, f.title as feed_title, f.link as feed_link FROM {aggregator_category_item} ci LEFT JOIN {aggregator_item} i ON i.iid = ci.iid LEFT JOIN {aggregator_feed} f ON i.fid = f.fid WHERE ci.cid = :cid ORDER BY i.timestamp DESC', array(':cid' => $category->cid), 0, variable_get('aggregator_summary_items', 3)); + $items = db_query_range('SELECT i.title, i.timestamp, i.link, f.title as feed_title, f.link as feed_link FROM {aggregator_category_item} ci LEFT JOIN {aggregator_item} i ON i.iid = ci.iid LEFT JOIN {aggregator_feed} f ON i.fid = f.fid WHERE ci.cid = :cid ORDER BY i.timestamp DESC', 0, variable_get('aggregator_summary_items', 3), array(':cid' => $category->cid)); foreach ($items as $item) { $summary_items[] = theme('aggregator_summary_item', $item); } @@ -347,7 +347,7 @@ function aggregator_page_rss() { // arg(2) is the passed cid, only select for that category. if (arg(2)) { $category = db_query('SELECT cid, title FROM {aggregator_category} WHERE cid = :cid', array(':cid' => arg(2)))->fetchObject(); - $result = db_query_range('SELECT i.*, f.title AS ftitle, f.link AS flink FROM {aggregator_category_item} c LEFT JOIN {aggregator_item} i ON c.iid = i.iid LEFT JOIN {aggregator_feed} f ON i.fid = f.fid WHERE cid = :cid ORDER BY timestamp DESC, i.iid DESC', array(':cid' => $category->cid), 0, variable_get('feed_default_items', 10)); + $result = db_query_range('SELECT i.*, f.title AS ftitle, f.link AS flink FROM {aggregator_category_item} c LEFT JOIN {aggregator_item} i ON c.iid = i.iid LEFT JOIN {aggregator_feed} f ON i.fid = f.fid WHERE cid = :cid ORDER BY timestamp DESC, i.iid DESC', 0, variable_get('feed_default_items', 10), array(':cid' => $category->cid)); } // Or, get the default aggregator items. else { diff --git a/modules/block/block.admin.inc b/modules/block/block.admin.inc index c0f3c4789..91465f9ee 100644 --- a/modules/block/block.admin.inc +++ b/modules/block/block.admin.inc @@ -333,10 +333,10 @@ function block_admin_configure(&$form_state, $module = NULL, $delta = 0) { function block_admin_configure_validate($form, &$form_state) { if ($form_state['values']['module'] == 'block') { - $custom_block_exists = (bool) db_query_range('SELECT 1 FROM {block_custom} WHERE bid <> :bid AND info = :info', array( + $custom_block_exists = (bool) db_query_range('SELECT 1 FROM {block_custom} WHERE bid <> :bid AND info = :info', 0, 1, array( ':bid' => $form_state['values']['delta'], ':info' => $form_state['values']['info'], - ), 0, 1)->fetchField(); + ))->fetchField(); if (empty($form_state['values']['info']) || $custom_block_exists) { form_set_error('info', t('Please ensure that each block description is unique.')); } @@ -411,7 +411,7 @@ function block_add_block_form(&$form_state) { } function block_add_block_form_validate($form, &$form_state) { - $custom_block_exists = (bool) db_query_range('SELECT 1 FROM {block_custom} WHERE info = :info', array(':info' => $form_state['values']['info']), 0, 1)->fetchField(); + $custom_block_exists = (bool) db_query_range('SELECT 1 FROM {block_custom} WHERE info = :info', 0, 1, array(':info' => $form_state['values']['info']))->fetchField(); if (empty($form_state['values']['info']) || $custom_block_exists) { form_set_error('info', t('Please ensure that each block description is unique.')); diff --git a/modules/block/block.module b/modules/block/block.module index 69592f41f..554b050a6 100644 --- a/modules/block/block.module +++ b/modules/block/block.module @@ -440,7 +440,7 @@ function block_system_themes_form_submit(&$form, &$form_state) { } if ($form_state['values']['admin_theme'] && $form_state['values']['admin_theme'] !== variable_get('admin_theme', 0)) { // If we're changing themes, make sure the theme has its blocks initialized. - $has_blocks = (bool) db_query_range('SELECT 1 FROM {block} WHERE theme = :theme', array(':theme' => $form_state['values']['admin_theme']), 0, 1)->fetchField(); + $has_blocks = (bool) db_query_range('SELECT 1 FROM {block} WHERE theme = :theme', 0, 1, array(':theme' => $form_state['values']['admin_theme']))->fetchField(); if (!$has_blocks) { block_theme_initialize($form_state['values']['admin_theme']); } @@ -461,7 +461,7 @@ function block_system_themes_form_submit(&$form, &$form_state) { */ function block_theme_initialize($theme) { // Initialize theme's blocks if none already registered. - $has_blocks = (bool) db_query_range('SELECT 1 FROM {block} WHERE theme = :theme', array(':theme' => $theme), 0, 1)->fetchField(); + $has_blocks = (bool) db_query_range('SELECT 1 FROM {block} WHERE theme = :theme', 0, 1, array(':theme' => $theme))->fetchField(); if (!$has_blocks) { $default_theme = variable_get('theme_default', 'garland'); $regions = system_region_list($theme); @@ -821,7 +821,7 @@ function block_form_system_performance_settings_alter(&$form, &$form_state) { ); // Check if the "Who's online" block is enabled. - $online_block_enabled = db_query_range("SELECT 1 FROM {block} b WHERE module = 'user' AND delta = 'online' AND status = 1", array(), 0, 1)->fetchField(); + $online_block_enabled = db_query_range("SELECT 1 FROM {block} b WHERE module = 'user' AND delta = 'online' AND status = 1", 0, 1)->fetchField(); // If the "Who's online" block is enabled, append some descriptive text to // the end of the form description. diff --git a/modules/comment/comment.install b/modules/comment/comment.install index 84111ce1e..1b63d4aa3 100644 --- a/modules/comment/comment.install +++ b/modules/comment/comment.install @@ -46,21 +46,6 @@ function comment_enable() { } /** - * Changed node_comment_statistics to use node->changed to avoid future timestamps. - */ -function comment_update_1() { - // Change any future last comment timestamps to current time. - db_query('UPDATE {node_comment_statistics} SET last_comment_timestamp = %d WHERE last_comment_timestamp > %d', REQUEST_TIME, REQUEST_TIME); - - // Unstuck node indexing timestamp if needed. - if (($last = variable_get('node_cron_last', FALSE)) !== FALSE) { - variable_set('node_cron_last', min(REQUEST_TIME, $last)); - } - - return array(); -} - -/** * @defgroup updates-6.x-to-7.x Comment updates from 6.x to 7.x * @{ */ diff --git a/modules/comment/comment.module b/modules/comment/comment.module index 164ef195b..e02f964f4 100644 --- a/modules/comment/comment.module +++ b/modules/comment/comment.module @@ -435,7 +435,7 @@ function comment_new_page_count($num_comments, $new_replies, $node) { WHERE nid = :nid AND status = 0 ORDER BY timestamp DESC) AS thread - ORDER BY SUBSTRING(thread, 1, (LENGTH(thread) - 1))', array(':nid' => $node->nid), 0, $new_replies)->fetchField(); + ORDER BY SUBSTRING(thread, 1, (LENGTH(thread) - 1))', 0, $new_replies, array(':nid' => $node->nid))->fetchField(); $thread = substr($result, 0, -1); $count = db_query('SELECT COUNT(*) FROM {comment} WHERE nid = :nid AND status = 0 AND SUBSTRING(thread, 1, (LENGTH(thread) - 1)) < :thread', array( ':nid' => $node->nid, @@ -2240,10 +2240,10 @@ function _comment_update_node_statistics($nid) { if ($count > 0) { // Comments exist. - $last_reply = db_query_range('SELECT cid, name, timestamp, uid FROM {comment} WHERE nid = :nid AND status = :status ORDER BY cid DESC', array( + $last_reply = db_query_range('SELECT cid, name, timestamp, uid FROM {comment} WHERE nid = :nid AND status = :status ORDER BY cid DESC', 0, 1, array( ':nid' => $nid, ':status' => COMMENT_PUBLISHED, - ), 0, 1)->fetchObject(); + ))->fetchObject(); db_update('node_comment_statistics') ->fields( array( 'comment_count' => $count, diff --git a/modules/field/field.test b/modules/field/field.test index f99821f88..34a561392 100644 --- a/modules/field/field.test +++ b/modules/field/field.test @@ -1036,7 +1036,7 @@ class FieldInfoTestCase extends FieldTestCase { // Simulate a stored field definition missing a field setting (e.g. a // third-party module adding a new field setting has been enabled, and // existing fields do not know the setting yet). - $data = db_result(db_query('SELECT data FROM {field_config} WHERE field_name = :field_name', array(':field_name' => $field_definition['field_name']))); + $data = db_query('SELECT data FROM {field_config} WHERE field_name = :field_name', array(':field_name' => $field_definition['field_name']))->fetchField(); $data = unserialize($data); $data['settings'] = array(); db_update('field_config') @@ -1072,7 +1072,7 @@ class FieldInfoTestCase extends FieldTestCase { // Simulate a stored instance definition missing various settings (e.g. a // third-party module adding instance, widget or display settings has been // enabled, but existing instances do not know the new settings). - $data = db_result(db_query('SELECT data FROM {field_config_instance} WHERE field_name = :field_name AND bundle = :bundle', array(':field_name' => $instance_definition['field_name'], ':bundle' => $instance_definition['bundle']))); + $data = db_query('SELECT data FROM {field_config_instance} WHERE field_name = :field_name AND bundle = :bundle', array(':field_name' => $instance_definition['field_name'], ':bundle' => $instance_definition['bundle']))->fetchField(); $data = unserialize($data); $data['settings'] = array(); $data['widget']['settings'] = 'unavailable_widget'; diff --git a/modules/forum/forum.module b/modules/forum/forum.module index b88e04928..4c1b458ba 100644 --- a/modules/forum/forum.module +++ b/modules/forum/forum.module @@ -252,10 +252,10 @@ function forum_node_validate($node, $form) { $vocabulary = $vid; $containers = variable_get('forum_containers', array()); foreach ($node->taxonomy as $term) { - $used = db_query_range('SELECT 1 FROM {taxonomy_term_data} WHERE tid = :tid AND vid = :vid', array( + $used = db_query_range('SELECT 1 FROM {taxonomy_term_data} WHERE tid = :tid AND vid = :vid', 0, 1, array( ':tid' => $term, ':vid' => $vocabulary, - ), 0, 1)->fetchField(); + ))->fetchField(); if ($used && in_array($term, $containers)) { $term = taxonomy_term_load($term); form_set_error('taxonomy', t('The item %forum is only a container for forums. Please select one of the forums below it.', array('%forum' => $term->name))); @@ -287,7 +287,7 @@ function forum_node_presave($node) { $node->tid = $term_id; } } - $old_tid = db_query_range("SELECT f.tid FROM {forum} f INNER JOIN {node} n ON f.vid = n.vid WHERE n.nid = :nid ORDER BY f.vid DESC", array(':nid' => $node->nid), 0, 1)->fetchField(); + $old_tid = db_query_range("SELECT f.tid FROM {forum} f INNER JOIN {node} n ON f.vid = n.vid WHERE n.nid = :nid ORDER BY f.vid DESC", 0, 1, array(':nid' => $node->nid))->fetchField(); if ($old_tid && isset($node->tid) && ($node->tid != $old_tid) && !empty($node->shadow)) { // A shadow copy needs to be created. Retain new term and add old term. $node->taxonomy[] = $old_tid; diff --git a/modules/menu/menu.admin.inc b/modules/menu/menu.admin.inc index 48818e791..b6956743c 100644 --- a/modules/menu/menu.admin.inc +++ b/modules/menu/menu.admin.inc @@ -570,7 +570,7 @@ function menu_edit_menu_validate($form, &$form_state) { // We will add 'menu-' to the menu name to help avoid name-space conflicts. $item['menu_name'] = 'menu-' . $item['menu_name']; $custom_exists = db_query('SELECT menu_name FROM {menu_custom} WHERE menu_name = :menu', array(':menu' => $item['menu_name']))->fetchField(); - $link_exists = db_query_range("SELECT menu_name FROM {menu_links} WHERE menu_name = :menu", array(':menu' => $item['menu_name']), 0, 1)->fetchField(); + $link_exists = db_query_range("SELECT menu_name FROM {menu_links} WHERE menu_name = :menu", 0, 1, array(':menu' => $item['menu_name']))->fetchField(); if ($custom_exists || $link_exists) { form_set_error('menu_name', t('The menu already exists.')); } diff --git a/modules/menu/menu.module b/modules/menu/menu.module index cef743390..7fc3ebe1f 100644 --- a/modules/menu/menu.module +++ b/modules/menu/menu.module @@ -365,17 +365,15 @@ function menu_node_prepare($node) { $item = array(); if (isset($node->nid)) { // Give priority to the default menu - $mlid = db_query_range("SELECT mlid FROM {menu_links} WHERE link_path = :path AND menu_name = :menu_name AND module = 'menu' ORDER BY mlid ASC", array( + $mlid = db_query_range("SELECT mlid FROM {menu_links} WHERE link_path = :path AND menu_name = :menu_name AND module = 'menu' ORDER BY mlid ASC", 0, 1, array( ':path' => 'node/' . $node->nid, ':menu_name' => $menu_name, - ), 0, 1) - ->fetchField(); + ))->fetchField(); // Check all menus if a link does not exist in the default menu. if (!$mlid) { - $mlid = db_query_range("SELECT mlid FROM {menu_links} WHERE link_path = :path AND module = 'menu' ORDER BY mlid ASC", array( + $mlid = db_query_range("SELECT mlid FROM {menu_links} WHERE link_path = :path AND module = 'menu' ORDER BY mlid ASC", 0, 1, array( ':path' => 'node/' . $node->nid, - ), 0, 1) - ->fetchField(); + ))->fetchField(); } if ($mlid) { $item = menu_link_load($mlid); diff --git a/modules/node/node.module b/modules/node/node.module index 28246c84f..f7706603c 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -470,7 +470,7 @@ function node_types_rebuild() { function node_type_save($info) { $is_existing = FALSE; $existing_type = !empty($info->old_type) ? $info->old_type : $info->type; - $is_existing = (bool) db_query_range('SELECT 1 FROM {node_type} WHERE type = :type', array(':type' => $existing_type), 0, 1)->fetchField(); + $is_existing = (bool) db_query_range('SELECT 1 FROM {node_type} WHERE type = :type', 0, 1, array(':type' => $existing_type))->fetchField(); $type = node_type_set_defaults($info); $fields = array( @@ -2357,61 +2357,6 @@ function node_permissions_get_configured_types() { } /** - * Generate an SQL join clause for use in fetching a node listing. - * - * @param $node_alias - * If the node table has been given an SQL alias other than the default - * "n", that must be passed here. - * @param $node_access_alias - * If the node_access table has been given an SQL alias other than the default - * "na", that must be passed here. - * @return - * An SQL join clause. - */ -function _node_access_join_sql($node_alias = 'n', $node_access_alias = 'na') { - if (user_access('bypass node access')) { - return ''; - } - - return 'INNER JOIN {node_access} ' . $node_access_alias . ' ON ' . $node_access_alias . '.nid = ' . $node_alias . '.nid'; -} - -/** - * Generate an SQL where clause for use in fetching a node listing. - * - * @param $op - * The operation that must be allowed to return a node. - * @param $node_access_alias - * If the node_access table has been given an SQL alias other than the default - * "na", that must be passed here. - * @param $account - * The user object for the user performing the operation. If omitted, the - * current user is used. - * @return - * An SQL where clause. - */ -function _node_access_where_sql($op = 'view', $node_access_alias = 'na', $account = NULL) { - if (user_access('bypass node access')) { - return; - } - - $grants = array(); - foreach (node_access_grants($op, $account) as $realm => $gids) { - foreach ($gids as $gid) { - $grants[] = "($node_access_alias.gid = $gid AND $node_access_alias.realm = '$realm')"; - } - } - - $grants_sql = ''; - if (count($grants)) { - $grants_sql = 'AND (' . implode(' OR ', $grants) . ')'; - } - - $sql = "$node_access_alias.grant_$op >= 1 $grants_sql"; - return $sql; -} - -/** * Fetch an array of permission IDs granted to the given user ID. * * The implementation here provides only the universal "all" grant. A node @@ -2484,17 +2429,6 @@ function node_access_view_all_nodes() { return $access; } -/** - * Implement hook_db_rewrite_sql(). - */ -function node_db_rewrite_sql($query, $primary_table, $primary_field) { - if ($primary_field == 'nid' && !node_access_view_all_nodes()) { - $return['join'] = _node_access_join_sql($primary_table); - $return['where'] = _node_access_where_sql(); - $return['distinct'] = 1; - return $return; - } -} /** * Implement hook_query_TAG_alter(). @@ -2739,7 +2673,7 @@ function _node_access_rebuild_batch_operation(&$context) { // Process the next 20 nodes. $limit = 20; - $nids = db_query_range("SELECT nid FROM {node} WHERE nid > :nid ORDER BY nid ASC", array(':nid' => $context['sandbox']['current_node']), 0, $limit)->fetchCol(); + $nids = db_query_range("SELECT nid FROM {node} WHERE nid > :nid ORDER BY nid ASC", 0, $limit, array(':nid' => $context['sandbox']['current_node']))->fetchCol(); $nodes = node_load_multiple($nids, array(), TRUE); foreach ($nodes as $node) { // To preserve database integrity, only acquire grants if the node @@ -3055,7 +2989,7 @@ function node_assign_owner_action_form($context) { } function node_assign_owner_action_validate($form, $form_state) { - $exists = (bool) db_query_range('SELECT 1 FROM {users} WHERE name = :name', array(':name' => $form_state['values']['owner_name']), 0, 1)->fetchField(); + $exists = (bool) db_query_range('SELECT 1 FROM {users} WHERE name = :name', 0, 1, array(':name' => $form_state['values']['owner_name']))->fetchField(); if (!$exists) { form_set_error('owner_name', t('Please enter a valid username.')); } diff --git a/modules/path/path.admin.inc b/modules/path/path.admin.inc index 0bcbf5636..cccf5e649 100644 --- a/modules/path/path.admin.inc +++ b/modules/path/path.admin.inc @@ -15,7 +15,7 @@ function path_admin_overview($keys = NULL) { // Add the filter form above the overview table. $build['path_admin_filter_form'] = drupal_get_form('path_admin_filter_form', $keys); // Enable language column if locale is enabled or if we have any alias with language - $alias_exists = (bool) db_query_range('SELECT 1 FROM {url_alias} WHERE language <> :language', array(':language' => ''), 0, 1)->fetchField(); + $alias_exists = (bool) db_query_range('SELECT 1 FROM {url_alias} WHERE language <> :language', 0, 1, array(':language' => ''))->fetchField(); $multilanguage = (module_exists('locale') || $alias_exists); $header = array( diff --git a/modules/php/php.install b/modules/php/php.install index cafc2aeb5..aec038d3b 100644 --- a/modules/php/php.install +++ b/modules/php/php.install @@ -10,7 +10,7 @@ * Implement hook_install(). */ function php_install() { - $format_exists = (bool) db_query_range('SELECT 1 FROM {filter_format} WHERE name = :name', array(':name' => 'PHP code'), 0, 1)->fetchField(); + $format_exists = (bool) db_query_range('SELECT 1 FROM {filter_format} WHERE name = :name', 0, 1, array(':name' => 'PHP code'))->fetchField(); // Add a PHP code text format, if it does not exist. Do this only for the // first install (or if the format has been manually deleted) as there is no // reliable method to identify the format in an uninstall hook or in diff --git a/modules/profile/profile.admin.inc b/modules/profile/profile.admin.inc index f1bf2855c..df07bdeec 100644 --- a/modules/profile/profile.admin.inc +++ b/modules/profile/profile.admin.inc @@ -420,7 +420,7 @@ function profile_field_delete_submit($form, &$form_state) { */ function profile_admin_settings_autocomplete($string) { $matches = array(); - $result = db_query_range("SELECT category FROM {profile_field} WHERE LOWER(category) LIKE LOWER(:category)", array(':category' => $string . '%'), 0, 10); + $result = db_query_range("SELECT category FROM {profile_field} WHERE LOWER(category) LIKE LOWER(:category)", 0, 10, array(':category' => $string . '%')); foreach ($result as $data) { $matches[$data->category] = check_plain($data->category); } diff --git a/modules/profile/profile.module b/modules/profile/profile.module index efe8830fe..ac6cd9118 100644 --- a/modules/profile/profile.module +++ b/modules/profile/profile.module @@ -510,10 +510,10 @@ function profile_category_access($account, $category) { return TRUE; } else { - $category_visible = (bool) db_query_range('SELECT 1 FROM {profile_field} WHERE category = :category AND visibility <> :visibility', array( + $category_visible = (bool) db_query_range('SELECT 1 FROM {profile_field} WHERE category = :category AND visibility <> :visibility', 0, 1, array( ':category' => $category, ':visibility' => PROFILE_HIDDEN - ), 0, 1)->fetchField(); + ))->fetchField(); return user_edit_access($account) && $category_visible; } } diff --git a/modules/profile/profile.pages.inc b/modules/profile/profile.pages.inc index 8f69d888b..b338e8604 100644 --- a/modules/profile/profile.pages.inc +++ b/modules/profile/profile.pages.inc @@ -123,12 +123,12 @@ function profile_browse() { */ function profile_autocomplete($field, $string) { $matches = array(); - $autocomplete_field = (bool) db_query_range("SELECT 1 FROM {profile_field} WHERE fid = :fid AND autocomplete = 1", array(':fid' => $field), 0, 1)->fetchField(); + $autocomplete_field = (bool) db_query_range("SELECT 1 FROM {profile_field} WHERE fid = :fid AND autocomplete = 1", 0, 1, array(':fid' => $field))->fetchField(); if ($autocomplete_field) { - $values = db_query_range("SELECT value FROM {profile_value} WHERE fid = :fid AND LOWER(value) LIKE LOWER(:value) GROUP BY value ORDER BY value ASC", array( + $values = db_query_range("SELECT value FROM {profile_value} WHERE fid = :fid AND LOWER(value) LIKE LOWER(:value) GROUP BY value ORDER BY value ASC", 0, 10, array( ':fid' => $field, ':value' => $string . '%', - ), 0, 10)->fetchCol(); + ))->fetchCol(); foreach ($values as $value) { $matches[$value] = check_plain($value); } diff --git a/modules/simpletest/simpletest.module b/modules/simpletest/simpletest.module index 55bedae2b..c3c522248 100644 --- a/modules/simpletest/simpletest.module +++ b/modules/simpletest/simpletest.module @@ -252,8 +252,8 @@ function _simpletest_batch_finished($success, $results, $operations, $elapsed) { * that ran. */ function simpletest_last_test_get($test_id) { - $last_prefix = db_result(db_query_range('SELECT last_prefix FROM {simpletest_test_id} WHERE test_id = :test_id', array(':test_id' => $test_id), 0, 1)); - $last_test_class = db_result(db_query_range('SELECT test_class FROM {simpletest} WHERE test_id = :test_id ORDER BY message_id DESC', array(':test_id' => $test_id), 0, 1)); + $last_prefix = db_query_range('SELECT last_prefix FROM {simpletest_test_id} WHERE test_id = :test_id', 0, 1, array(':test_id' => $test_id))->fetchField(); + $last_test_class = db_query_range('SELECT test_class FROM {simpletest} WHERE test_id = :test_id ORDER BY message_id DESC', 0, 1, array(':test_id' => $test_id))->fetchField(); return array($last_prefix, $last_test_class); } diff --git a/modules/simpletest/tests/actions.test b/modules/simpletest/tests/actions.test index 14e0dbf93..a36684047 100644 --- a/modules/simpletest/tests/actions.test +++ b/modules/simpletest/tests/actions.test @@ -115,7 +115,7 @@ class ActionLoopTestCase extends DrupalWebTestCase { $result = db_query("SELECT * FROM {watchdog} WHERE type = 'actions_loop_test' OR type = 'actions' ORDER BY timestamp"); $loop_started = FALSE; - while ($row = db_fetch_object($result)) { + foreach ($result as $row) { $expected_message = array_shift($expected); $this->assertEqual($row->message, $expected_message, t('Expected message %expected, got %message.', array('%expected' => $expected_message, '%message' => $row->message))); diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test index e12431a30..1e3a52fe7 100644 --- a/modules/simpletest/tests/database_test.test +++ b/modules/simpletest/tests/database_test.test @@ -2448,7 +2448,7 @@ class DatabaseRangeQueryTestCase extends DrupalWebTestCase { */ function testRangeQuery() { // Test if return correct number of rows. - $range_rows = db_query_range("SELECT name FROM {system} ORDER BY name", array(), 2, 3)->fetchAll(); + $range_rows = db_query_range("SELECT name FROM {system} ORDER BY name", 2, 3)->fetchAll(); $this->assertEqual(count($range_rows), 3, t('Range query work and return correct number of rows.')); // Test if return target data. diff --git a/modules/system/system.api.php b/modules/system/system.api.php index da3d489ee..1251187ab 100644 --- a/modules/system/system.api.php +++ b/modules/system/system.api.php @@ -138,53 +138,6 @@ function hook_cron() { } /** - * Rewrite database queries, usually for access control. - * - * Add JOIN and WHERE statements to queries and decide whether the primary_field - * shall be made DISTINCT. For node objects, primary field is always called nid. - * For taxonomy terms, it is tid and for vocabularies it is vid. For comments, - * it is cid. Primary table is the table where the primary object (node, file, - * taxonomy_term_node etc.) is. - * - * You shall return an associative array. Possible keys are 'join', 'where' and - * 'distinct'. The value of 'distinct' shall be 1 if you want that the - * primary_field made DISTINCT. - * - * @param $query - * Query to be rewritten. - * @param $primary_table - * Name or alias of the table which has the primary key field for this query. - * Typical table names would be: {block}, {comment}, {forum}, {node}, - * {menu}, {taxonomy_term_data} or {taxonomy_vocabulary}. However, it is more common for - * $primary_table to contain the usual table alias: b, c, f, n, m, t or v. - * @param $primary_field - * Name of the primary field. - * @param $args - * Array of additional arguments. - * @return - * An array of join statements, where statements, distinct decision. - */ -function hook_db_rewrite_sql($query, $primary_table, $primary_field, $args) { - switch ($primary_field) { - case 'nid': - // this query deals with node objects - $return = array(); - if ($primary_table != 'n') { - $return['join'] = "LEFT JOIN {node} n ON $primary_table.nid = n.nid"; - } - $return['where'] = 'created >' . mktime(0, 0, 0, 1, 1, 2005); - return $return; - break; - case 'tid': - // this query deals with taxonomy objects - break; - case 'vid': - // this query deals with vocabulary objects - break; - } -} - -/** * Allows modules to declare their own Forms API element types and specify their * default values. * @@ -1432,7 +1385,7 @@ function hook_file_move($file, $source) { */ function hook_file_references($file) { // If upload.module is still using a file, do not let other modules delete it. - $file_used = (bool) db_query_range('SELECT 1 FROM {upload} WHERE fid = :fid', array(':fid' => $file->fid), 0, 1)->fetchField(); + $file_used = (bool) db_query_range('SELECT 1 FROM {upload} WHERE fid = :fid', 0, 1, array(':fid' => $file->fid))->fetchField(); if ($file_used) { // Return the name of the module and how many references it has to the file. return array('upload' => $count); diff --git a/modules/system/system.install b/modules/system/system.install index 380d679fc..85423a0a4 100644 --- a/modules/system/system.install +++ b/modules/system/system.install @@ -350,17 +350,38 @@ function system_install() { // uid 2 which is not what we want. So we insert the first user here, the // anonymous user. uid is 1 here for now, but very soon it will be changed // to 0. - db_query("INSERT INTO {users} (name, mail) VALUES('%s', '%s')", '', ''); + db_insert('users') + ->fields(array( + 'name' => '', + 'mail' => '', + )) + ->execute(); // We need some placeholders here as name and mail are uniques and data is // presumed to be a serialized array. Install will change uid 1 immediately // anyways. So we insert the superuser here, the uid is 2 here for now, but // very soon it will be changed to 1. - db_query("INSERT INTO {users} (name, mail, created, status, data) VALUES('%s', '%s', %d, %d, '%s')", 'placeholder-for-uid-1', 'placeholder-for-uid-1', REQUEST_TIME, 1, serialize(array())); + + db_insert('users') + ->fields(array( + 'name' => 'placeholder-for-uid-1', + 'mail' => 'placeholder-for-uid-1', + 'created' => REQUEST_TIME, + 'status' => 1, + 'data' => serialize(array()), + )) + ->execute(); // This sets the above two users uid 0 (anonymous). We avoid an explicit 0 // otherwise MySQL might insert the next auto_increment value. - db_query("UPDATE {users} SET uid = uid - uid WHERE name = '%s'", ''); + db_update('users') + ->expression('uid', 'uid - uid') + ->condition('name', '') + ->execute(); + // This sets uid 1 (superuser). We skip uid 2 but that's not a big problem. - db_query("UPDATE {users} SET uid = 1 WHERE name = '%s'", 'placeholder-for-uid-1'); + db_update('users') + ->fields(array('uid' => 1)) + ->condition('name', 'placeholder-for-uid-1') + ->execute(); // Built-in roles. $rid_anonymous = db_insert('role') diff --git a/modules/system/system.queue.inc b/modules/system/system.queue.inc index 1970c50c3..bdaca4efb 100644 --- a/modules/system/system.queue.inc +++ b/modules/system/system.queue.inc @@ -204,7 +204,7 @@ class SystemQueue implements DrupalQueueInterface { // meantime. Therefore loop until an item is successfully claimed or we are // reasonably sure there are no unclaimed items left. while (TRUE) { - $item = db_query_range('SELECT data, item_id FROM {queue} q WHERE consumer_id = 0 AND name = :name ORDER BY created ASC', array(':name' => $this->name), 0, 1)->fetchObject(); + $item = db_query_range('SELECT data, item_id FROM {queue} q WHERE consumer_id = 0 AND name = :name ORDER BY created ASC', 0, 1, array(':name' => $this->name))->fetchObject(); if ($item) { // Try to mark the item as ours. We cannot rely on REQUEST_TIME // because items might be claimed by a single consumer which runs diff --git a/modules/taxonomy/taxonomy.tokens.inc b/modules/taxonomy/taxonomy.tokens.inc index fc321700f..f2ee1aac9 100644 --- a/modules/taxonomy/taxonomy.tokens.inc +++ b/modules/taxonomy/taxonomy.tokens.inc @@ -124,7 +124,7 @@ function taxonomy_tokens($type, $tokens, array $data = array(), array $options = case 'node-count': $sql = "SELECT COUNT (1) FROM {taxonomy_term_node} tn WHERE tn.tid = :tid"; - $count = db_result(db_query($sql, array(':tid' => $term->tid))); + $count = db_query($sql, array(':tid' => $term->tid))->fetchField(); $replacements[$original] = $count; break; @@ -172,13 +172,13 @@ function taxonomy_tokens($type, $tokens, array $data = array(), array $options = case 'term-count': $sql = "SELECT COUNT (1) FROM {taxonomy_term_data} td WHERE td.vid = :vid"; - $count = db_result(db_query($sql, array(':vid' => $vocabulary->vid))); + $count = db_query($sql, array(':vid' => $vocabulary->vid))->fetchField(); $replacements[$original] = $count; break; case 'node-count': $sql = "SELECT COUNT (1) FROM {taxonomy_term_node} tn LEFT JOIN {taxonomy_term_data} td ON tn.tid = td.tid WHERE td.vid = :vid"; - $count = db_result(db_query($sql, array(':vid' => $vocabulary->vid))); + $count = db_query($sql, array(':vid' => $vocabulary->vid))->fetchField(); $replacements[$original] = $count; break; } diff --git a/modules/tracker/tracker.module b/modules/tracker/tracker.module index c8a32ec57..e80e2f41e 100644 --- a/modules/tracker/tracker.module +++ b/modules/tracker/tracker.module @@ -69,7 +69,7 @@ function tracker_cron() { $batch_size = variable_get('tracker_batch_size', 1000); if ($max_nid > 0) { $last_nid = FALSE; - $result = db_query_range('SELECT nid, uid, status FROM {node} WHERE nid <= :max_nid ORDER BY nid DESC', array(':max_nid' => $max_nid), 0, $batch_size); + $result = db_query_range('SELECT nid, uid, status FROM {node} WHERE nid <= :max_nid ORDER BY nid DESC', 0, $batch_size, array(':max_nid' => $max_nid)); $count = 0; @@ -266,10 +266,10 @@ function _tracker_add($nid, $uid, $changed) { */ function _tracker_calculate_changed($nid) { $changed = db_query('SELECT changed FROM {node} WHERE nid = :nid', array(':nid' => $nid))->fetchField(); - $latest_comment = db_query_range('SELECT cid, timestamp FROM {comment} WHERE nid = :nid AND status = :status ORDER BY timestamp DESC', array( + $latest_comment = db_query_range('SELECT cid, timestamp FROM {comment} WHERE nid = :nid AND status = :status ORDER BY timestamp DESC', 0, 1, array( ':nid' => $nid, ':status' => COMMENT_PUBLISHED, - ), 0, 1)->fetchObject(); + ))->fetchObject(); if ($latest_comment && $latest_comment->timestamp > $changed) { $changed = $latest_comment->timestamp; } @@ -301,10 +301,10 @@ function _tracker_remove($nid, $uid = NULL, $changed = NULL) { // Comments are a second reason to keep the user's subscription. if (!$keep_subscription) { // Check if the user has commented at least once on the given nid - $keep_subscription = db_query_range('SELECT COUNT(*) FROM {comment} WHERE nid = :nid AND uid = :uid AND status = 0', array( + $keep_subscription = db_query_range('SELECT COUNT(*) FROM {comment} WHERE nid = :nid AND uid = :uid AND status = 0', 0, 1, array( ':nid' => $nid, ':uid' => $uid, - ), 0, 1)->fetchField(); + ))->fetchField(); } // If we haven't found a reason to keep the user's subscription, delete it. diff --git a/modules/upload/upload.module b/modules/upload/upload.module index 76bc7b2b6..055e0cd91 100644 --- a/modules/upload/upload.module +++ b/modules/upload/upload.module @@ -281,7 +281,7 @@ function upload_file_load($files) { */ function upload_file_references($file) { // If upload.module is still using a file, do not let other modules delete it. - $file_used = (bool) db_query_range('SELECT 1 FROM {upload} WHERE fid = :fid', array(':fid' => $file->fid), 0, 1)->fetchField(); + $file_used = (bool) db_query_range('SELECT 1 FROM {upload} WHERE fid = :fid', 0, 1, array(':fid' => $file->fid))->fetchField(); if ($file_used) { // Return the name of the module and how many references it has to the file. return array('upload' => $count); diff --git a/modules/user/user.install b/modules/user/user.install index 2e3971888..889756e96 100644 --- a/modules/user/user.install +++ b/modules/user/user.install @@ -270,7 +270,7 @@ function user_update_7000(&$sandbox) { $has_rows = FALSE; // Update this many per page load. $count = 1000; - $result = db_query_range("SELECT uid, pass FROM {users} WHERE uid > 0 ORDER BY uid", array(), $sandbox['user_from'], $count); + $result = db_query_range("SELECT uid, pass FROM {users} WHERE uid > 0 ORDER BY uid", $sandbox['user_from'], $count); foreach ($result as $account) { $has_rows = TRUE; $new_hash = user_hash_password($account->pass, $hash_count_log2); @@ -328,7 +328,7 @@ function user_update_7002(&$sandbox) { $contributed_date_module = db_column_exists('users', 'timezone_name'); $contributed_event_module = db_column_exists('users', 'timezone_id'); - $results = db_query_range("SELECT uid FROM {users} ORDER BY uid", array(), $sandbox['user_from'], $count); + $results = db_query_range("SELECT uid FROM {users} ORDER BY uid", $sandbox['user_from'], $count); foreach ($results as $account) { $timezone = NULL; // If the contributed Date module has created a users.timezone_name @@ -434,7 +434,7 @@ function user_update_7004(&$sandbox) { // As a batch operation move the photos into the {file} table and update the // {users} records. $limit = 500; - $result = db_query_range("SELECT uid, picture FROM {user} WHERE picture <> '' AND uid > :uid ORDER BY uid", array(':uid' => $sandbox['last_user_processed']), 0, $limit); + $result = db_query_range("SELECT uid, picture FROM {user} WHERE picture <> '' AND uid > :uid ORDER BY uid", 0, $limit, array(':uid' => $sandbox['last_user_processed'])); foreach ($result as $user) { // Don't bother adding files that don't exist. if (!file_exists($user->picture)) { diff --git a/modules/user/user.module b/modules/user/user.module index dd05a9efd..d143c6366 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -761,7 +761,7 @@ function user_file_download($filepath) { */ function user_file_references($file) { // Determine if the file is used by this module. - $file_used = (bool) db_query_range('SELECT 1 FROM {users} WHERE picture = :fid', array(':fid' => $file->fid), 0, 1)->fetchField(); + $file_used = (bool) db_query_range('SELECT 1 FROM {users} WHERE picture = :fid', 0, 1, array(':fid' => $file->fid))->fetchField(); if ($file_used) { // Return the name of the module and how many references it has to the file. return array('user' => $count); @@ -880,7 +880,7 @@ function user_user_validate(&$edit, $account, $category) { if ($error = user_validate_name($edit['name'])) { form_set_error('name', $error); } - elseif ((bool) db_query_range("SELECT 1 FROM {users} WHERE uid <> :uid AND LOWER(name) = LOWER(:name)", array(':uid' => $uid, ':name' => $edit['name']), 0, 1)->fetchField()) { + elseif ((bool) db_query_range("SELECT 1 FROM {users} WHERE uid <> :uid AND LOWER(name) = LOWER(:name)", 0, 1, array(':uid' => $uid, ':name' => $edit['name']))->fetchField()) { form_set_error('name', t('The name %name is already taken.', array('%name' => $edit['name']))); } } @@ -889,7 +889,7 @@ function user_user_validate(&$edit, $account, $category) { if ($error = user_validate_mail($edit['mail'])) { form_set_error('mail', $error); } - elseif ((bool) db_query_range("SELECT 1 FROM {users} WHERE uid <> :uid AND LOWER(mail) = LOWER(:mail)", array(':uid' => $uid, ':mail' => $edit['mail']), 0, 1)->fetchField()) { + elseif ((bool) db_query_range("SELECT 1 FROM {users} WHERE uid <> :uid AND LOWER(mail) = LOWER(:mail)", 0, 1, array(':uid' => $uid, ':mail' => $edit['mail']))->fetchField()) { // Format error message dependent on whether the user is logged in or not. if ($GLOBALS['user']->uid) { form_set_error('mail', t('The e-mail address %email is already taken.', array('%email' => $edit['mail']))); @@ -1056,7 +1056,7 @@ function user_block_view($delta = '') { case 'new': if (user_access('access content')) { // Retrieve a list of new users who have subsequently accessed the site successfully. - $items = db_query_range('SELECT uid, name FROM {users} WHERE status <> 0 AND access <> 0 ORDER BY created DESC', array(), 0, variable_get('user_block_whois_new_count', 5))->fetchAll(); + $items = db_query_range('SELECT uid, name FROM {users} WHERE status <> 0 AND access <> 0 ORDER BY created DESC', 0, variable_get('user_block_whois_new_count', 5))->fetchAll(); $output = theme('user_list', $items); $block['subject'] = t('Who\'s new'); @@ -1092,7 +1092,7 @@ function user_block_view($delta = '') { // Display a list of currently online users. $max_users = variable_get('user_block_max_list_count', 10); if ($authenticated_count && $max_users) { - $items = db_query_range('SELECT u.uid, u.name, MAX(s.timestamp) AS max_timestamp FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.timestamp >= :interval AND s.uid > 0 GROUP BY u.uid, u.name ORDER BY max_timestamp DESC', array(':interval' => $interval), 0, $max_users)->fetchAll(); + $items = db_query_range('SELECT u.uid, u.name, MAX(s.timestamp) AS max_timestamp FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.timestamp >= :interval AND s.uid > 0 GROUP BY u.uid, u.name ORDER BY max_timestamp DESC', 0, $max_users, array(':interval' => $interval))->fetchAll(); $output .= theme('user_list', $items, t('Online users')); } diff --git a/modules/user/user.pages.inc b/modules/user/user.pages.inc index efb300174..43028f07e 100644 --- a/modules/user/user.pages.inc +++ b/modules/user/user.pages.inc @@ -12,7 +12,7 @@ function user_autocomplete($string = '') { $matches = array(); if ($string) { - $result = db_query_range("SELECT name FROM {users} WHERE LOWER(name) LIKE LOWER(:name)", array(':name' => $string . '%'), 0, 10); + $result = db_query_range("SELECT name FROM {users} WHERE LOWER(name) LIKE LOWER(:name)", 0, 10, array(':name' => $string . '%')); foreach ($result as $user) { $matches[$user->name] = check_plain($user->name); } |