X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=scripts%2Fupgrade.php;h=adce2555efabb84c6fcb37f01175089951461c3a;hb=d59eb5e184591953ace103522b2db4a00ecd7777;hp=7d81c1983504f1fd8797a789901b118e5a76e31c;hpb=7a9777df053a9007b5eaa71f5437584065b615a5;p=quix0rs-gnu-social.git diff --git a/scripts/upgrade.php b/scripts/upgrade.php index 7d81c19835..adce2555ef 100644 --- a/scripts/upgrade.php +++ b/scripts/upgrade.php @@ -42,9 +42,10 @@ function main() fixupNoticeRendered(); fixupNoticeConversation(); initConversation(); - initInbox(); fixupGroupURI(); + fixupFileGeometry(); + initGroupProfileId(); initLocalGroup(); initNoticeReshare(); @@ -124,7 +125,7 @@ function fixupNoticeConversation() if (empty($notice->reply_to)) { $notice->conversation = $notice->id; } else { - $reply = Notice::staticGet('id', $notice->reply_to); + $reply = Notice::getKV('id', $notice->reply_to); if (empty($reply)) { $notice->conversation = $notice->id; @@ -159,7 +160,7 @@ function fixupGroupURI() if ($group->find()) { while ($group->fetch()) { - $orig = User_group::staticGet('id', $group->id); + $orig = User_group::getKV('id', $group->id); $group->uri = $group->getUri(); $group->update($orig); } @@ -197,44 +198,39 @@ function initConversation() printfnq("DONE.\n"); } -function initInbox() +function initGroupProfileId() { - printfnq("Ensuring all users have an inbox..."); + printfnq("Ensuring all User_group entries have a Profile and profile_id..."); - $user = new User(); - $user->whereAdd('not exists (select user_id from inbox where user_id = user.id)'); - $user->orderBy('id'); - - if ($user->find()) { - - while ($user->fetch()) { - - try { - $notice = new Notice(); - - $notice->selectAdd(); - $notice->selectAdd('id'); - $notice->joinAdd(array('profile_id', 'subscription:subscribed')); - $notice->whereAdd('subscription.subscriber = ' . $user->id); - $notice->whereAdd('notice.created >= subscription.created'); - - $ids = array(); - - if ($notice->find()) { - while ($notice->fetch()) { - $ids[] = $notice->id; - } - } - - $notice = null; + $group = new User_group(); + $group->whereAdd('NOT EXISTS (SELECT id FROM profile WHERE id = user_group.profile_id)'); + $group->find(); - $inbox = new Inbox(); - $inbox->user_id = $user->id; - $inbox->pack($ids); - $inbox->insert(); - } catch (Exception $e) { - printv("Error initializing inbox: " . $e->getMessage()); + while ($group->fetch()) { + try { + // We must create a new, incrementally assigned profile_id + $profile = new Profile(); + $profile->nickname = $group->nickname; + $profile->fullname = $group->fullname; + $profile->profileurl = $group->mainpage; + $profile->homepage = $group->homepage; + $profile->bio = $group->description; + $profile->location = $group->location; + $profile->created = $group->created; + $profile->modified = $group->modified; + + $profile->query('BEGIN'); + $id = $profile->insert(); + if (empty($id)) { + $profile->query('ROLLBACK'); + throw new Exception('Profile insertion failed, profileurl: '.$profile->profileurl); } + $group->query("UPDATE user_group SET profile_id={$id} WHERE id={$group->id}"); + $profile->query('COMMIT'); + + $profile->free(); + } catch (Exception $e) { + printfv("Error initializing Profile for group {$group->nickname}:" . $e->getMessage()); } } @@ -281,7 +277,7 @@ function initNoticeReshare() if ($notice->find()) { while ($notice->fetch()) { try { - $orig = Notice::staticGet('id', $notice->id); + $orig = Notice::getKV('id', $notice->id); $notice->verb = ActivityVerb::SHARE; $notice->object_type = ActivityObject::ACTIVITY; $notice->update($orig); @@ -419,4 +415,33 @@ function initProfileLists() printfnq("DONE.\n"); } +/* + * Added as we now store interpretd width and height in File table. + */ +function fixupFileGeometry() +{ + printfnq("Ensuring width and height is set for supported local File objects..."); + + $file = new File(); + $file->whereAdd('filename IS NOT NULL'); // local files + $file->whereAdd('width IS NULL OR width = 0'); + + if ($file->find()) { + while ($file->fetch()) { + // Add support for video sizes too + try { + $image = new ImageFile($file->id, $file->getPath()); + } catch (UnsupportedMediaException $e) { + continue; + } + $orig = clone($file); + $file->width = $image->width; + $file->height = $image->height; + $file->update($orig); + } + } + + printfnq("DONE.\n"); +} + main();