/**
  * Get files in directory locally and remotely.
  *
  * @param string $dir full path to directory
  *
  * @return array of files
  */
 public function getFilesInDirectory($dir)
 {
     if ($this->validPathStr($dir) === false) {
         throw new \Exception('Directory path is not valid. Possible security issue.');
     }
     $files = array();
     $basePath = $this->addEndingSlash($this->command->getGitEnvironment()->getPath());
     $relativePath = $dir;
     if ($relativePath) {
         $relativePath = $this->addEndingSlash($relativePath);
     }
     if ($this->command->getGitEnvironment()->getSsh() === true) {
         //Remote Directory Listing
         $directoryList = $this->command->getSftpProcess()->getDirectoryList($basePath . $relativePath);
         foreach ($directoryList as $filename => $fileData) {
             if ($filename !== '.' && $filename !== '..' && $filename !== '.git') {
                 $fileData['fullPath'] = $basePath . rtrim($relativePath, '/') . '/' . $filename;
                 $fileData['gitPath'] = $relativePath . $filename;
                 $remoteFileInfo = new RemoteFileInfo($fileData);
                 if ($remoteFileInfo->isFile()) {
                 }
                 $files[] = $remoteFileInfo;
             }
         }
     } else {
         //Local Directory Listing
         $directoryIterator = new \DirectoryIterator($basePath . $dir);
         $directoryIterator->setInfoClass('\\VersionControl\\GitCommandBundle\\Entity\\FileInfo');
         foreach ($directoryIterator as $fileInfo) {
             if (!$fileInfo->isDot() && $fileInfo->getFilename() !== '.git') {
                 $newFileInfo = $fileInfo->getFileInfo();
                 $newFileInfo->setGitPath($relativePath . $fileInfo->getFilename());
                 $files[] = $newFileInfo;
             }
         }
     }
     $this->sortFilesByDirectoryThenName($files);
     return $files;
 }
 public function testCreateDirectoryIterator_DirectoryContainingFiles()
 {
     $this->storage->createDirectory('some_directory/');
     $directory = new DirectoryObject($this->storage->getPath('some_directory/'));
     $expected = new \DirectoryIterator($this->storage->getPath('some_directory/'));
     $expected->setFileClass('Stalxed\\FileSystem\\FileObject');
     $expected->setInfoClass('Stalxed\\FileSystem\\FileInfo');
     $this->assertEquals($expected, $directory->createDirectoryIterator());
 }
Example #3
0
 /**
  * Создаёт объект DirectoryIterator для текущей директории.
  *
  * @return DirectoryIterator
  */
 public function createDirectoryIterator()
 {
     $iterator = new \DirectoryIterator($this->getRealPath());
     $iterator->setFileClass('Stalxed\\FileSystem\\FileObject');
     $iterator->setInfoClass('Stalxed\\FileSystem\\FileInfo');
     return $iterator;
 }