public function destroy() { $ids = Input::get('id'); $files = $this->storage->getsIn($ids); foreach ($files as $file) { $this->storage->remove($file); } if (Input::get('redirect') != null) { return redirect(Input::get('redirect')); } else { return redirect()->route('manage.storage.index'); } }
/** * update document * * @param ItemEntity $item board item entity * @return void */ public function put(ItemEntity $item) { $doc = $item->getDocument(); // 비회원 글 수정시 비밀번호를 입력 안한 경우 $origin = $doc->getOriginal(); if ($origin['certifyKey'] != '' && $doc->certifyKey == '') { $doc->certifyKey = $origin['certifyKey']; } $doc = $this->document->put($doc); if ($item->slug != $item->getSlug()->slug) { $slugEntity = $item->getSlug(); $slugEntity->slug = $item->slug; $this->slug->update($item->getSlug()); } // file 이 없어진걸 처리해야해.. 파일을 삭제한 경우를 말이지! $currentFileIds = []; /** @var \Xpressengine\Storage\File $file */ foreach ($this->storage->getsByTargetId($item->id) as $file) { $currentFileIds[] = $file->getId(); } $uploadedFileIds = []; /** @var \Xpressengine\Storage\File $file */ foreach ($item->getFiles() as $file) { $uploadedFileIds[] = $file->getId(); $this->storage->bind($doc->id, $file); } $files = $this->storage->getsIn(array_diff($currentFileIds, $uploadedFileIds)); foreach ($files as $file) { $this->storage->unBind($item->id, $file, true); } }
public function testGetsIn() { list($handler, $repo, $auth, $keygen) = $this->getMocks(); $instance = new Storage($handler, $repo, $auth, $keygen); $mockFile1 = m::mock('Xpressengine\\Storage\\File'); $mockFile2 = m::mock('Xpressengine\\Storage\\File'); $repo->shouldReceive('fetchIn')->once()->with(['id_1', 'id_2'])->andReturn([$mockFile1, $mockFile2]); $files = $instance->getsIn(['id_1', 'id_2']); $this->assertEquals(2, count($files)); }