public function getPersonalWorkspaceToolConfigAsArray() { $roles = $this->roleManager->getAllPlatformRoles(); $availableTools = $this->getAvailableWorkspaceTools(); $data = []; foreach ($roles as $role) { $data[$role->getId()] = array(); $perms = $this->pwsToolConfigRepo->findByRole($role); if ($perms === array() || $perms === null) { foreach ($availableTools as $availableTool) { $data[$role->getId()][$availableTool->getId()] = array('toolId' => $availableTool->getId(), 'name' => $availableTool->getName(), 'mask' => 0, 'id' => 0); } } else { $tools = []; foreach ($perms as $perm) { $tools[$perm->getTool()->getId()] = array('toolId' => $perm->getTool()->getId(), 'name' => $perm->getTool()->getName(), 'mask' => $perm->getMask(), 'id' => $perm->getId()); } //then we'll have to add the missing roles //[ ADD MISSING ROLES HERE] foreach ($availableTools as $availableTool) { $found = false; foreach ($tools as $tool) { if ($tool['name'] === $availableTool->getName()) { $found = true; } } if (!$found) { $tools[$availableTool->getId()] = array('toolId' => $availableTool->getId(), 'name' => $availableTool->getName(), 'mask' => 0, 'id' => null); } } $data[$role->getId()] = $tools; } } //order the array so we can use it easily. return $data; }