예제 #1
0
 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;
 }
예제 #2
0
파일: Folder.php 프로젝트: ajaboa/crmpuan
 /**
  * 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);
 }