Newer
Older
<?php
class GroupRoles extends MigrationTask {
var $description = "Migrate permissions from Group to Role";
static $pmap = array(
'can_create_tickets' => 'ticket.create',
'can_edit_tickets' => 'ticket.edit',
'can_delete_tickets' => 'ticket.delete',
'can_close_tickets' => 'ticket.close',
'can_assign_tickets' => 'ticket.assign',
'can_transfer_tickets' => 'ticket.transfer',
'can_ban_emails' => 'emails.banlist',
'can_manage_premade' => 'canned.manage',
'can_manage_faq' => 'faq.manage',
'can_view_staff_stats' => 'stats.agents',
);
function run($max_time) {
global $cfg;
// Select existing groups and create roles matching the current
// settings
foreach (Group::objects() as $group) {
$ht=array(
'flags' => Group::FLAG_ENABLED,
'name' => sprintf('%s %s', $group->getName(),
// XXX: Translate based on the system language, not
// the current agent's
__('Role')),
'notes' => $group->getName()
);
$perms = array();
foreach (self::$pmap as $k => $v) {
if ($group->{$k})
$perms[] = $v;
}
$ht['permissions'] = $perms;
$role = Role::__create($ht);
$group->role_id = $role->getId();
$group->save();
}
// Copy group default role to the agent for the respective primary
// department role
foreach (Staff::objects()->select_related('group') as $staff) {
$staff->role_id = $staff->group->role_id;
$staff->save();
}