summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Karlitschek <frank@owncloud.org>2013-10-10 01:20:07 -0700
committerFrank Karlitschek <frank@owncloud.org>2013-10-10 01:20:07 -0700
commitec4fd354682f41899013f037308b728493022ee4 (patch)
tree46a0caa7dd62da1ddbc8baedd5121090fd7a723b
parent3a3819b30392547d6d4250830275cec64f7a08d4 (diff)
parent38c563dcdcfc46742a55be3b9b84a37512e203d3 (diff)
downloadnextcloud-server-ec4fd354682f41899013f037308b728493022ee4.tar.gz
nextcloud-server-ec4fd354682f41899013f037308b728493022ee4.zip
Merge pull request #5245 from owncloud/file_put_contents-no-create
don't trigger the create hooks when if the file already exists for file_put_contents
-rw-r--r--lib/private/files/view.php3
-rw-r--r--tests/lib/files/view.php25
2 files changed, 27 insertions, 1 deletions
diff --git a/lib/private/files/view.php b/lib/private/files/view.php
index aa08a5f7cc9..f74b595c8da 100644
--- a/lib/private/files/view.php
+++ b/lib/private/files/view.php
@@ -324,7 +324,8 @@ class View {
return false;
}
} else {
- return $this->basicOperation('file_put_contents', $path, array('create', 'write'), $data);
+ $hooks = ($this->file_exists($path)) ? array('write') : array('create', 'write');
+ return $this->basicOperation('file_put_contents', $path, $hooks, $data);
}
}
diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php
index 3043f132b73..a5107c351f4 100644
--- a/tests/lib/files/view.php
+++ b/tests/lib/files/view.php
@@ -391,4 +391,29 @@ class View extends \PHPUnit_Framework_TestCase {
$this->storages[] = $storage;
return $storage;
}
+
+ private $createHookPath;
+
+ function dummyCreateHook($params) {
+ $this->createHookPath = $params['path'];
+ }
+
+ public function testEditNoCreateHook() {
+ $storage1 = $this->getTestStorage();
+ $storage2 = $this->getTestStorage();
+ $defaultRoot = \OC\Files\Filesystem::getRoot();
+ \OC\Files\Filesystem::mount($storage1, array(), '/');
+ \OC\Files\Filesystem::mount($storage2, array(), $defaultRoot);
+ \OC_Hook::connect('OC_Filesystem', 'post_create', $this, 'dummyCreateHook');
+
+ $view = new \OC\Files\View($defaultRoot);
+ $this->hookPath = null;
+
+ $view->file_put_contents('/asd.txt', 'foo');
+ $this->assertEquals('/asd.txt', $this->createHookPath);
+ $this->createHookPath = null;
+
+ $view->file_put_contents('/asd.txt', 'foo');
+ $this->assertNull($this->createHookPath);
+ }
}