/** * 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); } }
/** * updatePageContent * * @param string $documentUid page content document id * @param string $pageId page instance id * @param array $content content string * @param array $title title string * @param array $locale locale * * @return void * @throws \Exception */ public function updatePageContent($documentUid, $pageId, $content, $title, $locale) { $document = $this->document->get($documentUid, $pageId); $document->content = $content; $document->title = $title; $document->locale = $locale; XeDB::beginTransaction(); try { $this->document->put($document); } catch (\Exception $e) { XeDB::rollback(); throw $e; } XeDB::commit(); }
/** * update document * * @param Board $board board model * @param array $args arguments * @param ConfigEntity $config config entity * @return mixed */ public function put(Board $board, array $args, ConfigEntity $config) { $board->getConnection()->beginTransaction(); $attributes = $board->getAttributes(); foreach ($args as $name => $value) { if (array_key_exists($name, $attributes)) { $board->{$name} = $value; } } $this->setModelConfig($board, $config); $doc = $this->documentHandler->put($board); $this->saveSlug($board, $args); $this->saveCategory($board, $args); $fileIds = $this->setFiles($board, $args); $this->setTags($board, $args); $this->unsetTags($board, $args); $this->saveData($board, $args); $board->getConnection()->commit(); return $board->find($board->id); }
/** * test put without user id * * @expectedException \Xpressengine\Document\Exceptions\RequiredValueException * @return void */ public function testPutWithoutInstanceId() { $conn = $this->conn; $repo = $this->repo; $configHandler = $this->configHandler; $instanceManager = $this->instanceManager; $request = $this->request; $handler = new DocumentHandler($conn, $repo, $configHandler, $instanceManager, $request); $doc = $this->getDocumentEntity(); $doc->userId = 'userId'; $doc->shouldReceive('setPureContent'); $doc->shouldReceive('getAuthor')->andReturn(null); $handler->put($doc); }