/** * 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; } }