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;
 }
Example #2
0
 /**
  * {@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('');
         }
     });
 }