You are here

function uc_file_update_6006 in Ubercart 6.2

Fix double serialization in addresses column.

File

uc_file/uc_file.install, line 405
Install, update and uninstall functions for the uc_file module.

Code

function uc_file_update_6006(&$sandbox) {
  $ret = array();
  if (!isset($sandbox['progress'])) {
    $sandbox['progress'] = 0;
    $sandbox['current_fuid'] = 0;
    $sandbox['max'] = db_result(db_query('SELECT COUNT(DISTINCT fuid) FROM {uc_file_users}'));
  }
  $limit = 100;
  $result = db_query_range("SELECT * FROM {uc_file_users} WHERE fuid > %d ORDER BY fuid ASC", $sandbox['current_fuid'], 0, $limit);
  while ($file_user = db_fetch_object($result)) {
    $addresses = $file_user->addresses;
    $i = 0;
    while (is_string($addresses)) {
      $addresses = unserialize($addresses);
      $i++;
    }
    if (is_array($addresses) && $i > 1) {
      $file_user->addresses = serialize($addresses);
      db_query("UPDATE {uc_file_users} SET addresses = '%s' WHERE fuid = %d", $file_user->addresses, $file_user->fuid);
    }
    $sandbox['progress']++;
    $sandbox['current_fuid'] = $file_user->fuid;
  }
  $ret['#finished'] = empty($sandbox['max']) ? 1 : $sandbox['progress'] / $sandbox['max'];
  return $ret;
}