aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/develop/adjust_avatars.php
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2009-10-04 18:14:59 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2009-10-04 18:14:59 +0000
commit2e17e448deed073f8614bb555a8ef20c57291c2a (patch)
tree533007e53d3584d0887b0f639d0e673b1e15ea7a /phpBB/develop/adjust_avatars.php
parentbf8ac19eaa8d74f9dfd6d597190f5664e7339382 (diff)
downloadforums-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.php147
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