Type hints such as `@param bool $doSomething` will now correctly get
parsed, allowing for alignment of docblock parameters if the app developer so
wishes.
the user is gone, userExists will not bring him back. But the user's folder needs to be deleted anyway
delete user test to take getHome into account to ensure it is also deleted subsequently
Conflicts:
apps/user_ldap/tests/user_ldap.php
The UPDATE oc_filecache statement blindly overwrites identical data.
Databases like Postgres that create a new row on an update
and mark the old one as dead will suffer from the previous
behaviour, as millions of "new" rows are created in the database.
This patch changes the WHERE clause to test for identical
values and not updating if the values in the DB are identical
to the ones being passed.
Some code paths called the `normalizePath` functionality with types other than a string which resulted in unexpected behaviour.
Thus the function is now manually casting the type to a string and I corrected the usage in list.php as well.
inlcude AD primary group in user filter, if a group is selected. fixes#12190
fix counting of users in primary group
💄
adept to OC 7
and escape the search term
Conflicts:
apps/user_ldap/lib/connection.php
Very hacky backport of https://github.com/owncloud/core/pull/15541 - I changed the code path to use OC_Mail instead the OCP pendant since I didn't want to modify the public API. (OCP\Util::sendMail() is anyways deprecated with 8.1)
Do not send Content-Length headers with a value larger than PHP_INT_MAX
(2147483647) on Apache PHP SAPI 32-bit. PHP will eat them and send 2147483647
instead.
When X-Sendfile is enabled, Apache will send a correct Content-Length header,
even for files larger than 2147483647 bytes. When X-Sendfile is not enabled,
ownCloud will not send a Content-Length header. This prevents progress bars
from working, but allows the actual transfer to work properly.
During upgrade, the config settings aren't always available due to
base.php changes. This fix makes the update info page read the product
name and version from the update template, which already had them.
This method triggers additional queries in $this->update() so to avoid
potential database locks or delays, we close the cursor as soon as it is not needed any more
Fixed SQL query for whenever a user has more than one group.
Added missing $owner where clause for group lookup.
Added unit tests for the group cases.
Backport of 40931a8b0d from master
Whenever an external storage mount point is shared directly, its path is
empty which causes a leading slash to appear in the source path.
This fix removes the bogus leading slash in such situation.
Backport of 01c83158bb from master
This checks that imagecreatetruecolor actually creates an image, rather than returning FALSE.
Without this check, subsequent loop might create billions of ERROR-level log messages.
Signed-off-by: Byron Marohn <combustible@live.com>
background job for user clean up
adjust user backend for clean up
register background job
remove dead code
dependency injection
make Helper non-static for proper testing
check whether it is OK to run clean up job. Do not forget to pass arguments.
use correct method to get the config from server
methods can be private, proper indirect testing is given
no automatic user deletion
make limit readable for test purposes
make method less complex
add first tests
let preferences accept limit and offset for getUsersForValue
DI via constructor does not work for background jobs
after detecting, now we have retrieving deleted users and their details
we need this method to be public for now
finalize export method, add missing getter
clean up namespaces and get rid of unnecessary files
helper is not static anymore
cleanup according to scrutinizer
add cli tool to show deleted users
uses are necessary after recent namespace change
also remove user from mappings table on deletion
add occ command to delete users
fix use statement
improve output
big fixes / improvements
PHP doc
return true in userExists early for cleaning up deleted users
bump version
control state and interval with one config.php setting, now ldapUserCleanupInterval. 0 will disable it. enabled by default.
improve doc
rename cli method to be consistent with others
introduce ldapUserCleanupInterval in sample config
don't show last login as unix epoche start when no login happend
less log output
consistent namespace for OfflineUser
rename GarbageCollector to DeletedUsersIndex and move it to user subdir
fix unit tests
add tests for deleteUser
more test adjustements
The codepath that is executed when executing ownCloud via CLI is different than via browser. Specifically, the config is created by the user session already in `OC_Util::getInstanceId()` by a call to `setValue`. That said, this seems to be quite a bad side-effect, but for the sake of "not breaking whatever might break if we touch this" let's keep it that way for now.
When executing the autoconfig via `php -f index.php` the said session was not setup and thus no `config/config.php` file was created resulting in an installation error.
To reproduce this try to setup ownCloud via `php -f index.php` with and without that patch. (ensure to delete all existing configs before and don't access ownCloud with a browser in the meantime)
Fixes itself.
Depending on the used environment the port might be appended to the host header resulting in an inaccessible instance when initially setting up on a system with a different HTTP or HTTPS port. (for example test:500)
To test this setup ownCloud under a different port with and without this patch. (heads-up: localhost is always white-listed, so use a different domain)
Workaround required for IIS setups running ownCloud to prevent dataloss.
Long-term solution would be to move some configuration settings to the database
Conflicts:
lib/base.php
settings/admin.php
1. do not prepend * wildcard to search terms. Will result in faster search, but
you don't find "foobar" when looking for "bar"
2. advanced behaviour when search string contains a space and multiple search
attributes are present. The search string is split into single words. The
resulting filter requires that each word at least appears once in any search
attribute. This is supposed to return better results in big LDAPs.
The codepath for generating the favicons iterates through subnodes and if one of those nodes is unavailable is throwing a 503 exception. Since these favicons don't have any use except of "making a tool for developers looking nicer" I consider it feasible to remove them.
The permissions are already catched properly on the installation so we just have to check whether the file is readable to prevent fatal errors from happening.
Fixes https://github.com/owncloud/core/issues/12135
Conflicts:
lib/private/config.php
However, when not accessing a directory then "dir" was set to the relative path of the file (from the user's home directory), meaning that for every public shared file the sharee can see the path.
(For example if you share the file "foo.txt" from "finances/topsecret/" the sharee would still see the path "finances/topsecret/" from the shared HTML template)
This is not the excpected behaviour and can be considered a privacy problem, this patch addresses this by setting "dir" to an empty key.
Port of https://github.com/owncloud/core/pull/12262, approved with https://github.com/owncloud/core/pull/12262#issuecomment-64394040
If the webroot has been set to an empty value or ownCloud has been installed at the root location (`/``) there is a fair chance that the redirect for password resets does not work at all.
This means that while the password is getting resetted the user is not redirected to the login page.
I'm aware that it might be better to just set the webroot to `/` in those cases but this patch is better in the regard that it cannot break stuff.
Thanks to @PVince81 for helping me debugging this. (I'm a moron and assumed it couldn't be THAT easy)
Reported by @cdamken
Sometimes there are bugs that cause setupFS() to be called for
non-existing users. Instead of failing hard and breaking the instance,
this fix simply logs a warning.
Backport c941c3fa51 from master
Previously we used uniqid() here.
However this means that the behaviour is not reproducable, so
when uploading files into a "empty" folder, the folders name is
different.
If there would be a md5() hash collition, the deduplicate check
will spot this and append an index later, so this should not be
a problem.
Fix#6722
Determining the file size using the exec() method is implemented for Linux, BSD, and Windows. However, on systems matching neither platform name (like SunOS), the fall-through path will return a file size result constituting a zero size instead of an invalid null return value.
Fixes an issue when uploading files to external storage when recovery
keys are enabled
The Util class only works with real users, so instantiating it with the
virtual recovery key user or public key user can cause issues.
Added missing cleanPath() call that converts "/" to "" when calling
SabreDAV. This is needed because SabreDAV will discard its base URL when
passing "/".
The update routine tries to test the database migration before actually performing the update.
However, this will fail hard if the schema has changed (for example an unique key has been added). App developers can convert the DB in preupdate.php, however it is not called before and therefore the update fails.
This actually breaks ownCloud updates from ownCloud 6 to ownCloud 7 when the files_antivirus app is enabled.
Convert \OCP\Files\StorageNotAvailableException to
\Sabre\DAV\Exception\ServiceUnavailable for every file/directory
operation happening inside of SabreDAV.
This is necessary to avoid having the exception bubble up to remote.php
which would return an exception page instead of an appropriate response.
Conflicts:
lib/private/connector/sabre/directory.php
lib/private/connector/sabre/file.php
This fix gathers the share keys BEFORE a file is moved to make sure that
findShareKeys() is able to find all relevant keys when the file still
exists.
After the move/copy operation the keys are moved/copied to the target
dir.
Also: refactored preRename and preCopy into a single function to avoid
duplicate code.
Previously a JSON error page was shown to the user in-case the CSRF token was not valid. This was confusing and prevented people from login.
With this at least the login page is shown again and not a JSON error message. I consider this as sufficient since adding a new error page just for this sake would uneededly make lib/base.php even more cluttered and this is a edge-case which optimally should anyways not happen that often.
This can be tested by opening the login page, then clearing the cookies, and trying to login.
When doing a PROPFIND on the root and one of the mount points is not
available, the returned quota attributes will now be zero.
This fix prevents the expected exception to make the whole call fail.
Backport of 21d825ed6c from master
adding ILIKE to AdapterSQLSrv
add test case for ILIKE with wildcard
Make sqlite LIKE case sensitive on default
Implement ILIKE for sqlite
Use ILIKE in cache search
Fix ILIKE without wildcards for oracle
This commit will make the supported DBs for installation configurable within config.php. By default the following databases are tested: "sqlite", "mysql", "pgsql". The reason behind this is that there might be instances where we want to prevent SQLite to be used by mistake.
To test this play around with the new configuration parameter "supportedDatabases".
Conflicts:
lib/private/util.php
There is no need to refer to the absolute path here if we can use the relative one.
Conflicts:
lib/private/templatelayout.php
Conflicts:
lib/private/templatelayout.php
fix retrievel of group members and cache group members
fix changed variable name
with several backends, more than limit can be returned
make performance less bad. Still far from good, but at least it works
add one simple cache test
adjust group manager tests
Update manager.php
add caching to getUserGroupIds
Update manager.php
added description and blank lines in getUserGroupIds
Update manager.php
defined $uid in getUserGroupIds
Update manager.php
Update manager.php
Update manager.php
clean up function getUserGroupIds
clean up of function getUserGroupIds and improved caching mechanism of cachedUserGroupIds
modified caching mechanism in getUserGroupIds
removed cachedUserGroupIds, instead changed indexing in getUserGroups to groupId
adapted tests for a groupId indexed group array
The script required by require_once might use variable names like $app
which will conflict with the code that follows.
This fix encapsulates require_once into its own function to avoid such
issues.
add checkbox for experienced users to server tab
must be empty not auto
sets user filters to raw mode when marking user as experienced
Objectlasses, Groups and Attributes are now loaded only in assisted mode and only once
user and group counts are only upated on demand in experienced mode
confirmation before switching to assisted mode when admin is experienced
rename internal var name to avoid collision
more beautiful white spaces
smaller corrections to make scruitinizer happier, no effective changes
bump version
fix triggering of group update counts. improves the basic code which is also responsible for user counts. i did not find regressions, please doublecheck
remove debug output
coding style, no effective code changes
always abort running ajax request when the method is fired up again
show a spinner next to test filter button when the test is running
show Spinner when stuff is being saved
show busy cursor and lock tabs on save
instead of dis/enabling tabs on save, cancel tab change. avoids noisy ui
remove debug output
rephrase xp'ed user mode label
left-align checkbox on server tab
FIXME: Ugly hack to prevent SVG of being returned if the SVG
provider is not enabled.
This is required because the preview system is designed in a
bad way and relies on opt-in with asterisks (i.e. image/*)
which will lead to the fact that a SVG will also match the image
provider.
Conflicts:
lib/private/preview.php
Allow specifying a protocol in the host field when mounting another
ownCloud instance. Note that this was already possible with the WebDAV
config but this bug made it inconsistent.
In the public page the scroll container is the window instead of a div.
The $(window) object doesn't support animating the scroll property, so
the $('body') element is used instead.
Backport of 704ffaa6a3 from master
Correctly use overwritemailurl value when generating absolute urls in CLI
Fix#11500
Rename the config to *cli
Add overwrite.cli.url to the sample config
Revert separator fix, fixes unit test
Backport of 0407bc0978 from master
Otherwise the session is blocked while all remote apps are loaded. This can be very annoying especially when apps.owncloud.com is down or not reachable.
Correctly use overwrite.cli.url value when generating absolute urls in CLI
Fix#11500
Backport and squash of the following from master, in order:
- f0fcaff9b957f1e6c04f9bfd9b8e0eb84f78bbf8
- 923de0afd9a7e717a5e1d25747caf4840633db25
- a487ce76e86940c94801da6157bcf70ed4005c1f
- bd3ebdbd135b30946fdf55b41b5e96497d0c3e4a
When downloading a folder called "0001" PHP should fallback to parsing
it as string and properly detect that it is not a JSON array.
Backport of 6cbabdf217 from master
In some incomplete setups (like mine) it can happen that the uid
attribute of users is missing.
To be able to find out that something is wrong, a debug message is now
logged when it has not been found.
Backport of 59f9107dd9 from master
Pressing enter in the LDAP wizard will trigger a click on the first
button. In the main page it would trigger the delete dialog, which is
quite inconvenient.
Added a type attribute to suppress this behavior.
Backport of bb424802c8 from master
Large file helper use cURL to determine file sizes. Thus filenames must be
urlencoded in case special symbols like '#' can cause BadRequest errors.
Signed-off-by: Tony Zelenoff <antonz@parallels.com>
Backport of 2d03019c91 from master
Since getEnabledApps() depends on an authentication app to be loaded,
especially in the case of LDAP, the cache from getEnabledApps() is now
cleared to make sure that subsequent calls will properly return apps
that were enabled for groups.
This is because getEnabledApps() uses the inGroups() function from the
group manager provided by LDAP or any other authentication app.
Backport of 36d22825e0 from master
properly cancel a Paginated Results operation in order to avoid protocol errors, fixes#10526
abandon ongoing paged search before starting a new one
abandond paged search only if PHP supports them
init a new paged search on read operations to satisfy OpenLDAP
make scrutinizer happy, very minor changes
* use ' instead of " for config option
* place default parameters where useful into sample
* use proper comment block
* limit line size to 80 characters
folder size and mtime is always unknown in s3
more s3 fixes
make rescanDelay of root dir configurable, add on the fly update of legacy storage ids, !isset -> empty when checking strings
reduce number of http calls on remove and rmdir
fix typo
We do not want to redirect to other domains using the "?redirect_url=" feature. Please notice, that the ownCloud project does not consider open redirectors as security issue.
This adds a file lock to the config in hope that this prevents race conditions as reported in https://github.com/owncloud/core/issues/11070
Testplan:
- [ ] Delete config.php and make it read-only => Error is thrown that it is not writeable
- [ ] Installation still works
- [ ] Changing config settings works (i.e. using the SMTP config switches in the administration menu)
- [ ] Your PC didn't blow up
- [ ] Installing the news app and the "Disable AppCode checker" app did not destroy your installation
Only skip the main config
Otherwise read only additional configs might not be processed
Test on tmpdir
Remove the second comment which could be confused with suggesting an invalid value: `// 100 MiB`.
To keep the easily readable example value, it has been moved into the comment header for the config item.
- Added setup checks in JavaScript
- Moved isWebDAVWorking to JS using SetupChecks
- Moved internet connection checks to an ajax call that goes through the
server
Backport of e65ceb08fc from master
Instead of inaccurate pattern matching, use the list of users who we
know have access to the file to build the list of share keys.
This covers the following cases:
- Move/copy files into a subfolder within a share
- Unsharing from a user
- Deleting files directlry / moving share keys to trashbin
Backport of 1e631754d7 from master
We do not want to follow redirects to other protocols since they might allow an adversary to bypass network restrictions. (i.e. a redirect to ftp:// might be used to access files of a FTP server which might be in a secure zone and not be reachable from the net but from the ownCloud server)
Get final redirect manually using get_headers()
Migrate to HTTPHelper class and add unit tests
Conflicts:
apps/files/ajax/newfile.php
lib/private/files/storage/dav.php
lib/private/server.php
lib/private/util.php
lib/public/iservercontainer.php
Assume a permission issue whenever a file could not be deleted.
This is because some storages are not able to return permissions, so a
permission denied situation can only be triggered during direct
deletion.
Whenever a delete operation is called twice in a row, it could happen
that the first call already deleted the file.
The second call would return an empty $ownerPath because the file does
not exist. That empty $ownerPath would run the key deletion operation on
the wrong path.
This fix adds checks in many places to make sure we don't use $ownerPath
when it's empty or null.
Backport of 8aca127e52 from master
When moving a folder into another mount point, $renamedFiles is empty
because that goes over a different mechanism.
In such case, this fix makes sure that the file proxy is reenable to
avoid breaking the subsequent files that are being moved.
fix in displayNamesInGroup: when specified limit N, we did complex search only in the first N users
change logic in displayNamesInGroup and add some unit tests
add more logic in displayNamesInGroup for big user bases
1. remove sizeof($filteredUsers) > 0 as condition
2. use count instead of sizeof. Latter is an alias to first one, practically we stick to count everywhere. Having it consistent helps with readability.
3. move whitespace so we have $groupUsers[] = $filteredUser; instead of $groupUsers []= $filteredUser;
To avoid making a server request every time the dropdown opens, the
whole list of groups are cached (from the last request):
Whenever the user types in a search term it will still send server
requests.
At the previous point not all apps were initialized. Now the basic auth check happens together at the same location as all others.
Fixes https://github.com/owncloud/core/issues/11129
Added timeout in DeleteHandler to auto-delete after a delay.
Fixed issue where OC.Notification.hide() was called twice in a row when
deleting multiple entries, causing the second notification to disappear.
Fixed issue where "undo" click event handler was registered multiple
times when calling setNotifications() twice.
Added JS unit tests for the DeleteHandler class.
Refix undo users, groups feature
Timeout is now cleared in cancel().
Fixed click handler name for "undo" to be able to work with multiple
DeleteHandler instances (in our case one for users and one for groups)
so that there is no conflict.
Backport of 0d9f24a0ef from master
The garbage collector in PHP 5.3.10 does not properly release the file
handle when calling fclose() due to the fact that it is passed by
reference.
This has the side-effect of preventing file locks to be released as well
when the files_locking app is enabled.
This fix removes the useless passing by reference and now the file
handle and file lock are freed properly.
When moving files on storages that don't expose permissions, the storage
itself might throw an exception when the permission is denied.
This fix ensures that exceptions are caught and forwarded to the client
instead of just hanging.
Backport of e43c9b84c4 from master
[error] 4461#0: *186285 FastCGI sent in stderr: "PHP message
: PHP Fatal error: Call to a member function execute() on null in /var/www/ownc
loud/cron.php on line 125" while reading response header from upstream, client:
217.13.183.252, server: cloud.mycloud.com, request: "GET /cron.php HTTP/1.1", upstre
am: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "cloud.mycloud.com", referrer: "
https://cloud.mycloud.com/"
handleRequest() is not called from remote.php or public.php which made these files party available but all included apps in there produced errors.
As the expected behaviour is anyways that a trusted domain warning is shown I moved this to init()
Fixes https://github.com/owncloud/core/issues/10064
Now passing the "scrollto" URL argument to the file list class which
will also automatically scroll and highlight the matching element.
This code is triggered by the search box when in a different folder and
also by the activity app.
When dropping files onto a read-only folder, a notification
is now shown instead of attempting to upload.
This for both the drag for upload and drag from inside the file list
cases.
Backport of f1bfe35cda from master
Fix issue where the currently logged user was causing side-effects when
upgrading.
Now setting incognito mode (no user) on update to make sure the whole
apps list is taken into account with getEnabledApps() or isEnabled().
Wizad: email attribute detection
remove Access as hard dependency, inject it instead
add unit test for mail detection
write log message, if original value was changed
undo falsely changed log file
trigger email detection by Wizard upon any user filter filter change. before it happenend only upon user automatic list filter creation, but not on manual editing
adjust static method vars as well
set result entry identifier earlier, i.e. before a continue for the same level can happen. otherwise will always get the same value and we end up in an infinite loop
add unit test to make sure the infinite loop never comes back
Conflicts:
apps/user_ldap/tests/wizard.php
Adds a little button to the trusted domain warning, if an admin clicks on the warning he will be redirected to ownCloud and asked whether he want to trust this domain.
By far not the cleanest code, or clean at all, but does the job and I don't see a reason to make a lot of changes for this little improvement.
When links are not allowed, the email field does not exist and
autocomplete returns null. This causes Javascript errors.
The fix prevents entering the bogus block when links aren't allowed, as
it doesn't make sense to enter it in such cases anyway.
Backport of 98d06094e7 from master
The default quota settings field is initially hidden which makes it
impossible for singleSelect() to make its width measurements.
This fix uses the app navigation slide "show" event to defer the
singleSelect() initialization on the default quota field.
Refactored setQuota() into UserList._updateQuota().
Refactored duplicate event handler code into UserList.onQuotaSelect().
Whenenver range headers are set and encryption is enabled, it is not
possible to automatically fseek() to the proper position.
To avoid returning corrupt/invalid data or causing a decryption error,
the range headers are stripped so that the SabreDAV code in httpGet()
returns the whole file.
Backport of cc8c1d8e07 from master
remove minified select2 js
show avatars for users, simpler results
remove unneeded users and groups from settings template
fix css, escape user and group names
If the current webroot is non-empty but the webroot from the config is,
and system cron is used, the URL generator fails to build valid URLs.
So we notify the admin to set it up correctly.
Fix#9995
added tag to make facebook load a preview picture
Update public.php
add check ifMimeSupported and put the thumbsize in a variable
generate preview for all supported mimes
* remove superfluous border as it is distinguished enough via background color
* remove superfluous border from settings entry
* fix settings entry width
In Pale Moon (24.7.1) the checkboxes in the file list are not in the responding line on the icon but all of them are next to the "select all" checkbox.
This fix should not change anything in Firefox and chromium (on windows) but as the comment states it has to be checked on KDE/Qt.
BTW why is position absolute naccessary? For my understanding relative is exactly what you want to use in such a case...
Following the thread in:
https://github.com/owncloud/core/issues/10112
I modify this file hoping to be included in next ownCloud 7.0.x version. (Please, I don't have enough github knowledgment. Sorry if i'm doing something wrong..)
If an app upgrade failed, the core version will not be increased either
in the database. This will re-display the update page and make it
possible to redo the apps upgrade.
Note that any core repair routine must take into account that an update
might need to be redone again even though the core's DB state is already
the one of the new version.
Changed default sorting except for names.
Show sorting icons when hovering over
Cleanup of unnecesary addition
Fixed comments from PVince81
Corrected (Netbeans?) inserted spaces
While busy cleaning, also removed extra enters
Adjusted tests for new default sorting
Sorting triangles pointing up for ascending, down for descending
Backport + squash of 1a65d09..319caa7 from master
This `strip_tags` seems to be completely unneeded and will cause problems with passwords containing stripped characters. (e.g. `<` or `>`)
Needs https://github.com/owncloud/core/pull/9735 to be merged first.
- Renamed "delete" to "deleteEntry" to make IE8 happy.
- Added missing "svg" class for the "+" button
- Added height to "+" button but was unable to properly align it
For external storage with lots of parameter settings (>4), wrap the content of the cell to let a full view of the parameters.
The rows of the table are now always visible until the end (the trash icon is accessible).
(Note : A strange 3px margin forces me to add a class on the row added by javascript, to be able to align them with the rows rendered by the server.)
Now that fetchGroups() does not exist anymore and getGroups() is called
directory, the 'groups' property does not exist anymore.
Instead, we now generate that array on the fly and return it from getGroups.
Signed-off-by: Stephan Peijnik <speijnik@anexia-it.com>
lib/private/group/metadata.php: For subadmins also return an array of groups, indexed by their GIDs.
settings/users.php: Convert array of arrays to array of GIDs before calling into OC_Group::displayNamesInGroups.
Signed-off-by: Stephan Peijnik <speijnik@anexia-it.com>
remove dead code
do not filter groups. but update the user count according to the filter
improve phpdoc
improve metadata runtime cache
add metadata tests
fixing PHPDoc
Added mountType attribute for files/folder to indicated whether they are
regular, external or shared.
The client side then adapts the "Delete" action hint text based on this
information.
Only the mount roots must have the delete icon hint adapted.
To make this detectable on the client side, the mountType can now
be null, "shared", "shared-root", "external" or "external-root".
This also gives room to icon customization on the client side.
Whenever an app needs to register an event late, it does that on the
original file actions object.
Since the file actions that the file list work on is a merged list, not
the original one, the registration event needs to be propagated there as
well.
support for primary groups
actually the problem is only known on AD, it is only needed to take care of their attributes
adjust to ADs special behaviour
this change was not intended
cache the SID value so it is not requested over and over again
theres only one, use singular
we are access
add tests for new Access methods
add tests for new Group methods
address scrutinizer findings, mostly doc
call ldap_explode_dn from ldap wrapper, enables tests without php5-ldap
PHP Doc
yo dawg, i heard you like backslashes … php doc fix
PHPDoc updated and typos fixed while reviewing
Fix bug in the SQL query that cleans up stray shares for removed
files/folders, which is now correctly limited to that item type instead
of also removing all other share types.
Backport of f4f52cf from master
For some reason the aws-sdk-php package does not caclulate the
signiture correctly when accessing an object in a bucket with a name of
'.'.
When we are at the top of a S3 bucket there is a need(?) to have a directory
name. Per standard Unix the name picked was '.' (dot or period). This
choice exercises the aws-sdk bug.
This fix is to add a field to the method to store the name to use instead of
'.' which at this point is hard coded to '<root>'. We also add a private
function 'cleanKey()' which will test for the '.' name and replace it with
the variable. Finally all calls to manipulate objects where the path is
not obviously not '.' are processed through cleanKey().
An example where we don't process through clean key would be
'Key' => $path.'/',
Use correct relationship operator
Per feed back use === instead of ==
use '/' instead of '<root>'
In the "Shared with link" section, the share_with field can contain a
value when a password was set.
This fix prevents this value to be shown as it is not intended for the
end user.
Reload the files app in case of authentication errors, expired tokens or disabled app
Reloading will triger the full server side handeling of those errors
formatting
fix missing semicolon + some jshint warnings
If you have questions about how to install or use Nextcloud, please direct these to our [forum][forum]. We are also available on [IRC][irc].
### Short version
* The [**issue templates can be found here**][templates] but be aware of the different repositories! See list below. Please always use an issue template when reporting issues.
### Guidelines
* Please search the existing issues first, it's likely that your issue was already reported or even fixed.
- Go to one of the repositories, click "issues" and type any word in the top search/command bar.
- You can also filter by appending e. g. "state:open" to the search string.
- More info on [search syntax within github](https://help.github.com/articles/searching-issues)
* This repository ([server](https://github.com/nextcloud/server/issues)) is *only* for issues within the Nextcloud Server code. This also includes the apps: files, encryption, external storage, sharing, deleted files, versions, LDAP, and WebDAV Auth
* __SECURITY__: Report any potential security bug to us via [our HackerOne page](https://hackerone.com/nextcloud) following our [security policy](https://nextcloud.com/security/) instead of filing an issue in our bug tracker.
* The issues in other components should be reported in their respective repositories: You will find them in our [GitHub Organization](https://github.com/nextcloud/)
* Report the issue using one of our [templates][templates], they include all the information we need to track down the issue.
Help us to maximize the effort we can spend fixing issues and adding new features, by not reporting duplicate issues.
Thanks for wanting to contribute source code to Nextcloud. That's great!
Please read the [Developer Manuals][devmanual] to learn how to create your first application or how to test the Nextcloud code with PHPUnit.
### Tests
In order to constantly increase the quality of our software we can no longer accept pull request which submit un-tested code.
It is a must have that changed and added code segments are unit tested.
In some areas unit testing is hard (aka almost impossible) as of today - in these areas refactoring WHILE fixing a bug is encouraged to enable unit testing.
### Sign your work
We use the Developer Certificate of Origin (DCO) as a additional safeguard
for the Nextcloud project. This is a well established and widely used
mechanism to assure contributors have confirmed their right to license
description:"Submit a report and help us improve Nextcloud Server"
title:"[Bug]: "
labels:["bug","0. Needs triage"]
body:
- type:markdown
attributes:
value:|
### 👍 Thank you for contributing to our project!
Please note this is a **free and open-source** project. Most people take on their own time to help you, so please, be patient.
You can obtain [Enterprise support](https://nextcloud.com/support/) if you run Nextcloud Server in a mission critical environment.
- type:checkboxes
id:before-posting
attributes:
label:"⚠️ This issue respects the following points: ⚠️"
description:All conditions are **required**. Your issue can be closed if these are checked incorrectly.
options:
- label:This is a **bug**, not a question or a configuration/webserver/proxy issue.
required:true
- label:This issue is **not** already reported on Github _(I've searched it)_.
required:true
- label:Nextcloud Server **is** up to date. See [Maintenance and Release Schedule](https://github.com/nextcloud/server/wiki/Maintenance-and-Release-Schedule) for supported versions.
required:true
- label:Nextcloud Server **is** running on 64bit capable CPU, PHP and OS.
required:true
- label:I agree to follow Nextcloud's [Code of Conduct](https://nextcloud.com/contribute/code-of-conduct/).
required:true
- type:textarea
id:bug-description
attributes:
label:Bug description
description:|
Provide a description of the bug you're experiencing.
Don't just expect someone will guess what your specific problem is and provide full details.
validations:
required:true
- type:textarea
id:reproduce
attributes:
label:Steps to reproduce
description:|
Describe the steps to reproduce the bug.
The better your description is _(go 'here', click 'there'...)_ the fastest you'll get an _(accurate)_ answer.
value:|
1.
2.
3.
validations:
required:true
- type:textarea
id:expected-behavior
attributes:
label:Expected behavior
description:Describe what you expected to happen instead.
validations:
required:true
- type:dropdown
id:install-method
attributes:
label:Installation method
description:|
Select installation method you've used.
_Describe the method in the "Additional info" section if you chose "Other"._
options:
- "Official All-in-One appliance"
- "Community Web installer on a VPS or web space"
- "Community Manual installation with Archive"
- "Community Docker image"
- "Community NextcloudPi appliance"
- "Community SNAP package"
- "Community VM appliance"
- "Other Community project"
- type:dropdown
id:system
attributes:
label:Operating system
description:|
Select operating system where Nextcloud Server is installed.
_Describe in the "Additional info" section if you chose "Other"._
options:
- "Debian/Ubuntu"
- "RHEL/CentOS"
- "Other"
- type:dropdown
id:php
attributes:
label:PHP engine version
description:|
Select PHP engine version serving Nextcloud Server.
_Describe in the "Additional info" section if you chose "Other"._
options:
- "PHP 7.3"
- "PHP 7.4"
- "PHP 8.0"
- "PHP 8.1"
- "Other"
- type:dropdown
id:webserver
attributes:
label:Web server
description:|
Select Webserver serving Nextcloud Server.
_Describe in the "Additional info" section if you chose "Other"._
options:
- "Apache (supported)"
- "Nginx"
- "Lighttpd"
- "Other"
- type:dropdown
id:database
attributes:
label:Database engine version
description:|
Select Database engine serving Nextcloud Server.
_Describe in the "Additional info" section if you chose "Other"._
options:
- "MySQL"
- "MariaDB"
- "PostgreSQL"
- "SQlite"
- "Oracle"
- "Other"
- type:dropdown
id:fresh
attributes:
label:Is this bug present after an update or on a fresh install?
description:|
Select if bug is present after an update or on a fresh install.
options:
- "Updated from a minor version (ex. 22.2.3 to 22.2.4)"
- "Updated to a major version (ex. 22.2.3 to 23.0.1)"
- "Fresh Nextcloud Server install"
- type:dropdown
id:encryption
attributes:
label:Are you using the Nextcloud Server Encryption module?
description:Select if encryption is Enabled on your Nextcloud Server.
options:
- "Encryption is Enabled"
- "Encryption is Disabled"
- type:checkboxes
id:users
attributes:
label:What user-backends are you using?
description:|
Select **all** user-backends Enabled on your Nextcloud Server.
_Describe in the "Additional info" section if you chose "Other"._
options:
- label:"Default user-backend _(database)_"
- label:"LDAP/ Active Directory"
- label:"SSO - SAML"
- label:"Other"
- type:textarea
id:configs
attributes:
label:Configuration report
description:|
Provide information about your configuration.
To get this information, execute one of the following commands on the CLI:
```shell
sudo -u www-data php occ config:list system
php occ config:list system
./occ config:list system
```
> NOTE: This will be automatically formatted into code for better readability.
render:shell
- type:textarea
id:apps
attributes:
label:List of activated Apps
description:|
Provide information about your apps.
To get this information, execute one of the following commands on the CLI:
```shell
sudo -u www-data php occ app:list
php occ app:list
./occ app:list
```
> NOTE: This will be automatically formatted into code for better readability.
render:shell
validations:
required:true
- type:textarea
id:nextcloud-signingstatus
attributes:
label:Nextcloud Signing status
description:|
Provide Nextcloud Signing status.
First, login as Admin user into your Nextcloud, then access this URL:
Note: This is the **issue tracker of Nextcloud**, please do NOT use this to get answers to your questions or get help for fixing your installation. This is a place to report bugs to developers, after your server has been debugged. You can find help debugging your system on our home user forums: https://help.nextcloud.com or, if you use Nextcloud in a large organization, ask our engineers on https://portal.nextcloud.com. See also https://nextcloud.com/support for support options.
Nextcloud is an open source project backed by Nextcloud GmbH. Most of our volunteers are home users and thus primarily care about issues that affect home users. Our paid engineers prioritize issues of our customers. If you are neither a home user nor a customer, consider paying somebody to fix your issue, do it yourself or become a customer.
Guidelines for submitting issues:
* Please search the existing issues first, it's likely that your issue was already reported or even fixed.
- Go to https://github.com/nextcloud and type any word in the top search/command bar. You probably see something like "We couldn’t find any repositories matching ..." then click "Issues" in the left navigation.
- You can also filter by appending e. g. "state:open" to the search string.
- More info on search syntax within github: https://help.github.com/articles/searching-issues
* This repository https://github.com/nextcloud/server/issues is *only* for issues within the Nextcloud Server code. This also includes the apps: files, encryption, external storage, sharing, deleted files, versions, LDAP, and WebDAV Auth
* SECURITY: Report any potential security bug to us via our HackerOne page (https://hackerone.com/nextcloud) following our security policy (https://nextcloud.com/security/) instead of filing an issue in our bug tracker.
* The issues in other components should be reported in their respective repositories: You will find them in our GitHub Organization (https://github.com/nextcloud/)
-->
<!--- Please keep this note for other contributors -->
### How to use GitHub
* Please use the 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to show that you are interested into the same feature.
* Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
* Subscribe to receive notifications on status change and new comments.
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
Thanks for your first pull request and welcome to the community!
Feel free to keep them coming! If you are looking for issues to tackle then have a look at this selection: https://github.com/nextcloud/server/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22
- name:Set up npm ${{ steps.versions.outputs.npmVersion }}
run:npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name:Install dependencies & build
run:|
npm ci
npm run build --if-present
- name:Build css
run:npm run sass
- name:Build icons css
run:npm run sass:icons
- name:Check webpack build changes
run:|
bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)"
In the Nextcloud community, participants from all over the world come together to create Free Software for a free internet. This is made possible by the support, hard work and enthusiasm of thousands of people, including those who create and use Nextcloud software.
Our code of conduct offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.
The Code of Conduct is shared by all contributors and users who engage with the Nextcloud team and its community services. It presents a summary of the shared values and “common sense” thinking in our community.
You can find our full code of conduct on our website: https://nextcloud.com/code-of-conduct/
Please, keep our CoC in mind when you contribute! That way, everyone can be a part of our community in a productive, positive, creative and fun way.
If you have questions about how to install or use ownCloud, please direct these to the [mailing list][mailinglist] or our [forum][forum]. We are also available on [IRC][irc].
### TL;DR
* The [issue template can be found here][template] but be aware of the different repositories! See list below.
### Guidelines
* Please search the existing issues first, it's likely that your issue was already reported or even fixed.
- Go to one of the repositories, click "issues" and type any word in the top search/command bar.
- You can also filter by appending e. g. "state:open" to the search string.
- More info on [search syntax within github](https://help.github.com/articles/searching-issues)
* This repository ([core](https://github.com/owncloud/core/issues)) is *only* for issues within the ownCloud core code. This also includes the apps: files, encryption, external storage, sharing, deleted files, versions, LDAP, and WebDAV Auth
* The issues in other components should be reported in their respective repositories:
* 📁 **Access your Data** You can store your files, contacts, calendars, and more on a server of your choosing.
* 🔄 **Sync your Data** You keep your files, contacts, calendars, and more synchronized amongst your devices.
* 🙌 **Share your Data** …by giving others access to the stuff you want them to see or to collaborate with.
* 🚀 **Expandable with hundreds of Apps** ...like [Calendar](https://github.com/nextcloud/calendar), [Contacts](https://github.com/nextcloud/contacts), [Mail](https://github.com/nextcloud/mail), [Video Chat](https://github.com/nextcloud/spreed) and all those you can discover in our [App Store](https://apps.nextcloud.com)
* 🔒 **Security** with our encryption mechanisms, [HackerOne bounty program](https://hackerone.com/nextcloud) and two-factor authentication.
Do you want to learn more about how you can use Nextcloud to access, share and protect your files, calendars, contacts, communication & more at home and in your organization? [**Learn about all our Features**](https://nextcloud.com/athome/).
- ☑️ [**Simply sign up**](https://nextcloud.com/signup/) at one of our providers either through our website or through the apps directly.
- 🖥 [**Install** a server by yourself](https://nextcloud.com/install/#instructions-server) on your hardware or by using one of our ready to use **appliances**
- 📦 Buy one of the [awesome **devices** coming with a preinstalled Nextcloud](https://nextcloud.com/devices/)
- 🏢 Find a [service **provider**](https://nextcloud.com/providers/) who hosts Nextcloud for you or your company
### Important notice on translations
Please submit translations via Transifex:
https://www.transifex.com/projects/p/owncloud/
Enterprise? Public Sector or Education user? You may want to have a look into [**Nextcloud Enterprise**](https://nextcloud.com/enterprise/) provided by Nextcloud GmbH.
You can also [get support for Nextcloud](https://nextcloud.com/support)!
## Join the team 👪
There are many ways to contribute, of which development is only one! Find out [how to get involved](https://nextcloud.com/contribute/), including as a translator, designer, tester, helping others, and much more! 😍
### Development setup 👩💻
1. 🚀 [Set up your local development environment](https://docs.nextcloud.com/server/latest/developer_manual/getting_started/devenv.html)
2. 🐛 [Pick a good first issue](https://github.com/nextcloud/server/labels/good%20first%20issue)
3. 👩🔧 Create a branch and make your changes. Remember to sign off your commits using `git commit -sm "Your commit message"`
4. ⬆ Create a [pull request](https://opensource.guide/how-to-contribute/#opening-a-pull-request) and `@mention` the people from the issue to review
5. 👍 Fix things that come up during a review
6. 🎉 Wait for it to get merged!
Third-party components are handled as git submodules which have to be initialized first. So aside from the regular git checkout invoking `git submodule update --init` or a similar command is needed, for details see Git documentation.
Several apps that are included by default in regular releases such as [First run wizard](https://github.com/nextcloud/firstrunwizard) or [Activity](https://github.com/nextcloud/activity) are missing in `master` and have to be installed manually by cloning them into the `apps` subfolder.
Otherwise, git checkouts can be handled the same as release archives, by using the `stable*` branches. Note they should never be used on production systems.
### Working with front-end code 🏗
#### Building
We are moving more and more toward using Vue.js in the front-end, starting with Settings. For building the code on changes, use these terminal commands in the root folder:
```bash
# install dependencies
make dev-setup
# build for development
make build-js
# build for development and watch edits
make watch-js
# build for production with minification
make build-js-production
```
#### Committing changes
**When making changes, also commit the compiled files!**
We still use Handlebars templates in some places in Files and Settings. We will replace these step-by-step with Vue.js, but in the meantime, you need to compile them separately.
If you don’t have Handlebars installed yet, you can do it with this terminal command:
```bash
sudo npm install -g handlebars
```
Then inside the root folder of your local Nextcloud development installation, run this command in the terminal every time you changed a `.handlebars` file to compile it:
```bash
./build/compile-handlebars-templates.sh
```
Before checking in JS changes, make sure to also build for production:
```bash
make build-js-production
```
Then add the compiled files for committing.
To save some time, to only rebuild for a specific app, use the following and replace the module with the app name:
```bash
MODULE=user_status make build-js-production
```
Please note that if you used `make build-js` or `make watch-js` before, you'll notice that a lot of files were marked as changed, so might need to clear the workspace first.
### Working with back-end code 🏗
When changing back-end PHP code, in general, no additional steps are needed before checking in.
However, if new files were created, you will need to run the following command to update the autoloader files:
```bash
build/autoloaderchecker.sh
```
After that, please also include the autoloader file changes in your commits.
### Tools we use 🛠
- [👀 BrowserStack](https://browserstack.com) for cross-browser testing
- [🌊 WAVE](https://wave.webaim.org/extension/) for accessibility testing
- [🚨 Lighthouse](https://developers.google.com/web/tools/lighthouse/) for testing performance, accessibility, and more
## Contribution guidelines 📜
All contributions to this repository from June 16, 2016, and onward are considered to be
licensed under the AGPLv3 or any later version.
Nextcloud doesn't require a CLA (Contributor License Agreement).
The copyright belongs to all the individual contributors. Therefore we recommend
that every contributor adds the following line to the header of a file if they
Please read the [Code of Conduct](https://nextcloud.com/community/code-of-conduct/). This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.
Please review the [guidelines for contributing](.github/CONTRIBUTING.md) to this repository.
More information how to contribute: [https://nextcloud.com/contribute/](https://nextcloud.com/contribute/)
echo'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
thrownew\OutOfBoundsException('Package "'.$packageName.'" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
thrownew\OutOfBoundsException('Package "'.$packageName.'" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
thrownew\OutOfBoundsException('Package "'.$packageName.'" is not installed');
}
/**
* @param string $packageName
* @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
* Returns the raw installed.php data for custom implementations
*
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
@trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.',E_USER_DEPRECATED);
if(null===self::$installed){
// only require the installed.php file if this file is loaded from its dumped location,
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
if(substr(__DIR__,-8,1)!=='C'){
self::$installed=include__DIR__.'/installed.php';
}else{
self::$installed=array();
}
}
returnself::$installed;
}
/**
* Returns the raw data of all installed.php which are currently loaded for custom implementations
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"خاصية سجلات المراقبة لـ نكست كلاود مثل الوصول إلى سجلات الملفات أو المعلومات الحساسة الاخرى."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"خاصية سجلات المراقبة لـ نكست كلاود مثل الوصول إلى سجلات الملفات أو المعلومات الحساسة الاخرى."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Forne la capacidá de rexistrar, por exemplu, l'accesu a los ficheros o a otres aiciones sensibles de Nextcloud"
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Forne la capacidá de rexistrar, por exemplu, l'accesu a los ficheros o a otres aiciones sensibles de Nextcloud"
"Auditing / Logging":"Одитиране/създаване на регистри",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Предоставя възможности за регистриране в Nextcloud, като например достъп до файлове за регистриране или други чувствителни действия."
"Auditing / Logging":"Одитиране/създаване на регистри",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Предоставя възможности за регистриране в Nextcloud, като например достъп до файлове за регистриране или други чувствителни действия."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Proporciona funcionalitats de registre per al Nextcloud, com ara un registre d'accés a fitxers o altres accions relacionades amb la confidencialitat."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Proporciona funcionalitats de registre per al Nextcloud, com ara un registre d'accés a fitxers o altres accions relacionades amb la confidencialitat."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Poskytuje Nextcloud schopnosti zaznamenávání událostí, jako například zaznamenávání přístupů k souborům nebo jiných citlivých akcí."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Poskytuje Nextcloud schopnosti zaznamenávání událostí, jako například zaznamenávání přístupů k souborům nebo jiných citlivých akcí."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Yn darparu galluoedd cofnodi ar gyfer Nextcloud megis cofnodi mynediadau ffeiliau neu gamau gweithredu sensitif."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Yn darparu galluoedd cofnodi ar gyfer Nextcloud megis cofnodi mynediadau ffeiliau neu gamau gweithredu sensitif."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Bidrager med lognings funktionalitet til Nextcloud, såsom logning af fil tilgang eller andre sensitive handlinger"
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Bidrager med lognings funktionalitet til Nextcloud, såsom logning af fil tilgang eller andre sensitive handlinger"
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Stellt Protokollierungsfunktionen für Nextcloud zur Verfügung wie Dateizugriffe oder andere vertrauliche Aktionen."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Stellt Protokollierungsfunktionen für Nextcloud zur Verfügung wie Dateizugriffe oder andere vertrauliche Aktionen."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Stellt Protokollierungsfunktionen für Nextcloud zur Verfügung wie Dateizugriffe oder andere vertrauliche Aktionen."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Stellt Protokollierungsfunktionen für Nextcloud zur Verfügung wie Dateizugriffe oder andere vertrauliche Aktionen."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.":"Παρέχει δυνατότητες καταγραφής για το Nextcloud όπως πρόσβαση σε αρχεία καταγραφής ή άλλες ευαίσθητες ενέργειες."
},
"nplurals=2; plural=(n != 1);");
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.