/** * フォルダパスにある実フォルダをキャビネットに登録する * * @param Model $model Model * @param array $parentCabinetFolder 登録する親フォルダ * @param string $folderPath 実フォルダのパス * @throws InternalErrorException * @return void */ protected function _addFolderFromPath(Model $model, $parentCabinetFolder, $folderPath) { $newFolder = ['CabinetFile' => ['cabinet_id' => $parentCabinetFolder['CabinetFile']['cabinet_id'], 'is_folder' => true, 'filename' => $model->basename($folderPath), 'status' => WorkflowComponent::STATUS_PUBLISHED], 'CabinetFileTree' => ['parent_id' => $parentCabinetFolder['CabinetFileTree']['id'], 'cabinet_key' => $parentCabinetFolder['CabinetFileTree']['cabinet_key']]]; $newFolder = $model->create($newFolder); if (!($savedFolder = $model->saveFile($newFolder))) { throw new InternalErrorException('Save Failed'); } //// folder配下のread $thisFolder = new Folder($folderPath); list($folders, $files) = $thisFolder->read(true, false, true); // 配下のファイル登録 foreach ($files as $childFilePath) { $this->_addFileFromPath($model, $savedFolder, $childFilePath); } // 配下のフォルダ登録 foreach ($folders as $childFolderPath) { $this->_addFolderFromPath($model, $savedFolder, $childFolderPath); } }