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;
}