Example #1
0
 /**
  * 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);
     }
 }