Ejemplo n.º 1
0
 /**
  * TODO: Will need to be moved/merged to/with FileSystemExecModule
  */
 public static function move($params)
 {
     $apiManager = new ApiManager();
     $currentUser = ProcManager::getInstance()->getCurrentProcess()->getLoginContext()->getEyeosUser();
     $settings = MetaManager::getInstance()->retrieveMeta($currentUser);
     $pathOrig = $params['orig'];
     $pathDest = $params['dest'];
     $cloudDest = $params['cloudDest'];
     $cloudOrig = $params['cloudOrig'];
     if ($cloudOrig === $cloudDest) {
         $file = null;
         $cloud = isset($params['cloud']['origin']) && strlen($params['cloud']['origin']) > 0 ? $params['cloud']['origin'] : isset($params['cloud']['destination']) && strlen($params['cloud']['destination']) > 0 ? $params['cloud']['destination'] : null;
         if (is_array($params['file']) && array_key_exists('pathAbsolute', $params['file'])) {
             $file = FSI::getFile($params['file']['pathAbsolute']);
         } else {
             $file = FSI::getFile($params['file']['path']);
         }
         $isDirectory = $file->isDirectory();
         if (!$isDirectory) {
             $name = explode(".", $file->getName());
             $extension = (string) $name[count($name) - 1];
             $theName = substr($file->getName(), 0, strlen($file->getName()) - strlen($extension) - 1);
         } else {
             $theName = $file->getName();
         }
         $nameForCheck = $theName;
         if (!$isDirectory) {
             $nameForCheck .= '.' . $extension;
         }
         $number = 1;
         $newFile = FSI::getFile($pathDest . "/" . $nameForCheck);
         $change = false;
         while ($newFile->exists()) {
             $futureName = array($theName, $number);
             $nameForCheck = implode(' ', $futureName);
             if (!$isDirectory) {
                 $nameForCheck .= '.' . $extension;
             }
             $number++;
             $newFile = FSI::getFile($pathDest . "/" . $nameForCheck);
             $change = true;
         }
         if ($cloudOrig) {
             $apiManager->recursiveDeleteVersion($cloud, $params['file']['id'], $currentUser->getId());
         }
         if ($cloudOrig && $cloudDest) {
             if ($isDirectory) {
                 $filename = $theName;
             } else {
                 $filename = $theName . '.' . $extension;
             }
             $token = $_SESSION['access_token_' . $cloud . '_v2'];
             $resourceUrl = null;
             if (isset($params['file']['resource_url'])) {
                 $token = new stdClass();
                 $token->key = $params['file']['access_token_key'];
                 $token->secret = $params['file']['access_token_secret'];
                 $resourceUrl = $params['file']['resource_url'];
             }
             $result = $apiManager->moveMetadata($cloud, $token, !$isDirectory, $params['file']['id'], $pathOrig, $pathDest, $currentUser->getId(), $params['idParent'], $filename, $change == true ? $nameForCheck : null, $resourceUrl);
             if ($result['status'] == 'KO') {
                 if ($result['error'] == 403) {
                     $denied = self::permissionDeniedCloud($params['cloud']);
                     $result['path'] = $denied['path'];
                 }
                 return $result;
             }
         } else {
             $file->moveTo($newFile);
         }
         self::updateUrlShare($file->getPath(), $newFile->getPath());
         $return = self::getFileInfo($newFile, $settings);
         return $return;
     } else {
         $cloud = isset($params['cloud']['origin']) && strlen($params['cloud']['origin']) > 0 ? $params['cloud']['origin'] : null;
         if ($cloudOrig) {
             $apiManager->recursiveDeleteVersion($cloud, $params['file']['id'], $currentUser->getId());
         }
         $result = self::copyFile($params);
         if (array_key_exists('error', $result)) {
             if ($result['error'] == 403) {
                 $denied = self::permissionDeniedCloud($cloud);
                 $result['path'] = $denied['path'];
             }
         }
         return $result;
     }
 }