]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - scripts/upgrade.php
Show shares in public timeline
[quix0rs-gnu-social.git] / scripts / upgrade.php
index 33b0baa35cac34796004b4f6bb4920f5060aea44..d5178e109aa40026836d8c8d85b68fac4ae87833 100755 (executable)
@@ -41,13 +41,13 @@ function main()
 
         // These replace old "fixup_*" scripts
 
-        fixupNoticeRendered();
         fixupNoticeConversation();
         initConversation();
         fixupGroupURI();
         fixupFileGeometry();
         deleteLocalFileThumbnailsWithoutFilename();
         deleteMissingLocalFileThumbnails();
+        fixupFileThumbnailUrlhash();
         setFilehashOnLocalFiles();
 
         initGroupProfileId();
@@ -59,6 +59,8 @@ function main()
 
         initProfileLists();
 
+        migrateProfilePrefs();
+
         Event::handle('EndUpgrade');
     }
 }
@@ -94,26 +96,6 @@ function updateSchemaPlugins()
     printfnq("DONE.\n");
 }
 
-function fixupNoticeRendered()
-{
-    printfnq("Ensuring all notices have rendered HTML...");
-
-    $notice = new Notice();
-
-    $notice->whereAdd('rendered IS NULL');
-    $notice->find();
-
-    while ($notice->fetch()) {
-        $original = clone($notice);
-        $notice->rendered = common_render_content($notice->content,
-                                                  $notice->getProfile(),
-                                                  $notice->hasParent() ? $notice->getParent() : null);
-        $notice->update($original);
-    }
-
-    printfnq("DONE.\n");
-}
-
 function fixupNoticeConversation()
 {
     printfnq("Ensuring all notices have a conversation ID...");
@@ -539,4 +521,43 @@ function setFilehashOnLocalFiles()
     printfnq("DONE.\n");
 }
 
+function fixupFileThumbnailUrlhash()
+{
+    printfnq("Setting urlhash for File_thumbnail entries: ");
+
+    $thumb = new File_thumbnail();
+    $thumb->query('UPDATE '.$thumb->escapedTableName().' SET urlhash=SHA2(url, 256) WHERE'.
+                    ' url IS NOT NULL AND'. // find all entries with a url value
+                    ' url != "" AND'.       // precaution against non-null empty strings
+                    ' urlhash IS NULL');    // but don't touch those we've already calculated
+
+    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();