private function copyDirectories($directory, $excludeDir = '')
 {
     foreach ($this->getDirectoryIteratorIterator($directory, false, true, $excludeDir) as $fullFileName => $fileName) {
         if ($this->isDone($fullFileName) || $fileName == $this->excludeDirectory) {
             continue;
         }
         $this->copyDirectories($fullFileName);
         $this->ftp->mkdir($this->getRelativeFileName($fullFileName));
         $this->setDone($fullFileName);
     }
 }
 private function checkFtpConnectionSetAndOk($hostname, $directory, $username, $password)
 {
     $ftp = new Gpf_Io_Ftp();
     $ftp->setParams($hostname, $directory, $username, $password);
     try {
         $ftp->connect();
     } catch (Gpf_Exception $e) {
         $ftp->close();
         return $e->getMessage();
     }
     try {
         $fileList = $ftp->getFileList(Gpf_Paths::INSTALL_DIR);
     } catch (Gpf_Exception $e) {
         $ftp->close();
         return $this->_('Invalid main directory');
     }
     if (array_key_exists($this->distributionFileName, array_values($fileList))) {
         $ftp->close();
         return $this->_('Invalid main directory');
     }
     $ftp->close();
     return true;
 }