- Patch #394572 by Berdir: converted system module to the new database abstraction layer.
							parent
							
								
									6cc59e5260
								
							
						
					
					
						commit
						196da1b876
					
				| 
						 | 
				
			
			@ -22,13 +22,13 @@ function system_main_admin_page($arg = NULL) {
 | 
			
		|||
    drupal_set_message(t('One or more problems were detected with your Drupal installation. Check the <a href="@status">status report</a> for more information.', array('@status' => url('admin/reports/status'))), 'error');
 | 
			
		||||
  }
 | 
			
		||||
  $blocks = array();
 | 
			
		||||
  if ($admin = db_fetch_array(db_query("SELECT menu_name, mlid FROM {menu_links} WHERE link_path = 'admin' AND module = 'system'"))) {
 | 
			
		||||
  if ($admin = db_query("SELECT menu_name, mlid FROM {menu_links} WHERE link_path = 'admin' AND module = 'system'")->fetchAssoc()) {
 | 
			
		||||
    $result = db_query("
 | 
			
		||||
      SELECT m.*, ml.*
 | 
			
		||||
      FROM {menu_links} ml
 | 
			
		||||
      INNER JOIN {menu_router} m ON ml.router_path = m.path
 | 
			
		||||
      WHERE ml.link_path != 'admin/help' AND menu_name = '%s' AND ml.plid = %d AND hidden = 0", $admin);
 | 
			
		||||
    while ($item = db_fetch_array($result)) {
 | 
			
		||||
      WHERE ml.link_path != 'admin/help' AND menu_name = :menu_name AND ml.plid = :mlid AND hidden = 0", $admin, array('fetch' => PDO::FETCH_ASSOC));
 | 
			
		||||
    foreach ($result as $item) {
 | 
			
		||||
      _menu_link_translate($item);
 | 
			
		||||
      if (!$item['access']) {
 | 
			
		||||
        continue;
 | 
			
		||||
| 
						 | 
				
			
			@ -246,7 +246,10 @@ function system_themes_form_submit($form, &$form_state) {
 | 
			
		|||
      $old_theme_list[] = $theme->name;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  db_query("UPDATE {system} SET status = 0 WHERE type = 'theme'");
 | 
			
		||||
  db_update('system')
 | 
			
		||||
    ->fields(array('status' => 0))
 | 
			
		||||
    ->condition('type', 'theme')
 | 
			
		||||
    ->execute();
 | 
			
		||||
 | 
			
		||||
  if ($form_state['values']['op'] == t('Save configuration')) {
 | 
			
		||||
    if (is_array($form_state['values']['status'])) {
 | 
			
		||||
| 
						 | 
				
			
			@ -254,7 +257,11 @@ function system_themes_form_submit($form, &$form_state) {
 | 
			
		|||
        // Always enable the default theme, despite its status checkbox being checked:
 | 
			
		||||
        if ($choice || $form_state['values']['theme_default'] == $key) {
 | 
			
		||||
          $new_theme_list[] = $key;
 | 
			
		||||
          db_query("UPDATE {system} SET status = 1 WHERE type = 'theme' and name = '%s'", $key);
 | 
			
		||||
          db_update('system')
 | 
			
		||||
            ->fields(array('status' => 1))
 | 
			
		||||
            ->condition('type', 'theme')
 | 
			
		||||
            ->condition('name', $key)
 | 
			
		||||
            ->execute();
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -276,7 +283,11 @@ function system_themes_form_submit($form, &$form_state) {
 | 
			
		|||
    variable_del('theme_default');
 | 
			
		||||
    variable_del('admin_theme');
 | 
			
		||||
    variable_del('node_admin_theme');
 | 
			
		||||
    db_query("UPDATE {system} SET status = 1 WHERE type = 'theme' AND name = 'garland'");
 | 
			
		||||
    db_update('system')
 | 
			
		||||
      ->fields(array('status' => 1))
 | 
			
		||||
      ->condition('type', 'theme')
 | 
			
		||||
      ->condition('name', 'garland')
 | 
			
		||||
      ->execute();
 | 
			
		||||
    $new_theme_list = array('garland');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -962,8 +973,8 @@ function system_modules_uninstall($form_state = NULL) {
 | 
			
		|||
  $form = array();
 | 
			
		||||
 | 
			
		||||
  // Pull all disabled modules from the system table.
 | 
			
		||||
  $disabled_modules = db_query("SELECT name, filename, info FROM {system} WHERE type = 'module' AND status = 0 AND schema_version > %d ORDER BY name", SCHEMA_UNINSTALLED);
 | 
			
		||||
  while ($module = db_fetch_object($disabled_modules)) {
 | 
			
		||||
  $disabled_modules = db_query("SELECT name, filename, info FROM {system} WHERE type = 'module' AND status = 0 AND schema_version > :schema ORDER BY name", array(':schema' => SCHEMA_UNINSTALLED));
 | 
			
		||||
  foreach ($disabled_modules as $module) {
 | 
			
		||||
 | 
			
		||||
    // Grab the module info
 | 
			
		||||
    $info = unserialize($module->info);
 | 
			
		||||
| 
						 | 
				
			
			@ -1077,7 +1088,7 @@ function system_ip_blocking() {
 | 
			
		|||
  $rows = array();
 | 
			
		||||
  $header = array(t('IP address'), t('Operations'));
 | 
			
		||||
  $result = db_query('SELECT * FROM {blocked_ips}');
 | 
			
		||||
  while ($ip = db_fetch_object($result)) {
 | 
			
		||||
  foreach ($result as $ip) {
 | 
			
		||||
    $rows[] = array(
 | 
			
		||||
      $ip->ip,
 | 
			
		||||
      l(t('delete'), "admin/settings/ip-blocking/delete/$ip->iid"),
 | 
			
		||||
| 
						 | 
				
			
			@ -1118,7 +1129,7 @@ function system_ip_blocking_form($form_state) {
 | 
			
		|||
 | 
			
		||||
function system_ip_blocking_form_validate($form, &$form_state) {
 | 
			
		||||
  $ip = trim($form_state['values']['ip']);
 | 
			
		||||
  if (db_result(db_query("SELECT * FROM {blocked_ips} WHERE ip = '%s'", $ip))) {
 | 
			
		||||
  if (db_query("SELECT * FROM {blocked_ips} WHERE ip = :ip", array(':ip' => $ip))->fetchField()) {
 | 
			
		||||
    form_set_error('ip', t('This IP address is already blocked.'));
 | 
			
		||||
  }
 | 
			
		||||
  elseif ($ip == ip_address()) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1131,7 +1142,9 @@ function system_ip_blocking_form_validate($form, &$form_state) {
 | 
			
		|||
 | 
			
		||||
function system_ip_blocking_form_submit($form, &$form_state) {
 | 
			
		||||
  $ip = trim($form_state['values']['ip']);
 | 
			
		||||
  db_query("INSERT INTO {blocked_ips} (ip) VALUES ('%s')", $ip);
 | 
			
		||||
  db_insert('blocked_ips')
 | 
			
		||||
    ->fields(array('ip' => $ip))
 | 
			
		||||
    ->execute();
 | 
			
		||||
  drupal_set_message(t('The IP address %ip has been blocked.', array('%ip' => $ip)));
 | 
			
		||||
  $form_state['redirect'] = 'admin/settings/ip-blocking';
 | 
			
		||||
  return;
 | 
			
		||||
| 
						 | 
				
			
			@ -1155,7 +1168,9 @@ function system_ip_blocking_delete(&$form_state, $iid) {
 | 
			
		|||
 */
 | 
			
		||||
function system_ip_blocking_delete_submit($form, &$form_state) {
 | 
			
		||||
  $blocked_ip = $form_state['values']['blocked_ip'];
 | 
			
		||||
  db_query("DELETE FROM {blocked_ips} WHERE iid = %d", $blocked_ip['iid']);
 | 
			
		||||
  db_delete('blocked_ips')
 | 
			
		||||
    ->condition('iid', $blocked_ip['iid'])
 | 
			
		||||
    ->execute();
 | 
			
		||||
  watchdog('user', 'Deleted %ip', array('%ip' => $blocked_ip['ip']));
 | 
			
		||||
  drupal_set_message(t('The IP address %ip was deleted.', array('%ip' => $blocked_ip['ip'])));
 | 
			
		||||
  $form_state['redirect'] = 'admin/settings/ip-blocking';
 | 
			
		||||
| 
						 | 
				
			
			@ -1766,8 +1781,12 @@ function system_status($check = FALSE) {
 | 
			
		|||
  }
 | 
			
		||||
  // MySQL import might have set the uid of the anonymous user to autoincrement
 | 
			
		||||
  // value. Let's try fixing it. See http://drupal.org/node/204411
 | 
			
		||||
  db_query("UPDATE {users} SET uid = uid - uid WHERE name = '' AND pass = '' AND status = 0");
 | 
			
		||||
 | 
			
		||||
  db_update('users')
 | 
			
		||||
    ->expression('uid', 'uid - uid')
 | 
			
		||||
    ->condition('name', '')
 | 
			
		||||
    ->condition('pass', '')
 | 
			
		||||
    ->condition('status', 0)
 | 
			
		||||
    ->execute();
 | 
			
		||||
  return theme('status_report', $requirements);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1821,7 +1840,7 @@ function _system_sql($data, $keys) {
 | 
			
		|||
function system_sql() {
 | 
			
		||||
 | 
			
		||||
  $result = db_query("SHOW STATUS");
 | 
			
		||||
  while ($entry = db_fetch_object($result)) {
 | 
			
		||||
  foreach ($result as $entry) {
 | 
			
		||||
    // 'SHOW STATUS' returns fields named 'Variable_name' and 'Value',
 | 
			
		||||
    // case is important.
 | 
			
		||||
    $data[$entry->Variable_name] = $entry->Value;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -141,7 +141,10 @@ function hook_elements() {
 | 
			
		|||
 *   None.
 | 
			
		||||
 */
 | 
			
		||||
function hook_exit($destination = NULL) {
 | 
			
		||||
  db_query('UPDATE {counter} SET hits = hits + 1 WHERE type = 1');
 | 
			
		||||
  db_update('counter')
 | 
			
		||||
    ->expression('hits', 'hits + 1')
 | 
			
		||||
    ->condition('type', 1)
 | 
			
		||||
    ->execute();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			@ -1243,8 +1246,8 @@ function hook_file_delete($file) {
 | 
			
		|||
function hook_file_download($filepath) {
 | 
			
		||||
  // Check if the file is controlled by the current module.
 | 
			
		||||
  $filepath = file_create_path($filepath);
 | 
			
		||||
  $result = db_query("SELECT f.* FROM {files} f INNER JOIN {upload} u ON f.fid = u.fid WHERE filepath = '%s'", $filepath);
 | 
			
		||||
  if ($file = db_fetch_object($result)) {
 | 
			
		||||
  $result = db_query("SELECT f.* FROM {files} f INNER JOIN {upload} u ON f.fid = u.fid WHERE filepath = :filepath", array('filepath' => $filepath));
 | 
			
		||||
  foreach ($result as $file) {
 | 
			
		||||
    if (!user_access('view uploaded files')) {
 | 
			
		||||
      return -1;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -1617,8 +1620,12 @@ function hook_update_N(&$sandbox = NULL) {
 | 
			
		|||
    // We'll -1 to disregard the uid 0...
 | 
			
		||||
    $sandbox['max'] = db_query('SELECT COUNT(DISTINCT uid) FROM {users}')->fetchField() - 1;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  $users = db_query_range("SELECT uid, name FROM {users} WHERE uid > %d ORDER BY uid ASC", $sandbox['current_uid'], 0, 3);
 | 
			
		||||
  db_select('users', 'u')
 | 
			
		||||
    ->fields('u', array('uid', 'name'))
 | 
			
		||||
    ->condition('uid', $sandbox['current_uid'], '>')
 | 
			
		||||
    ->range(0, 3)
 | 
			
		||||
    ->orderBy('uid', 'ASC')
 | 
			
		||||
    ->execute();
 | 
			
		||||
  foreach ($users as $user) {
 | 
			
		||||
    $user->name .= '!';
 | 
			
		||||
    $ret[] = update_sql("UPDATE {users} SET name = '$user->name' WHERE uid = $user->uid");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -322,14 +322,14 @@ function system_install() {
 | 
			
		|||
      \'SELECT greatest($1, greatest($2, $3));\'
 | 
			
		||||
      LANGUAGE \'sql\''
 | 
			
		||||
    );
 | 
			
		||||
    if (!db_result(db_query("SELECT COUNT(*) FROM pg_proc WHERE proname = 'rand'"))) {
 | 
			
		||||
    if (!db_query("SELECT COUNT(*) FROM pg_proc WHERE proname = 'rand'")->fetchField()) {
 | 
			
		||||
      db_query('CREATE OR REPLACE FUNCTION "rand"() RETURNS float AS
 | 
			
		||||
        \'SELECT random();\'
 | 
			
		||||
        LANGUAGE \'sql\''
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!db_result(db_query("SELECT COUNT(*) FROM pg_proc WHERE proname = 'concat'"))) {
 | 
			
		||||
    if (!db_query("SELECT COUNT(*) FROM pg_proc WHERE proname = 'concat'")->fetchField()) {
 | 
			
		||||
      db_query('CREATE OR REPLACE FUNCTION "concat"(text, text) RETURNS text AS
 | 
			
		||||
        \'SELECT $1 || $2;\'
 | 
			
		||||
        LANGUAGE \'sql\''
 | 
			
		||||
| 
						 | 
				
			
			@ -2808,7 +2808,7 @@ function system_update_6049() {
 | 
			
		|||
function system_update_7000() {
 | 
			
		||||
  $ret = array();
 | 
			
		||||
  $result = db_query("SELECT rid, perm FROM {permission} ORDER BY rid");
 | 
			
		||||
  while ($role = db_fetch_object($result)) {
 | 
			
		||||
  foreach ($result as $role) {
 | 
			
		||||
    $renamed_permission = preg_replace('/(?<=^|,\ )create\ blog\ entries(?=,|$)/', 'create blog content', $role->perm);
 | 
			
		||||
    $renamed_permission = preg_replace('/(?<=^|,\ )edit\ own\ blog\ entries(?=,|$)/', 'edit own blog content', $role->perm);
 | 
			
		||||
    $renamed_permission = preg_replace('/(?<=^|,\ )edit\ any\ blog\ entry(?=,|$)/', 'edit any blog content', $role->perm);
 | 
			
		||||
| 
						 | 
				
			
			@ -2878,7 +2878,10 @@ function system_update_7002() {
 | 
			
		|||
function system_update_7003() {
 | 
			
		||||
  $ret = array();
 | 
			
		||||
  $type = 'host';
 | 
			
		||||
  $result = db_query("SELECT mask FROM {access} WHERE status = %d AND TYPE = '%s'", 0, $type);
 | 
			
		||||
  $result = db_query("SELECT mask FROM {access} WHERE status = :status AND type = :type", array(
 | 
			
		||||
    ':status' => 0,
 | 
			
		||||
    ':type' => $type,
 | 
			
		||||
  ));
 | 
			
		||||
  while ($blocked = db_fetch_object($result)) {
 | 
			
		||||
    if (filter_var($blocked->mask, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE) !== FALSE) {
 | 
			
		||||
      $ret[] = update_sql("INSERT INTO {blocked_ips} (ip) VALUES ('$blocked->mask')");
 | 
			
		||||
| 
						 | 
				
			
			@ -2894,8 +2897,11 @@ function system_update_7003() {
 | 
			
		|||
  }
 | 
			
		||||
  // Make sure not to block any IP addresses that were specifically allowed by access rules.
 | 
			
		||||
  if (!empty($result)) {
 | 
			
		||||
    $result = db_query("SELECT mask FROM {access} WHERE status = %d AND type = '%s'", 1, $type);
 | 
			
		||||
    while ($allowed = db_fetch_object($result)) {
 | 
			
		||||
    $result = db_query("SELECT mask FROM {access} WHERE status = :status AND type = :type", array(
 | 
			
		||||
      ':status' => 1,
 | 
			
		||||
      ':type' => $type,
 | 
			
		||||
    ));
 | 
			
		||||
    foreach ($result as $allowed) {
 | 
			
		||||
      $ret[] = update_sql("DELETE FROM {blocked_ips} WHERE LOWER(ip) LIKE LOWER('$allowed->mask')");
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			@ -2939,7 +2945,12 @@ function system_update_7004(&$sandbox) {
 | 
			
		|||
      foreach ($renamed_deltas as $module => $deltas) {
 | 
			
		||||
        foreach ($deltas as $old_delta => $new_delta) {
 | 
			
		||||
          // Only do the update if the old block actually exists.
 | 
			
		||||
          if (db_result(db_query("SELECT COUNT(*) FROM {" . $table . "} WHERE module = '%s' AND delta = '%s'", $module, $old_delta))) {
 | 
			
		||||
          $block_exists = db_query("SELECT COUNT(*) FROM {" . $table . "} WHERE module = :module AND delta = :delta",array(
 | 
			
		||||
            ':module' => $module,
 | 
			
		||||
            ':delta' => $old_delta,
 | 
			
		||||
          ))
 | 
			
		||||
          ->fetchField();
 | 
			
		||||
          if ($block_exists) {
 | 
			
		||||
            $ret[] = update_sql("UPDATE {" . $table . "} SET delta = '" . $new_delta . "' WHERE module = '" . $module . "' AND delta = '" . $old_delta . "'");
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -2959,12 +2970,17 @@ function system_update_7004(&$sandbox) {
 | 
			
		|||
    // Initialize batch update information.
 | 
			
		||||
    $sandbox['progress'] = 0;
 | 
			
		||||
    $sandbox['last_user_processed'] = -1;
 | 
			
		||||
    $sandbox['max'] = db_result(db_query("SELECT COUNT(*) FROM {users} WHERE data IS NOT NULL"));
 | 
			
		||||
    $sandbox['max'] = db_query("SELECT COUNT(*) FROM {users} WHERE data IS NOT NULL")->fetchField();
 | 
			
		||||
  }
 | 
			
		||||
  // Now do the batch update of the user-specific block visibility settings.
 | 
			
		||||
  $limit = 100;
 | 
			
		||||
  $result = db_query_range("SELECT uid, data FROM {users} WHERE uid > %d AND data IS NOT NULL", $sandbox['last_user_processed'], 0, $limit);
 | 
			
		||||
  while ($row = db_fetch_object($result)) {
 | 
			
		||||
  $result = db_select('users', 'u')
 | 
			
		||||
    ->fields('u', array('uid', 'data'))
 | 
			
		||||
    ->condition('uid', $sandbox['last_user_processed'], '>')
 | 
			
		||||
    ->where('data IS NOT NULL')
 | 
			
		||||
    ->range(0, $limit)
 | 
			
		||||
    ->execute();
 | 
			
		||||
  foreach ($result as $row) {
 | 
			
		||||
    $data = unserialize($row->data);
 | 
			
		||||
    $user_needs_update = FALSE;
 | 
			
		||||
    foreach ($renamed_deltas as $module => $deltas) {
 | 
			
		||||
| 
						 | 
				
			
			@ -2980,7 +2996,10 @@ function system_update_7004(&$sandbox) {
 | 
			
		|||
    }
 | 
			
		||||
    // Update the current user.
 | 
			
		||||
    if ($user_needs_update) {
 | 
			
		||||
      db_query("UPDATE {users} SET data = '%s' WHERE uid = %d", serialize($data), $row->uid);
 | 
			
		||||
      db_update('users')
 | 
			
		||||
        ->fields(array('data' => serialize($data)))
 | 
			
		||||
        ->condition('uid', $row->uid)
 | 
			
		||||
        ->execute();
 | 
			
		||||
    }
 | 
			
		||||
    // Update our progress information for the batch update.
 | 
			
		||||
    $sandbox['progress']++;
 | 
			
		||||
| 
						 | 
				
			
			@ -3088,12 +3107,17 @@ function system_update_7007() {
 | 
			
		|||
 | 
			
		||||
  // Copy the permissions from the old {permission} table to the new {role_permission} table.
 | 
			
		||||
  $result = db_query("SELECT rid, perm FROM {permission} ORDER BY rid ASC");
 | 
			
		||||
  while ($role = db_fetch_object($result)) {
 | 
			
		||||
  $query = db_insert('role_permission')->fields(array('rid', 'permission'));
 | 
			
		||||
  foreach ($result as $role) {
 | 
			
		||||
    foreach (explode(', ', $role->perm) as $perm) {
 | 
			
		||||
      db_query("INSERT INTO {role_permission} (rid, permission) VALUES (%d, '%s')", $role->rid, $perm);
 | 
			
		||||
      $query->values(array(
 | 
			
		||||
        'rid' => $role->rid,
 | 
			
		||||
        'permission' => $perm,
 | 
			
		||||
      ));
 | 
			
		||||
    }
 | 
			
		||||
    $ret[] = array('success' => TRUE, 'query' => "Inserted into {role_permission} the permissions for role ID " . $role->rid);
 | 
			
		||||
  }
 | 
			
		||||
  $query->execute();
 | 
			
		||||
  db_drop_table($ret, 'permission');
 | 
			
		||||
 | 
			
		||||
  return $ret;
 | 
			
		||||
| 
						 | 
				
			
			@ -3190,7 +3214,7 @@ function system_update_7013() {
 | 
			
		|||
  // the time zone name and use it as the default time zone.
 | 
			
		||||
  if (!$timezone && ($timezone_id = variable_get('date_default_timezone_id', 0))) {
 | 
			
		||||
    try {
 | 
			
		||||
      $timezone_name = db_result(db_query('SELECT name FROM {event_timezones} WHERE timezone = :timezone_id', array(':timezone_id' => $timezone_id)));
 | 
			
		||||
      $timezone_name = db_query('SELECT name FROM {event_timezones} WHERE timezone = :timezone_id', array(':timezone_id' => $timezone_id))->fetchField();
 | 
			
		||||
      if (($timezone_name = str_replace(' ', '_', $timezone_name)) && isset($timezones[$timezone_name])) {
 | 
			
		||||
        $timezone = $timezone_name;
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -3247,7 +3271,7 @@ function system_update_7016() {
 | 
			
		|||
                        LEFT JOIN pg_class c ON (c.oid =  a.attrelid)
 | 
			
		||||
                        WHERE pg_catalog.pg_table_is_visible(c.oid) AND c.relkind = 'r'
 | 
			
		||||
                        AND pg_catalog.format_type(a.atttypid, a.atttypmod) LIKE '%unsigned%'");
 | 
			
		||||
    while ($row = db_fetch_object($result)) {
 | 
			
		||||
    foreach ($result as $row) {
 | 
			
		||||
      switch ($row->type) {
 | 
			
		||||
        case 'smallint_unsigned':
 | 
			
		||||
          $datatype = 'int';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -764,8 +764,7 @@ function system_menu() {
 | 
			
		|||
 *   The blocked IP address from the database as an array.
 | 
			
		||||
 */
 | 
			
		||||
function blocked_ip_load($iid) {
 | 
			
		||||
  $blocked_ip = db_fetch_array(db_query("SELECT * FROM {blocked_ips} WHERE iid = %d", $iid));
 | 
			
		||||
  return $blocked_ip;
 | 
			
		||||
  return db_query("SELECT * FROM {blocked_ips} WHERE iid = :iid", array(':iid' => $iid))->fetchAssoc();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			@ -977,14 +976,14 @@ function system_block_view($delta = '') {
 | 
			
		|||
function system_admin_menu_block($item) {
 | 
			
		||||
  $content = array();
 | 
			
		||||
  if (!isset($item['mlid'])) {
 | 
			
		||||
    $item += db_fetch_array(db_query("SELECT mlid, menu_name FROM {menu_links} ml WHERE ml.router_path = '%s' AND module = 'system'", $item['path']));
 | 
			
		||||
    $item += db_query("SELECT mlid, menu_name FROM {menu_links} ml WHERE ml.router_path = :path AND module = 'system'", array(':path' => $item['path']))->fetchAssoc();
 | 
			
		||||
  }
 | 
			
		||||
  $result = db_query("
 | 
			
		||||
    SELECT m.load_functions, m.to_arg_functions, m.access_callback, m.access_arguments, m.page_callback, m.page_arguments, m.title, m.title_callback, m.title_arguments, m.type, m.description, ml.*
 | 
			
		||||
    FROM {menu_links} ml
 | 
			
		||||
    LEFT JOIN {menu_router} m ON ml.router_path = m.path
 | 
			
		||||
    WHERE ml.plid = %d AND ml.menu_name = '%s' AND hidden = 0", $item['mlid'], $item['menu_name']);
 | 
			
		||||
  while ($item = db_fetch_array($result)) {
 | 
			
		||||
    WHERE ml.plid = :plid AND ml.menu_name = :name AND hidden = 0", array(':plid' => $item['mlid'], ':name' => $item['menu_name']), array('fetch' => PDO::FETCH_ASSOC));
 | 
			
		||||
  foreach ($result as $item) {
 | 
			
		||||
    _menu_link_translate($item);
 | 
			
		||||
    if (!$item['access']) {
 | 
			
		||||
      continue;
 | 
			
		||||
| 
						 | 
				
			
			@ -1089,8 +1088,8 @@ function system_check_directory($form_element) {
 | 
			
		|||
 */
 | 
			
		||||
function system_get_files_database(&$files, $type) {
 | 
			
		||||
  // Extract current files from database.
 | 
			
		||||
  $result = db_query("SELECT filename, name, type, status, schema_version, weight FROM {system} WHERE type = '%s'", $type);
 | 
			
		||||
  while ($file = db_fetch_object($result)) {
 | 
			
		||||
  $result = db_query("SELECT filename, name, type, status, schema_version, weight FROM {system} WHERE type = :type", array(':type' => $type));
 | 
			
		||||
  foreach ($result as $file) {
 | 
			
		||||
    if (isset($files[$file->name]) && is_object($files[$file->name])) {
 | 
			
		||||
      $file->filepath = $file->filename;
 | 
			
		||||
      $file->old_filepath = $file->filepath;
 | 
			
		||||
| 
						 | 
				
			
			@ -1155,15 +1154,26 @@ function system_theme_data() {
 | 
			
		|||
  // Extract current files from database.
 | 
			
		||||
  system_get_files_database($themes, 'theme');
 | 
			
		||||
 | 
			
		||||
  db_query("DELETE FROM {system} WHERE type = 'theme'");
 | 
			
		||||
  db_delete('system')
 | 
			
		||||
    ->condition('type', 'theme')
 | 
			
		||||
    ->execute();
 | 
			
		||||
 | 
			
		||||
  $query = db_insert('system')->fields(array('name', 'owner', 'info', 'type', 'filename', 'status'));
 | 
			
		||||
  foreach ($themes as $theme) {
 | 
			
		||||
    if (!isset($theme->owner)) {
 | 
			
		||||
      $theme->owner = '';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    db_query("INSERT INTO {system} (name, owner, info, type, filename, status) VALUES ('%s', '%s', '%s', '%s', '%s', %d)", $theme->name, $theme->owner, serialize($theme->info), 'theme', $theme->filename, isset($theme->status) ? $theme->status : 0);
 | 
			
		||||
    $query->values(array(
 | 
			
		||||
      'name' => $theme->name,
 | 
			
		||||
      'owner' => $theme->owner,
 | 
			
		||||
      'info' => serialize($theme->info),
 | 
			
		||||
      'type' => 'theme',
 | 
			
		||||
      'filename' => $theme->filename,
 | 
			
		||||
      'status' => isset($theme->status) ? $theme->status : 0,
 | 
			
		||||
    ));
 | 
			
		||||
  }
 | 
			
		||||
  $query->execute();
 | 
			
		||||
 | 
			
		||||
  return $themes;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1307,7 +1317,7 @@ function system_region_list($theme_key) {
 | 
			
		|||
  static $list = array();
 | 
			
		||||
 | 
			
		||||
  if (!array_key_exists($theme_key, $list)) {
 | 
			
		||||
    $info = unserialize(db_result(db_query("SELECT info FROM {system} WHERE type = :type AND name = :name", array(':type' => 'theme', ':name' => $theme_key))));
 | 
			
		||||
    $info = unserialize(db_query("SELECT info FROM {system} WHERE type = :type AND name = :name", array(':type' => 'theme', ':name' => $theme_key))->fetchField());
 | 
			
		||||
    $list[$theme_key] = array_map('t', $info['regions']);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1519,9 +1529,9 @@ function system_get_module_admin_tasks($module) {
 | 
			
		|||
  if (!isset($items)) {
 | 
			
		||||
    $result = db_query("
 | 
			
		||||
       SELECT m.load_functions, m.to_arg_functions, m.access_callback, m.access_arguments, m.page_callback, m.page_arguments, m.title, m.title_callback, m.title_arguments, m.type, ml.*
 | 
			
		||||
       FROM {menu_links} ml INNER JOIN {menu_router} m ON ml.router_path = m.path WHERE ml.link_path LIKE 'admin/%' AND hidden >= 0 AND module = 'system' AND m.number_parts > 2");
 | 
			
		||||
       FROM {menu_links} ml INNER JOIN {menu_router} m ON ml.router_path = m.path WHERE ml.link_path LIKE 'admin/%' AND hidden >= 0 AND module = 'system' AND m.number_parts > 2", array(), array('fetch' => PDO::FETCH_ASSOC));
 | 
			
		||||
    $items = array();
 | 
			
		||||
    while ($item = db_fetch_array($result)) {
 | 
			
		||||
    foreach ($result as $item) {
 | 
			
		||||
      _menu_link_translate($item);
 | 
			
		||||
      if ($item['access']) {
 | 
			
		||||
        $items[$item['router_path']] = $item;
 | 
			
		||||
| 
						 | 
				
			
			@ -1556,14 +1566,22 @@ function system_get_module_admin_tasks($module) {
 | 
			
		|||
 */
 | 
			
		||||
function system_cron() {
 | 
			
		||||
  // Cleanup the flood.
 | 
			
		||||
  db_query('DELETE FROM {flood} WHERE timestamp < %d', REQUEST_TIME - 3600);
 | 
			
		||||
  db_delete('flood')
 | 
			
		||||
    ->condition('timestamp', REQUEST_TIME - 3600, '<')
 | 
			
		||||
    ->execute();
 | 
			
		||||
  // Cleanup the batch table.
 | 
			
		||||
  db_query('DELETE FROM {batch} WHERE timestamp < %d', REQUEST_TIME - 864000);
 | 
			
		||||
  db_delete('batch')
 | 
			
		||||
    ->condition('timestamp', REQUEST_TIME - 864000, '<')
 | 
			
		||||
    ->execute();
 | 
			
		||||
 | 
			
		||||
  // Remove temporary files that are older than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
 | 
			
		||||
  // Use separate placeholders for the status to avoid a bug in some versions
 | 
			
		||||
  // of PHP. See http://drupal.org/node/352956
 | 
			
		||||
  $result = db_query('SELECT fid FROM {files} WHERE status & :permanent1 <> :permanent2 AND timestamp < :timestamp', array(':permanent1' => FILE_STATUS_PERMANENT, ':permanent2' => FILE_STATUS_PERMANENT, ':timestamp' => REQUEST_TIME - DRUPAL_MAXIMUM_TEMP_FILE_AGE));
 | 
			
		||||
  $result = db_query('SELECT fid FROM {files} WHERE status & :permanent1 <> :permanent2 AND timestamp < :timestamp', array(
 | 
			
		||||
    ':permanent1' => FILE_STATUS_PERMANENT,
 | 
			
		||||
    ':permanent2' => FILE_STATUS_PERMANENT,
 | 
			
		||||
    ':timestamp' => REQUEST_TIME - DRUPAL_MAXIMUM_TEMP_FILE_AGE
 | 
			
		||||
  ));
 | 
			
		||||
  foreach ($result as $row) {
 | 
			
		||||
    if ($file = file_load($row->fid)) {
 | 
			
		||||
      if (!file_delete($file)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1672,15 +1690,20 @@ function system_actions_manage() {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  $row = array();
 | 
			
		||||
  $instances_present = db_fetch_object(db_query("SELECT aid FROM {actions} WHERE parameters <> ''"));
 | 
			
		||||
  $instances_present = db_query("SELECT aid FROM {actions} WHERE parameters <> ''")->fetchField();
 | 
			
		||||
  $header = array(
 | 
			
		||||
    array('data' => t('Action type'), 'field' => 'type'),
 | 
			
		||||
    array('data' => t('Description'), 'field' => 'description'),
 | 
			
		||||
    array('data' => $instances_present ? t('Operations') : '', 'colspan' => '2')
 | 
			
		||||
  );
 | 
			
		||||
  $sql = 'SELECT * FROM {actions}';
 | 
			
		||||
  $result = pager_query($sql . tablesort_sql($header), 50);
 | 
			
		||||
  while ($action = db_fetch_object($result)) {
 | 
			
		||||
  $query = db_select('actions')->extend('PagerDefault')->extend('TableSort');
 | 
			
		||||
  $result = $query
 | 
			
		||||
    ->fields('actions')
 | 
			
		||||
    ->limit(50)
 | 
			
		||||
    ->setHeader($header)
 | 
			
		||||
    ->execute();
 | 
			
		||||
 | 
			
		||||
  foreach ($result as $action) {
 | 
			
		||||
    $row[] = array(
 | 
			
		||||
      array('data' => $action->type),
 | 
			
		||||
      array('data' => $action->description),
 | 
			
		||||
| 
						 | 
				
			
			@ -1776,7 +1799,7 @@ function system_actions_configure($form_state, $action = NULL) {
 | 
			
		|||
  if (is_numeric($action)) {
 | 
			
		||||
    $aid = $action;
 | 
			
		||||
    // Load stored parameter values from database.
 | 
			
		||||
    $data = db_fetch_object(db_query("SELECT * FROM {actions} WHERE aid = '%s'", $aid));
 | 
			
		||||
    $data = db_query("SELECT * FROM {actions} WHERE aid = :aid", array(':aid' => $aid))->fetch();
 | 
			
		||||
    $edit['actions_description'] = $data->description;
 | 
			
		||||
    $edit['actions_type'] = $data->type;
 | 
			
		||||
    $function = $data->callback;
 | 
			
		||||
| 
						 | 
				
			
			@ -2199,7 +2222,9 @@ function system_goto_action($object, $context) {
 | 
			
		|||
 */
 | 
			
		||||
function system_block_ip_action() {
 | 
			
		||||
  $ip = ip_address();
 | 
			
		||||
  db_query("INSERT INTO {blocked_ips} (ip) VALUES ('%s')", $ip);
 | 
			
		||||
  db_insert('blocked_ips')
 | 
			
		||||
    ->fields(array('ip' => $ip))
 | 
			
		||||
    ->execute();
 | 
			
		||||
  watchdog('action', 'Banned IP address %ip', array('%ip' => $ip));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -250,7 +250,7 @@ class IPAddressBlockingTestCase extends DrupalWebTestCase {
 | 
			
		|||
    $edit = array();
 | 
			
		||||
    $edit['ip'] = '192.168.1.1';
 | 
			
		||||
    $this->drupalPost('admin/settings/ip-blocking', $edit, t('Save'));
 | 
			
		||||
    $ip = db_result(db_query("SELECT iid from {blocked_ips} WHERE ip = '%s'", $edit['ip']));
 | 
			
		||||
    $ip = db_query("SELECT iid from {blocked_ips} WHERE ip = :ip", array(':ip' => $edit['ip']))->fetchField();
 | 
			
		||||
    $this->assertNotNull($ip, t('IP address found in database'));
 | 
			
		||||
    $this->assertRaw(t('The IP address %ip has been blocked.', array('%ip' => $edit['ip'])), t('IP address was blocked.'));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -332,17 +332,29 @@ class CronRunTestCase extends DrupalWebTestCase {
 | 
			
		|||
 | 
			
		||||
    // Temporary file that is older than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
 | 
			
		||||
    $temp_old = file_save_data('');
 | 
			
		||||
    db_query('UPDATE {files} SET status = :status, timestamp = :timestamp WHERE fid = :fid', array(':status' => 0, ':timestamp' => 1, ':fid' => $temp_old->fid));
 | 
			
		||||
    db_update('files')
 | 
			
		||||
      ->fields(array(
 | 
			
		||||
        'status' => 0,
 | 
			
		||||
        'timestamp' => 1,
 | 
			
		||||
      ))
 | 
			
		||||
      ->condition('fid', $temp_old->fid)
 | 
			
		||||
      ->execute();
 | 
			
		||||
    $this->assertTrue(file_exists($temp_old->filepath), t('Old temp file was created correctly.'));
 | 
			
		||||
 | 
			
		||||
    // Temporary file that is less than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
 | 
			
		||||
    $temp_new = file_save_data('');
 | 
			
		||||
    db_query('UPDATE {files} SET status = :status WHERE fid = :fid', array(':status' => 0, ':fid' => $temp_new->fid));
 | 
			
		||||
    db_update('files')
 | 
			
		||||
      ->fields(array('status' => 0))
 | 
			
		||||
      ->condition('fid', $temp_new->fid)
 | 
			
		||||
      ->execute();
 | 
			
		||||
    $this->assertTrue(file_exists($temp_new->filepath), t('New temp file was created correctly.'));
 | 
			
		||||
 | 
			
		||||
    // Permanent file that is older than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
 | 
			
		||||
    $perm_old = file_save_data('');
 | 
			
		||||
    db_query('UPDATE {files} SET timestamp = :timestamp WHERE fid = :fid', array(':timestamp' => 1, ':fid' => $perm_old->fid));
 | 
			
		||||
    db_update('files')
 | 
			
		||||
      ->fields(array('timestamp' => 1))
 | 
			
		||||
      ->condition('fid', $temp_old->fid)
 | 
			
		||||
      ->execute();
 | 
			
		||||
    $this->assertTrue(file_exists($perm_old->filepath), t('Old permanent file was created correctly.'));
 | 
			
		||||
 | 
			
		||||
    // Permanent file that is newer than DRUPAL_MAXIMUM_TEMP_FILE_AGE.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue