diff options
author | Meik Sievertsen <acydburn@phpbb.com> | 2009-10-04 18:14:59 +0000 |
---|---|---|
committer | Meik Sievertsen <acydburn@phpbb.com> | 2009-10-04 18:14:59 +0000 |
commit | 2e17e448deed073f8614bb555a8ef20c57291c2a (patch) | |
tree | 533007e53d3584d0887b0f639d0e673b1e15ea7a /phpBB/develop/adjust_avatars.php | |
parent | bf8ac19eaa8d74f9dfd6d597190f5664e7339382 (diff) | |
download | forums-2e17e448deed073f8614bb555a8ef20c57291c2a.tar forums-2e17e448deed073f8614bb555a8ef20c57291c2a.tar.gz forums-2e17e448deed073f8614bb555a8ef20c57291c2a.tar.bz2 forums-2e17e448deed073f8614bb555a8ef20c57291c2a.tar.xz forums-2e17e448deed073f8614bb555a8ef20c57291c2a.zip |
Copy 3.0.x branch to trunk
git-svn-id: file:///svn/phpbb/trunk@10211 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/develop/adjust_avatars.php')
-rw-r--r-- | phpBB/develop/adjust_avatars.php | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/phpBB/develop/adjust_avatars.php b/phpBB/develop/adjust_avatars.php new file mode 100644 index 0000000000..81599e694b --- /dev/null +++ b/phpBB/develop/adjust_avatars.php @@ -0,0 +1,147 @@ +<?php +/** +* Corrects avatar filenames to match the new avatar delivery method. +* +* You should make a backup from your users table and the avatar directory in case something goes wrong +*/ +die("Please read the first lines of this script for instructions on how to enable it"); + +set_time_limit(0); + +define('IN_PHPBB', true); +$phpbb_root_path = './../'; +$phpEx = substr(strrchr(__FILE__, '.'), 1); +include($phpbb_root_path . 'common.'.$phpEx); + +// Start session management +$user->session_begin(); +$auth->acl($user->data); +$user->setup(); + +$echos = 0; + +if (!isset($config['avatar_salt'])) +{ + $cache->purge(); + if (!isset($config['avatar_salt'])) + { + die('database not up to date'); + } + die('database not up to date'); +} + +// let's start with the users using a group_avatar. +$sql = 'SELECT group_id, group_avatar + FROM ' . GROUPS_TABLE . ' + WHERE group_avatar_type = ' . AVATAR_UPLOAD; + +// We'll skip these, so remember them +$group_avatars = array(); + +echo '<br /> Updating groups' . "\n"; + +$result = $db->sql_query($sql); + +while ($row = $db->sql_fetchrow($result)) +{ + $new_avatar_name = adjust_avatar($row['group_avatar'], 'g' . $row['group_id']); + $group_avatars[] = $new_avatar_name; + + // failure is probably due to the avatar name already being adjusted + if ($new_avatar_name !== false) + { + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_avatar = '" . $db->sql_escape($new_avatar_name) . "' + WHERE user_avatar = '" . $db->sql_escape($row['group_avatar']) . "' + AND user_avatar_type = " . AVATAR_UPLOAD; + $db->sql_query($sql); + + $sql = 'UPDATE ' . GROUPS_TABLE . " + SET group_avatar = '" . $db->sql_escape($new_avatar_name) . "' + WHERE group_id = {$row['group_id']}"; + $db->sql_query($sql); + } + else + { + echo '<br /> Failed updating group ' . $row['group_id'] . "\n"; + } + + if ($echos > 200) + { + echo '<br />' . "\n"; + $echos = 0; + } + + echo '.'; + $echos++; + + flush(); +} +$db->sql_freeresult($result); + +$sql = 'SELECT user_id, username, user_avatar, user_avatar_type + FROM ' . USERS_TABLE . ' + WHERE user_avatar_type = ' . AVATAR_UPLOAD . ' + AND ' . $db->sql_in_set('user_avatar', $group_avatars, true, true); +$result = $db->sql_query($sql); + +echo '<br /> Updating users' . "\n"; + +while ($row = $db->sql_fetchrow($result)) +{ + $new_avatar_name = adjust_avatar($row['user_avatar'], $row['user_id']); + + // failure is probably due to the avatar name already being adjusted + if ($new_avatar_name !== false) + { + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_avatar = '" . $db->sql_escape($new_avatar_name) . "' + WHERE user_id = {$row['user_id']}"; + $db->sql_query($sql); + } + else + { + // nuke this avatar + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_avatar = '', user_avatar_type = 0 + WHERE user_id = {$row['user_id']}"; + $db->sql_query($sql); + echo '<br /> Failed updating user ' . $row['user_id'] . "\n"; + } + + if ($echos > 200) + { + echo '<br />' . "\n"; + $echos = 0; + } + + echo '.'; + $echos++; + + flush(); +} + +$db->sql_freeresult($result); + +echo 'FINISHED'; + +// Done +$db->sql_close(); + +function adjust_avatar($old_name, $midfix) +{ + global $config, $phpbb_root_path; + + $avatar_path = $phpbb_root_path . $config['avatar_path']; + $extension = strtolower(substr(strrchr($old_name, '.'), 1)); + $new_name = $config['avatar_salt'] . '_' . $midfix . '.' . $extension; + + if (@file_exists($avatar_path . '/' . $old_name) && @is_writable($avatar_path . '/' . $old_name) && @is_writable($avatar_path . '/' . $new_name)) + { + @rename($avatar_path . '/' . $old_name, $avatar_path . '/' . $new_name); + return $midfix . '.' . $extension; + } + return false; +} + +?>
\ No newline at end of file |