END_OF_UPGRADE_HELP;
-require_once INSTALLDIR.'/scripts/commandline.inc';
+require_once INSTALLDIR.'/scripts/commandline.inc.php';
function main()
{
if (Event::handle('StartUpgrade')) {
+ fixupConversationURIs();
+
updateSchemaCore();
updateSchemaPlugins();
initConversation();
fixupGroupURI();
fixupFileGeometry();
+ deleteLocalFileThumbnailsWithoutFilename();
+ deleteMissingLocalFileThumbnails();
initGroupProfileId();
initLocalGroup();
initNoticeReshare();
- initFaveURI();
initSubscriptionURI();
initGroupMemberURI();
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...");
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...");
printfnq("DONE.\n");
}
+/*
+ * File_thumbnail objects for local Files store their own filenames in the database.
+ */
+function deleteLocalFileThumbnailsWithoutFilename()
+{
+ printfnq("Removing all local File_thumbnail entries without filename property...");
+
+ $file = new File();
+ $file->whereAdd('filename IS NOT NULL'); // local files
+
+ if ($file->find()) {
+ // Looping through local File entries
+ while ($file->fetch()) {
+ $thumbs = new File_thumbnail();
+ $thumbs->file_id = $file->id;
+ $thumbs->whereAdd('filename IS NULL');
+ // Checking if there were any File_thumbnail entries without filename
+ if (!$thumbs->find()) {
+ continue;
+ }
+ // deleting incomplete entry to allow regeneration
+ while ($thumbs->fetch()) {
+ $thumbs->delete();
+ }
+ }
+ }
+
+ printfnq("DONE.\n");
+}
+
+/*
+ * Delete File_thumbnail entries where the referenced file does not exist.
+ */
+function deleteMissingLocalFileThumbnails()
+{
+ printfnq("Removing all local File_thumbnail entries without existing files...");
+
+ $thumbs = new File_thumbnail();
+ $thumbs->whereAdd('filename IS NOT NULL'); // only fill in names where they're missing
+ // Checking if there were any File_thumbnail entries without filename
+ if ($thumbs->find()) {
+ while ($thumbs->fetch()) {
+ if (!file_exists(File_thumbnail::path($thumbs->filename))) {
+ $thumbs->delete();
+ }
+ }
+ }
+
+ printfnq("DONE.\n");
+}
+
main();