protected function actionProcessUploadQueue($params) { $response['success'] = true; if (!isset($params['overwrite'])) { $params['overwrite'] = 'ask'; } //can be ask, yes, no $destinationFolder = \GO\Files\Model\Folder::model()->findByPk($params['destination_folder_id']); if (!$destinationFolder->checkPermissionLevel(\GO\Base\Model\Acl::CREATE_PERMISSION)) { throw new \GO\Base\Exception\AccessDenied(); } while ($tmpfile = array_shift(\GO::session()->values['files']['uploadqueue'])) { if (is_dir($tmpfile)) { $folder = new \GO\Base\Fs\Folder($tmpfile); if ($folder->exists()) { $folder->move($destinationFolder->fsFolder, false, true); $destinationFolder->addFileSystemFolder($folder); } } else { $file = new \GO\Base\Fs\File($tmpfile); if ($file->exists()) { $existingFile = $destinationFolder->hasFile($file->name()); if ($existingFile) { switch ($params['overwrite']) { case 'ask': array_unshift(\GO::session()->values['files']['uploadqueue'], $tmpfile); $response['fileExists'] = $file->name(); return $response; break; case 'yestoall': case 'yes': //we dont want overwrite file in no case $existingFile->replace($file); if ($params['overwrite'] == 'yes') { $params['overwrite'] = 'ask'; } break; case 'notoall': case 'no': if ($params['overwrite'] == 'no') { $params['overwrite'] = 'ask'; } continue; break; } } else { $destinationFolder->addFileSystemFile($file); } $response['success'] = true; } } } return $response; }
/** * Add a filesystem file to this folder. The file will be moved to this folder * and added to the database. * * @param \GO\Base\Fs\File $file * @return File */ public function addFilesystemFolder(\GO\Base\Fs\Folder $folder) { $folder->move($this->fsFolder); return $this->addFolder($folder->name(), true); }