_model === null) { return $this->_model = new FileModel(); } return $this->_model; } public function getUser(): UserEntity { if ($this->_user === null) { throw new \Exception("사용자정보가 없습니다."); } return $this->_user; } public function setUser(UserEntity $user): void { $this->_user = $user; } public function getBoardName(): string { if ($this->_boardName === null) { throw new \Exception("BoardModel이 지정되지 않았습니다."); } return $this->_boardName; } public function setBoardName(string $boardName): void { $this->_boardName = $boardName; } public function getBoardTable(): string { if ($this->_boardTable === null) { throw new \Exception("BoardModel이 지정되지 않았습니다."); } return $this->_boardTable; } public function setBoardTable(string $boardTable): void { $this->_boardTable = $boardTable; } public function getBoardLevel(): int { if ($this->_boardLevel === null) { throw new \Exception("BoardModel Level이 지정되지 않았습니다."); } return intval($this->_boardLevel); } public function setBoardLevel(string $boardLevel): void { $this->_boardLevel = $boardLevel; } //주의:Override함 public function createFileEntity(): FileEntity { return new FileEntity(); } //망보드 Board Table생성 후 관련된 mb_files Table에 Board번호를 넣기 위함 public function setBoardPID(array $fileEntitys, int $board_pid): void { foreach ($fileEntitys as $fileEntity) { $formDatas['board_pid'] = $board_pid; $this->getModel()->modify($fileEntity, $formDatas); } log_message("notice", __FUNCTION__ . " 작업 완료"); } //작은이미지 생성 private function save_small_image(FileEntity $entity, string $file, int $width = 480, int $height = 319): FileEntity { $fullPath = WRITEPATH . $this->getUploadPath() . DIRECTORY_SEPARATOR . $this->getPath(); $image = new ImageLibrary(); $image->setDebug($this->getDebug()); $image->setSourcePath($fullPath); $image->setDestinationPath($fullPath); //저장파일명 $fileInfos = pathinfo($image->getDestinationPath() . DIRECTORY_SEPARATOR . $file, PATHINFO_ALL); $dstFile = $fileInfos['filename'] . "_small." . $fileInfos['extension']; $image->setDestinationFile($dstFile); $result = $image->create($file, $width, $height); //개인적인 생각방식 // if ($result) { // //작은이미지 생성후 목적지 Path와 파일명을 다시 file_path에 넣는다. URL이 되기때문에 /로 넣어야함 // $entity->setPath(sprintf( // "%s/%s", // $entity->getPath(), // $image->getDestinationFile() // )); // } else { // //원본이미지 생성후 목적지 Path와 파일명을 다시 file_path에 넣는다. URL이 되기때문에 /로 넣어야함 // $entity->setPath(sprintf( // "%s/%s", // $entity->getPath(), // $entity->getTitle() // )); // } //개인적인 생각방식 // //망보드 방식 //mb_files에서 file_path가 망보드 게시판 파일관리에서 image로 표시되어 file_path+file_name로 설정 //원본이미지 생성후 목적지 Path와 파일명을 다시 file_path에 넣는다. URL이 되기때문에 /로 넣어야함 $entity->setPath(sprintf( "%s/%s", $entity->getPath(), $entity->getTitle() )); //망보드 방식 log_message("notice", sprintf( "%s %s번째:%s 작업 완료", __FUNCTION__, $entity->getSequence(), $entity->getPath() )); return $entity; } //망보드 파일관리 table에 등록 private function save_db(FileEntity $entity): FileEntity { // log_message("notice", sprintf("%s %s번째 작업 시작",__FUNCTION__ ,$entity->getSequence())); $entity->user_pid = $this->getUser()->getPK(); $entity->user_name = $this->getUser()->getTitle(); $entity->board_name = $this->getBoardName(); $entity->table_name = $this->getBoardTable(); $entity->reg_date = date("Y-m-d H:i:s"); $entity->file_caption = $entity->getTitle(); $entity->file_alt = $entity->getTitle(); $entity->file_description = "Filedata"; // log_message("debug", "\n-----Entity Value-----\n" . var_export($entity->toArray(), true) . "\n---------------------------\n"); $entity = $this->getModel()->create($entity); log_message("notice", sprintf( "%s %s번째 작업 완료", __FUNCTION__, $entity->getSequence() )); return $entity; } public function save(string $fileName, string $mediaType, string $content, int $file_sequence): FileEntity { $entity = parent::save($fileName, $mediaType, $content, $file_sequence); $entity = $this->save_small_image($entity, $fileName); return $this->save_db($entity); } }