diff --git a/scripts/upgrade.php b/scripts/upgrade.php index 56c81c8b31..c3922972e5 100755 --- a/scripts/upgrade.php +++ b/scripts/upgrade.php @@ -58,6 +58,8 @@ function main() initProfileLists(); + migrateProfilePrefs(); + Event::handle('EndUpgrade'); } } @@ -518,4 +520,30 @@ function setFilehashOnLocalFiles() printfnq("DONE.\n"); } +function migrateProfilePrefs() +{ + printfnq("Finding and possibly migrating Profile_prefs entries: "); + + $prefs = array(); // ['qvitter' => ['cover_photo'=>'profile_banner_url', ...], ...] + Event::handle('GetProfilePrefsMigrations', array(&$prefs)); + + foreach($prefs as $namespace=>$mods) { + echo "$namespace... "; + assert(is_array($mods)); + $p = new Profile_prefs(); + $p->namespace = $namespace; + // find all entries in all modified topics given in this namespace + $p->whereAddIn('topic', array_keys($mods), $p->columnType('topic')); + $p->find(); + while ($p->fetch()) { + // for each entry, update 'topic' to the new key value + $orig = clone($p); + $p->topic = $mods[$p->topic]; + $p->updateWithKeys($orig); + } + } + + printfnq("DONE.\n"); +} + main();