merge master into hooks-view-same-start

This commit is contained in:
Robin Appelman 2013-10-10 11:34:30 +02:00
commit 1378af838c
9 changed files with 40 additions and 323 deletions

View File

@ -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']);

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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();

View File

@ -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
*
@ -16,36 +19,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

View File

@ -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);
}
}