/**
* 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);
}
}