Re: merging two users?

Adam Tauno Williams <[email protected]> Thu, 26 Mar 2009 19:57:52 -0400
Newsgroups gmane.comp.cms.opengroupware.user
Message-ID <1238111872.5011.4.camel@linux-m3mt>
On Thu, 2009-03-26 at 15:54 -0600, Dax Kelson wrote:
> I have two accounts in OGo
> What SQL can I use to merge the robert user into the bob user?

The following should move everything,  but you'll need to deal with any
resulting duplication in the company_assignment,
date_company_assignment, object_acl, team, and
project_company_assignment tables (if both you and the other user are
assigned to the same object you'll then be assigned twice). 

Someone should file a bug to create a tool to do this (merge one user's
assignments and rights into another user).

UPDATE company
SET owner_id = ${TARGETID}, object_version = object_version + 1
WHERE owner_id = ${SOURCEID};

UPDATE company
SET contact_id = ${TARGETID}, object_version = object_version + 1
WHERE contact_id = ${SOURCEID};

UPDATE company_assignment
SET company_id = ${TARGETID}
WHERE company_id = ${SOURCEID};

UPDATE company_assignment
SET sub_company_id = ${TARGETID}
WHERE sub_company_id = ${SOURCEID};

--- probably should be constrain to future dates
UPDATE date_company_assignment
SET company_id = ${TARGETID}
WHERE company_id = ${SOURCEID};

--- probably should be constrained to future dates
UPDATE date_x
SET owner_id = ${TARGETID}, object_version = object_version + 1
WHERE owner_id = ${SOURCEID};

UPDATE doc
SET first_owner_id = ${TARGETID}, object_version = object_version + 1
WHERE first_owner_id = ${SOURCEID};

UPDATE doc
SET current_owner_id = ${TARGETID}, object_version = object_version + 1
WHERE current_owner_id = ${SOURCEID};

UPDATE document_version
SET last_owner_id = ${TARGETID}, object_version = object_version + 1
WHERE last_owner_id = ${SOURCEID};

UPDATE job
SET creator_id = ${TARGETID}, object_version = object_version + 1
WHERE creator_id = ${SOURCEID};

UPDATE job
SET executant_id = ${TARGETID}, object_version = object_version + 1
WHERE executant_id = ${SOURCEID};

UPDATE obj_link
SET source_id = ${TARGETID}
WHERE source_id = ${SOURCEID};

UPDATE obj_link
SET target_id = ${TARGETID}
WHERE target_id = ${SOURCEID};

UPDATE object_acl
SET auth_id = ${TARGETID}
WHERE auth_id = ${SOURCEID};

UPDATE project
SET owner_id = ${TARGETID}
WHERE owner_id = ${SOURCEID};

UPDATE project_company_assignment
SET company_id = ${TARGETID}
WHERE company_id = ${SOURCEID};

UPDATE team
SET owner_id = ${TARGETID}, object_version = object_version + 1
WHERE owner_id = ${SOURCEID};
-- 
OpenGroupware developer: [email protected]
<http://whitemiceconsulting.blogspot.com/>
OpenGroupare & Cyrus IMAPd documenation @
<http://docs.opengroupware.org/Members/whitemice/wmogag/file_view>

-- 
OpenGroupware.org Users
[email protected]
http://mail.opengroupware.org/mailman/listinfo/users