/** * Uploades files. * @return void */ private function uploadFiles(array $files) { $root = $this->server->getDir(); $prevDir = NULL; $toRename = []; foreach ($files as $num => $file) { $remoteFile = $root . $file; $isDir = substr($remoteFile, -1) === '/'; $remoteDir = $isDir ? substr($remoteFile, 0, -1) : str_replace('\\', '/', dirname($remoteFile)); if ($remoteDir !== $prevDir) { $prevDir = $remoteDir; $this->server->createDir($remoteDir); } if ($isDir) { $this->writeProgress($num + 1, count($files), $file, NULL, 'green'); continue; } $localFile = $this->preprocess($orig = $this->local . $file); if (realpath($orig) !== $localFile) { $file .= ' (filters applied)'; } $toRename[] = $remoteFile; $this->server->writeFile($localFile, $remoteFile . self::TEMPORARY_SUFFIX, function ($percent) use($num, $files, $file) { $this->writeProgress($num + 1, count($files), $file, $percent, 'green'); }); $this->writeProgress($num + 1, count($files), $file, NULL, 'green'); } $this->logger->log("\nRenaming:"); foreach ($toRename as $num => $file) { $this->writeProgress($num + 1, count($toRename), "Renaming {$file}", NULL, 'olive'); $this->server->renameFile($file . self::TEMPORARY_SUFFIX, $file); } }
/** * @param array $list * @param bool $reverse * @return void */ protected function doRename(array $list, $reverse = FALSE) { foreach ($list as $pair) { // Skip invalid pair if (!is_array($pair) && count($pair) != 2) { continue; } list($old, $new) = $pair; // 1# rename to new file $this->server->renameFile($old, $new); $this->log(sprintf('rename from [%s] to [%s]', $old, $new)); if (!$reverse) { // 2# store to batch $this->batch[self::MODE_RENAME][] = [$new, $old]; } } }