/** * Locate a file by disk and path. * * @param $folder * @param $path * @return FileInterface|null */ public function locate($folder, $name) { $folder = $this->folders->findBySlug($folder); if (!($file = $this->files->findByNameAndFolder($name, $folder))) { return null; } return $file; }
/** * Sync a file. * * @param File $resource * @param DiskInterface $disk * @return null|FileInterface */ public function sync(File $resource, DiskInterface $disk) { $folder = $this->syncFolder($resource, $disk); if (!($file = $this->files->findByNameAndFolder(basename($resource->getPath()), $folder))) { $file = $this->files->create(['name' => basename($resource->getPath()), 'folder_id' => $folder ? $folder->getId() : null, 'disk_id' => $disk->getId(), 'size' => $resource->getSize(), 'mime_type' => $resource->getMimetype(), 'extension' => pathinfo($resource->getPath(), PATHINFO_EXTENSION), 'entry_type' => $folder->getEntryModelName()]); } else { $this->files->save($file); } return $file; }
/** * Handle the command. * * @param FileRepositoryInterface $files * @param FolderRepositoryInterface $folders */ public function handle(FileRepositoryInterface $files, FolderRepositoryInterface $folders) { $folder = $folders->findBySlug(dirname($this->file->getPath())); $file = $files->findByNameAndFolder(basename($this->file->getPath()), $folder); if ($file) { $files->delete($file); } }
/** * Handle the command. * * @param FileRepositoryInterface $files * @param FolderRepositoryInterface $folders * @param Decorator $decorator * @return \Anomaly\FilesModule\File\Contract\FileInterface|\Anomaly\Streams\Platform\Model\EloquentModel|null */ public function handle(FileRepositoryInterface $files, FolderRepositoryInterface $folders) { if (is_numeric($this->identifier)) { return $files->find($this->identifier); } if (!is_numeric($this->identifier)) { list($folder, $name) = explode('/', $this->identifier); if (!($folder = $folders->findBySlug($folder))) { return null; } return $files->findByNameAndFolder($name, $folder); } return null; }