Ejemplo n.º 1
0
 /**
  * Recursive deletes path.
  * @param  string
  * @return void
  */
 private function purge($path, $onlyContent = FALSE)
 {
     static $counter;
     echo str_pad(str_repeat('.', $counter++ % 40), 40), "\r";
     if (!$onlyContent && $this->ftp->tryDelete($path)) {
         return;
     }
     foreach ((array) $this->ftp->nlist($path) as $file) {
         if ($file != NULL && !preg_match('#(^|/)\\.+$#', $file)) {
             // intentionally ==
             $file = strpos($file, '/') === FALSE ? "{$path}/{$file}" : $file;
             if ($file !== $path) {
                 $this->purge($file);
             }
         }
     }
     if (!$onlyContent) {
         $this->ftp->tryRmdir($path);
     }
 }
Ejemplo n.º 2
0
&style=bloco" class="btn btn-success" style="float: right; width: 100px;">Bloco</a>
<?php 
} else {
    ?>
    <a href="<?php 
    echo $Ftp->getPage() . "&ftp=" . $Ftp->getUrl();
    ?>
&style=lista" class="btn btn-primary" style="float: right; width: 100px;">Lista</a>
<?php 
}
echo "</div>";
?>

<div class="well">
    <?php 
$lista = !empty($dir) ? $Ftp->nlist($dir) : $Ftp->nlist('.');
if (empty($file)) {
    $i = 0;
    $class = $style == 'lista' ? 'list-group' : 'row';
    echo "<div class=\"{$class}\">";
    foreach ($lista as $url) {
        $title = $Ftp->UrlToDir($url);
        if ($title != '.tmb' && $title != '.quarantine') {
            if (empty($style) || $style == "bloco") {
                if ($i % 6 == 0) {
                    echo "</div><div class=\"row\">";
                }
            }
            if (empty($style) || $style == "bloco") {
                if ($Ftp->ftp_is_dir($url)) {
                    $Ftp->getIcon("&ftp={$url}", $title, "pasta");
Ejemplo n.º 3
0
/**
 * Copies files using FTP access
 *
 * @param string $source Absolute path (non-ftp) to source dir/file
 * @param string $destination Absolute path (non-ftp) to destination dir/file
 * @param array $ftp_access
 *      array(
 *          'hostname',
 *          'username',
 *          'password',
 *          'directory'
 *      )
 * @return bool true if all files were copied or (string) Error message
 */
function fn_copy_by_ftp($source, $destination, $ftp_access)
{
    try {
        $ftp = new Ftp();
        $ftp->connect($ftp_access['hostname']);
        $ftp->login($ftp_access['username'], $ftp_access['password']);
        $ftp->chdir($ftp_access['directory']);
        $files = $ftp->nlist('');
        if (!empty($files) && in_array('config.php', $files)) {
            $ftp_destination = str_replace(Registry::get('config.dir.root'), '', $destination);
            if (is_file($source)) {
                // File
                try {
                    $file = ltrim($ftp_destination, '/');
                    $ftp->put($file, $source, FTP_BINARY);
                } catch (FtpException $e) {
                    throw new FtpException('ftp_access_denied' . ':' . $e->getMessage());
                }
            } else {
                // Dir
                $ftp->chdir($ftp_access['directory'] . $ftp_destination);
                $struct = fn_get_dir_contents($source, false, true, '', '', true);
                foreach ($struct as $file) {
                    $dir = dirname($file);
                    if (!$ftp->isDir($dir)) {
                        try {
                            $ftp->mkDirRecursive($dir);
                        } catch (FtpException $e) {
                            throw new FtpException('ftp_access_denied' . ':' . $e->getMessage());
                        }
                    }
                    try {
                        $ftp->put($file, $source . $file, FTP_BINARY);
                    } catch (FtpException $e) {
                        throw new FtpException('ftp_access_denied' . ':' . $e->getMessage());
                    }
                }
            }
            return true;
        } else {
            throw new FtpException('ftp_directory_is_incorrect');
        }
    } catch (FtpException $e) {
        return __('invalid_ftp_access') . ': ' . $e->getMessage();
    }
    return false;
}
Ejemplo n.º 4
0
 /**
  * Gets a list of files to be uploaded based on the difference between HEAD
  * and the commit last deployed.
  *
  * @param \Ftp $ftp An active FTP connection.
  *
  * @return string[] An array of file names to upload.
  */
 protected function getGitDiff(\Ftp $ftp)
 {
     $this->printTaskInfo('Checking remote site for Git info...');
     $ftp->chdir($this->targetDirectory);
     if (in_array('.git-commit', $ftp->nlist('.'))) {
         $tempHandle = fopen('php://temp', 'r+');
         if ($ftp->fget($tempHandle, '.git-commit', FTP_ASCII, 0)) {
             rewind($tempHandle);
             $commitId = stream_get_contents($tempHandle);
             $this->printTaskInfo('Remote site has version ' . $commitId . '.');
             $this->printTaskInfo(' Scanning for changes...');
             $result = $this->taskExec('git')->arg('diff')->arg('--name-only')->arg('--diff-filter=ACMRT')->arg($commitId)->arg('HEAD')->run();
             return preg_split('/[\\r\\n]+/', trim($result->getMessage()));
         }
     }
     $this->printTaskInfo('No Git info found on remote site.');
     $this->printTaskInfo('Adding all files in repo...');
     // No commit saved on remote site; deploy everything in repo
     $result = $this->taskExec('git')->arg('ls-files')->run();
     return preg_split('/[\\r\\n]+/', trim($result->getMessage()));
 }