private function getRichTextFilesPattern() { if (null === $this->richtext_files_pattern) { $this->richtext_files_pattern = \Symforce\AdminBundle\Entity\File::getRichTextFilesPattern($this->container->getParameter('sf.web_assets_dir')); } return $this->richtext_files_pattern; }
/** * {@inheritDoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { //$builder->addViewTransformer( new HtmlTransformer() ) ; $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use($options) { // respond to the event, modify data, or form elements $data = $event->getData(); $object = $event->getForm()->getParent()->getData(); if (!$object) { return; } $admin = $this->container->get('sf.admin.loader')->getAdminByClass($options['sf_admin_class']); $em = $admin->getManager(); $className = $admin->getClassName(); $property_name = $options['sf_admin_property']; $oldValue = $admin->getReflectionProperty($property_name)->getValue($object); if ($data) { $pattern = \Symforce\AdminBundle\Entity\File::getRichTextFilesPattern($this->container->getParameter('sf.web_assets_dir')); preg_match_all($pattern, $data, $ms, PREG_SET_ORDER); $repo = $em->getRepository('Symforce\\AdminBundle\\Entity\\File'); $object_id = $admin->getId($object); $is_debug = $this->container->getParameter('kernel.debug'); if ($ms) { foreach ($ms as $ma) { $file = $repo->loadByUUID($ma[1]); $file_changed = false; if ($file && $file->getIsHtmlFile()) { if ($is_debug) { if ($className !== $file->getClassName()) { $file->setClassName($className); $file_changed = true; } if ($property_name !== $file->getPropertyName()) { $file->setPropertyName($property_name); $file_changed = true; } } else { if ($className !== $file->getClassName() || $property_name !== $file->getPropertyName()) { continue; } } /* $this->container->get('sf.admin.loader')->getAdminByClass($object)->addEvent('flushed', function($object, $admin) use($file, $em ){ \Dev::dump($file); $em->refresh($file); \Dev::dump($file); exit; }); */ if ($object_id && $object_id !== $file->getEntityId()) { $file->setEntityId($object_id); $file_changed = true; } if ($file->getSessionId()) { $file->setSessionId(null); $file_changed = true; } if ($file_changed) { $em->persist($file); } } } } } else { // check nullable $event->setData(''); } }); }