tools = []; } public function addTool(AbstractTool $tool): void { $this->tools[$tool->getName()] = $tool; } public function getTools(): array { return $this->tools; } public function createTools(ObjectManager $manager): void { $tools = $this->getTools(); /** @var AbstractTool $tool */ foreach ($tools as $tool) { $toolEntity = new Tool(); $toolEntity ->setName($tool->getName()) ->setImage($tool->getImage()) ->setDescription('') ; if ($tool->getAdmin() === 1) { // Only check ROLE_ADMIN } else { $this->setToolPermissions($toolEntity); } $manager->persist($toolEntity); $types = $tool->getTypes(); if (!empty($types)) { foreach ($types as $type) { $resourceType = new ResourceType(); $resourceType->setName($type); $resourceType->setTool($toolEntity); $manager->persist($resourceType); } } $manager->flush(); } } public function setToolPermissions(Tool $tool): void { $toolResourceRight = new ToolResourceRight(); $toolResourceRight ->setRole('ROLE_TEACHER') ->setMask(ResourceNodeVoter::getEditorMask()) ; $toolResourceRightReader = new ToolResourceRight(); $toolResourceRightReader ->setRole('ROLE_STUDENT') ->setMask(ResourceNodeVoter::getReaderMask()) ; $tool->addToolResourceRight($toolResourceRight); $tool->addToolResourceRight($toolResourceRightReader); } public function addToolsInCourse(Course $course, SettingsManager $settingsManager): Course { $tools = $this->getTools(); $toolVisibility = $settingsManager->getSetting('course.active_tools_on_create'); /** @var AbstractTool $tool */ foreach ($tools as $tool) { $toolEntity = new CTool(); $visibility = in_array($tool->getName(), $toolVisibility); $toolEntity ->setCourse($course) ->setImage($tool->getImage()) ->setName($tool->getName()) ->setVisibility($visibility) ->setLink($tool->getLink()) ->setTarget($tool->getTarget()) ->setCategory($tool->getCategory()); $course->addTools($toolEntity); } return $course; } /** * @param string $name * * @return AbstractTool|false */ public function getToolFromName($name) { $tools = $this->getTools(); if (array_key_exists($name, $tools)) { return $tools[$name]; } return false; } }