/** * Turn this item object into a generic array * * @return array */ public function transform(File $file = null) { if ($file === null) { return []; } return ['id' => (int) $file->getId(), 'mimeType' => $file->getMimeType(), 'size' => $file->getSize(), 'name' => $file->getName(), 'uri' => $file->getUri()]; }
public function consolidate($packageCode, $user, $name = '') { $processedFiles = []; $temporalPackage = unserialize($this->redis->get($packageCode)); $files = $temporalPackage->getFiles(); // Create Package $package = new Package(); $package->setCode($packageCode)->setCreatedAt(new \DateTime())->setSize(0)->setUser($user)->setName($name)->setFrozen(Package::NOT_FROZEN); // Calculate Short Code $i = 0; do { $shortCode = substr($packageCode, $i, 6); } while ($this->doctrine->getManager()->getRepository('AppBundle:Package')->shortCodeExists($shortCode)); $package->setShortCode($shortCode); foreach ($files as $temporalFile) { $file = new File(); $file->setSize(filesize($this->temporalDir . '/' . $packageCode . '-' . $temporalFile->getHash() . '.obj'))->setHash($temporalFile->getHash())->setName($temporalFile->getName())->setPackage($package); $package->setSize($package->getSize() + $file->getSize()); try { $uploader = new MultipartUploader($this->s3Client, $this->temporalDir . '/' . $packageCode . '-' . $temporalFile->getHash() . '.obj', ['bucket' => $this->bucket, 'key' => $file->getUri()]); $uploader->upload(); $processedFiles[$temporalFile->getName()] = true; $this->doctrine->getManager()->persist($file); unlink($this->temporalDir . '/' . $packageCode . '-' . $temporalFile->getHash() . '.obj'); } catch (MultipartUploadException $e) { $processedFiles[$temporalFile->getName()] = $e->getMessage(); } } $this->doctrine->getManager()->persist($package); $this->doctrine->getManager()->flush(); $this->redis->del($packageCode); return $processedFiles; }