callbacks - two PRs conflict sorted out.

First one: e9b698fd65, fba6894474, 1cd286642e
Second one: 16430d4d2e, 0cc6125f87
This commit is contained in:
andrey012 2015-05-02 15:27:57 +03:00
parent f4a93c790f
commit e7719f765c

View File

@ -1793,12 +1793,12 @@ class Net_SFTP extends Net_SSH2
* @param optional Integer $mode
* @param optional Integer $start
* @param optional Integer $local_start
* @param optional callable|null $callback
* @param optional callable|null $progressCallback
* @return Boolean
* @access public
* @internal ASCII mode for SFTPv4/5/6 can be supported by adding a new function - Net_SFTP::setMode().
*/
function put($remote_file, $data, $mode = NET_SFTP_STRING, $start = -1, $local_start = -1, $callback = null)
function put($remote_file, $data, $mode = NET_SFTP_STRING, $start = -1, $local_start = -1, $progressCallback = null)
{
if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
return false;
@ -1846,13 +1846,13 @@ class Net_SFTP extends Net_SSH2
}
// http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.2.3
$callback = false;
$dataCallback = false;
switch (true) {
case $mode & NET_SFTP_CALLBACK;
if (!is_callable($data)) {
user_error("\$data should be is_callable if you set NET_SFTP_CALLBACK flag");
}
$callback = $data;
$dataCallback = $data;
// do nothing
break;
case is_resource($data):
@ -1881,7 +1881,7 @@ class Net_SFTP extends Net_SSH2
} else {
fseek($fp, $offset);
}
} elseif ($callback) {
} elseif ($dataCallback) {
$size = 0;
} else {
$size = strlen($data);
@ -1894,9 +1894,9 @@ class Net_SFTP extends Net_SSH2
// make the SFTP packet be exactly 4096 bytes by including the bytes in the NET_SFTP_WRITE packets "header"
$sftp_packet_size-= strlen($handle) + 25;
$i = 0;
while ($callback || ($sent < $size)) {
if ($callback) {
$temp = call_user_func($callback, $sftp_packet_size);
while ($dataCallback || ($sent < $size)) {
if ($dataCallback) {
$temp = call_user_func($dataCallback, $sftp_packet_size);
if (is_null($temp)) {
break;
}
@ -1912,8 +1912,8 @@ class Net_SFTP extends Net_SSH2
return false;
}
$sent+= strlen($temp);
if (is_callable($callback)) {
call_user_func($callback, $sent);
if (is_callable($progressCallback)) {
call_user_func($progressCallback, $sent);
}
$i++;