/**
  * {@inheritdoc}
  *
  * @param PluginBundle $plugin
  *
  * @todo Create dedicated repository methods to retrieve tool/type names
  */
 public function check(PluginBundle $plugin, $updateMode = false)
 {
     if (!is_file($plugin->getConfigFile())) {
         $error = new ValidationError('config.yml file missing');
         $errors = [$error];
         return $errors;
     }
     $config = $this->yamlParser->parse(file_get_contents($plugin->getConfigFile()));
     $names = [];
     $listResource = $this->em->getRepository('ClarolineCoreBundle:Resource\\ResourceType')->findAll();
     foreach ($listResource as $resource) {
         $names[] = $resource->getName();
     }
     $tools = [];
     /** @var \Claroline\CoreBundle\Entity\Tool\Tool[] $listTool */
     $listTool = $this->em->getRepository('ClarolineCoreBundle:Tool\\Tool')->findAllWithPlugin();
     foreach ($listTool as $tool) {
         $toolPlugin = $tool->getPlugin();
         $tools[] = sprintf('%s%s', $toolPlugin ? $toolPlugin->getBundleFQCN() . '-' : '', $tool->getName());
     }
     $resourceActions = [];
     $listResourceActions = $this->em->getRepository('ClarolineCoreBundle:Resource\\MenuAction')->findBy(['resourceType' => null, 'isCustom' => true]);
     foreach ($listResourceActions as $resourceAction) {
         $resourceActions[] = $resourceAction->getName();
     }
     $widgets = [];
     /** @var \Claroline\CoreBundle\Entity\Widget\Widget[] $listWidget */
     $listWidget = $this->em->getRepository('ClarolineCoreBundle:Widget\\Widget')->findAllWithPlugin();
     foreach ($listWidget as $widget) {
         $widgetPlugin = $widget->getPlugin();
         $widgets[] = sprintf('%s%s', $widgetPlugin ? $widgetPlugin->getBundleFQCN() . '-' : '', $widget->getName());
     }
     $processor = new Processor();
     $configuration = new Configuration($plugin, $names, $tools, $resourceActions, $widgets);
     $configuration->setUpdateMode($updateMode);
     try {
         $this->processedConfiguration = $processor->processConfiguration($configuration, $config);
     } catch (\Exception $e) {
         $error = new ValidationError($e->getMessage());
         return [$error];
     }
 }