Add support (and upgrade path) for group profiles
This commit is contained in:
parent
5da72e5aa2
commit
352bef2374
@ -38,6 +38,7 @@ class User_group extends Managed_DataObject
|
|||||||
return array(
|
return array(
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
'id' => array('type' => 'serial', 'not null' => true, 'description' => 'unique identifier'),
|
'id' => array('type' => 'serial', 'not null' => true, 'description' => 'unique identifier'),
|
||||||
|
'profile_id' => array('type' => 'int', 'not null' => true, 'description' => 'foreign key to profile table'),
|
||||||
|
|
||||||
'nickname' => array('type' => 'varchar', 'length' => 64, 'description' => 'nickname for addressing'),
|
'nickname' => array('type' => 'varchar', 'length' => 64, 'description' => 'nickname for addressing'),
|
||||||
'fullname' => array('type' => 'varchar', 'length' => 255, 'description' => 'display name'),
|
'fullname' => array('type' => 'varchar', 'length' => 255, 'description' => 'display name'),
|
||||||
@ -62,8 +63,12 @@ class User_group extends Managed_DataObject
|
|||||||
'unique keys' => array(
|
'unique keys' => array(
|
||||||
'user_group_uri_key' => array('uri'),
|
'user_group_uri_key' => array('uri'),
|
||||||
),
|
),
|
||||||
|
'foreign keys' => array(
|
||||||
|
'user_group_id_fkey' => array('profile', array('profile_id' => 'id')),
|
||||||
|
),
|
||||||
'indexes' => array(
|
'indexes' => array(
|
||||||
'user_group_nickname_idx' => array('nickname'),
|
'user_group_nickname_idx' => array('nickname'),
|
||||||
|
'user_group_profile_id_idx' => array('profile_id'), //make this unique in future
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,7 @@ function main()
|
|||||||
initInbox();
|
initInbox();
|
||||||
fixupGroupURI();
|
fixupGroupURI();
|
||||||
|
|
||||||
|
initGroupProfileId();
|
||||||
initLocalGroup();
|
initLocalGroup();
|
||||||
initNoticeReshare();
|
initNoticeReshare();
|
||||||
|
|
||||||
@ -241,6 +242,45 @@ function initInbox()
|
|||||||
printfnq("DONE.\n");
|
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()
|
function initLocalGroup()
|
||||||
{
|
{
|
||||||
printfnq("Ensuring all local user groups have a local_group...");
|
printfnq("Ensuring all local user groups have a local_group...");
|
||||||
|
Loading…
Reference in New Issue
Block a user