container->get('mautic.model.factory')->getModel('user.role'); // Get all non admin roles. $roles = $model->getEntities([ 'orderBy' => 'r.id', 'orderByDir' => 'ASC', 'filter' => [ 'where' => [ [ 'col' => 'r.isAdmin', 'expr' => 'eq', 'val' => 0, ], ], ], ]); /** @var Role $role */ foreach ($roles as $role) { $rawPermissions = $role->getRawPermissions(); if (empty($rawPermissions)) { continue; } $leadPermission = $rawPermissions['lead:leads'] ?? []; $listPermission = $rawPermissions['lead:lists'] ?? []; if (empty($leadPermission) && empty($listPermission)) { continue; } // Map all leads permission to list. $newPermissions = $leadPermission; if (!in_array('full', $newPermissions)) { // If lead has viewown permission, then add create permission for list. if (in_array('viewown', $leadPermission)) { $newPermissions[] = 'create'; } // Add the list related permission. foreach ($listPermission as $perm) { $newPermissions[] = $perm; } } $rawPermissions['lead:lists'] = array_unique($newPermissions); $model->setRolePermissions($role, $rawPermissions); $model->saveEntity($role); } } }