migrateProfilePrefs added to scripts/upgrade.php

Makes it easier for plugin developers to change the topics set in Profile_prefs
This commit is contained in:
Mikael Nordfeldth 2016-01-28 19:03:24 +01:00
parent fb7f572eed
commit c0851d59f5
1 changed files with 28 additions and 0 deletions

View File

@ -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();