/** * {@inheritDoc} */ public function ingest(Media $media, Request $request, ErrorStore $errorStore) { $data = $request->getContent(); $fileData = $request->getFileData(); if (!isset($fileData['file'])) { $errorStore->addError('error', 'No files were uploaded'); return; } if (!isset($data['file_index'])) { $errorStore->addError('error', 'No file index was specified'); return; } $index = $data['file_index']; if (!isset($fileData['file'][$index])) { $errorStore->addError('error', 'No file uploaded for the specified index'); return; } $fileManager = $this->getServiceLocator()->get('Omeka\\File\\Manager'); $file = $this->getServiceLocator()->get('Omeka\\File'); $fileInput = new FileInput('file'); $fileInput->getFilterChain()->attach(new RenameUpload(['target' => $file->getTempPath(), 'overwrite' => true])); $fileData = $fileData['file'][$index]; $fileInput->setValue($fileData); if (!$fileInput->isValid()) { foreach ($fileInput->getMessages() as $message) { $errorStore->addError('upload', $message); } return; } // Actually process and move the upload $fileInput->getValue(); $file->setSourceName($fileData['name']); $hasThumbnails = $fileManager->storeThumbnails($file); $fileManager->storeOriginal($file); $media->setFilename($file->getStorageName()); $media->setMediaType($file->getMediaType()); $media->setHasThumbnails($hasThumbnails); $media->setHasOriginal(true); if (!array_key_exists('o:source', $data)) { $media->setSource($fileData['name']); } }
public function testMerge() { $value = array('tmp_name' => 'bar'); $input = new FileInput('foo'); $input->setAutoPrependUploadValidator(false); $input->setValue($value); $filter = new Filter\StringTrim(); $input->getFilterChain()->attach($filter); $validator = new Validator\Digits(); $input->getValidatorChain()->attach($validator); $input2 = new FileInput('bar'); $input2->merge($input); $validatorChain = $input->getValidatorChain(); $filterChain = $input->getFilterChain(); $this->assertFalse($input2->getAutoPrependUploadValidator()); $this->assertEquals($value, $input2->getRawValue()); $this->assertEquals(1, $validatorChain->count()); $this->assertEquals(1, $filterChain->count()); $validators = $validatorChain->getValidators(); $this->assertInstanceOf('Zend\\Validator\\Digits', $validators[0]['instance']); $filters = $filterChain->getFilters()->toArray(); $this->assertInstanceOf('Zend\\Filter\\StringTrim', $filters[0]); }