fixupNoticeRendered();
fixupNoticeConversation();
initConversation();
- initInbox();
fixupGroupURI();
+ initGroupProfileId();
initLocalGroup();
initNoticeReshare();
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;
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);
}
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());
}
}
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);