protected function filecopy($srcFile, $destFile)
 {
     if (AJXP_MetaStreamWrapper::nodesUseSameWrappers($srcFile, $destFile)) {
         $srcFilePath = str_replace($this->urlBase, "", $srcFile);
         $destFilePath = str_replace($this->urlBase, "", $destFile);
         $destDirPath = dirname($destFilePath);
         list($connection, $remote_base_path) = sftpAccessWrapper::getSshConnection($srcFile);
         $remoteSrc = $remote_base_path . $srcFilePath;
         $remoteDest = $remote_base_path . $destDirPath;
         $this->logDebug("SSH2 CP", array("cmd" => 'cp ' . $remoteSrc . ' ' . $remoteDest));
         ssh2_exec($connection, 'cp ' . $remoteSrc . ' ' . $remoteDest);
         AJXP_Controller::applyHook("node.change", array(new AJXP_Node($srcFile), new AJXP_Node($destFile), true));
     } else {
         parent::filecopy($srcFile, $destFile);
     }
 }
 /**
  * @param String $srcFile url of source file
  * @param String $destFile url of destination file
  */
 protected function filecopy($srcFile, $destFile)
 {
     if (!AJXP_MetaStreamWrapper::nodesUseSameWrappers($srcFile, $destFile) || AJXP_MetaStreamWrapper::wrapperIsRemote($srcFile) || AJXP_MetaStreamWrapper::wrapperIsRemote($destFile)) {
         $src = fopen($srcFile, "r");
         $dest = fopen($destFile, "w");
         if (is_resource($src) && is_resource($dest)) {
             while (!feof($src)) {
                 //stream_copy_to_stream($src, $dest, 4096);
                 $count = stream_copy_to_stream($src, $dest, 4096);
                 if ($count == 0) {
                     break;
                 }
             }
         }
         if (is_resource($dest)) {
             fclose($dest);
         }
         if (is_resource($src)) {
             fclose($src);
         }
     } else {
         copy($srcFile, $destFile);
     }
 }