/** * @param \Claroline\CoreBundle\Entity\Workspace\Workspace $source * @param \Claroline\CoreBundle\Entity\Workspace\Workspace $workspace */ private function duplicateOrderedTools(Workspace $source, Workspace $workspace) { $orderedTools = $source->getOrderedTools(); $workspaceRoles = $this->getArrayRolesByWorkspace($workspace); foreach ($orderedTools as $orderedTool) { $workspaceOrderedTool = $this->toolManager->addWorkspaceTool($orderedTool->getTool(), $orderedTool->getOrder(), $orderedTool->getName(), $workspace); $rights = $orderedTool->getRights(); foreach ($rights as $right) { $role = $right->getRole(); if ($role->getType() === 1) { $this->toolRightsManager->createToolRights($workspaceOrderedTool, $role, $right->getMask()); } else { $key = $role->getTranslationKey(); if (isset($workspaceRoles[$key]) && !empty($workspaceRoles[$key])) { $this->toolRightsManager->createToolRights($workspaceOrderedTool, $workspaceRoles[$key], $right->getMask()); } } } } }
public function export(Workspace $workspace, array &$files, $object) { $data = []; $workspaceTools = $workspace->getOrderedTools(); $i = 0; foreach ($workspaceTools as $workspaceTool) { $roles = array(); foreach ($workspaceTool->getRights() as $right) { $roles[] = array('name' => $this->roleManager->getWorkspaceRoleBaseName($right->getRole())); } $tool = array('type' => $workspaceTool->getTool()->getName(), 'translation' => $workspaceTool->getTool()->getDisplayName(), 'roles' => $roles); $importer = $this->getImporterByName($workspaceTool->getTool()->getName()); if ($importer) { $tool['data'] = $importer->export($workspace, $files, null); } $data[$i] = array('tool' => $tool); $i++; } return $data; }