Carl Schwan
67551f379f
Filter out old files when trying to get recent files
...
Only do so when asking for less than 100 files and having an offset
equal to 0.
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-09-05 12:53:32 +07:00
Robin Appelman
e9ba58ca61
remove leading slash for search results at mountpoint root
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-08-29 17:33:43 +07:00
Julius Härtl
83b1415906
Only pass parent if paths match
...
As the user folder might be initialized by the root from two levels
down the hierarchy, passing this as a parent only works if the path matches
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-24 22:20:32 +07:00
Julius Härtl
b2d6435737
Avoid extra query for the parent node if we can pass it along
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-08-24 22:20:32 +07:00
Paweł Bogusławski
a850424b1b
Update Folder.php
...
Signed-off-by: Pawel Boguslawski <pawel.boguslawski@ib.pl>
2022-07-29 13:34:00 +07:00
Paweł Bogusławski
097b78594a
Update Folder.php
...
Signed-off-by: Pawel Boguslawski <pawel.boguslawski@ib.pl>
2022-07-29 13:34:00 +07:00
Paweł Bogusławski
04baf69fea
Update lib/private/Files/Node/Folder.php
...
Co-authored-by: Vincent Petry <vincent@nextcloud.com>
Signed-off-by: Pawel Boguslawski <pawel.boguslawski@ib.pl>
2022-07-29 13:34:00 +07:00
Pawel Boguslawski
9eb1a92fa4
Paths added to messages and message cleanup
...
This mod adds path to error messages. Without it it's difficult for example
to find what path causes permission problems.
Related: https://help.nextcloud.com/t/ocp-files-notpermittedexception-could-not-create-folder/133818
Related: https://help.nextcloud.com/t/could-not-create-folder-false-error/65962/
Author-Change-Id: IB#1121253
Signed-off-by: Pawel Boguslawski <pawel.boguslawski@ib.pl>
2022-07-29 13:34:00 +07:00
luz paz
368f83095d
Fix typos in lib/private subdirectory
...
Found via `codespell -q 3 -S l10n -L jus ./lib/private`
Signed-off-by: luz paz <luzpaz@github.com>
2022-07-27 08:52:17 +07:00
Carl Schwan
d5c23dbb9f
Move CappedMemoryCache to OCP
...
This is an helpful helper that should be used in more place than just
server and this is already the case with groupfodlers, deck, user_oidc
and more using it, so let's make it public
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-07-14 15:54:31 +07:00
Côme Chilliet
1bd5222224
Fix PHP 8.2 warnings about undeclared properties
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-06-21 16:17:52 +07:00
Arthur Schiwon
1ec4563c2e
log stacktrace for 'Backends provided no user object'
...
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-04-20 12:15:39 +07:00
Robin Appelman
b65d214f15
perform a setup if we can't find any mounts containing a file
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-04-11 19:15:58 +07:00
Robin Appelman
499749dbc1
more preset metadata for LazyUserFolder
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-04-08 15:09:40 +07:00
Robin Appelman
151c800397
allow reusing known folder info when getting directory contents
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-04-06 14:40:34 +07:00
Robin Appelman
d84f9fa9bb
rename cached fileinfo on rename
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-04-04 15:40:28 +07:00
Robin Appelman
754603a04e
dont needlessly resolve path when getting internalPath/storage from Node
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-04-04 15:40:24 +07:00
Robin Appelman
44a8ebdc1f
optimize getById on LazyUserFolder to not require a full fs setup
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-04-04 15:40:16 +07:00
Robin Appelman
700444e218
split out some path manipulation logic
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-04-04 15:40:12 +07:00
Côme Chilliet
765999f454
Merge pull request #31609 from nextcloud/fix/migrate-away-from-ilogger
...
Migrate from ILogger to LoggerInterface in lib/private
2022-03-29 09:39:38 +07:00
Robin Appelman
f7c942a943
caching of userfolder
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-03-24 17:03:58 +07:00
Robin Appelman
70c37c2717
fmt
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-03-24 17:03:55 +07:00
Robin Appelman
79f6742410
improve lazy UserFolder
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-03-24 17:01:49 +07:00
Robin Appelman
3fc5c97282
return a lazy folder from Root::getUserFolder
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-03-24 17:01:08 +07:00
Robin Appelman
46d0eef8da
allow setting some metadata in the lazyfolder without having to get the real folder
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-03-24 17:01:01 +07:00
Côme Chilliet
6be7aa112f
Migrate from ILogger to LoggerInterface in lib/private
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-03-24 16:21:25 +07:00
Robin Appelman
917c74e214
type fixes
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-03-04 16:30:16 +07:00
Robin Appelman
1c468129af
adjust tests to new fs setup
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-03-04 16:29:59 +07:00
Robin Appelman
5c0fe93498
move teardown logic to SetupManager
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-03-04 16:29:50 +07:00
Robin Appelman
cfb7923e08
store mountprovider for each mount in the mounts table
...
this enabled more fine grained filesystem setup
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-02-23 18:02:33 +07:00
Robin Appelman
5c2e7c7d28
fix Folder->getById() when a single storage is mounted multiple times
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-07-28 17:21:04 +07:00
Robin Appelman
9884344230
dont include folder being search in in the results
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-07-02 16:32:25 +07:00
Robin Appelman
f938daa6e4
update tests and fix some edge cases around new search
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-06-14 16:11:36 +07:00
Robin Appelman
27e50b24aa
some cleanup and documentation
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-06-14 16:11:32 +07:00
Robin Appelman
5d1d53c42e
perform file search in a single query
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-06-14 16:11:29 +07:00
John Molakvoæ (skjnldsv)
215aef3cbd
Update php licenses
...
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2021-06-04 22:02:41 +07:00
Robin Appelman
0d5f4edc22
adjust tests
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-04-21 14:09:07 +07:00
Robin Appelman
e8221303e9
use search query for Folder::getRecent
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-04-21 13:56:04 +07:00
Julius Härtl
8398762d78
Fail when creating new files with an empty path
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2021-04-20 11:20:20 +07:00
Roeland Jago Douma
7c30d1aa2d
Merge pull request #26219 from nextcloud/relative-path-null
...
getRelativePath can return null
2021-03-30 21:10:05 +07:00
Robin Appelman
c8736e7a23
fix return value of Root::get
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-03-26 21:29:24 +07:00
Robin Appelman
8a92229485
getStorage can also return null
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-03-24 14:56:40 +07:00
Robin Appelman
f842608c95
getRelativePath can return null
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-03-24 14:30:29 +07:00
Robin Appelman
bfe3712372
handle ordering in folder search
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-03-19 16:07:54 +07:00
Robin Appelman
feed42dd6d
folder filtering in sql
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-03-19 13:41:00 +07:00
Robin Appelman
de713967c0
cleanup fileinfo creation
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-03-19 13:35:37 +07:00
Robin Appelman
a428f7d1e0
format
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-03-18 17:44:30 +07:00
Robin Appelman
bd229e7548
handle limit and offset in folder file search
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-03-18 17:38:31 +07:00
Robin Appelman
f8bca545df
unify handling of Folder::search methods into "new" query objects
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2021-03-18 16:35:41 +07:00
dependabot-preview[bot]
eb502c02ff
Bump nextcloud/coding-standard from 0.3.0 to 0.5.0
...
Bumps [nextcloud/coding-standard](https://github.com/nextcloud/coding-standard ) from 0.3.0 to 0.5.0.
- [Release notes](https://github.com/nextcloud/coding-standard/releases )
- [Changelog](https://github.com/nextcloud/coding-standard/blob/master/CHANGELOG.md )
- [Commits](https://github.com/nextcloud/coding-standard/compare/v0.3.0...v0.5.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2021-02-18 13:31:24 +07:00
Christoph Wurst
d89a75be0b
Update all license headers for Nextcloud 21
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-12-16 18:48:22 +07:00
Joas Schilling
8027dcbc6f
Don't leave cursors open when tests fail
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2020-11-09 12:28:17 +07:00
Christoph Wurst
2a054e6c04
Update the license headers for Nextcloud 20
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-08-24 14:54:25 +07:00
Roeland Jago Douma
af3a59fab5
Merge pull request #22237 from nextcloud/bugfix/noid/allow_putContent_empty_string
...
Allow writing empty content to new file
2020-08-20 09:03:06 +07:00
Roeland Jago Douma
6ed4c8a946
Improve recent file fetching
...
Fixes #16876
Before we'd just fetch everything from all storages we'd have access to.
Then we'd sort. And filter in php. Now this of course is tricky if a
user shared just a file with you and then has a ton of activity.
Now we try to contruct the prefix path. So that the filtering can happen
right away in the databae.
Now this will make the DB more busy. But it should help overall as in
most cases less queries are needed then etc.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2020-08-18 05:56:06 +07:00
Georg Ehrke
ee23906c3c
Allow writing empty content to new file
...
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
2020-08-13 15:41:26 +07:00
Roeland Jago Douma
6aa6ab3e02
Add lazy events for the Node API
...
Right now if you want to get events via the Node API you have to have a
real instance of the Root. Which in turns sets up the whole FS.
We should make sure this is done lazy. Else enabling the preview
generator for example makes you setup the whole FS on each and every
authenticated call.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2020-05-28 12:35:45 +07:00
Robin Appelman
f7153a3d0c
generalize the "lazy folder" concept
...
makes it easy to use lazy intialized folder in other places
Signed-off-by: Robin Appelman <robin@icewind.nl>
2020-05-11 15:36:13 +07:00
Christoph Wurst
cb057829f7
Update license headers for 19
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-29 11:57:22 +07:00
Christoph Wurst
caff1023ea
Format control structures, classes, methods and function
...
To continue this formatting madness, here's a tiny patch that adds
unified formatting for control structures like if and loops as well as
classes, their methods and anonymous functions. This basically forces
the constructs to start on the same line. This is not exactly what PSR2
wants, but I think we can have a few exceptions with "our" style. The
starting of braces on the same line is pracrically standard for our
code.
This also removes and empty lines from method/function bodies at the
beginning and end.
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-10 14:19:56 +07:00
Christoph Wurst
14c996d982
Use elseif instead of else if
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-04-10 10:35:09 +07:00
Julius Härtl
56aa8fd035
Properly hint exceptions thrown by getUserFolder
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2020-04-03 23:06:26 +07:00
Christoph Wurst
1a9330cd69
Update the license headers for Nextcloud 19
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-03-31 14:52:54 +07:00
Christoph Wurst
b80ebc9674
Use the short array syntax, everywhere
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2020-03-26 16:34:56 +07:00
Robin Appelman
5ca1929e8c
Create SimpleFile only when writing the content
...
instead of first creating an empty file and then writing the content.
This solves the overhead of creating an empty file with the common pattern:
```php
$file = $simpleFilder->newFile('foo.txt');
$file->putContent('bar.txt');
```
roughly halving the number of storage and database operations that need to be done when creating a `SimpleFile`.
This is not automatically done with `File` because that has a more complex api which I'm more hesitant to touch.
Instead the `Folder::newFile` api has been extended to accept the content for the new file.
In my local testing, the overhead of first creating an empty file took about 20% of the time for preview generation
Signed-off-by: Robin Appelman <robin@icewind.nl>
2020-02-28 12:55:22 +07:00
Christoph Wurst
5bf3d1bb38
Update license headers
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2019-12-05 15:38:45 +07:00
Robin Appelman
c62637da8b
Allow filtering the search results to the users home storage
...
This is done by adding a
```xml
<d:eq>
<d:prop>
<oc:owner-id/>
</d:prop>
<d:literal>$userId</d:literal>
</d:eq>
```
clause to the search query.
Searching by `owner-id` can only be done with the current user id
and the comparison can not be inside a `<d:not>` or `<d:or>` statement
Signed-off-by: Robin Appelman <robin@icewind.nl>
2019-12-03 13:49:37 +07:00
Julius Härtl
9eb1554fad
Properly anotate LockedException in files node api
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2019-11-28 14:17:15 +07:00
Arthur Schiwon
fc16b09a2c
Files first to use own GenericEvent
...
* those are added to 18 only anyway :)
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2019-11-26 14:48:59 +07:00
Roeland Jago Douma
68748d4f85
Some php-cs fixes
...
* Order the imports
* No leading slash on imports
* Empty line before namespace
* One line per import
* Empty after imports
* Emmpty line at bottom of file
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-11-22 20:52:10 +07:00
Robin Appelman
136c4ef925
dont expose metadata etag for now
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2019-11-13 12:39:36 +07:00
Robin Appelman
1b6e647b63
expose filecache extension data in FileInfo
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2019-11-13 12:39:32 +07:00
Joas Schilling
a4ba2113b2
Fix getById for files in appdata and the root mount
...
In case the path we are currently in is inside the appdata_* folder,
the original getById method does not work, because it can only look inside
the user's mount points. But the user has no mount point for the root storage.
So in that case we directly check the mount of the root if it contains
the id. If it does we check if the path is inside the path we are working
in.
Signed-off-by: Joas Schilling <coding@schilljs.com>
2019-09-17 11:15:59 +07:00
Arthur Schiwon
20901c59d4
emit file events via Dispatcher, too
...
another step to get rid of hooks and emitters
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2019-09-09 22:56:04 +07:00
Julius Härtl
e43b341b04
Add additional check for read permissions
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2019-07-24 14:01:24 +07:00
Julius Härtl
3674f6fa2d
Check the if we can actually access the storage cache for recent files
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2019-07-24 14:01:24 +07:00
Roeland Jago Douma
8ca2b31804
Do not keep searching for recent
...
If userA has a lot of recent files. But only shares 1 file with userB
(that has no files at all). We could keep searching until we run out of
recent files for userA.
Now assume the inactive userB has 20 incomming shares like that from
different users. getRecent then basically keeps consuming huge amounts
of resources and with each iteration the load on the DB increases
(because of the offset).
This makes sure we do not get more than 3 times the limit we search for
or more than 5 queries.
This means we might miss some recent entries but we should fix that
separatly. This is just to make sure the load on the DB stays sane.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-07-16 19:14:55 +07:00
Julius Härtl
67dd4b018a
Check for free space on touch
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2019-05-28 13:06:59 +07:00
Arthur Schiwon
009c2dfbd5
take return of mkdir into account, throw exception on failure
...
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2019-04-29 16:45:59 +07:00
Robin Appelman
3ca1e90044
allow renaming the root of a movable mount even if the parent folder is readonly
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2019-03-14 15:27:25 +07:00
Robin Appelman
8fc47c6f00
add option to get raw size (without submounts) from fileinfo
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2019-02-27 15:35:44 +07:00
Roeland Jago Douma
62ddb124a1
Filter out versions and trashbin
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-02-13 21:27:25 +07:00
Roeland Jago Douma
cb67c6aa00
Loop for the recent search
...
Else it might happen that less entries than requested are returned
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-02-13 21:22:16 +07:00
Roeland Jago Douma
4c7424d38b
We need to initialize the storage else the jailed path is always null
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-02-13 21:01:17 +07:00
Robin Appelman
9d9f6903c9
Fix folder path containing leading slash when getting mount root by id
...
This fixes collabora on public link shared groupfolders
Fixes https://github.com/nextcloud/groupfolders/issues/225
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-11-28 15:18:29 +07:00
Christoph Wurst
1b85ef4bf2
Fix string doc type casing
...
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2018-11-15 11:57:05 +07:00
Robin Appelman
e5c3e4b76f
Add getExtension() to FileInfo
...
this is a fairly common operation so it makes sense to prevent having
to repeatedly implement it.
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-10-29 15:24:02 +07:00
Robin Appelman
922c851494
fix double slash in search result path when the result is in a submount
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-07-02 14:17:38 +07:00
Julius Härtl
73cf71a20f
Add resource type phpDoc for putContent methods
...
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-26 13:58:58 +07:00
Roeland Jago Douma
235e3480e6
Actually return the root folder when traversing up the tree
...
If you now keep calling $node->getParent() you will at some point get
the RootFolder back. This is a nice termination check and will prevent
endless loops if an exit condition is slightly off.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-04-26 20:04:19 +07:00
Roeland Jago Douma
53447ae2b2
Throw an exception if file_put_contents fails
...
* This will help with AppData hardening etc
* Introduced a GenericFileException for if nothing else is appropiate
- Maybe the other File exceptions should base on this?
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-27 16:23:06 +07:00
Roeland Jago Douma
4e1161d254
Fix proper permissions for multiple file access
...
Fixes #8890
In case you have access to a file via multiple ways, for example:
1. the file is shared with you with permission read only
2. the folder containing the file is shared with your read/write
Requesting the getById function on the userFolder would give back two
entries but both with the same permissions. Depending on the node you
picked this is not right.
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-22 12:06:41 +07:00
Roeland Jago Douma
d6b326650b
Emit read for nodes
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-15 11:18:39 +07:00
Morris Jobke
4dbee99b7b
Remove useless return statements
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-01-25 22:50:40 +07:00
Morris Jobke
0eebff152a
Update license headers
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-11-06 16:56:19 +07:00
Morris Jobke
c54a59d51e
Remove unused use statements
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-04-22 19:23:31 +07:00
Robin Appelman
6fbe991afb
limit the user when searching for a file by id if we know the user already
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-04-21 17:11:26 +07:00
Robin Appelman
2f949f4515
rename Jail::getSourcePath to getUnjailedPath to fix conflict with Local::getSourcePath
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-04-12 14:55:47 +07:00
Robin Appelman
df2063ee7b
Implement webdav SEARCH
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-01 14:06:39 +07:00
Vincent Petry
e667b28298
Fix files node API failed rename/copy
...
Whenever a rename or copy operation failed on the view, we must throw
an exception instead of just ignoring.
Signed-off-by: Vincent Petry <pvince81@owncloud.com>
2017-01-12 13:52:59 +07:00