protected function setDataStorageObjectMapping($obj, $propertyMapping) { $class = new \ReflectionClass($obj); $this->dataStorage->expects($this->once())->method('getObjectFromArgs')->will($this->returnValue($obj)); $this->dataStorage->expects($this->once())->method('getReflectionClass')->with($obj)->will($this->returnValue($class)); $this->propertyMappingfactory->expects($this->once())->method('getMappingsFromObject')->with($obj, $class)->will($this->returnValue(array($propertyMapping))); }
/** * Removes the file if necessary. * * @param \Doctrine\ORM\Event\LifecycleEventArgs $args The event arguments. */ public function postRemove(LifecycleEventArgs $args) { $mappings = $this->mappingFactory->fromEventArgs($args); foreach ($mappings as $mapping) { $this->fileStorage->removeByMapping($mapping); } }
public function preBind(FormEvent $event) { $form = $event->getForm(); $propertyName = $form->getName(); $obj = $form->getParent()->getData(); //For oneToMany at SonataAdmin if (!$obj) { return; } $mapping = $this->mappingFactory->getMappingFromField($obj, $this->dataStorage->getReflectionClass($obj), $propertyName); if ($mapping) { /* $form->add('file', 'file', array('required' => false)) ->add('delete', 'checkbox', array('required' => false));*/ $this->transformer->setMapping($mapping, $mapping->getFileUploadPropertyName() == $propertyName ? FileDataTransformer::MODE_UPLOAD_FIELD : FileDataTransformer::MODE_FILEDATA_FIELD); } }
function testPreBind() { $obj = new DummyEntity(); $class = new \ReflectionClass($obj); $formEvent = $this->getMockBuilder('Symfony\\Component\\Form\\FormEvent')->disableOriginalConstructor()->getMock(); $form = $this->getMockBuilder('Symfony\\Component\\Form\\Form')->disableOriginalConstructor()->getMock(); $parentForm = $this->getMockBuilder('Symfony\\Component\\Form\\Form')->disableOriginalConstructor()->getMock(); $formEvent->expects($this->once())->method('getForm')->will($this->returnValue($form)); $form->expects($this->once())->method('getParent')->will($this->returnValue($parentForm)); $parentForm->expects($this->once())->method('getData')->will($this->returnValue($obj)); $this->dataStorage->expects($this->once())->method('getReflectionClass')->with($obj)->will($this->returnValue($class)); $propertyMapping = Mocks::getPropertyMappingMock($this); $this->propertyMappingFactory->expects($this->once())->method('getMappingFromField')->with($obj, $class, 'file')->will($this->returnValue($propertyMapping)); $form->expects($this->once())->method('getName')->will($this->returnValue('file')); $this->transformer->expects($this->once())->method('setMapping')->with($propertyMapping); $this->subscriber->preBind($formEvent); }
/** * Получить список полей типа * iphp_file с описанием связей * @param $entity * @return PropertyMapping[] */ protected function getFileMappings($entity) { if (!is_null($this->fileMappingCache)) { return $this->fileMappingCache; } $mappings = $this->mappingFactory->getMappingsFromObject($entity, new \ReflectionClass(get_class($entity))); $properties = []; foreach ($mappings as $mapping) { $properties[$mapping->getFileUploadPropertyName()] = $mapping; } return $this->fileMappingCache = $properties; }
/** * Checks for for file to upload and store it for store at postFlush event * * @param \Doctrine\Common\EventArgs $args The event arguments. */ public function prePersist(EventArgs $args) { $obj = $this->dataStorage->getObjectFromArgs($args); $mappings = $this->mappingFactory->getMappingsFromObject($obj, $this->dataStorage->getReflectionClass($obj)); $curFiles = new \SplObjectStorage(); foreach ($mappings as $mapping) { $file = $mapping->getFileUploadPropertyValue(); if ($file instanceof File) { $curFiles[$mapping] = $file; } $mapping->setFileUploadPropertyValue(null); } //if ($curFiles) $this->deferredFiles [$mappings[0]->getObj()] = $curFiles; if (count($curFiles)) { $this->deferredFiles[$obj] = $curFiles; } }
public function testConfiguredNamerRetrievedFromInvoker() { $obj = new DummyEntity(); $class = new \ReflectionClass($obj); $mappingsConfig = array('dummy_file' => array('upload_dir' => '/www/web/images', 'upload_path' => '/images', 'namer' => array('translit' => array('service' => 'iphp.filestore.namer.default')))); $uploadable = Mocks::getUploadableMock($this); $fileField = Mocks::getUploadableFieldMock($this); $fileField->expects($this->any())->method('getMapping')->will($this->returnValue('dummy_file')); $fileField->expects($this->once())->method('getFileUploadPropertyName')->will($this->returnValue('file')); $fileField->expects($this->once())->method('getFileDataPropertyName')->will($this->returnValue('file')); $this->driver->expects($this->once())->method('readUploadable')->with($class)->will($this->returnValue($uploadable)); $this->driver->expects($this->once())->method('readUploadableFields')->with($class)->will($this->returnValue(array($fileField))); $factory = new PropertyMappingFactory($this->namerServiceInvoker, $this->driver, $mappingsConfig); $mappings = $factory->getMappingsFromObject($obj, $class); $this->assertEquals(1, count($mappings)); if (count($mappings) > 0) { $mapping = $mappings[0]; $this->namerServiceInvoker->expects($this->once())->method('rename')->with('iphp.filestore.namer.default', 'translit', $mapping, 'ab cde', array())->will($this->returnValue('ab-cde')); $this->assertEquals($mapping->useFileNamer('ab cde'), 'ab-cde'); $this->assertTrue($mapping->hasNamer()); } }