6.0.0-git
2024-10-31
Last Modified 2007-01-18 by Guest

Sometimes there is a requirement to rename users in the Horde DB. eg: you move from a system with 'standard' users to one where virtual hosting is used. In such a situation the old user may be 'fred' and the new user may be 'fred@hisdomain.com'

The script below seems to work for the following apps:

  • Address Book (turba)
  • Calendar (kronolith)
  • File Manager (gollem)
  • Filters (ingo)
  • Horde (horde)
  • Mail (imp)
  • News (jonah)
  • Notes (mnemo)
  • Password (passwd)
  • Tasks (nag)
  • Tickets (whups)
  • Time Tracking (hermes)

YMMV and more apps will need more changes of course.

BACKUP YOUR DB BEFORE RUNNING ANYTHING LIKE THIS!

#!/bin/sh

function horde_rename() {
  new=$2; old=$1
  echo "Rename $old -> $new"

  mysql -u horde -ppassword horde << EOF
update hermes_timeslices set employee_id = '$new' where employee_id = '$old';
update horde_datatree set user_uid = '$new' where user_uid = '$old';
update horde_datatree set datatree_name = '$new' where datatree_name = '$old' and user_uid = '$new';
update horde_datatree_attributes set attribute_value = '$new' where attribute_value = '$old' and attribute_key = 'who';
update horde_datatree_attributes set attribute_key= '$new' where attribute_key = '$old' and attribute_name = 'perm_users';
update horde_datatree_attributes set attribute_value = '$new' where attribute_value = '$old' and attribute_name = 'uid';
update horde_datatree_attributes set attribute_value = '$new' where attribute_value = '$old' and attribute_name = 'owner';
update horde_histories set history_who = '$new' where history_who = '$old';
update horde_prefs set pref_uid = '$new' where pref_uid = '$old';
update kronolith_events set event_creator_id = '$new' where event_creator_id = '$old';
update kronolith_events set calendar_id = '$new' where calendar_id = '$old';
update mnemo_memos set memo_owner = '$new' where memo_owner = '$old';
update nag_tasks set task_owner = '$new' where task_owner = '$old';
update turba_objects set owner_id = '$new' where owner_id = '$old';
update whups_tickets set user_id_requester = '$new' where user_id_requester = '$old';
update whups_queues_users set user_uid = '$new' where user_uid = '$old';
update whups_users_searches set user_uid = '$new' where user_uid = '$old';
EOF
  echo "Done with $new"
}

horde_rename 'fred' 'fred@hisdomain.com'

I did notice that notepads, tasks lists, calendars, etc. become 'hidden' after doing this. No data appears to be lost and users simply have to re-select the ones they want to see though.