]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - scripts/upgrade.php
Bug tracker link updated.
[quix0rs-gnu-social.git] / scripts / upgrade.php
index 902a1aa85d8c622bcfc728f898e8aede8a5e9f2f..692eaac17a40b8d083b4b1ff8e4be6ecd6932780 100644 (file)
@@ -34,6 +34,8 @@ require_once INSTALLDIR.'/scripts/commandline.inc';
 function main()
 {
     if (Event::handle('StartUpgrade')) {
+        fixupConversationURIs();
+
         updateSchemaCore();
         updateSchemaPlugins();
 
@@ -46,12 +48,12 @@ function main()
         fixupFileGeometry();
         deleteLocalFileThumbnailsWithoutFilename();
         deleteMissingLocalFileThumbnails();
+        setFilehashOnLocalFiles();
 
         initGroupProfileId();
         initLocalGroup();
         initNoticeReshare();
     
-        initFaveURI();
         initSubscriptionURI();
         initGroupMemberURI();
 
@@ -200,6 +202,29 @@ function initConversation()
     printfnq("DONE.\n");
 }
 
+function fixupConversationURIs()
+{
+    printfnq("Ensuring all conversations have a URI...");
+
+    $conv = new Conversation();
+    $conv->whereAdd('uri IS NULL');
+
+    if ($conv->find()) {
+        $rounds = 0;
+        while ($conv->fetch()) {
+            $uri = common_local_url('conversation', array('id' => $conv->id));
+            $sql = sprintf('UPDATE conversation SET uri="%1$s" WHERE id="%2$d";',
+                            $conv->escape($uri), $conv->id);
+            $conv->query($sql);
+            if (($conv->N-++$rounds) % 500 == 0) {
+                printfnq(sprintf(' %d items left...', $conv->N-$rounds));
+            }
+        }
+    }
+
+    printfnq("DONE.\n");
+}
+
 function initGroupProfileId()
 {
     printfnq("Ensuring all User_group entries have a Profile and profile_id...");
@@ -292,35 +317,6 @@ function initNoticeReshare()
     printfnq("DONE.\n");
 }
 
-function initFaveURI() 
-{
-    printfnq("Ensuring all faves have a URI...");
-
-    $fave = new Fave();
-    $fave->whereAdd('uri IS NULL');
-
-    if ($fave->find()) {
-        while ($fave->fetch()) {
-            try {
-                $fave->decache();
-                $fave->query(sprintf('update fave '.
-                                     'set uri = "%s", '.
-                                     '    modified = "%s" '.
-                                     'where user_id = %d '.
-                                     'and notice_id = %d',
-                                     Fave::newURI($fave->user_id, $fave->notice_id, $fave->modified),
-                                     common_sql_date(strtotime($fave->modified)),
-                                     $fave->user_id,
-                                     $fave->notice_id));
-            } catch (Exception $e) {
-                common_log(LOG_ERR, "Error updated fave URI: " . $e->getMessage());
-            }
-        }
-    }
-
-    printfnq("DONE.\n");
-}
-
 function initSubscriptionURI()
 {
     printfnq("Ensuring all subscriptions have a URI...");
@@ -495,7 +491,9 @@ function deleteMissingLocalFileThumbnails()
     // Checking if there were any File_thumbnail entries without filename
     if ($thumbs->find()) {
         while ($thumbs->fetch()) {
-            if (!file_exists(File_thumbnail::path($thumbs->filename))) {
+            try {
+                $thumbs->getPath();
+            } catch (FileNotFoundException $e) {
                 $thumbs->delete();
             }
         }
@@ -504,4 +502,30 @@ function deleteMissingLocalFileThumbnails()
     printfnq("DONE.\n");
 }
 
+/*
+ * Files are now stored with their hash, so let's generate for previously uploaded files.
+ */
+function setFilehashOnLocalFiles()
+{
+    printfnq('Ensuring all local files have the filehash field set...');
+
+    $file = new File();
+    $file->whereAdd('filename IS NOT NULL');        // local files
+    $file->whereAdd('filehash IS NULL', 'AND');     // without filehash value
+
+    if ($file->find()) {
+        while ($file->fetch()) {
+            try {
+                $orig = clone($file);
+                $file->filehash = hash_file(File::FILEHASH_ALG, $file->getPath());
+                $file->update($orig);
+            } catch (FileNotFoundException $e) {
+                echo "\n    WARNING: file ID {$file->id} does not exist on path '{$e->path}'. Clean up the file table?";
+            }
+        }
+    }
+
+    printfnq("DONE.\n");
+}
+
 main();