initInbox();
fixupGroupURI();
+ initGroupProfileId();
initLocalGroup();
initNoticeReshare();
initSubscriptionURI();
initGroupMemberURI();
+ initProfileLists();
+
Event::handle('EndUpgrade');
}
}
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 initGroupProfileId()
+{
+ printfnq("Ensuring all User_group entries have a Profile and profile_id...");
+
+ $group = new User_group();
+ $group->whereAdd('NOT EXISTS (SELECT id FROM profile WHERE id = user_group.profile_id)');
+ $group->find();
+
+ 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());
+ }
+ }
+
+ printfnq("DONE.\n");
+}
+
function initLocalGroup()
{
printfnq("Ensuring all local user groups have a local_group...");
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);
printfnq("DONE.\n");
}
+function initProfileLists()
+{
+ printfnq("Ensuring all profile tags have a corresponding list...");
+
+ $ptag = new Profile_tag();
+ $ptag->selectAdd();
+ $ptag->selectAdd('tagger, tag, count(*) as tagged_count');
+ $ptag->whereAdd('NOT EXISTS (SELECT tagger, tagged from profile_list '.
+ 'where profile_tag.tagger = profile_list.tagger '.
+ 'and profile_tag.tag = profile_list.tag)');
+ $ptag->groupBy('tagger, tag');
+ $ptag->orderBy('tagger, tag');
+
+ if ($ptag->find()) {
+ while ($ptag->fetch()) {
+ $plist = new Profile_list();
+
+ $plist->tagger = $ptag->tagger;
+ $plist->tag = $ptag->tag;
+ $plist->private = 0;
+ $plist->created = common_sql_now();
+ $plist->modified = $plist->created;
+ $plist->mainpage = common_local_url('showprofiletag',
+ array('tagger' => $plist->getTagger()->nickname,
+ 'tag' => $plist->tag));;
+
+ $plist->tagged_count = $ptag->tagged_count;
+ $plist->subscriber_count = 0;
+
+ $plist->insert();
+
+ $orig = clone($plist);
+ // After insert since it uses auto-generated ID
+ $plist->uri = common_local_url('profiletagbyid',
+ array('id' => $plist->id, 'tagger_id' => $plist->tagger));
+
+ $plist->update($orig);
+ }
+ }
+
+ printfnq("DONE.\n");
+}
+
main();