/** * Uploads a file * * @param mixed $upload Uploadable, path or object * @param Folder $folder * @return File * @throws FilelibException */ public function upload($upload, Folder $folder = null, $profile = 'default') { if (!$upload instanceof FileUpload) { $upload = new FileUpload($upload); } if (!$folder) { $folder = $this->folderRepository->findRoot(); } $event = new FolderEvent($folder); $this->eventDispatcher->dispatch(Events::FOLDER_BEFORE_WRITE_TO, $event); $profileObj = $this->profiles->getProfile($profile); $event = new FileUploadEvent($upload, $folder, $profileObj); $this->eventDispatcher->dispatch(Events::FILE_UPLOAD, $event); $upload = $event->getFileUpload(); $file = File::create(array('folder_id' => $folder->getId(), 'name' => $upload->getUploadFilename(), 'profile' => $profile, 'date_created' => $upload->getDateUploaded(), 'uuid' => Uuid::uuid4()->toString())); $file->setStatus(File::STATUS_RAW); $resource = $this->resourceRepository->findResourceForUpload($file, $upload); $file->setResource($resource); $event = new FileEvent($file); $this->eventDispatcher->dispatch(Events::FILE_BEFORE_CREATE, $event); $this->backend->createFile($file, $folder); $event = new FileEvent($file); $this->eventDispatcher->dispatch(Events::FILE_AFTER_CREATE, $event); return $file; }
/** * @test */ public function updates() { $root = $this->op->findRoot(); $folder = Folder::create(['name' => 'tussi', 'parent_id' => $root->getId()]); $folder2 = $this->op->create($folder); $this->assertSame($folder, $folder2); $this->op->update($folder); $this->ed->dispatch(Events::FOLDER_AFTER_UPDATE, Argument::type('Xi\\Filelib\\Event\\FolderEvent'))->shouldHaveBeenCalledTimes(1); }