public function getMissingRecords()
{
$output = array();
foreach (array(array(self::ROLE_ID_FULL_ACCESS, true), array(self::ROLE_ID_EVERYTHING_FORBIDDEN, false)) as $v) {
$roleId = $v[0];
$allowed = $v[1];
$role = $this->getRole($roleId);
$roleResources = $role->getResources();
foreach (Resource\Definition::getAll() as $resourceId => $resourceDefinition) {
// Absence of the record is considered as forbidden
if (!$allowed && !isset($roleResources[$resourceId])) {
continue;
}
if (!isset($roleResources[$resourceId])) {
$output .= sprintf("INSERT `acl_role_resources` " . "SET `role_id` = %d, `resource_id` = 0x%x, `granted` = %d;\n", $roleId, $resourceId, (int) $allowed);
$roleResources[$resourceId] = new Role\RoleResourceObject($roleId, $resourceId, $allowed);
}
$resource = $roleResources[$resourceId];
if ($resource->isGranted() != $allowed) {
$output .= sprintf("UPDATE `acl_role_resources` " . "SET `granted` = %d; WHERE `role_id` = %d AND `resource_id` = 0x%x;\n", (int) $allowed, $roleId, $resourceId);
}
$permissions = $resource->getPermissions();
foreach ($resourceDefinition->getPermissions() as $permissionId => $description) {
// Absence of the record is considered as forbidden
if (!$allowed && !isset($permissions[$permissionId])) {
continue;
}
if (!isset($permissions[$permissionId])) {
$output .= sprintf("INSERT `acl_role_resource_permissions` " . "SET `role_id` = %d, `resource_id` = 0x%x, `perm_id` = '%s', `granted` = %d;\n", $roleId, $resourceId, $permissionId, (int) $allowed);
$permissions[$permissionId] = new Role\RoleResourcePermissionObject($roleId, $resourceId, $permissionId, $allowed);
}
$permission = $permissions[$permissionId];
if ($permission->isGranted() != $allowed) {
$output .= sprintf("UPDATE `acl_role_resource_permissions` SET `granted` = %d; " . "WHERE `role_id` = %d AND `resource_id` = 0x%x AND `perm_id` = '%s';\n", (int) $allowed, $roleId, $resourceId, $permissionId);
}
}
unset($permissions);
}
unset($role);
unset($roleResources);
}
return $output;
}