/** * Create a new field assignment. * * @param AssignmentFormBuilder $builder * @param DiskRepositoryInterface $disks * @param FieldRepositoryInterface $fields * @param StreamRepositoryInterface $streams * @param $id * @param $field * @return \Symfony\Component\HttpFoundation\Response */ public function create(AssignmentFormBuilder $builder, DiskRepositoryInterface $disks, FieldRepositoryInterface $fields, StreamRepositoryInterface $streams, $id, $field) { /* @var DiskInterface $disk */ $disk = $disks->find($id); $stream = $streams->findBySlugAndNamespace($disk->getSlug(), 'files'); return $builder->setOption('redirect', 'admin/files/disks/assignments/' . $id)->setField($fields->find($field))->setStream($stream)->render(); }
/** * Handle the command. * * @param DiskRepositoryInterface $disks * @param FileRepositoryInterface $files * @param FileFieldTypeParser $parser * @param Request $request * @param MountManager $manager * @return null|bool|FileInterface */ public function handle(DiskRepositoryInterface $disks, FileRepositoryInterface $files, FileFieldTypeParser $parser, Request $request, MountManager $manager) { $path = trim(array_get($this->fieldType->getConfig(), 'path'), './'); $entry = $this->fieldType->getEntry(); $file = $request->file($this->fieldType->getInputName()); $value = $request->get($this->fieldType->getInputName() . '_id'); /** * Make sure we have at least * some kind of input. */ if ($file === null) { if (!$value) { return null; } return $files->find($value); } // Make sure we have a valid upload disk. if (!($disk = $disks->find($id = array_get($this->fieldType->getConfig(), 'disk')))) { throw new \Exception("The configured disk [{$id}] for [{$this->fieldType->getInputName()}] could not be found."); } // Make the path. $path = $parser->parse($path, $this->fieldType); $path = (!empty($path) ? $path . '/' : null) . $file->getClientOriginalName(); return $manager->putStream($disk->path($path), fopen($file->getRealPath(), 'r+')); }
/** * Handle the command. * * @param DiskRepositoryInterface $disks * @param FileRepositoryInterface $files * @param FileFieldTypeParser $parser * @param Request $request * @param MountManager $manager * * @return null|bool|FileInterface */ public function handle(DiskRepositoryInterface $disks, FileRepositoryInterface $files, FileFieldTypeParser $parser, Request $request, MountManager $manager) { $path = trim(array_get($this->fieldType->getConfig(), 'path'), './'); $file = $request->file($this->fieldType->getInputName()); $value = $request->get($this->fieldType->getInputName() . '_id'); /** * Make sure we have at least * some kind of input. */ if ($file === null) { if (!$value) { return null; } return $files->find($value); } // Make sure we have a valid upload disk. First by slug. if (!($disk = $disks->findBySlug($slug = array_get($this->fieldType->getConfig(), 'disk')))) { // If that fails look up by id. if (!($disk = $disks->find($id = array_get($this->fieldType->getConfig(), 'disk')))) { return null; } } // Make the path. $path = $parser->parse($path, $this->fieldType); $path = (!empty($path) ? $path . '/' : null) . $file->getClientOriginalName(); return $manager->putStream($disk->path($path), fopen($file->getRealPath(), 'r+')); }
/** * Return the form to edit an existing disk. * * @param DiskFormBuilder $disk * @param AdapterFormBuilder $form * @param DiskRepositoryInterface $disks * @param ConfigurationFormBuilder $configuration * @param $id * @return \Symfony\Component\HttpFoundation\Response */ public function edit(DiskFormBuilder $disk, AdapterFormBuilder $form, DiskRepositoryInterface $disks, ConfigurationFormBuilder $configuration, $id) { $entry = $disks->find($id); $adapter = $entry->getAdapter(); $form->addForm('disk', $disk->setEntry($id)->setAdapter($adapter)); $form->addForm('configuration', $configuration->setEntry($adapter->getNamespace())->setScope($entry->getSlug())); return $form->render(); }
/** * Handle the validation. * * @param FormBuilder $builder * @param DiskRepositoryInterface $disks * @param $attribute * @return bool */ public function handle(FormBuilder $builder, DiskRepositoryInterface $disks, $attribute) { $fieldType = $builder->getFormField($attribute); $disk = array_get($fieldType->getConfig(), 'disk'); if (is_numeric($disk) && !$disks->find($disk)) { return false; } if (!is_numeric($disk) && !$disks->findBySlug($disk)) { return false; } return true; }
/** * Handle the file upload. * * @param DiskRepositoryInterface $disks * @param ResponseFactory $response * @param MountManager $manager * @param Request $request * @return \Symfony\Component\HttpFoundation\Response */ public function handle(DiskRepositoryInterface $disks, ResponseFactory $response, MountManager $manager, Request $request) { $path = trim($request->get('path'), '.'); $file = $request->file('upload'); $disk = $request->get('disk'); if (is_numeric($disk)) { $disk = $disks->find($disk); } elseif (is_string($disk)) { $disk = $disks->findBySlug($disk); } $file = $manager->putStream($disk->path(ltrim(trim($path, '/') . '/' . $file->getClientOriginalName(), '/')), fopen($file->getRealPath(), 'r+')); /* @var FileInterface $file */ return $response->json($file->getAttributes()); }