]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
migrateProfilePrefs added to scripts/upgrade.php
authorMikael Nordfeldth <mmn@hethane.se>
Thu, 28 Jan 2016 18:03:24 +0000 (19:03 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Thu, 28 Jan 2016 18:03:24 +0000 (19:03 +0100)
Makes it easier for plugin developers to change the topics set in Profile_prefs

scripts/upgrade.php

index 56c81c8b31bcac66b902d97f6fc7d85f30a8c9e0..c3922972e5a2c111829e2f1438b7d00506aab19d 100755 (executable)
@@ -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();