/** * @DI\Observe("rich_text_format_event_export") * * @param RichTextFormatEvent $event * This is pretty much the same as the RichTextFormatter one */ public function export(RichTextFormatEvent $event) { //urls to be matched... //'/file/resource/media/([^']+)#' //'/resource/open/([^/]+)/([^']+)' $text = $event->getText(); $baseUrl = $this->router->getContext()->getBaseUrl(); $_data = $event->getData(); $_files = $event->getFiles(); //first regex $regex = '#' . $baseUrl . '/file/resource/media/([^\'"]+)#'; preg_match_all($regex, $text, $matches, PREG_SET_ORDER); if (count($matches) > 0) { foreach ($matches as $match) { if (!$this->formatter->getItemFromUid($match[1], $_data)) { $this->formatter->createDataFolder($_data); $node = $this->resourceManager->getNode($match[1]); if ($node && $node->getResourceType()->getName() === 'file') { $el = $this->formatter->getImporterByName('resource_manager')->getResourceElement($node, $node->getWorkspace(), $_files, $_data, true); $el['item']['parent'] = 'data_folder'; $el['item']['roles'] = [['role' => ['name' => 'ROLE_USER', 'rights' => $this->maskManager->decodeMask(7, $this->resourceManager->getResourceTypeByName('file'))]]]; $_data['data']['items'][] = $el; } } $text = $this->replaceLink($text, $match[0], $match[1]); } } $event->setText($text); }