ReplicateAdapter.php in Flysystem 7
File
src/Flysystem/Adapter/ReplicateAdapter.php
View source
<?php
namespace Drupal\flysystem\Flysystem\Adapter;
use League\Flysystem\Config;
use League\Flysystem\Replicate\ReplicateAdapter as FlysystemReplicateAdapter;
use League\Flysystem\Util;
class ReplicateAdapter extends FlysystemReplicateAdapter {
public function updateStream($path, $resource, Config $config) {
if (!$this->source
->updateStream($path, $resource, $config)) {
return FALSE;
}
if (!($resource = $this
->ensureSeekable($resource, $path))) {
return FALSE;
}
if ($this->replica
->has($path)) {
return $this->replica
->updateStream($path, $resource, $config);
}
return $this->replica
->writeStream($path, $resource, $config);
}
public function writeStream($path, $resource, Config $config) {
if (!$this->source
->writeStream($path, $resource, $config)) {
return FALSE;
}
if (!($resource = $this
->ensureSeekable($resource, $path))) {
return FALSE;
}
return $this->replica
->writeStream($path, $resource, $config);
}
protected function ensureSeekable($resource, $path) {
if (Util::isSeekableStream($resource) && rewind($resource)) {
return $resource;
}
$stream = $this->source
->readStream($path);
return $stream ? $stream['stream'] : FALSE;
}
}