summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2013-10-10 11:34:30 +0200
committerRobin Appelman <icewind@owncloud.com>2013-10-10 11:34:30 +0200
commit1378af838ced159f1070f869394dccbde8c21219 (patch)
tree7c6b43f7900000a2400a6ad2368f3f54d7075cc7
parent7f8eeb04747e88770a9eb49dffa028a36ab6cadc (diff)
parent1cb47bf777bea9f46a9554ea1b570bfc9ec69845 (diff)
downloadnextcloud-server-1378af838ced159f1070f869394dccbde8c21219.tar.gz
nextcloud-server-1378af838ced159f1070f869394dccbde8c21219.zip
merge master into hooks-view-same-start
-rw-r--r--apps/files_sharing/tests/api.php6
-rw-r--r--core/ajax/share.php2
-rw-r--r--lib/private/appframework/dependencyinjection/dicontainer.php5
-rw-r--r--lib/private/connector/sabre/node.php6
-rw-r--r--lib/private/files/storage/storage.php279
-rw-r--r--lib/private/files/view.php3
-rw-r--r--lib/private/group.php2
-rw-r--r--lib/private/session/session.php35
-rw-r--r--tests/lib/files/view.php25
9 files changed, 40 insertions, 323 deletions
diff --git a/apps/files_sharing/tests/api.php b/apps/files_sharing/tests/api.php
index c55c186f089..63df0dd7dc3 100644
--- a/apps/files_sharing/tests/api.php
+++ b/apps/files_sharing/tests/api.php
@@ -295,7 +295,8 @@ class Test_Files_Sharing_Api extends \PHPUnit_Framework_TestCase {
$result = Share\Api::getShare($params);
$this->assertEquals(404, $result->getStatusCode());
- $this->assertEquals('share doesn\'t exist', $result->getMeta()['message']);
+ $meta = $result->getMeta();
+ $this->assertEquals('share doesn\'t exist', $meta['message']);
}
@@ -351,7 +352,8 @@ class Test_Files_Sharing_Api extends \PHPUnit_Framework_TestCase {
$result = Share\Api::updateShare($params);
- $this->assertTrue($result->succeeded(), $result->getMeta()['message']);
+ $meta = $result->getMeta();
+ $this->assertTrue($result->succeeded(), $meta['message']);
$items = \OCP\Share::getItemShared('file', $userShare['file_source']);
diff --git a/core/ajax/share.php b/core/ajax/share.php
index 1166ea3198a..dbad8f2e971 100644
--- a/core/ajax/share.php
+++ b/core/ajax/share.php
@@ -293,7 +293,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
while ($count < 15 && count($users) == $limit) {
$limit = 15 - $count;
if ($sharePolicy == 'groups_only') {
- $users = OC_Group::DisplayNamesInGroups($groups, $_GET['search'], $limit, $offset);
+ $users = OC_Group::DisplayNamesInGroups($usergroups, $_GET['search'], $limit, $offset);
} else {
$users = OC_User::getDisplayNames($_GET['search'], $limit, $offset);
}
diff --git a/lib/private/appframework/dependencyinjection/dicontainer.php b/lib/private/appframework/dependencyinjection/dicontainer.php
index 3755d45fa09..e62b72fd973 100644
--- a/lib/private/appframework/dependencyinjection/dicontainer.php
+++ b/lib/private/appframework/dependencyinjection/dicontainer.php
@@ -89,11 +89,12 @@ class DIContainer extends SimpleContainer implements IAppContainer{
return new SecurityMiddleware($c['API'], $c['Request']);
});
- $this['MiddlewareDispatcher'] = $this->share(function($c){
+ $middleWares = $this->middleWares;
+ $this['MiddlewareDispatcher'] = $this->share(function($c) use ($middleWares) {
$dispatcher = new MiddlewareDispatcher();
$dispatcher->registerMiddleware($c['SecurityMiddleware']);
- foreach($this->middleWares as $middleWare) {
+ foreach($middleWares as $middleWare) {
$dispatcher->registerMiddleware($middleWare);
}
diff --git a/lib/private/connector/sabre/node.php b/lib/private/connector/sabre/node.php
index fa27abb381a..c38e9f86375 100644
--- a/lib/private/connector/sabre/node.php
+++ b/lib/private/connector/sabre/node.php
@@ -147,12 +147,6 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
* Even if the modification time is set to a custom value the access time is set to now.
*/
public function touch($mtime) {
-
- // touch is only allowed if the update privilege is granted
- if (!\OC\Files\Filesystem::isUpdatable($this->path)) {
- throw new \Sabre_DAV_Exception_Forbidden();
- }
-
\OC\Files\Filesystem::touch($this->path, $mtime);
}
diff --git a/lib/private/files/storage/storage.php b/lib/private/files/storage/storage.php
index b673bb9a32d..5be90f24756 100644
--- a/lib/private/files/storage/storage.php
+++ b/lib/private/files/storage/storage.php
@@ -14,278 +14,6 @@ namespace OC\Files\Storage;
* All paths passed to the storage are relative to the storage and should NOT have a leading slash.
*/
interface Storage extends \OCP\Files\Storage {
- /**
- * $parameters is a free form array with the configuration options needed to construct the storage
- *
- * @param array $parameters
- */
- public function __construct($parameters);
-
- /**
- * Get the identifier for the storage,
- * the returned id should be the same for every storage object that is created with the same parameters
- * and two storage objects with the same id should refer to two storages that display the same files.
- *
- * @return string
- */
- public function getId();
-
- /**
- * see http://php.net/manual/en/function.mkdir.php
- *
- * @param string $path
- * @return bool
- */
- public function mkdir($path);
-
- /**
- * see http://php.net/manual/en/function.rmdir.php
- *
- * @param string $path
- * @return bool
- */
- public function rmdir($path);
-
- /**
- * see http://php.net/manual/en/function.opendir.php
- *
- * @param string $path
- * @return resource
- */
- public function opendir($path);
-
- /**
- * see http://php.net/manual/en/function.is_dir.php
- *
- * @param string $path
- * @return bool
- */
- public function is_dir($path);
-
- /**
- * see http://php.net/manual/en/function.is_file.php
- *
- * @param string $path
- * @return bool
- */
- public function is_file($path);
-
- /**
- * see http://php.net/manual/en/function.stat.php
- * only the following keys are required in the result: size and mtime
- *
- * @param string $path
- * @return array
- */
- public function stat($path);
-
- /**
- * see http://php.net/manual/en/function.filetype.php
- *
- * @param string $path
- * @return bool
- */
- public function filetype($path);
-
- /**
- * see http://php.net/manual/en/function.filesize.php
- * The result for filesize when called on a folder is required to be 0
- *
- * @param string $path
- * @return int
- */
- public function filesize($path);
-
- /**
- * check if a file can be created in $path
- *
- * @param string $path
- * @return bool
- */
- public function isCreatable($path);
-
- /**
- * check if a file can be read
- *
- * @param string $path
- * @return bool
- */
- public function isReadable($path);
-
- /**
- * check if a file can be written to
- *
- * @param string $path
- * @return bool
- */
- public function isUpdatable($path);
-
- /**
- * check if a file can be deleted
- *
- * @param string $path
- * @return bool
- */
- public function isDeletable($path);
-
- /**
- * check if a file can be shared
- *
- * @param string $path
- * @return bool
- */
- public function isSharable($path);
-
- /**
- * get the full permissions of a path.
- * Should return a combination of the PERMISSION_ constants defined in lib/public/constants.php
- *
- * @param string $path
- * @return int
- */
- public function getPermissions($path);
-
- /**
- * see http://php.net/manual/en/function.file_exists.php
- *
- * @param string $path
- * @return bool
- */
- public function file_exists($path);
-
- /**
- * see http://php.net/manual/en/function.filemtime.php
- *
- * @param string $path
- * @return int
- */
- public function filemtime($path);
-
- /**
- * see http://php.net/manual/en/function.file_get_contents.php
- *
- * @param string $path
- * @return string
- */
- public function file_get_contents($path);
-
- /**
- * see http://php.net/manual/en/function.file_put_contents.php
- *
- * @param string $path
- * @param string $data
- * @return bool
- */
- public function file_put_contents($path, $data);
-
- /**
- * see http://php.net/manual/en/function.unlink.php
- *
- * @param string $path
- * @return bool
- */
- public function unlink($path);
-
- /**
- * see http://php.net/manual/en/function.rename.php
- *
- * @param string $path1
- * @param string $path2
- * @return bool
- */
- public function rename($path1, $path2);
-
- /**
- * see http://php.net/manual/en/function.copy.php
- *
- * @param string $path1
- * @param string $path2
- * @return bool
- */
- public function copy($path1, $path2);
-
- /**
- * see http://php.net/manual/en/function.fopen.php
- *
- * @param string $path
- * @param string $mode
- * @return resource
- */
- public function fopen($path, $mode);
-
- /**
- * get the mimetype for a file or folder
- * The mimetype for a folder is required to be "httpd/unix-directory"
- *
- * @param string $path
- * @return string
- */
- public function getMimeType($path);
-
- /**
- * see http://php.net/manual/en/function.hash.php
- *
- * @param string $type
- * @param string $path
- * @param bool $raw
- * @return string
- */
- public function hash($type, $path, $raw = false);
-
- /**
- * see http://php.net/manual/en/function.free_space.php
- *
- * @param string $path
- * @return int
- */
- public function free_space($path);
-
- /**
- * search for occurrences of $query in file names
- *
- * @param string $query
- * @return array
- */
- public function search($query);
-
- /**
- * see http://php.net/manual/en/function.touch.php
- * If the backend does not support the operation, false should be returned
- *
- * @param string $path
- * @param int $mtime
- * @return bool
- */
- public function touch($path, $mtime = null);
-
- /**
- * get the path to a local version of the file.
- * The local version of the file can be temporary and doesn't have to be persistent across requests
- *
- * @param string $path
- * @return string
- */
- public function getLocalFile($path);
-
- /**
- * get the path to a local version of the folder.
- * The local version of the folder can be temporary and doesn't have to be persistent across requests
- *
- * @param string $path
- * @return string
- */
- public function getLocalFolder($path);
- /**
- * check if a file or folder has been updated since $time
- *
- * @param string $path
- * @param int $time
- * @return bool
- *
- * hasUpdated for folders should return at least true if a file inside the folder is add, removed or renamed.
- * returning true for other changes in the folder is optional
- */
- public function hasUpdated($path, $time);
/**
* get a cache instance for the storage
@@ -333,11 +61,4 @@ interface Storage extends \OCP\Files\Storage {
*/
public function getStorageCache();
- /**
- * get the ETag for a file or folder
- *
- * @param string $path
- * @return string
- */
- public function getETag($path);
}
diff --git a/lib/private/files/view.php b/lib/private/files/view.php
index 76c73ea23d7..8143b12d526 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/lib/private/group.php b/lib/private/group.php
index ba93dc129a1..9144ef683b6 100644
--- a/lib/private/group.php
+++ b/lib/private/group.php
@@ -265,7 +265,7 @@ class OC_Group {
public static function displayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0) {
$group = self::getManager()->get($gid);
if ($group) {
- $users = $group->searchDisplayName($search . $limit, $offset);
+ $users = $group->searchDisplayName($search, $limit, $offset);
$displayNames = array();
foreach ($users as $user) {
$displayNames[] = $user->getDisplayName();
diff --git a/lib/private/session/session.php b/lib/private/session/session.php
index c55001eccac..fe160faa267 100644
--- a/lib/private/session/session.php
+++ b/lib/private/session/session.php
@@ -8,7 +8,10 @@
namespace OC\Session;
-abstract class Session implements \ArrayAccess, \OCP\ISession {
+use OCP\ISession;
+
+abstract class Session implements \ArrayAccess, ISession {
+
/**
* $name serves as a namespace for the session keys
*
@@ -17,36 +20,6 @@ abstract class Session implements \ArrayAccess, \OCP\ISession {
abstract public function __construct($name);
/**
- * @param string $key
- * @param mixed $value
- */
- abstract public function set($key, $value);
-
- /**
- * @param string $key
- * @return mixed should return null if $key does not exist
- */
- abstract public function get($key);
-
- /**
- * @param string $key
- * @return bool
- */
- abstract public function exists($key);
-
- /**
- * should not throw any errors if $key does not exist
- *
- * @param string $key
- */
- abstract public function remove($key);
-
- /**
- * removes all entries within the cache namespace
- */
- abstract public function clear();
-
- /**
* @param mixed $offset
* @return bool
*/
diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php
index e2107a03614..b2dd3963f1c 100644
--- a/tests/lib/files/view.php
+++ b/tests/lib/files/view.php
@@ -392,6 +392,12 @@ class View extends \PHPUnit_Framework_TestCase {
return $storage;
}
+ private $createHookPath;
+
+ function dummyCreateHook($params) {
+ $this->createHookPath = $params['path'];
+ }
+
/**
* @medium
*/
@@ -409,4 +415,23 @@ class View extends \PHPUnit_Framework_TestCase {
$subView->file_put_contents('/foo.txt', 'asd');
$this->assertNull($this->hookPath);
}
+
+ 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);
+ }
}