Compare commits

...

1201 Commits

Author SHA1 Message Date
Frank Karlitschek
2dabc64730 5.0.19 2015-02-16 05:05:06 +01:00
Lukas Reschke
2add5f76c5 Normalize before processing 2015-02-06 15:49:16 +01:00
Frank Karlitschek
f22d8b5ad5 5.0.19 RC1 2015-02-06 02:49:23 +01:00
Frank Karlitschek
50e025b148 5.0.18 2014-11-07 20:28:34 +01:00
Craig Morrissey
eea9629895 logging changes 2014-11-07 12:49:24 -05:00
Lukas Reschke
3ee491b0de Merge pull request #11249 from owncloud/backport-11032-stable5
Do only follow HTTP and HTTPS redirects
2014-10-22 12:53:00 +02:00
Björn Schießle
039603e10a Merge pull request #11244 from owncloud/jenkins-stable5
Fixing Jenkins execution for stable5
2014-09-23 12:24:48 +02:00
Lukas Reschke
cd6de9b8e4 Do only follow HTTP and HTTPS redirects
Backport of #11032 to stable5
2014-09-23 12:15:43 +02:00
Bjoern Schiessle
10af54f20e create the user 'admin' before running the tests 2014-09-23 10:34:17 +02:00
Thomas Müller
2b45a67218 Fixing Jenkins execution for stable5 2014-09-22 09:13:51 +02:00
Thomas Müller
2e0fbba37b Merge pull request #11164 from owncloud/tar-tests-stable5
Also skip tar tests on stable 5 when running php >=5.5
2014-09-19 00:08:41 +02:00
Robin Appelman
68bd43f7a2 Also skip tar tests on stable 5 when running php >=5.5 2014-09-18 17:53:10 +02:00
Frank Karlitschek
62d78c91f5 Merge pull request #10316 from owncloud/clarify-use-case
clearify the use-case of this app
2014-08-10 17:11:13 -04:00
Lukas Reschke
38a01ca454 clearify the use-case of this app
Backport of 8a24e1e to stable5
2014-08-09 23:01:48 +02:00
Morris Jobke
b52ed24967 Merge pull request #9229 from owncloud/fix_search_on_oracle_stable5
replace % in pattern with .* and surround with ^$ to get a real regex pattern
2014-06-28 11:26:04 +02:00
Jörn Friedrich Dreyer
94e9efeee7 replace % in pattern with .* and surround with ^$ to get a real regex pattern 2014-06-26 17:57:35 +02:00
Frank Karlitschek
9758c104b7 5.0.17 2014-06-24 10:43:43 -04:00
Frank Karlitschek
7625528b61 5.0.17 beta 1 2014-06-17 08:50:13 +02:00
Lukas Reschke
beee69bee4 Add deprecation notice to load* functions
This functions are deprecated and/or removed since ownCloud 7. Additionally a issubdirectory check has been added here to prevent developers to use this function in a potentially insecure way.

Backport of https://github.com/owncloud/core/pull/9033
2014-06-16 20:28:46 +02:00
Jan-Christoph Borchardt
d8a4e7a324 keep long file names in one line to not overflow download button on mobile 2014-06-06 15:38:16 +02:00
Jan-Christoph Borchardt
13fb2afcbf add max-width to directLink input to prevent overflow 2014-06-06 15:37:29 +02:00
Jörn Friedrich Dreyer
ea801dde9c Merge pull request #8306 from owncloud/case_insensitive_search_oracle_stable5
Case insensitive search oracle stable5
2014-06-03 18:11:56 +02:00
Frank Karlitschek
5dc3b1dc71 5.0.16 2014-04-29 03:05:27 +02:00
Lukas Reschke
4df0130aa0 Clarify the trusted_domain error page
Backport of https://github.com/owncloud/core/pull/8372
2014-04-27 18:35:42 +02:00
Lukas Reschke
321dacabd4 Add another example to the trusted_domains config
Users often ask in IRC or the forum how to add another domain.
Hopefully they will be able to find it out on their own if we have an example with two domains.
2014-04-26 23:14:21 +02:00
Morris Jobke
889794884d Merge pull request #8366 from owncloud/stable5-external-storage-css-fix
fix layout of external storage config table
2014-04-26 10:34:23 +02:00
Morris Jobke
0737b91b34 fix layout of external storage config table
Conflicts:
	apps/files_external/css/settings.css
2014-04-26 00:54:05 +02:00
Lukas Reschke
e08490cb4b Use JS as content-type due to mimesniffing 2014-04-25 16:48:33 +02:00
Frank Karlitschek
e2ab6027c3 5.0.16 RC1 2014-04-23 16:51:55 +02:00
Thomas Müller
c6a8efeaf2 Merge pull request #8298 from owncloud/backport_6290_to_stable5
Backport #6290 to stable5
2014-04-23 15:58:36 +02:00
Lukas Reschke
5327b303e3 Check whether the user has permissions to add personal storage backends
Quick’n dirty back port of #8182 - master has a better fix but that
should be good enough…

missing return - OCP\JSON::success does not terminate the PHP process - which is good ;-)

Use error instead of success

Revert "Use error instead of success"

This reverts commit e2d5535a5aa436c3896e46f0b9e8ff1bd5640d4d.

Use error instead of success
2014-04-23 14:45:52 +02:00
Lukas Reschke
b4c207ae30 Merge pull request #8323 from owncloud/stable5-backport-8183-and-co
Backport of #8183 and #8197
2014-04-23 14:37:00 +02:00
Robin Appelman
23e3752b8d Backport of #8197 to stable6 2014-04-23 12:39:58 +02:00
Robin Appelman
f48b0d9681 Backport of #8183 to stable6 2014-04-23 12:26:59 +02:00
Jörn Friedrich Dreyer
faaf32ecf5 on oracle use regex_like to make filename search case insensitive 2014-04-22 20:27:50 +02:00
Björn Schießle
29b792779c Merge pull request #8299 from owncloud/fix_group_restore_stable5
fix variable name
2014-04-22 16:03:34 +02:00
Bjoern Schiessle
00193c62c5 fix variable name 2014-04-22 14:18:01 +02:00
Jörn Friedrich Dreyer
6205c554f1 restore trashbin download.php 2014-04-22 13:43:51 +02:00
Jörn Friedrich Dreyer
ee822245fb backport #6290 to stable5 2014-04-22 12:22:11 +02:00
Lukas Reschke
93a11362be Backport of #7682 to stable5 2014-04-18 11:37:24 +02:00
Morris Jobke
ec6c2a3fab Merge pull request #8115 from owncloud/stable5-fixselectallanddownload
[stable5] Added missing var that messes up IE8
2014-04-17 16:04:34 +02:00
Robin Appelman
2264615d20 Verify that a file exists before we share it 2014-04-17 12:38:58 +02:00
Thomas Müller
ec594eb530 Merge pull request #8234 from owncloud/backport-fileids-stable5
backport of the FilesPlugin to stable5
2014-04-16 17:44:14 +02:00
Thomas Müller
6964474768 adding the plugin to the server object 2014-04-16 16:31:15 +02:00
Thomas Müller
f16a19bea9 backport of the FilesPlugin to stable5 2014-04-16 15:11:58 +02:00
Vincent Petry
c67aaf6688 Fixed Sabre Node implementation to correctly return timestamps as int
Negative timestamps were returned as string and were confusing other

Sabre API like Sabre_DAV_Property_GetLastModified.

This fix makes sure the timestamp is returned as int when defined.

Backport of 4f11786 from master
2014-04-10 17:48:21 +02:00
Vincent Petry
9bc463de6e Merge pull request #8005 from owncloud/files-fixie8upload
[stable5] Added requesttoken back for IE8
2014-04-10 13:55:30 +02:00
Thomas Müller
e20d23e18b Merge pull request #8030 from owncloud/getpath-shared-stable5
[stable5] Make getPath work for shared files
2014-04-10 09:26:17 +02:00
Vincent Petry
7554374c5c Added missing var that messes up IE8 2014-04-08 18:38:24 +02:00
Robin Appelman
61425344cc Improve phpdoc 2014-04-03 15:30:41 +02:00
Robin Appelman
2af0ebf27a Implement getPath for shared files 2014-04-03 15:27:50 +02:00
Robin Appelman
d3926b8d5e Give storages the option to implement the getById behaviour for View->getPath 2014-04-03 14:48:30 +02:00
Vincent Petry
dffcf9ff40 Added requesttoken back for IE8 2014-04-02 12:20:56 +02:00
Thomas Müller
140a65e11b Revert "remove Sabre_DAV_Browser_Plugin"
This reverts commit 997a9ce0b1.
2014-04-01 13:46:08 +02:00
Vincent Petry
c45de909e4 Merge pull request #7610 from owncloud/stable5-fix-updater
Backport of https://github.com/owncloud/core/pull/7609
2014-03-28 17:03:38 +01:00
blizzz
c831fd88ca Merge pull request #7229 from owncloud/stable5-fix-5828-backport
Backport fix-5828 manually to stable5. Implements 17e45e2 on stable5
2014-03-28 17:02:23 +01:00
Morris Jobke
97afb56440 Merge pull request #7900 from owncloud/close_session_early_on_download_stable5
Close session early on download stable5
2014-03-28 11:38:26 +01:00
Jörn Friedrich Dreyer
ae9efcf931 don't block php session while download is in progress 2014-03-26 17:24:11 +01:00
Vincent Petry
635e34df8e Merge pull request #7763 from owncloud/stable5-fixrestoreall
[stable5] Fix "restore all selected files"
2014-03-19 18:13:37 +01:00
Vincent Petry
2e3b3b9947 Merge pull request #7762 from owncloud/stable5-fixtrashandversionrootsizecalc
[stable5] [backport] When reading the size of "files" mountpoints need to be excluded
2014-03-17 15:27:03 +01:00
Vincent Petry
1afbea1b68 Fix "restore all selected files"
It seems that a typo sneaked in during a backport.

This fixes the case when selecting files in the trashbin and clicking
"Restore" on the tool bar to restore them all.
2014-03-17 12:29:10 +01:00
Vincent Petry
d677f789de When reading the size of "files" mountpoints need to be excluded
The versions and trashbin app are now passing "includeMountPoints=false"
to "getFileInfo()" to make sure that the calculated total size doesn't
include mount points like Shared or external storage.

This is because the default call (legacy) used to return the size of
mount points as well.

Fixes #6731
2014-03-17 12:20:52 +01:00
Bjoern Schiessle
84a5c28e0f fix left-over from merge conflict 2014-03-13 21:00:13 +01:00
Bjoern Schiessle
ab1d69bddf finally fix the paths for the OCS Share API 2014-03-13 20:57:02 +01:00
Thomas Müller
afe9de53ed Merge pull request #7700 from owncloud/backport-7681-stable5
remove Sabre_DAV_Browser_Plugin
2014-03-13 09:42:37 +01:00
Thomas Müller
997a9ce0b1 remove Sabre_DAV_Browser_Plugin
Conflicts:
	apps/files/appinfo/remote.php
2014-03-12 23:55:23 +01:00
Vincent Petry
5d1f681fdc Merge pull request #7691 from owncloud/backport-7683-stable5
Backport 7683 stable5
2014-03-12 17:51:29 +01:00
Thomas Müller
4721b545c4 fixing method names 2014-03-12 15:44:45 +01:00
Thomas Müller
a440b360d0 set content-type on ocs exceptions
Conflicts:
	lib/api.php
2014-03-12 15:44:32 +01:00
Bjoern Schiessle
286799252b add 'received_from' info to the share, so that every share can have a different value 2014-03-11 17:10:13 +01:00
Bjoern Schiessle
013ec9a6e3 fix path creation for re-shares, issue #7662 2014-03-11 17:09:55 +01:00
Vincent Petry
109b65b3cb Disable XML entities when parsing XML 2014-03-10 20:43:31 +01:00
Thomas Müller
991b059861 Merge pull request #7654 from owncloud/backport-7646-stable5
we need the file_source to delete a share successfully
2014-03-10 17:55:42 +01:00
Bjoern Schiessle
53d36e6c43 we need the file_source to delete a share successfully
Conflicts:
	apps/files_sharing/tests/api.php
2014-03-10 16:47:39 +01:00
Vincent Petry
e1723d76d4 Merge pull request #7584 from owncloud/stable5-trusteddomainerrorpage
[stable5] Show warning page when accessing server from an untrusted domain
2014-03-07 10:37:30 +01:00
Lukas Reschke
25d9e41502 Use $installedVersion instead of $currentVersion 2014-03-06 22:47:40 +01:00
Lukas Reschke
b442a9b4c9 Revert "Use $installedVersion instead of $currentVersion"
This reverts commit aef1e5112f.
2014-03-06 22:46:16 +01:00
Lukas Reschke
aef1e5112f Use $installedVersion instead of $currentVersion 2014-03-06 22:44:33 +01:00
Vincent Petry
7ba91c346f Fixed X-Forwarded-Host parsing
Backport of d7163c9 from stable6
2014-03-06 12:00:57 +01:00
Vincent Petry
6a07f9fc55 Added unit tests for serverHost and other related functions
Backport of 98ff74a from stable6
2014-03-06 12:00:38 +01:00
Vincent Petry
03810e6828 Added localhost as trusted domain
Backport of f1b948d from stable6
2014-03-06 11:59:37 +01:00
Vincent Petry
47c4971e10 Show warning page when accessing server from an untrusted domain
Added early check for the requested domain host and show a warning
page if the domain is not trusted.

Backport of 9b6b02a from stable6
2014-03-06 11:58:51 +01:00
Frank Karlitschek
b66b10b806 increase internal version number once more 2014-03-03 15:01:11 +01:00
Frank Karlitschek
d7bd7c60da 5.0.15 2014-03-01 12:27:20 +01:00
Thomas Müller
4abe1b1ede Merge pull request #7463 from owncloud/stable5-webdav-logexceptions
[stable5] Backport exception logger for Sabre connector
2014-02-28 16:50:21 +01:00
Vincent Petry
8558cefbee Merge pull request #7169 from owncloud/storage-cleanup-stable5
Remove the filecache for a users home storage when the user is deleted
2014-02-28 10:30:28 +01:00
Vincent Petry
cb7369659f Backported sabre exception logger
Partial backport of 11ef12a

Whenever an exception occurs in the sabre connector code or code called
by it, it will be logged.

This plugin approach is needed because Sabre already catches exceptions
to return them to the client in the XML response, so they don't appear
logged in the web server log.

This will make it much easier to debug syncing issues.
2014-02-27 16:44:25 +01:00
Vincent Petry
e31a3d0f87 Backported logException from stable6 2014-02-27 16:33:57 +01:00
Robin Appelman
f7db879301 Also remove home storages 2014-02-27 13:38:55 +01:00
Bjoern Schiessle
61bb39829e only add "received_from" if a share was found 2014-02-26 14:50:19 +01:00
Frank Karlitschek
7819010161 5.0.15 RC1 2014-02-25 14:07:17 +01:00
Vincent Petry
0be942635d Merge pull request #7387 from owncloud/stable5-fixhostnamewithport
Fix case where port is missing
2014-02-25 12:32:36 +01:00
Frank Karlitschek
3730875b2f Merge pull request #7268 from owncloud/stable5-fix-ocspriv
Use separate table for privatedata attributes
2014-02-25 12:31:55 +01:00
Vincent Petry
153fde697f Fix case where port is missing 2014-02-25 11:28:49 +01:00
Vincent Petry
bbe20191d4 Merge pull request #7365 from owncloud/backport-7305
Added extra checks for ext storage class (Backport to stable5)
2014-02-24 11:29:54 +01:00
Björn Schießle
195393e324 Merge pull request #7362 from owncloud/fix-7259-5
Backport #7259 to stable5
2014-02-24 11:23:20 +01:00
Lukas Reschke
1679c9138b Added extra checks for ext storage class
Backport of #7305
2014-02-23 11:50:53 +01:00
tomneedham
04e2df3c6a Change to using OC_User::setUserID() instead of OC::' 2014-02-22 17:57:48 +00:00
Lukas Reschke
e9671c9c24 Backport #7259 to stable5 2014-02-22 08:24:57 +01:00
Lukas Reschke
b88654561d Revert "Partially backport #7305 to stable5"
This reverts commit 258997471e.
2014-02-22 08:18:22 +01:00
Lukas Reschke
3d72340adb Revert "Backport #7259 to stable5"
This reverts commit 7bc69c7ea5.
2014-02-22 08:18:10 +01:00
Lukas Reschke
258997471e Partially backport #7305 to stable5 2014-02-22 08:15:58 +01:00
Lukas Reschke
7bc69c7ea5 Backport #7259 to stable5 2014-02-22 08:07:57 +01:00
Arthur Schiwon
74a46e2a9e LDAP: improve compilation of filters 2014-02-21 10:40:57 +01:00
Vincent Petry
f1446509d3 Merge pull request #7313 from owncloud/stable5_fix_folder_delete
don't send delete for every single file if a folder gets deleted
2014-02-20 18:20:49 +01:00
Jan-Christoph Borchardt
d8c61969ad Merge pull request #7185 from owncloud/backport_6777_mobile_style_for_public_pages_stable5
initial backport of #6777 - mobile public pages - to stable5
2014-02-20 15:27:18 +01:00
Bjoern Schiessle
ab93d29562 don't send delete for every single file if a folder gets deleted 2014-02-20 14:08:17 +01:00
Lukas Reschke
2649bb7719 Merge pull request #6733 from owncloud/stable5-files-filenameescapingfixes
[stable5] Backport: Fixed various file name escaping issues in core apps
2014-02-20 13:04:54 +01:00
Lukas Reschke
626b90fa84 Check whether the app is set 2014-02-20 11:28:31 +01:00
Lukas Reschke
3f5038adef Check whether the Key is set 2014-02-20 11:28:23 +01:00
Lukas Reschke
0b00057cf6 An admin should not be able to add remote and public services on its own. This should only be possible programmatically.
This change is due the fact that an admin may not be expected to execute arbitrary code in every environment.
2014-02-20 11:28:20 +01:00
Jörn Friedrich Dreyer
bee41b6200 fix scrolling for mobile browsers 2014-02-19 15:20:30 +01:00
Jörn Friedrich Dreyer
b6db4e9930 unset box-shadow for mobile devices, unsupported in all but the latest mobile browsers 2014-02-19 13:09:52 +01:00
Vincent Petry
382ddabf75 Merge pull request #4782 from owncloud/tune_legacy_cache_webdav_properties_prefixing
Tune legacy cache webdav properties prefixing
2014-02-18 18:56:21 +01:00
Thomas Müller
606c22d9a7 testing update and delete 2014-02-18 17:53:16 +00:00
Thomas Müller
7d52a511c6 adding unit tests for delete 2014-02-18 17:53:10 +00:00
Thomas Müller
e7ccfc6f83 unit tests for set added 2014-02-18 17:53:05 +00:00
Thomas Müller
86858b408c first two tests 2014-02-18 17:52:59 +00:00
Joas Schilling
bace2bcdfd Make google drive client secret and dropbox api secret a password field
Fix issue #5794

Backport of 828985d
2014-02-18 18:34:28 +01:00
Andreas Fischer
0ae41c3aff Get rid of the SELECT query. Try UPDATE, on failure INSERT. 2014-02-18 17:20:10 +00:00
Thomas Müller
ddc14ae8ee fixing undefined index in delete() 2014-02-18 17:20:04 +00:00
Thomas Müller
42b7dd827b PHPDoc comment updated - checkLoggedIn() removed 2014-02-18 17:19:55 +00:00
Thomas Müller
9a28f2ded7 no need to check if the user is logged in 2014-02-18 17:19:48 +00:00
Thomas Müller
4c287ef640 fixing php notice: Undefined index key 2014-02-18 17:19:35 +00:00
Thomas Müller
90f9437b69 no need to check if the user is logged in - this is already done in the ocs dispatcher itself
adding @return
2014-02-18 17:19:27 +00:00
Frank Karlitschek
cada6b50b4 fix the privatedata key value store 2014-02-18 17:19:13 +00:00
Lukas Reschke
cf05ecbd1c Use the proper content-type
We should use the proper content-type `application/xml` instead of the default `text/html` here.

Backport requested.
2014-02-18 11:44:04 +01:00
tomneedham
8c09d66965 Backport fix-5828 manually to stable5. Implements 17e45e2 on stable5 2014-02-17 14:36:42 +00:00
Vincent Petry
8d5430c1c7 Merge pull request #7227 from owncloud/stable5-removeunusedversionsmd5
Removed unused versions md5 code
2014-02-17 14:39:07 +01:00
Vincent Petry
f7e91518a6 Removed unused versions md5 code
It looks like md5 was used previously to identify the most recent file
in the versions list, which seem to be old code, as now the versions
list doesn't contain the current file any more.

This fix removes the md5 code which caused performance issues with big
files.
2014-02-17 12:03:16 +01:00
Thomas Müller
bb8f03c061 Merge pull request #7188 from owncloud/fix_gitignore_stable5
fix .gitignore for stable5
2014-02-15 00:09:16 +01:00
Jörn Friedrich Dreyer
102d5ab084 fix undefined index 2014-02-13 16:52:49 +01:00
Jörn Friedrich Dreyer
83a7196978 fix .gitignore for stable5 2014-02-13 14:51:58 +01:00
Jörn Friedrich Dreyer
3baee7a459 add missing mobile.css 2014-02-13 14:46:47 +01:00
Jörn Friedrich Dreyer
2248433180 initial backport of #6777 - mobile public pages - to stable5 2014-02-13 12:23:22 +01:00
Robin Appelman
85ae5b992b Remove the filecache for a users home storage when the user is deleted 2014-02-12 14:14:38 +01:00
Bjoern Schiessle
5e24e21493 getData() always needs to return an array, backport of #6988 2014-02-10 15:55:47 +01:00
Bjoern Schiessle
b4b05c3291 remove needless element tag 2014-02-03 17:03:52 +01:00
Bjoern Schiessle
7e48b311ee use more accurate error codes 2014-01-28 16:47:33 +01:00
Jörn Friedrich Dreyer
075b56ba5f Merge pull request #6859 from owncloud/always_log_db_error_verbose_stable5
always be verbose when logging db error
2014-01-21 04:53:35 -08:00
Thomas Müller
b4860d56ab Merge pull request #6860 from owncloud/neutral_download_zip_default_name_stable5
use 'download.zip' as default name for zip downloads instead of 'owncloud.zip'
2014-01-21 04:19:41 -08:00
Jörn Friedrich Dreyer
35d423d59d use 'download.zip' as default name for zip downloads instead of 'owncloud.zip' 2014-01-21 12:31:36 +01:00
Jörn Friedrich Dreyer
bfcb93b2b9 always be verbose when logging db error 2014-01-21 12:20:10 +01:00
Thomas Müller
3cbea9bd2d Merge pull request #6821 from owncloud/backport_5601
Fix mimetype detection
2014-01-17 07:44:39 -08:00
Jörn Friedrich Dreyer
ae4d10668e Fix mimetype detection 2014-01-17 15:05:43 +01:00
Bjoern Schiessle
969650ecad don't unshare on delete 2014-01-13 16:50:02 +01:00
Vincent Petry
3f7550cdcf Fixed various file name escaping issues in core apps
- Refactored file tr lookup into FileList.findFileEl that uses
  filterAttr to avoid escaping issues in jQuery selectors
- Fixed versions and sharing app to properly escape file names in
  attributes
- Prevent uploading file name with invalid characters

Backport to stable5 of 1042733
2014-01-12 15:42:10 +01:00
Thomas Müller
48cd4adfb4 Merge pull request #6665 from owncloud/fix_empty_mimetypes_stable5
remove duplicate exe mimetype, add correct msi mimetype
2014-01-07 07:31:54 -08:00
Jörn Friedrich Dreyer
244f277239 remove duplicate exe mimetype, add correct msi mimetype 2014-01-07 15:58:49 +01:00
Frank Karlitschek
5e1fc51f92 5.0.14a 2013-12-18 11:55:42 +01:00
Frank Karlitschek
5e5dcc2782 5.0.14 2013-12-17 14:11:18 +01:00
Thomas Müller
7964691645 Merge pull request #6447 from owncloud/fix_home_storage_quota
fix quota calculation for Home Storage
2013-12-16 12:07:53 -08:00
Jörn Friedrich Dreyer
b02a15ceb8 add getOwner to Home Storage 2013-12-16 16:58:01 +01:00
Frank Karlitschek
e98e98f38d 5.0.14 RC1 2013-12-13 13:07:51 +01:00
Björn Schießle
e3822ef76d Merge pull request #6258 from owncloud/stable5_enc_fix_public_access
don't check migration status if a file is accessed by a public link
2013-12-09 04:57:34 -08:00
Vincent Petry
516e5f2ebe Merge pull request #6232 from owncloud/stable5-backgroundscan-reuse-etag
Stable5 backgroundscan reuse etag
2013-12-09 04:38:31 -08:00
Bjoern Schiessle
00cdb380e5 don't check migration status if a file is accessed by a public link 2013-12-09 12:45:19 +01:00
Robin Appelman
8fe4698d44 get rid of failing test that don't cause additional downloads 2013-12-08 00:17:17 +01:00
Robin Appelman
5d600e9d68 extend test case for etag preservation 2013-12-08 00:15:58 +01:00
Robin Appelman
605fa4a444 reuse etags when doing a background scan 2013-12-08 00:15:50 +01:00
Björn Schießle
b6ecff93e1 Merge pull request #6207 from owncloud/stable5_unshare_vs_delete
Stable5 unshare vs delete
2013-12-06 03:06:21 -08:00
Bjoern Schiessle
08cfb7e489 it is not possible to unshare files in OC5 2013-12-05 17:44:09 +01:00
Robin Appelman
14be3b3dbb make rmdir recursive for mappellocal storage backend
Backported from d051d6f925
2013-12-03 11:45:08 +01:00
Robin Appelman
6eef3c9c4c Make rmdir recursive for local storage
Backport of 63c898c0
2013-12-03 10:47:26 +01:00
Vincent Petry
a385e86e58 Return true when touch succeeds
Backported from c2fc0cb8191d1de80058f6572e8e10f5dbda01b2
2013-12-02 12:20:35 +01:00
Vincent Petry
7c623053dc Add trailing slash in FTP root path when missing
Fixes #6093

Backport of 84f3dd15a6
2013-12-02 12:02:40 +01:00
Vincent Petry
3b18c1bae4 Fixed FTP and SMB to use rmdir() when deleting folders
Some storages need to use different calls for deleting files or folders,
usually unlink() and rmdir().

Fixes #4532 (SMB dir deletion)
Fixes #5941 (FTP dir deletion)

Note that the extra is_dir() should be fast because it's read from the
stat cache.

Backport of d69243e
2013-12-02 11:12:09 +01:00
Vincent Petry
e079d34f5a Merge pull request #6147 from owncloud/fix-ajax-getstoragestats-stable5
fixing ajax call to getstoragestats.php
2013-12-02 01:50:07 -08:00
Thomas Müller
aaeb7827b8 fixing ajax call to getstoragestats.php 2013-12-02 10:30:55 +01:00
Robin Appelman
f0f0be8b2b Add post hooks for filesystem scanner 2013-11-28 16:35:58 +01:00
Robin Appelman
ad770024b6 Fix getRawPathInfo for the '/' edge case 2013-11-28 13:11:32 +01:00
Robin Appelman
527afe99ec fix custom routes defined by apps 2013-11-28 13:11:25 +01:00
Morris Jobke
bc9cfcb0db Merge pull request #6082 from owncloud/themable_realm_stable5
use defaults to determine webdav realm name
2013-11-27 05:38:10 -08:00
Jörn Friedrich Dreyer
63a0348f98 use defaults to determine webdav realm name 2013-11-27 14:00:13 +01:00
Morris Jobke
c3747e3910 Merge pull request #6042 from owncloud/backport-6035-oc5
Backport 6035 oc5
2013-11-27 01:23:47 -08:00
Thomas Müller
9ea931fbad fixing failing unit test 2013-11-26 22:34:26 +01:00
Thomas Müller
4221490d04 fixes #6050 2013-11-26 22:34:25 +01:00
Vincent Petry
acd9ea7b2b Return plausible isReadable() default impl for ext storage
When an ext storage doesn't implement isReadable(), always returning
true made the file scanner believe that the file exists and creates a
cache entry with the size zero.

This fix makes the default impl of isReadable() use file_exists().

Backport of a49e873d3f
2013-11-26 16:14:21 +01:00
Morris Jobke
e016ac1d5f Merge pull request #5962 from owncloud/clean_permissions_cache_on_filescan
clean permissions cache on filescan
2013-11-25 23:37:42 -08:00
Thomas Müller
1130406763 in case uri and script name don't match we better throw an exception 2013-11-25 17:42:20 +01:00
Thomas Müller
411a78b509 handle duplicate slashes in case of reverse proxy configuration
Conflicts:
	tests/lib/request.php
2013-11-25 17:41:44 +01:00
Robin Appelman
b5d04b05a0 clear permissions cache when scanning a file
Conflicts:
	lib/files/cache/scanner.php
2013-11-25 11:15:32 +01:00
Vincent Petry
880769976b Merge pull request #5934 from owncloud/stable5-excludeextstoragefromquota
[Stable5] Exclude ext storage from quota
2013-11-22 08:34:58 -08:00
Thomas Müller
2565a94e7d Merge pull request #4957 from owncloud/fixing-4866-stable5
Backport of #4869 to stable5 (recreate an etag within the scanner if the cache contains an empty etag)
2013-11-22 08:09:59 -08:00
Thomas Müller
e7c903b767 Merge branch 'fixing-4866-stable5' of github.com:owncloud/core into fixing-4866-stable5 2013-11-22 15:45:27 +01:00
Thomas Müller
1267dccfe3 Merge branch 'stable5' into fixing-4866-stable5 2013-11-22 15:44:59 +01:00
Vincent Petry
6eae96b7b0 Fixed testTouch unit test to work with stable5
Calling getFileInfo() would trigger checkUpdate() and would return the
real file mtime because the test value 500 was in the past.

This fix makes this test work with the stable5 behavior.

Removed "storage_mtime" references which don't exist in stable5.
2013-11-22 14:53:56 +01:00
Robin Appelman
64b484e32e Emulate touch() for backends that don't support it
Backport of 9738fae3cf
2013-11-21 15:55:24 +01:00
Jörn Friedrich Dreyer
ca61fac24d <default></default> and <notnull>true</notnull> contradict each other 2013-11-21 15:34:35 +01:00
Andreas Fischer
72f3860119 Cherry-pick of 5d671a8 onto stable5.
recreate an etag within the scanner if the cache contains an empty etag

Conflicts:
	lib/files/cache/cache.php
	tests/lib/files/cache/scanner.php
2013-11-20 17:35:40 +01:00
Vincent Petry
ee581f56ea Merge pull request #5893 from owncloud/stable5-extstorage-smbfixes
[stable5] External storage SMB fixes for stat and unlink backport
2013-11-19 07:09:11 -08:00
Vincent Petry
5e6ea1565a Fixed storage stats to be based on current directory
Previously, the storage statistics were always for the root dir.
This means that the upload button would always show the limit for the
root dir, even when uploading to a shared dir or external storage.

This fix adds a "dir" argument to getstoragestats.php.

Partial backport of 31181e4348
2013-11-19 11:05:05 +01:00
Vincent Petry
a84b6b3847 Fixed ext storage free space to not be restricted by quota 2013-11-19 11:05:04 +01:00
Vincent Petry
4cb6c6fe64 Fixed quota calculation to also exclude ext storage 2013-11-19 10:05:50 +01:00
Vincent Petry
9ccaf85078 External storage space is now not counted in total space
Added argument to getFileInfo() to disable adding the size of
mountpoints to a directory's size.

Backport of 614e4d485c
2013-11-19 09:47:36 +01:00
Morris Jobke
fbf1b127db Merge pull request #5921 from owncloud/search_scrollto_stable5
backport search scrollto & filter to stable5
2013-11-18 15:24:01 -08:00
Thomas Müller
847ad6c40b fixing js error in case the file name is a number 2013-11-18 15:03:22 +01:00
Jörn Friedrich Dreyer
cb656c8321 backport search scrollto & filter to stable5 2013-11-18 14:18:08 +01:00
Vincent Petry
79929fb6fa Fixed SMB file deletion success detection
Since unlink() smb4php doesn't return true on deletion success, we need
to check whether the file was deleted to confirm success.

Fixes #5866

Backport of eefd91355d54b7e49dd328cef9a9561ee51b0194
2013-11-15 16:36:45 +01:00
Vincent Petry
321a1062d1 Removing trailing dot in path that samba doesn't seem to like
Fixes #5778
Added unit test for getId() and constructUrl()

Backport of f66ec8a02271e73755cb965107eca60f027ffe78
2013-11-15 16:35:12 +01:00
Vincent Petry
477e3a8b87 Merge pull request #5883 from owncloud/stable5-singledotdirs
Stable5 single dot dirs
2013-11-15 03:57:27 -08:00
Frank Karlitschek
a3a97cd6d8 Merge pull request #5307 from nicokaiser/fixing-3694-stable5
Fix OC_User::getDisplayName to persist between (browser) sessions. Fixes #3694
2013-11-15 01:42:08 -08:00
Vincent Petry
a7a87d074b Added missing test with leading backslash 2013-11-15 10:40:01 +01:00
Vincent Petry
42e553cdc0 Files app backend now normalizes paths before rendering templates
Before rendering breadcrumbs or the file list, the paths are now
normalized. This prevents the UI to show "." breadcrumbs in case the
path contains sections with "/./"

Fixes #5848

Backport of 008c3b80d6
2013-11-15 10:40:01 +01:00
Vincent Petry
e44831d10f Fixed normalizePath() to strip out single dot dirs
Now removing "/./" and trailing "/." from the paths when normalizing.

Backport of c06d8bb007
2013-11-15 10:39:43 +01:00
Thomas Müller
5aabf3826a Merge pull request #5811 from owncloud/fixing-5808-stable5
fixing Fatal error: Call to a member function logicToPhysical() on a non-object
2013-11-11 14:29:16 -08:00
Thomas Müller
b6cd2a3758 fixes #5808 2013-11-11 19:43:57 +01:00
Thomas Müller
0a422ed489 Merge pull request #5725 from owncloud/fix_enabling_apps_on_oracle_cornercase
fix enabling apps for oracle - cornercase
2013-11-11 07:05:22 -08:00
Thomas Müller
0b295d9952 add missing argument $query 2013-11-08 16:55:01 +01:00
Jörn Friedrich Dreyer
b9a62e9b51 use empty to check for null and '' 2013-11-08 14:57:05 +01:00
Owen Winkler
ea914b6f47 Merge pull request #5723 from owncloud/stable5-strayremembermecookiesfix
Now removing stray old cookies from 5.0.12
2013-11-07 09:07:30 -08:00
Morris Jobke
349822d221 Merge pull request #5726 from owncloud/more_debug_output_stable5
add debug output related to app enablement
2013-11-06 13:39:14 -08:00
Jörn Friedrich Dreyer
5965b68cc3 fix enabling apps for oracle cornercase 2013-11-06 18:28:26 +01:00
Jörn Friedrich Dreyer
7b84b40435 add debug output related to app enablement 2013-11-06 18:14:43 +01:00
Vincent Petry
99e5c6f7eb Now removing stray old cookies from 5.0.12
Cookies from 5.0.12 seemed to have an extra slash in the path.
Firefox doesn't allow to remove them if the trailing slash isn't there,
thus making it impossible to logout correctly.

This fix adds extra code to delete such stray cookies.
2013-11-06 17:37:35 +01:00
Frank Karlitschek
d490b8f972 let's increase the version number once more 2013-11-05 20:40:25 +01:00
Frank Karlitschek
eb58be0f10 Merge pull request #5704 from owncloud/fixing-5663-stable5
we create the cookies for the url path \OC::$WEBROOT - as a result we sh...
2013-11-05 11:39:38 -08:00
Thomas Müller
13c75259b7 we create the cookies for the url path \OC::$WEBROOT - as a result we shall 'remove' them with the same path
unsetMagicInCookie() is supposed to be static
2013-11-05 15:00:28 +01:00
Frank Karlitschek
38d945f300 5.0.13 2013-11-05 03:52:16 +01:00
Jörn Friedrich Dreyer
f802fcfedc Concatenate string in SQL instead of PHP 2013-11-01 15:44:01 +01:00
Bart Visscher
979cabe0d4 When updating an appstore app, execute a database update
See #5202
2013-11-01 10:57:39 +01:00
Frank Karlitschek
0df79dd409 5.0.13 RC1 2013-11-01 03:12:21 +01:00
Thomas Müller
5b5fb3976e Merge pull request #5583 from frisco82/backportCookieChanges
Backport of  #3985 (Invalid remember me token)
2013-10-31 15:09:01 -07:00
Thomas Müller
fb7cff5be5 Merge pull request #5640 from owncloud/backport_executeaudited_stable5
Backport executeaudited stable5
2013-10-31 10:28:49 -07:00
Thomas Müller
13e0fad19d Merge pull request #5647 from owncloud/fix4390_stable5
Fix4390 stable5
2013-10-31 09:42:50 -07:00
Jörn Friedrich Dreyer
7b9b7a48a1 use closest instead of parent 2013-10-31 15:53:16 +01:00
Thomas Müller
1b1859c4ea Merge pull request #5574 from owncloud/fixing-5271-stable5
we should check if a user is logged in before we check for admin privile...
2013-10-31 04:59:50 -07:00
Thomas Müller
cba32719eb adding second argument to DatabaseException
updated some PHPDoc comments
fixing undefined variable in line 789 - actually unrelated but well ....
2013-10-31 12:44:51 +01:00
Thomas Müller
2d643a7c8d Merge pull request #5579 from owncloud/backport_5496
backport of #5496, fixes #5421 for stable5
2013-10-31 04:30:48 -07:00
Thomas Müller
817a10b465 Merge pull request #5327 from owncloud/backport-4867-stable5
[stable5] Adding detection of aborted uploads for chunked uploads
2013-10-31 04:27:04 -07:00
Jörn Friedrich Dreyer
4acca3f157 extend unit test to directories starting or ending in whitespace 2013-10-31 11:55:58 +01:00
Thomas Müller
640a1f28fe Merge pull request #5630 from owncloud/backport_home_storage_stable5
backport home storage to stable5
2013-10-31 03:32:23 -07:00
Jörn Friedrich Dreyer
7a0db0291c disable MDB2_PORTABILITY_RTRIM
fixes dnd into folders ending in whitespace on oracle
unnecessary portability option because only affects fixed length character columns. luckily we dont have that kind of columns: the text datatype is transformed into varchar by MDB2
2013-10-31 11:19:58 +01:00
Jörn Friedrich Dreyer
02d7b04b2e allow dnd into folders starting with whitespace 2013-10-31 11:15:12 +01:00
Jörn Friedrich Dreyer
266f068238 remove leftover execute() and unused variables 2013-10-31 10:27:42 +01:00
Thomas Müller
5ca03f851e call \OC_Util::checkLoggedIn() on checkSubAdminUser() as well 2013-10-30 22:55:48 +01:00
Jörn Friedrich Dreyer
93f6fca35d use executeAudited() for all cache queries
Conflicts:
	lib/files/cache/cache.php
2013-10-30 22:27:16 +01:00
Jörn Friedrich Dreyer
906a08a36e backport executeAudited() 2013-10-30 22:15:49 +01:00
Bjoern Schiessle
3b1c365c82 allow to share a file/folder as public link also if one of it parents was already shared as link 2013-10-30 17:44:56 +01:00
Frank Karlitschek
c251ccfcfb Merge pull request #5487 from owncloud/backport_search_in_shared_files_to_stable5
backport search in shared files to stable5
2013-10-30 09:42:21 -07:00
Jörn Friedrich Dreyer
800d2e9564 Merge pull request #5613 from owncloud/upload_to_shared
fix check if we upload to /Shared
2013-10-30 09:10:23 -07:00
Jörn Friedrich Dreyer
9d259306a7 backport home storage to stable5 2013-10-30 16:52:17 +01:00
Jörn Friedrich Dreyer
a75017bb48 fix placholder counting 2013-10-30 15:02:35 +01:00
Bjoern Schiessle
1a3ab036c0 remove unused variable 2013-10-30 12:43:52 +01:00
Bjoern Schiessle
058d4d1136 if the database doesn't contain any information about the recovery mode than we assume that it is disabled 2013-10-30 12:43:33 +01:00
Bjoern Schiessle
78e00df089 fix check if we upload to /Shared 2013-10-29 22:49:12 +01:00
Thomas Müller
e7fb6be72a fixes #5367
Conflicts:
	lib/connector/sabre/file.php
2013-10-29 16:40:18 +01:00
Jörn Friedrich Dreyer
149679ca68 cleanup PR
- extract method,
- introduce MAX CHUNK SIZE const with 999 (reduce this by the number of additional query parameters),
- fix whitespace
2013-10-29 15:52:13 +01:00
Björn Schießle
072b82732a Merge pull request #5513 from owncloud/fix_file_cache_updater
Fix file cache updater
2013-10-29 06:40:07 -07:00
Bjoern Schiessle
91a11e2533 make getUidAndFilename() private 2013-10-29 14:39:44 +01:00
Bjoern Schiessle
b6249ea377 disable encryption app for file cache updater test since the test doesn't use a completely initialized oc filesystem 2013-10-29 11:47:06 +01:00
Bjoern Schiessle
392ed5c881 make sure that hooks are only executed when the app is enabled 2013-10-29 11:45:40 +01:00
Bjoern Schiessle
5cf8c84a8a tests should work if I explicitely log-in as a user 2013-10-29 10:12:53 +01:00
Bjoern Schiessle
1de813f300 make sure that we operate on the owners Path because this path needs to be updated
check the storage for every iteration to make sure that we update the correct cache entry
2013-10-29 09:55:40 +01:00
Thomas Müller
00484d62e5 fixes #5367
Conflicts:
	lib/connector/sabre/file.php
2013-10-28 21:58:31 +01:00
Thomas Müller
46ef1f73d7 Merge branch 'stable5' into backport-4867-stable5 2013-10-28 21:51:25 +01:00
Ramiro Aparicio
e6625cccb9 Fix logout issue with tokens 2013-10-28 15:43:53 +01:00
Jörn Friedrich Dreyer
5403c68e78 backport of #5496, fixes #5421 for stable5 2013-10-28 14:30:49 +01:00
Bjoern Schiessle
c8bcdce38f remove debug output, add comment 2013-10-28 12:00:48 +01:00
Bjoern Schiessle
bf657289f5 Share Updater doesn't need to call the cache updaters correctFolder method, this method always expect a path relativ to the current user 2013-10-28 12:00:16 +01:00
Bjoern Schiessle
f6e04c9cf9 check storage for every iteration 2013-10-28 11:37:22 +01:00
Thomas Müller
126f0ddf3c we should check if a user is logged in before we check for admin privilege 2013-10-28 11:32:43 +01:00
Thomas Müller
b46c82069e Merge pull request #5465 from owncloud/create-custom-logfile-stable5
Stable5: Try to create custom log file before falling back to default.
2013-10-27 15:20:02 -07:00
Vincent Petry
e8bb7d9dbd Fixed group management dropdown in IE9
There is a syntax error in the "em" tag that isn't close that seem
to mess up in IE9.

- Fix was found in 0bcb0439 for multiselect.js, so backported this partially.
- Fixes #2569
2013-10-27 19:45:12 +01:00
blizzz
331cc2ccff Merge pull request #5425 from buczek/fix-ldap-login
Fix ldap login
2013-10-25 02:10:23 -07:00
Bjoern Schiessle
765ab9db66 changed the logic, this should fix the tests 2013-10-24 17:24:49 +02:00
Bjoern Schiessle
e8975239bd remove debug code 2013-10-24 16:14:34 +02:00
Bjoern Schiessle
ecdba3d0e5 resolvePath() needs to resolve the path for the owner, otherwise it doesn't work for Shared files
correctFolder() correct folder for the owner of the file. The Shared folder for the other users gets updated by the files_sharing app
2013-10-24 12:27:22 +02:00
Bjoern Schiessle
80ec5466a7 return -1 if file is empty otherwise we run into infinite loops 2013-10-24 12:26:38 +02:00
Thomas Müller
f06cf05816 Merge pull request #5457 from owncloud/fix5438
LDAP: cookies from Paged Search must only be used once, as stated in RFC...
2013-10-23 14:51:32 -07:00
Björn Schießle
20d22ece2b Merge pull request #5416 from owncloud/sharing_fix_infinite_loop
sharing: fix infinite loop
2013-10-23 07:31:56 -07:00
Björn Schießle
c6eabe58e2 Merge pull request #5145 from guruz/files_encryption_511_fix_chunk_calc
files_encryption: Fix getFileSize()
2013-10-23 07:11:45 -07:00
Jörn Friedrich Dreyer
1e5257c610 OC5 does not have executeAudited 2013-10-23 14:40:47 +02:00
Bjoern Schiessle
7dc68d40bc Merge branch 'stable5' into sharing_fix_infinite_loop 2013-10-23 14:30:14 +02:00
Jörn Friedrich Dreyer
38a78ad115 backport search in shared files to stable5 2013-10-23 12:33:23 +02:00
Andreas Fischer
51a57d97ac Merge pull request #5485 from owncloud/fixing-oci-stable5
adding backticks to satisfy Oracle

* owncloud/fixing-oci-stable5:
  adding backticks to satisfy Oracle
2013-10-23 11:55:18 +02:00
Thomas Müller
00d4ae01ee adding backticks to satisfy Oracle 2013-10-23 11:00:29 +02:00
Bjoern Schiessle
7a74f483dc fix array key 2013-10-22 11:54:12 +02:00
Bjoern Schiessle
004b4dbcb6 try to fix unencrypted file size if it doesn't look plausible 2013-10-22 11:54:00 +02:00
Andreas Fischer
f82885b124 Try to create custom log file before falling back to default. 2013-10-22 11:22:01 +02:00
Arthur Schiwon
eab57209fd LDAP: cookies from Paged Search must only be used once, as stated in RFC 2696. Also, if we go with Paged Search it, we need to use it with any read operation. Fixes #5438 and possibly #2545 2013-10-21 22:48:00 +02:00
Bjoern Schiessle
7923f93ee3 backport of https://github.com/owncloud/core/pull/5247
ensure the view's root is a subfolder of the the default root, not only starting the same
2013-10-21 17:50:10 +02:00
Markus Goetz
6ece54853d files_encryption: Fix getFileSize()
For certain file sizes, we rounded to the wrong chunk number
and the returned bogus results. This should fix
https://github.com/owncloud/mirall/issues/1009
2013-10-21 16:02:33 +02:00
Robin Appelman
fa068641a7 fix recursive delete for smb 2013-10-20 19:23:53 +02:00
Robin Appelman
aa96ac063a fix using touch to create a file for smb 2013-10-20 19:23:42 +02:00
blizzz
afcf86a537 Merge pull request #5420 from owncloud/fix5081
LDAP: Fix base-comparison with multibyte characters, fixes #5081. Thanks...
2013-10-18 14:57:48 -07:00
Björn Schießle
b6655de2c4 Merge pull request #5414 from owncloud/ocs_share_api_stable5
ocs share api stable5
2013-10-18 09:13:17 -07:00
Bjoern Schiessle
b09f0a3ca2 mail_send doesn't exists in stable5 2013-10-18 18:07:16 +02:00
Bjoern Schiessle
3d0f68bd7a run first getUsersItemShared() with the owner 2013-10-18 17:48:35 +02:00
Bjoern Schiessle
2ae9fefae4 update etags for user we haven't checked yet 2013-10-18 17:47:01 +02:00
Bjoern Schiessle
525f909e3c keep a list of users we already checked to avoid loops 2013-10-18 17:35:56 +02:00
Donald Buczek
5169b0ee8b make sure the shared ldap connection is rebound to the configured user after being used for password checking. 2013-10-18 17:13:36 +02:00
Arthur Schiwon
e150764ee6 LDAP: Fix base-comparison with multibyte characters, fixes #5081. Thanks to @sfyang 2013-10-18 14:40:25 +02:00
Bjoern Schiessle
6a01fb31aa enable files sharing tests 2013-10-18 14:27:44 +02:00
Bjoern Schiessle
edee6f1e27 Merge branch 'stable5' into ocs_share_api_stable5 2013-10-18 14:26:45 +02:00
Bjoern Schiessle
78537cb1a1 don't cache if the encryption is enabled, this can lead to problems during unit testing
backport from: 909af2b62e
2013-10-18 14:25:31 +02:00
Bjoern Schiessle
8552b30bf0 Merge branch 'stable5' into ocs_share_api_stable5 2013-10-18 14:08:40 +02:00
Morris Jobke
de33fcdfa8 Merge pull request #5415 from owncloud/fix_4884
Use display name from magic cookie, fixes #4884
2013-10-18 04:15:05 -07:00
Bjoern Schiessle
b3240af93d fix infinite loop while updating etags, fix for #4365 2013-10-18 12:51:16 +02:00
Arthur Schiwon
036441078b Use display name from magic cookie, fixes #4884 2013-10-18 12:16:47 +02:00
Bjoern Schiessle
4ffec16ea7 fix check if app is enabled
Conflicts:
	apps/files_encryption/lib/proxy.php
2013-10-18 11:50:09 +02:00
Bjoern Schiessle
12b30cd708 check if key exists before reading it 2013-10-18 11:49:14 +02:00
Bjoern Schiessle
a925c98197 check if encryption app is enabled before trying to calculate file size 2013-10-18 11:48:06 +02:00
Bjoern Schiessle
b5325dbe06 ocs share api backport to stable5 2013-10-18 11:20:33 +02:00
Vincent Petry
d7b2a09cae Disable versions app JS in public mode
Since the version JS code isn't used in public link mode, disable it to
prevent Chrome freezing bugs due to the t() call being synchronous.

Fixes #4545

Backport of 41c6c44221
2013-10-17 21:21:27 +02:00
Vincent Petry
a33decaa27 Added isPublic flag in files_sharing template
To make it possible for apps to find out whether they are running in
public mode, the flag "isPublic" will now be present in the DOM.

Backport of 6a36d7fa86 required by other
fixes.
2013-10-17 21:20:09 +02:00
Vincent Petry
79cf3a722e Fixed sharing status update for new/uploaded files
Creating new files, folders or uploading files now have their sharing
icon updated accordingly.

For this, the global share status list that is cached in
OC.Share.statuses is reused for new files.

In OC.Share, split loadIcons into loadIcons + updateIcons.

Fixes #4977

Backport of 70c9652cdf6e00f1c62fb9a61d9dd4fb3e2c93c3
2013-10-17 14:56:38 +02:00
Vincent Petry
5dda9c08c7 Fixed upload permissions distinction between public and logged in upload
Backport of 9cfb438ff7
2013-10-17 12:57:27 +02:00
Vincent Petry
5f6ac078fd Update file actions for newly created files
The commit d53b603b82 for the backport
didn't contain code for the case where new files were created.
This is because that code already existed in OC6 as part of another fix.

This fix adds the missing call to update the file actions for newly
created files.
2013-10-17 12:20:04 +02:00
Thomas Müller
9628f5245c Merge pull request #5229 from owncloud/more-link-expiration-stable5
Backport of #4856 to stable5: Fix Sharing "Expiration Date" for Shares of type Link (i.e. Token)
2013-10-16 12:30:31 -07:00
Thomas Müller
57ccd50b54 Merge pull request #5185 from owncloud/Update-feed
[stable5] Fixes for update feed fetching and parsing
2013-10-16 12:09:59 -07:00
Andreas Fischer
0f693f027b Merge pull request #5343 from owncloud/backport-5340-stable5
Backport 5340 stable5

* owncloud/backport-5340-stable5:
  streamCopy() should return proper structure.
2013-10-15 16:15:37 +02:00
Thomas Müller
703e7506dd streamCopy() should return proper structure.
Callers of streamCopy() expect an array to be returned containing count and result.

Conflicts:
	lib/helper.php
	tests/lib/helper.php
2013-10-14 23:55:53 +02:00
Thomas Müller
649041b13a minimize diff for easier review 2013-10-14 15:51:56 +02:00
Thomas Müller
1f0cca0ce0 adding detection of aborted uploads
Conflicts:
	lib/connector/sabre/directory.php
2013-10-14 15:49:26 +02:00
Thomas Müller
73570d4979 returning the number of stored bytes in store() and adding cleanup() method 2013-10-14 15:42:53 +02:00
Thomas Müller
0ac379f916 adding size() to the file cache 2013-10-14 15:42:35 +02:00
Vincent Petry
d53b603b82 File actions are now updated after create/upload file
The file actions must explicitly be updated by calling
FileActions.display() on the file element after creating or uploading a
file.

Backport of e98ea06890 for #4971 and #4993
2013-10-14 10:21:01 +02:00
Nico Kaiser
09588b6f1c Fix static function call. Sorry. 2013-10-11 21:57:09 +02:00
Nico Kaiser
1c2b2909eb Fix OC_User::getDisplayName to persist between (browser) sessions. Fixes #3694 2013-10-11 21:41:04 +02:00
Björn Schießle
f89e96e06d Merge pull request #5218 from owncloud/no_passwords
remove password before writing it to the log file
2013-10-11 06:04:14 -07:00
Bjoern Schiessle
6095a47acb let admin specify timezone for log file entries
Backport from #5173 and #5219
2013-10-11 14:57:36 +02:00
Bjoern Schiessle
621390b10b make sure that we only find file/folder shares 2013-10-11 10:51:42 +02:00
Bjoern Schiessle
b37b4ccad9 only encrypt file to users with encryption keys
Conflicts:
	apps/files_encryption/lib/stream.php
2013-10-11 10:51:24 +02:00
Thomas Müller
f8d28138b2 the path need to be normalized before putting it into resolvePath()
otherwise the returned internalPath will not match followup calls to e.g. Cache::getID()

Conflicts:
	tests/lib/files/view.php
2013-10-10 23:16:00 +02:00
Victor Dubiniuk
dd7ce02458 Improve empty data check 2013-10-10 19:56:20 +03:00
Björn Schießle
edd8d22c6f Merge pull request #5208 from owncloud/fix_5126_stable5
[stable5] fix upload to /Shared
2013-10-09 06:28:37 -07:00
Andreas Fischer
49686dc85c Perform expiration date checking before returning share data for token. 2013-10-09 13:25:43 +02:00
Andreas Fischer
6c683baccb Tests whether expired/valid link share is still accessible. 2013-10-09 13:25:38 +02:00
Andreas Fischer
de7861928f Merge pull request #5190 from owncloud/stable5-numRows-no-limit
Do not pass PDO::FETCH_NUM (integer 3) as limit parameter to OC_DB::prepare().

* owncloud/stable5-numRows-no-limit:
  Do not pass PDO::FETCH_NUM (integer 3) as limit parameter to OC_DB::prepare().
2013-10-09 03:15:58 +02:00
Andreas Fischer
05adfb1128 Merge pull request #5212 from owncloud/fixing-5201
[stable5] executeAudited->execute Closes #5201

* owncloud/fixing-5201:
  OC_DB::executeAudited is not availabe in 5.0
2013-10-08 23:16:17 +02:00
Bjoern Schiessle
9edd9373e7 remove username/passswords from URLs before writing the to the log file 2013-10-08 20:19:39 +02:00
Bjoern Schiessle
d474e6f8f2 Merge branch 'stable5' of github.com:owncloud/core into stable5 2013-10-08 17:22:20 +02:00
Bjoern Schiessle
c14480616d revert backport from here: https://github.com/owncloud/core/pull/5088
This shouldn't have been backported.
2013-10-08 17:21:12 +02:00
Victor Dubiniuk
127b81780a OC_DB::executeAudited is not availabe in 5.0 2013-10-08 18:19:09 +03:00
Björn Schießle
eba9d24650 Merge pull request #5211 from owncloud/sharing_search_users_fix-stable5
find users which are in the same group
2013-10-08 08:09:40 -07:00
Bjoern Schiessle
e3565d5266 find users which are in the same group 2013-10-08 17:04:12 +02:00
Björn Schießle
3d5f8de758 Merge pull request #5206 from owncloud/cleanup_share_table
share table clean-up: make sure that we only remove files/folders
2013-10-08 06:58:12 -07:00
Bjoern Schiessle
f700afcb4b Backport of https://github.com/owncloud/core/pull/5193/
write the part file to the users root folder if the updated file is located in /Shared because we can't create new files in Shared/
2013-10-08 15:46:54 +02:00
Morris Jobke
2264360272 fix escaping 2013-10-08 15:45:52 +02:00
Bjoern Schiessle
2868b27760 make sure that we only remove file/folder shares 2013-10-08 15:16:33 +02:00
Thomas Müller
148d882ee0 Merge pull request #5112 from owncloud/backport-4969-stable5
[backport-stable5] adding privilege check on move and rename operations
2013-10-08 04:39:13 -07:00
Andreas Fischer
36d77a07d5 Do not pass PDO::FETCH_NUM (integer 3) as limit parameter to OC_DB::prepare(). 2013-10-08 01:33:22 +02:00
Victor Dubiniuk
d1f6bb466e Do not write current time before checking if cache is expired 2013-10-07 19:44:19 +03:00
Bjoern Schiessle
8ecf88d9f9 Merge branch 'stable5' of github.com:owncloud/core into stable5 2013-10-07 16:21:33 +02:00
Bjoern Schiessle
a00e4b2d3d trash bin button needs to be an input field 2013-10-07 16:21:02 +02:00
Morris Jobke
b0776e1ee7 Merge pull request #5164 from owncloud/share-autofocus
Share autofocus
2013-10-07 06:23:03 -07:00
Morris Jobke
8c63f91ba1 Fix autofocus
fix #4465
fix #4941
backport of 4803 to stable5
2013-10-07 11:34:46 +02:00
Bjoern Schiessle
6f617bdec7 catch exception if db query execution fails 2013-10-07 11:09:18 +02:00
Bjoern Schiessle
2a0be238bc clean up oc_share table from files which are no longer exists 2013-10-07 11:09:00 +02:00
Bjoern Schiessle
d0f876102d add comments 2013-10-07 11:08:51 +02:00
Bjoern Schiessle
3c29b1a01c remove deleted shares from the database table oc_share 2013-10-07 11:08:39 +02:00
Bart Visscher
632a2e166f Merge pull request #5110 from owncloud/pg_install_db
postgresql connect with specify db if 'postgres' does not work
2013-10-04 04:31:40 -07:00
Thomas Müller
293e70a6d4 adding privilege check on move and rename operations
Conflicts:
	lib/connector/sabre/objecttree.php
2013-10-04 10:31:31 +02:00
Thomas Müller
1bc7ae869a Merge pull request #5096 from owncloud/backport-4960-stable5
Backport of #4960 to stable5
2013-10-04 01:09:00 -07:00
Morris Jobke
33e1ed6074 Try connection with specified db when postgres does not work 2013-10-04 07:54:22 +02:00
Frank Karlitschek
4b317c02c7 5.0.12 2013-10-03 14:26:01 +02:00
Thomas Müller
1f1171dfaf duplicate code :sigh: - will fix this in a second pr 2013-10-02 22:13:59 +02:00
Thomas Müller
245a0260a9 adding file_exists check just to be on the save side 2013-10-02 22:13:59 +02:00
Thomas Müller
ba7432126b handle error situation of rename proper 2013-10-02 22:13:58 +02:00
Bjoern Schiessle
d0046b6e29 set rememberlogin to false for the encryption app 2013-09-30 21:48:50 +02:00
Bjoern Schiessle
490023ba4e check every enabled app if the remember login feature needs to be disabled 2013-09-30 21:48:39 +02:00
Bjoern Schiessle
61752fa8d1 introduce OC_Util::rememberLoginAllowed()
Conflicts:
	core/templates/login.php
	lib/util.php
2013-09-30 21:47:55 +02:00
Bjoern Schiessle
f95da8ba59 don't remember login if the encrypion app is enabled because the user
needs to log-in again in order to decrypt his private key with his password

Conflicts:
	core/templates/login.php
	lib/util.php
2013-09-30 21:45:22 +02:00
Andreas Fischer
e01efd3887 Cherry-pick of 5d671a8 onto stable5.
recreate an etag within the scanner if the cache contains an empty etag

Conflicts:
	lib/files/cache/cache.php
	tests/lib/files/cache/scanner.php
2013-09-29 23:24:33 +02:00
Frank Karlitschek
e71c7ee635 5.0.12 RC1 2013-09-27 16:47:10 +02:00
VicDeo
eca060bf0e Merge pull request #4948 from owncloud/fix-inputfields
fix visual glitch, do not use black border for input fields
2013-09-26 06:39:05 -07:00
Bjoern Schiessle
d6fd22802d we can leave the loop if the permission of the link share was checked 2013-09-26 12:21:54 +02:00
Bjoern Schiessle
342be99149 check only permission from link-share to decide if public upload is enabled or disabled 2013-09-26 12:21:43 +02:00
Andreas Fischer
174f5000d6 Merge pull request #4954 from owncloud/fix-link-expiration-stable5
Backport of sharing fixes to stable5

* owncloud/fix-link-expiration-stable5:
  Calculate dateInPast and dateInFuture.
  Compare objects directly. Also use $expected and $actual.
  Add database tests for INSERT/SELECT date format.
  Add comment explaining how $dateInFuture was picked.
  Coding style: { for methods start are supposed to be on the same line.
  Expiration tests for sharing with groups.
  Do not repeat shareUserOneTestFileWithUserTwo() code.
  Make dates test class properties.
  Try to make Oracle happy by also specifying seconds.
  Test whether a still-valid user share is still accessible.
  Test whether an expired user share is still accessible.
2013-09-24 23:36:34 +02:00
Andreas Fischer
cbaf93ff92 Calculate dateInPast and dateInFuture. 2013-09-24 00:00:30 +02:00
Andreas Fischer
f63c9a24eb Compare objects directly. Also use $expected and $actual. 2013-09-24 00:00:24 +02:00
Andreas Fischer
a8d7f1feae Add database tests for INSERT/SELECT date format. 2013-09-23 23:59:59 +02:00
Andreas Fischer
40c6927b59 Add comment explaining how $dateInFuture was picked. 2013-09-23 23:59:47 +02:00
Andreas Fischer
1751340164 Coding style: { for methods start are supposed to be on the same line. 2013-09-23 23:59:35 +02:00
Andreas Fischer
a551bfc9ff Expiration tests for sharing with groups. 2013-09-23 23:59:25 +02:00
Andreas Fischer
9f8d3595b5 Do not repeat shareUserOneTestFileWithUserTwo() code. 2013-09-23 23:59:16 +02:00
Andreas Fischer
aa6aef485e Make dates test class properties. 2013-09-23 23:59:09 +02:00
Andreas Fischer
e8ac55a884 Try to make Oracle happy by also specifying seconds. 2013-09-23 23:59:06 +02:00
Andreas Fischer
d3498153c3 Test whether a still-valid user share is still accessible. 2013-09-23 23:58:54 +02:00
Andreas Fischer
d6c3b9488e Test whether an expired user share is still accessible. 2013-09-23 23:58:28 +02:00
Robin Appelman
46cdb7b406 remove deleted files while scanning 2013-09-23 19:57:48 +02:00
Bjoern Schiessle
9c9597e582 initialize variable 2013-09-23 10:25:15 +02:00
Bjoern Schiessle
a6466b1c7c calculate correct permissions while toggle the password protection 2013-09-23 10:25:07 +02:00
Bjoern Schiessle
10944464c1 make sure that both $permissions and $oldPermissions have the same type 2013-09-23 10:24:58 +02:00
Bjoern Schiessle
3451bb4ebf only remember password if the user changes the permissions, otherwise the user disabled the password protection
Conflicts:
	lib/public/share.php
2013-09-23 10:24:46 +02:00
Jan-Christoph Borchardt
a321be15df fix visual glitch, do not use black border for input fields 2013-09-23 00:41:43 +02:00
Morris Jobke
b7c8691d80 Merge pull request #4924 from owncloud/fixing-4416-stable5
Fixing 4416 stable5
2013-09-22 08:40:03 -07:00
Georg Ehrke
30c56d2572 public.php - check if maintenance mode is enabled 2013-09-20 21:20:06 +02:00
Thomas Müller
12bef4124b setting a default on filecache column unencrypted_size 2013-09-20 16:31:46 +02:00
Thomas Müller
d525369cd3 adding comma to get cleaner diffs in the future 2013-09-19 17:34:35 +02:00
Thomas Müller
6dd8a1d2c6 no file actions during upload 2013-09-19 17:34:16 +02:00
Thomas Müller
2fde0d0944 remove file action elements before recreating them 2013-09-19 17:33:52 +02:00
Thomas Müller
23bfe083a1 store the permissions retrieved via ajax within the dom element 2013-09-19 17:33:31 +02:00
Thomas Müller
d5cbfa4f44 add permissions of the file to the json response 2013-09-19 17:32:57 +02:00
Bjoern Schiessle
9ff9082c13 performance improvement, check configuration only if no private key exists
backport from 72eaf2894a
2013-09-18 10:40:52 +02:00
Bjoern Schiessle
479ad26a98 check if stream wrapper is already registered to avoid warning 2013-09-18 10:37:50 +02:00
Thomas Müller
1a26b20538 Merge pull request #4827 from owncloud/backport-4719-stable5
some is_resource tests have been missing in #4701
2013-09-13 12:08:32 -07:00
Frank Karlitschek
9490e792e6 Merge pull request #4821 from owncloud/fix_user_management
Fix user management
2013-09-13 03:07:42 -07:00
Thomas Müller
86eab2ee6c some is_resource tests have been missing in #4701 2013-09-13 01:00:43 +02:00
ringmaster
0a90454729 Allow numeric group names 2013-09-12 10:50:26 -04:00
ringmaster
4fd16c5411 Ensure creation of a JSON array, not an object. 2013-09-12 10:49:36 -04:00
Jörn Friedrich Dreyer
38258fe246 Improve IE Compatibility
Added meta tags from HTML5 Boiler Plate to improve compatibility with IE7+. This fixes the issues with rendering.
2013-09-11 11:50:36 +02:00
Thomas Müller
51b53abf9f never hack late night
Conflicts:
	apps/files_external/lib/irods.php
2013-09-11 09:54:45 +02:00
Robin Appelman
1a8636eb9c test case for hooks send from a non-default view 2013-09-10 18:08:59 +02:00
Robin Appelman
507a0450db also emit hooks for views that are a subfolder of the user folder 2013-09-10 18:05:14 +02:00
Thomas Müller
750e4c4f8f Merge branch 'stable5' of github.com:owncloud/core into stable5 2013-09-10 13:55:06 +02:00
Thomas Müller
b127ad449d removing all ?> jutt in case 2013-09-10 13:54:43 +02:00
Thomas Müller
36cd58c4f5 removing ?> followed by whitespaces 2013-09-10 13:54:43 +02:00
Thomas Müller
eecc31aa61 Workaround for IE 9 & 10 for clicking filelist after adding new item
manual backport of f4ec5182bd
2013-09-10 10:55:02 +02:00
Frank Karlitschek
33ba6b0b34 5.0.11 2013-09-06 20:31:11 +02:00
Björn Schießle
0907b4119a Merge pull request #4551 from owncloud/fix_4533
Handle part files correctly
2013-09-06 06:57:45 -07:00
Bjoern Schiessle
1d2f444128 remove some more debug output 2013-09-06 10:58:42 +02:00
Bjoern Schiessle
13f3fb94e8 Merge branch 'stable5' into fix_4533 2013-09-06 10:51:27 +02:00
Bjoern Schiessle
d33678b0cb remove some error_logs 2013-09-05 11:50:36 +02:00
Bjoern Schiessle
9083833b37 remove error logs 2013-09-05 11:45:36 +02:00
Bjoern Schiessle
ce382aec63 coding style fixes 2013-09-05 10:11:09 +02:00
Bjoern Schiessle
7e0f855caf if the files doesn't exist yet we start with the parent to search for shares 2013-09-05 10:08:13 +02:00
Bjoern Schiessle
0e97712ad3 fix part file handling and real size calculation, this should also solve #4581 2013-09-04 21:15:06 +02:00
Frank Karlitschek
2d1d8465e8 5.0.11 RC2 2013-09-01 16:59:38 +02:00
blizzz
6cb839b6e9 Merge pull request #4701 from owncloud/fix_4667
Always check variable type before using readdir to avoid surprises, fixes #4667 #4658 and #4613
2013-09-04 03:28:12 -07:00
Arthur Schiwon
73e4b55ff3 one check is enough 2013-09-04 11:19:58 +02:00
Bart Visscher
44b71248b6 Merge pull request #4700 from owncloud/stable5_ocp_files_searchbymime
Stable5 ocp files searchbymime
2013-09-03 08:56:50 -07:00
Jörn Friedrich Dreyer
6678d69dc8 Merge pull request #4699 from owncloud/stable5_autoloader_try_lib_folder
Stable5 autoloader try lib folder
2013-09-03 04:04:35 -07:00
blizzz
c0f1a6be4a Merge pull request #4693 from owncloud/encryption_improved_error_messages_stable5
Encryption improved error messages for Stable5
2013-09-02 14:31:37 -07:00
Arthur Schiwon
4e54e8b36d fix unknown var in if clause 2013-09-02 22:13:11 +02:00
Arthur Schiwon
cd6443a19f Check variable type before using readdir to avoid surprises and fix #4667 #4658 and #4613 2013-09-02 18:58:25 +02:00
Jörn Friedrich Dreyer
692c8abfd7 add searchByMime to public api 2013-09-02 18:09:00 +02:00
Jörn Friedrich Dreyer
f9eea901fe backport autoloader magic trying to find class in lib folder 2013-09-02 18:05:10 +02:00
Bjoern Schiessle
2c937e06d7 improved error message to reflect the case when the app was re-eanbled during the session 2013-09-02 13:00:41 +02:00
Bjoern Schiessle
7665297472 Merge branch 'stable5' into fix_4533 2013-08-30 14:27:40 +02:00
blizzz
e1d6e63083 Merge pull request #4654 from owncloud/fix_4616
Fix 4616
2013-08-30 02:43:44 -07:00
Raghu Nayyar
23a3e4f2cb Merge pull request #4633 from owncloud/backport-4610-stable5
Backport 4610 to stable5
2013-08-30 00:59:59 -07:00
Arthur Schiwon
76453f9cf0 Use the real username in preferences and magic cookie instead of case-insensitive user input. Fixes 4616. 2013-08-30 00:33:48 +02:00
Arthur Schiwon
6415a547a1 whitespaces 2013-08-30 00:31:10 +02:00
Thomas Müller
30173ec329 Merge pull request #4539 from owncloud/fix_4201
Fix 4201, Group Search in Share Dialog only half-working
2013-08-29 08:52:20 -07:00
Owen Winkler
f53ffe98cf Merge pull request #4634 from owncloud/backport-4360-stable5
Backport 4360 stable5
2013-08-29 04:47:17 -07:00
Thomas Müller
90e5d5f84e Merge pull request #4635 from owncloud/fixing-quota-stable5
Fixing quota stable5
2013-08-29 03:33:39 -07:00
Thomas Müller
0423090771 backport of #4360 2013-08-29 10:51:46 +02:00
Thomas Müller
1445a12e9e webdav quota information contains the values for used and free - not total 2013-08-29 10:49:50 +02:00
Jan-Christoph Borchardt
90ae95c73a fix shadow style of username input box
Conflicts:
	core/css/styles.css
2013-08-29 09:40:57 +02:00
Jan-Christoph Borchardt
0956363410 remove show password toggle from log in page, ref #4577 #4580
Conflicts:
	core/js/js.js
2013-08-29 09:39:23 +02:00
Robin Appelman
da504295fe better variable naming 2013-08-28 22:56:29 +02:00
Robin Appelman
fa7189c40d Cache: don't check if the parent exists in the cache if we are already sure it does 2013-08-28 22:56:29 +02:00
Frank Karlitschek
ee1d996c65 5.0.11 RC1 2013-08-28 14:13:00 +02:00
Thomas Müller
616bc08431 Merge pull request #4357 from owncloud/fixing-4341-stable5
Enable file upload to shared folder with create permission only
2013-08-27 14:29:52 -07:00
blizzz
4d0823eefc Merge pull request #4595 from owncloud/ldap_robust_replace
LDAP: case insensitive replace for more robustness
2013-08-27 13:22:59 -07:00
Thomas Müller
b8010ce35d lacy initialization of fileView - in case basic auth is used FileSystem is not yet initialized during the initialize() call
Conflicts:
	lib/connector/sabre/quotaplugin.php
2013-08-27 21:35:21 +02:00
Thomas Müller
31d60bced3 adding unit tests for quota checks 2013-08-27 21:32:00 +02:00
Thomas Müller
19bab68d89 adding unit tests to determine length 2013-08-27 21:31:59 +02:00
Thomas Müller
7d6069f972 fixes #4343 2013-08-27 21:31:59 +02:00
Bjoern Schiessle
b658cc6c07 check shares for the real file and not for the .part file 2013-08-27 16:29:54 +02:00
Bjoern Schiessle
81827e7570 first check if a extension exists before comparing it 2013-08-27 14:19:30 +02:00
Arthur Schiwon
636ee554b6 LDAP: case insensitive replace for more robustness 2013-08-27 13:47:31 +02:00
Thomas Müller
b2d676dda5 storage information is path specific 2013-08-27 10:54:13 +02:00
Thomas Müller
17dfdcc645 webdav quota now displays the same values as the web interface does
Conflicts:
	lib/helper.php
2013-08-27 10:53:47 +02:00
Owen Winkler
e6f01380f7 Merge pull request #4364 from ringmaster/fix_4351
Store and retrieve group data as JSON
2013-08-26 09:22:59 -07:00
Owen Winkler
43ac018f88 Break long lines into smaller ones. 2013-08-23 14:45:53 -04:00
Owen Winkler
630c3cb682 Use JSON to send/receive group data.
Squashed commits from PR #4364 for master.

Conflicts:
	settings/js/users.js
2013-08-23 14:45:07 -04:00
Bjoern Schiessle
dd213f4627 handle part files correctly 2013-08-22 17:55:10 +02:00
Thomas Müller
f52d722ff2 Merge pull request #4541 from owncloud/backport-4512-stable5
Backport 4512 stable5
2013-08-21 15:15:51 -07:00
blizzz
c8554cc514 Merge pull request #4487 from owncloud/ldap_fix_hook
Ldap fix hook
2013-08-21 14:57:11 -07:00
Thomas Müller
da299e0a7a additional readdir check in mappedlocal 2013-08-21 22:41:34 +02:00
Robin Appelman
f42b69d72f use strict equals in readdir loops to prevent issues with '0' files
Conflicts:
	apps/files_external/lib/amazons3.php
	apps/files_trashbin/index.php
	lib/connector/sabre/objecttree.php
2013-08-21 22:37:22 +02:00
Arthur Schiwon
02e9483c86 Whitespaces 2013-08-21 13:15:58 +02:00
Arthur Schiwon
bf933c77a1 Use Group methods for searching, fixes #4201 2013-08-21 13:15:31 +02:00
Bjoern Schiessle
8e67854fc9 selective backport from https://github.com/owncloud/core/pull/4239; don't change etags during initial encryption because the file content doesn't change 2013-08-18 19:05:43 +02:00
Morris Jobke
76e4fe79d2 Merge pull request #4490 from owncloud/fix-multiselect-mac-firefox
fix hidden groups in Firefox on Mac - fix 2571
2013-08-18 03:21:16 -07:00
Arthur Schiwon
2613eb6b5d Sharing: only determine path root if owner is available 2013-08-17 18:45:36 +02:00
Morris Jobke
26e0aadf9c fix hidden groups in Firefox on Mac - fix 2571 2013-08-17 18:23:37 +02:00
Arthur Schiwon
108bb4101f LDAP: fix wrong hook name 2013-08-17 17:55:46 +02:00
Bjoern Schiessle
34afce769c switched to dirname() 2013-08-17 17:36:20 +02:00
Bjoern Schiessle
b8550d77d1 added missing parameter documentation 2013-08-17 17:36:09 +02:00
Bjoern Schiessle
a1f0dd2c69 added createMissingDirectories() method 2013-08-17 17:35:59 +02:00
Bjoern Schiessle
75ceeed38b also create root dir if it doesn't exist yet 2013-08-17 17:35:48 +02:00
Bjoern Schiessle
02f40f2150 use OC files API to create missing directory which should handle special chars in every environment correctly 2013-08-17 17:35:39 +02:00
Bjoern Schiessle
79b6f39e3d first check if file exists before checking the files size 2013-08-17 13:37:51 +02:00
Bart Visscher
01e2e914bd Merge pull request #4423 from owncloud/ldap_reduce_connections
Ldap reduce connections
2013-08-17 03:03:51 -07:00
Kondou
656daff629 Merge pull request #4454 from owncloud/fix_4446
Show a "password incorrect" notice when used shared password is wrong
2013-08-17 02:29:39 -07:00
Thomas Müller
1c24936ae2 no files external for SMB on windows 2013-08-16 17:34:40 +02:00
kondou
2a7c9ee9d2 Use better wording. 2013-08-16 10:56:43 -04:00
kondou
2db617bf17 Add a "Wrong password." message, if the password
for the public share was wrong.

Fix #2725
2013-08-16 10:56:32 -04:00
Owen Winkler
333900d5aa Style the new 'password wrong' div conservatively. 2013-08-16 10:53:52 -04:00
Thomas Tanghus
7d06d67661 Merge pull request #4458 from owncloud/dav_principal_groupmemberset
Dav principal groupmemberset
2013-08-16 07:41:36 -07:00
Thomas Tanghus
3c4e64710a Don't barf on OC_Connector_Sabre_Principal::getGroupMemberSet
Refs: owncloud/contacts#166 and owncloud/calendar#102
2013-08-16 01:46:31 +02:00
Jörn Friedrich Dreyer
5e7963dfb1 fix #2711 using a custom event, also use css selectors over filterAttr 2013-08-15 23:10:39 +02:00
Bjoern Schiessle
7d8ab0a6c1 use __DIR__ instead of realpath 2013-08-15 12:37:26 +02:00
Bjoern Schiessle
2fbcbe9b83 provide correct path for require_once 2013-08-15 12:37:17 +02:00
Thomas Müller
660a109221 Merge pull request #4306 from owncloud/stable5-googledrive
[Stable5] backport  Google Drive SDK
2013-08-14 11:37:16 -07:00
Arthur Schiwon
6251b3491c LDAP: only connect to LDAP once on login 2013-08-14 16:03:18 +02:00
Robin Appelman
c6e62f5e4c fix namespacess for scanner test 2013-08-12 19:53:57 +02:00
Robin Appelman
6325cf6ecb Scanner: correctly pass trough reuse options when doing a recursive scan 2013-08-12 17:30:23 +02:00
Robin Appelman
20f9f43de7 Scanner: additional tests for reusing etags during scanning 2013-08-12 17:30:14 +02:00
Thomas Müller
168881df44 use dir to determine the proper permissions 2013-08-10 00:33:24 +02:00
Thomas Müller
3569bbe637 Merge pull request #4361 from ringmaster/fix_4355
Send mime-type for new files
2013-08-08 10:20:22 -07:00
Bjoern Schiessle
a6b8c5231c don't create empty versions 2013-08-08 17:25:50 +02:00
Bjoern Schiessle
d446eecd5e oc_cache needs to disable file proxys for read/write operation. Otherwise the operation will go through the encryption app which will not work. 2013-08-08 17:20:24 +02:00
ringmaster
d63cd30797 Provide a default mime-type for files created by filename.
Fixes #4355.
2013-08-08 11:06:06 -04:00
Morris Jobke
db964d32cf Merge pull request #4358 from owncloud/rm_debug_msg
Less noisy debug log
2013-08-08 07:35:31 -07:00
Arthur Schiwon
0049f6f91f Remove noisy Log/Debug message 2013-08-08 16:30:29 +02:00
Thomas Müller
57a1b9038e Merge pull request #4346 from owncloud/basic_hack_auth_backport
Basic hack auth backport
2013-08-08 07:28:50 -07:00
Thomas Müller
96e0b81fcb in case the file is new isCreatable() is checked
in case the file exists isUpdatable() is checked
2013-08-08 16:11:28 +02:00
Thomas Müller
d9d0a6e7d6 proper response in case the upload fails - e.g. in case permissions on shared folders are not enough 2013-08-08 15:58:57 +02:00
Andreas Fischer
604ba1d0f7 Check expected type after JSON decode instead of checking what is not expected.
This will also allow "true" and "false" as filenames instead of only "null".
2013-08-08 13:13:55 +02:00
Björn Schießle
cc03251c8f Merge pull request #4268 from owncloud/encryption_check_config
Encryption app, check config
2013-08-07 23:35:53 -07:00
Thomas Tanghus
201557cf13 Backport #3487 Basic Auth fix 2013-08-07 21:19:03 +02:00
Thomas Müller
248e7a0692 fixing PHPDoc 2013-08-07 15:21:57 +02:00
Andreas Fischer
49ecd7764b app migrate: Use = instead of LIKE as described in the comment above.
The LIKE operator is not defined on integers (probably any non-text) columns
on PostgreSQL.
2013-08-07 15:08:23 +02:00
Andreas Fischer
29d0b2cd41 Port log level filtering from OC_Log_Owncloud to OC_Log_Syslog. 2013-08-07 15:08:11 +02:00
Frank Karlitschek
38d2124340 5.0.10 2013-08-05 00:12:02 +02:00
Frank Karlitschek
fb35010c15 5.0.10 RC1 2013-08-04 22:44:06 +02:00
blizzz
3b59d5737a Merge pull request #4179 from owncloud/ldap_oracle_fixes
(not only) LDAP Oracle compatiblity
2013-08-06 02:41:05 -07:00
Thomas Müller
797c2a9c76 adding executable script occ (ownCloud console) 2013-08-05 23:31:56 +02:00
Thomas Müller
6c8a0b2c8d Merge pull request #4317 from owncloud/backport-cli-scanner-stable5
Backport cli scanner to stable5
2013-08-05 14:30:36 -07:00
Thomas Müller
d8b14ed47a use isset to prevent undefined index 2013-08-05 16:48:03 +02:00
Thomas Müller
f8ce76c423 load authentication apps to get users from other backends like LDAP - THX @blizzz 2013-08-05 12:37:26 +02:00
Bart Visscher
2188a756e8 Remember the contructed OC\Files\Cache\* classes in OC\Files\Storage\Common 2013-08-05 12:14:19 +02:00
Thomas Müller
7b3de12a74 manual backporting of #4285 2013-08-05 12:14:15 +02:00
Thomas Müller
03f242a3b0 manual backporting of OC\Files\Utils\Scanner to stable5 2013-08-05 12:13:34 +02:00
Robin Appelman
58ee51fc42 Make Cache\Scanner an emitter 2013-08-05 12:01:13 +02:00
Thomas Müller
f4e94a46cb Merge branch 'stable5' of github.com:owncloud/core into stable5 2013-08-05 00:25:22 +02:00
Thomas Müller
99a0581140 fixing PHPDoc 2013-08-05 00:24:45 +02:00
Thomas Müller
3ad4531a4f add 'logdateformat' to config.sample.php 2013-08-05 00:24:45 +02:00
Bernhard Posselt
34fd7e3df4 make log date configurable, default to iso 8601 2013-08-05 00:24:45 +02:00
Thomas Müller
3b5d5a2b32 Merge pull request #4290 from owncloud/oracle_current_timestamp
Oracle current timestamp
2013-08-04 14:52:02 -07:00
Thomas Müller
c262430639 Merge pull request #4240 from owncloud/backport-remember-checked
Backport remember checked
2013-08-04 14:50:29 -07:00
Morris Jobke
4e2200a1e1 Merge pull request #4164 from owncloud/fix_102
flicker-free versions drop-down
2013-08-04 10:33:17 -07:00
Michael Gapczynski
88e8eeb6c0 Remove root option from Google Drive storage, because it is only used for testing and we have our own empty Google account for testing 2013-08-03 15:40:52 +03:00
Michael Gapczynski
e8037e41b8 Fix 'most' Google Drive tests 2013-08-03 15:40:38 +03:00
Michael Gapczynski
5c22a635b7 substr storage id to prevent problems with storing the change id in appconfig 2013-08-03 15:40:22 +03:00
Michael Gapczynski
a1c44d6fea Implement hasUpdated() to watch for changes on Google Drive side 2013-08-03 15:40:03 +03:00
Michael Gapczynski
1c3fc3ac76 Return null if file size is negative for WebDAV, fix #2013 2013-08-03 15:39:40 +03:00
Michael Gapczynski
37800413f6 Fix require_once for 3rdparty in google ajax frontend 2013-08-03 15:39:22 +03:00
Michael Gapczynski
3398e193db Include 3rdparty Google Drive SDK 0.6.2 2013-08-03 15:38:48 +03:00
Michael Gapczynski
bbf440d969 Fix constant in last commit 2013-08-03 15:38:35 +03:00
Michael Gapczynski
e4289cf629 Prepare for #2013 fix 2013-08-03 15:38:18 +03:00
Michael Gapczynski
491acebc80 Setting Redirect URI is not required here 2013-08-03 15:37:58 +03:00
Michael Gapczynski
cac44b2eac Switch to using Google Drive SDK, closes #2047 2013-08-03 15:37:34 +03:00
Thomas Müller
d0ab685744 fix whitespacing 2013-08-02 16:33:30 +02:00
Lennart Rosam
c9b7820e31 Make default language configurable via config.php
Conflicts:
	config/config.sample.php
2013-08-02 16:30:11 +02:00
Michael Gapczynski
9fc995498f Use old database methods for caclulateFolderSize 2013-08-02 10:02:47 -04:00
Michael Gapczynski
8c2575aae2 Use query to calculate folder size 2013-08-02 09:58:38 -04:00
Michael Gapczynski
502a479eb6 Fix calculating size for empty folders
Conflicts:
	lib/files/cache/cache.php
2013-08-02 09:58:10 -04:00
Jörn Friedrich Dreyer
bff951375a use fixed OC.Breadcrumb.push()
Conflicts:
	core/js/js.js
2013-08-02 14:45:41 +02:00
Jörn Friedrich Dreyer
1c91daa8ab convert 0000-00-00 00:00:00 to CURRENT_TIMESTAMP when setting up db on oracle 2013-08-02 13:06:35 +02:00
Jörn Friedrich Dreyer
8fb52b2de4 Merge pull request #4260 from owncloud/stable5_search_result_scrollbar
Stable5 search result scrollbar
2013-08-02 02:55:43 -07:00
Bjoern Schiessle
ecc6c8d491 attach click handler after drop-down was created 2013-08-02 10:09:27 +02:00
Thomas Müller
78ea86c583 Merge pull request #4276 from owncloud/Respect-table-prefixes
[stable5] Skip non-oc tables on upgrade
2013-08-02 00:28:08 -07:00
Robin Appelman
b27180a613 Add a CLI script for manually triggering checking a folder for updates 2013-08-01 23:51:56 +02:00
Bernhard Posselt
6e2b9896de also adjust template properly for log date fix 2013-08-01 18:09:28 +02:00
Bernhard Posselt
45f5c9ceb2 fix admin log display and use a more readable format 2013-08-01 18:09:18 +02:00
Bernhard Posselt
8930725a87 use date and time instead of timestamp 2013-08-01 18:09:04 +02:00
Bjoern Schiessle
399c1f9a2c fix test and make warning translatable 2013-08-01 16:47:19 +02:00
Bjoern Schiessle
e75dcf51c7 cancel sharing if some users doesn't have a working encryption set-up.
Conflicts:
	lib/public/share.php
2013-08-01 16:46:55 +02:00
Arthur Schiwon
4369dfe43f fix logical mistake in version comparison 2013-08-01 16:45:14 +02:00
Bjoern Schiessle
af219650ac more error messages which might be useful for the user to debug his server config 2013-08-01 15:52:00 +02:00
Victor Dubiniuk
86335c6188 Use prefixes while reading old Db structure 2013-08-01 16:42:37 +03:00
Bjoern Schiessle
e91062b179 improved error message to refect openSSL PHP extension and stock openSSL configuration issues 2013-08-01 13:57:12 +02:00
Bjoern Schiessle
8ca8a587bc also write error message to the log 2013-08-01 13:51:33 +02:00
Bjoern Schiessle
c62f1ab0ac catch broken server config and disable encryption app. 2013-08-01 11:50:56 +02:00
Jörn Friedrich Dreyer
17f821219a update css properties with px based values 2013-07-31 17:05:24 +02:00
Jörn Friedrich Dreyer
05207d3714 add overflow-y scroll and clean up indents 2013-07-31 16:52:53 +02:00
Thomas Müller
3b30bb23d7 fixes #4026 2013-07-30 17:34:15 +02:00
Thomas Müller
c34f4c8298 Merge branch 'stable5' into backport-remember-checked 2013-07-30 17:20:15 +02:00
Thomas Müller
cbb23154e8 Merge branch 'stable5' into ldap_oracle_fixes 2013-07-30 15:06:00 +02:00
Robin Appelman
fea2a4a200 Scanner test: ensure mtime in the cache is the same as on the storage to prevent random failures 2013-07-30 14:34:56 +02:00
Robin Appelman
381fe4d7ef Scanner test: ensure mtime in the cache is the same as on the storage to prevent random failures 2013-07-30 14:33:56 +02:00
Jan-Christoph Borchardt
fdffb3462e replace external storage status images with CSS, also use form to distinguish, fix #3910 2013-07-30 13:52:05 +02:00
Jan-Christoph Borchardt
8e0fcd4454 check remember log in by default, manual backport of #4175 2013-07-30 13:43:46 +02:00
Kondou
cb3c3770d8 Merge pull request #4222 from owncloud/backport-3459-stable5
Backport 3459 stable5
2013-07-29 06:59:44 -07:00
Thomas Müller
c76be96314 manual backport of changes related to #3459 2013-07-29 10:00:17 +02:00
Michael Gapczynski
73ab147f25 Move check so the variable will never be undefined 2013-07-28 19:33:58 -04:00
Robin Appelman
9159662fa9 use output buffering when including the irods libraries 2013-07-24 21:16:05 +02:00
Victor Dubiniuk
7deebc926b Show generic error when there is no error 2013-07-24 21:48:23 +03:00
Victor Dubiniuk
d09e887945 Create an array entry before filling it 2013-07-24 21:48:03 +03:00
Arthur Schiwon
495f0d4b3c LDAP / Oracle compatibility: sql for emptying tables 2013-07-24 15:08:12 +02:00
Arthur Schiwon
429f07d142 LDAP / Oracle compatibility, make SQL syntax valid 2013-07-24 14:55:25 +02:00
Thomas Müller
fefc476462 Merge pull request #4166 from owncloud/ext-fs-irods-stable5
Ext fs irods stable5
2013-07-24 04:48:08 -07:00
Morris Jobke
8c48881c4e mark test as incomplete because I can't reproduce jenkins failure 2013-07-24 09:14:51 +02:00
Arthur Schiwon
99113a78f0 Fix Updater if used with MDB2 2013-07-23 20:09:55 +02:00
Arthur Schiwon
c239ca0d25 Oracle compat: enable appconfig.configvalue to store empty strings (now working) 2013-07-23 19:57:04 +02:00
Arthur Schiwon
4d46567dc0 Revert "Oracle compat: enable appconfig.configvalue to store empty strings"
This reverts commit 6c1e68acd8.
2013-07-23 19:55:47 +02:00
Arthur Schiwon
6c1e68acd8 Oracle compat: enable appconfig.configvalue to store empty strings 2013-07-23 13:23:59 +02:00
Thomas Mueller
2ae4675c49 update to latest master 2013-07-23 12:36:58 +02:00
Thomas Mueller
efd3308711 Read configuratons for external filesystem test from a private place.
This will help not to accidentially push private data and enable testing on our ci server.
2013-07-23 12:27:13 +02:00
Thomas Müller
f3c58fa794 fixing / adding comments 2013-07-23 12:24:42 +02:00
Thomas Müller
dd29c71644 update copy right 2013-07-23 12:24:26 +02:00
Thomas Müller
bc10e8a63e update .gitignore 2013-07-23 12:24:09 +02:00
Thomas Müller
67e23bced6 incorporate development branch of ssh://irodsguest@code.renci.org/gitroot/irodsphp
Conflicts:
	.gitignore
2013-07-23 12:23:35 +02:00
Thomas Mueller
ca1bfbeb2a - implement touch() to at least create a file which doesn't exist
- implement a work around for folder mtimes - irods doesn't provide updated mtimes
2013-07-23 12:19:50 +02:00
Thomas Mueller
9169116cfa adding auth mode to ui and the url 2013-07-23 12:19:28 +02:00
Thomas Mueller
30c9a711e2 adding $backupGlobals = FALSE because iRODS is heavily using $GLOBALS 2013-07-23 12:19:16 +02:00
Thomas Mueller
37b52e33ab test case for iRODS storage added 2013-07-23 12:19:01 +02:00
Thomas Mueller
46b9ce5389 checkbox in settings ui 2013-07-23 12:18:46 +02:00
Thomas Mueller
dcd5f71b7a in order to use the ownCloud login credentials we use a login hook to grab uid and password and store it in the session.
The stored credentials will be used for and interactions with the iRODS server.

Within the config UI a check box can be used to enable the credential reuse.
2013-07-23 12:18:30 +02:00
Thomas Mueller
5859bf0ec0 initial integration with iRODS www.irods.org
The used PHP API is hosted at https://code.renci.org/gf/project/irodsphp/
2013-07-23 12:18:07 +02:00
Björn Schießle
200ed0c469 only add versions if the drop down was added 2013-07-23 10:49:19 +02:00
Björn Schießle
db8e19dba2 Create directly the right version dialog to open the drop-down flicker-free if no versions are available, issue #102 2013-07-23 10:23:45 +02:00
Georg Ehrke
254b29fc21 return empty array instead of 0 2013-07-22 20:37:39 +02:00
Arthur Schiwon
4b203280d2 LDAP: avoid PHP Warnings cause by passing empty values to implode 2013-07-22 13:57:58 +02:00
Arthur Schiwon
88dc61c200 LDAP: Oracle compat. fix, closes #4064 2013-07-22 13:52:08 +02:00
Thomas Müller
14daec98be Squashed commit of the following:
commit 7e875ff47ae1a3e546c74fb12895b2bfbeedabdf
Author: Thomas Müller <thomas.mueller@tmit.eu>
Date:   Sun Jul 14 21:58:08 2013 +0200

    No admin option to enable public upload in case encryption is enabled
    No upload on pubic page if public upload is disabled

commit 4939d9a668c13cdd74e8bb8e305bdd7a59661c4d
Author: Thomas Mueller <thomas.mueller@tmit.eu>
Date:   Fri Jul 12 21:34:38 2013 +0200

    change anonymous to public

commit c3bda8654d911383ae0acf9e41adda7117cb79f8
Author: Thomas Müller <thomas.mueller@tmit.eu>
Date:   Fri Jul 12 17:51:01 2013 +0200

    fixing Undefined index: publicUploadEnabled

commit 98861afde443c12a2ef5290c83c63fd12b7b196d
Author: Thomas Müller <thomas.mueller@tmit.eu>
Date:   Fri Jul 12 17:05:58 2013 +0200

    in case the encryption app is enabled we cannot yet allow anonymous upload

commit 974f09629d0e8bf5d90cf8546fa4a82738ebdebe
Author: Thomas Müller <thomas.mueller@tmit.eu>
Date:   Fri Jul 12 17:03:51 2013 +0200

    new admin setting added which allows to turn off anonymous uploads
2013-07-22 13:08:59 +02:00
Morris Jobke
57d94580e9 Merge pull request #4140 from sezuan/fix_wrong_found_http_code
changed HTTP FOUND code to the correct value 302
2013-07-21 01:33:47 -07:00
Matthias Rieber
6fbdf74c3e changed HTTP FOUND code to the correct value 302 2013-07-20 19:08:51 +02:00
Jan-Christoph Borchardt
6b0c35b20b deactivate show password toggle for IE
Conflicts:

	core/css/styles.css
2013-07-20 15:41:06 +02:00
Bart Visscher
a0dc41c0ab Merge pull request #3778 from owncloud/fix_3528
LDAP: fix background job, resolves #3528
2013-07-19 09:36:19 -07:00
shkdee
c2f3bcbaf0 Backport #3779, makes setuped backends are REALLY remembered and not instanciated many times 2013-07-19 18:09:36 +02:00
blizzz
6e4bb45809 Merge pull request #4072 from owncloud/non_ajax_upgrade_script
non-ajax Upgrade script utility, usable via CLI or wget. Requires PR 404...
2013-07-18 13:31:57 -07:00
blizzz
8e3bd98264 Merge pull request #4047 from owncloud/backport_3617
Backport 3963
2013-07-18 13:30:07 -07:00
Thomas Mueller
2ad4af1651 fixing UNIX_TIMESTAMP() for mssql
Conflicts:
	lib/db.php
2013-07-17 23:07:18 +02:00
Arthur Schiwon
2d291f621f Add message about completed update 2013-07-17 17:32:43 +02:00
Arthur Schiwon
87547f8e0d Adjust to latest changes in PR #4047 2013-07-17 17:30:47 +02:00
Arthur Schiwon
5b18f2fc0e Rerename \OC\Updater to OC_Updater, fixes broken admin page 2013-07-17 17:23:08 +02:00
Markus Goetz
2fe849df9a WebDAV Auth Connector: Check if already logged in 2013-07-17 16:20:14 +02:00
rolandgeider
67ee9ae797 Use transifex.com on link to translations
Conflicts:
	settings/templates/personal.php
2013-07-16 00:56:12 +02:00
Arthur Schiwon
6a4221732d non-ajax Upgrade script utility, usable via CLI or wget. Requires PR 4047. 2013-07-15 18:07:43 +02:00
Michael Gapczynski
810e718eb8 Only emit permissions hook for files and and include path
Conflicts:
	lib/public/share.php
2013-07-15 10:32:49 -04:00
Frank Karlitschek
3b95440e92 5.0.9 2013-07-14 13:36:22 +02:00
Thomas Müller
38eeddfc92 Merge pull request #4039 from owncloud/webdav_create_new_file
[webdav client] if the file doesn't exists; create a new one
2013-07-14 13:42:18 -07:00
Thomas Müller
528f870e09 Merge pull request #4044 from owncloud/more_ie8_fixes
More ie8 fixes
2013-07-14 13:10:46 -07:00
Frank Karlitschek
2309432310 Removed the preview warning. This is only a simple text change 2013-07-13 13:28:22 +02:00
Arthur Schiwon
9728192dc8 Stable5 adjustements (incl copy of lib/hooks/ from master) to make backport of #3963 work 2013-07-12 21:42:46 +02:00
Robin Appelman
c767ac3f16 fix typo 2013-07-12 17:46:09 +02:00
Robin Appelman
bd7d04cb44 backport: Updater: pass update url as argument to update check
Conflicts:
	lib/updater.php
2013-07-12 17:45:36 +02:00
Robin Appelman
a9470181d5 backport: split upgrade logic from ajax file
Conflicts:
	core/ajax/update.php
	lib/updater.php
2013-07-12 17:44:43 +02:00
Victor Dubiniuk
b37e25a9da IE8 Show delete icon 2013-07-12 17:51:20 +03:00
Victor Dubiniuk
267f1d1654 Some styling to user list 2013-07-12 17:29:08 +03:00
Victor Dubiniuk
52a6a3dc5d Ie8 specific multiselect 2013-07-12 17:13:50 +03:00
Björn Schießle
9f507ed642 if the file doesn't exists; create a new one. We use this to create new text files in the web interface 2013-07-12 13:25:37 +02:00
Björn Schießle
17a4cca5b7 Merge pull request #3859 from owncloud/versioning_improved_expire_function
call expire function before writing the new version to make sure to have...
2013-07-12 02:22:31 -07:00
Thomas Müller
cdb9b9b0f9 Merge pull request #3965 from dphi/fix_2846
speedup for propfinds on shared folders
2013-07-12 02:00:14 -07:00
Thomas Müller
d939619db3 Merge pull request #4014 from owncloud/fixing-4005-stable5
EventSource and update fixes
2013-07-11 14:00:31 -07:00
Thomas Müller
6ae1324673 Merge pull request #3984 from owncloud/enable_oci_testing_stable5
Enable oci testing stable5
2013-07-11 02:40:17 -07:00
Thomas Müller
c89f231787 update.php: remove event type 'error' as it's unused
eventsource.js: fixing typos and JSDoc comment
2013-07-11 00:26:40 +02:00
Thomas Müller
2b2004b1a2 missing file 2013-07-11 00:04:43 +02:00
Thomas Müller
5e29f7d324 - eventsource.php: in case of potential CSRF attack we send an error message from the EventSource to the browser
- eventsource.js: handle undefined data on event
- update.js: in case of error we close the event source - advise the user to reload the page
- update.php: EventSource initialization is now done before we enter the maintenance mode in order to allow browser reload in case of possible CSRF attack
2013-07-11 00:00:01 +02:00
Frank Karlitschek
7d7b7e6e63 5.0.8 2013-07-10 08:54:03 +02:00
Victor Dubiniuk
97d1b07445 Fallback to border instead of box-shadow 2013-07-09 15:43:02 +03:00
Victor Dubiniuk
0916bff81d Fix lazy styles loading in IE8 2013-07-09 15:42:47 +03:00
Jörn Friedrich Dreyer
f773b91365 enable oci in autotest.sh 2013-07-09 12:53:10 +02:00
Bart Visscher
f8ba6c77c8 Going from text to clob is not something we do.
Also Oracle DB has problems with this, see
http://abhijitbashetti.blogspot.de/2011/10/converting-varchar2-to-clob-and-clob-to.html

Conflicts:
	tests/lib/dbschema.php
2013-07-09 12:45:55 +02:00
Bart Visscher
36491371c8 Merge pull request #3893 from owncloud/backport_1872
Backport #1872
2013-07-08 11:28:33 -07:00
Thomas Müller
2a41ff9204 Merge pull request #3970 from owncloud/backport-3946-stable5
Backport 3946 to stable5
2013-07-08 06:51:39 -07:00
Jörn Friedrich Dreyer
52226e6a71 Merge pull request #3940 from owncloud/stable5_oracle_testsuite_fixes
Stable5 oracle testsuite fixes
2013-07-08 03:43:21 -07:00
Thomas Müller
c14206e3f8 Squashed commit of the following:
commit 70e6ad56ed5d00aeea8fe82b45047998dac92f80
Author: Thomas Müller <thomas.mueller@tmit.eu>
Date:   Sat Jul 6 00:11:42 2013 +0200

    fixing check if public share is a folder or not

commit 8e74ecec3f43a52a9a55871954171ef4073eab9d
Author: Thomas Müller <thomas.mueller@tmit.eu>
Date:   Sat Jul 6 00:04:01 2013 +0200

    removing unused getSharedItem()

commit 60ac0f274bbaa926dcec1800e952f2e0b1f05a50
Author: Thomas Müller <thomas.mueller@tmit.eu>
Date:   Fri Jul 5 17:39:41 2013 +0200

    on reshares we now recursively move to the root of all reshares - therefore some code has been refactured and added as a new public function

    Conflicts:
    	apps/files/ajax/upload.php

commit f071f7439568ffd8b785cd96035cc2e616f61b01
Author: Thomas Müller <thomas.mueller@tmit.eu>
Date:   Fri Jul 5 11:30:53 2013 +0200

    fixing Notice: Undefined index: isPublic

commit d2f2c7e9b896fd0ac57fb8047501205fc37b2abc
Author: Thomas Müller <thomas.mueller@tmit.eu>
Date:   Fri Jul 5 09:58:41 2013 +0200

    handle anonymous upload to reshared folder
2013-07-08 11:55:22 +02:00
Björn Schießle
54a1239680 Merge https://github.com/owncloud/core/pull/3827
Squashed commit of the following:

commit eed4b49cebcbcc252a75ed85097730b73213b0da
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Mon Jul 8 10:03:23 2013 +0200

    initialize OC_Defaults only once

commit bf6f07ccc8fb87535a069ca341789a590cb187ee
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Mon Jul 8 10:02:48 2013 +0200

    link to doc in error messages

commit ea61ee60e06ee98f2671aec1fdaff666c50f47c2
Merge: e41af3d 3c1308f
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jul 4 11:10:56 2013 +0200

    Merge branch 'master' into better-messages

commit e41af3d7bad26aa5ca9ab21ec7dcbadd3cfe5d4f
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jul 4 11:10:41 2013 +0200

    move to non-static defaults.php

commit 9e4258b1905244bdf34943a825421f041cbed43d
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Tue Jul 2 10:32:13 2013 +0200

    no sprintf here, lets t() handle it

commit fe1df349e248667a137f70d78b04225e5b42a111
Merge: d8f6859 cb5811b
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Mon Jul 1 11:13:38 2013 +0200

    Merge branch 'master' into better-messages

commit d8f68595df2dc0e0917d916cbde511ec5333010b
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Mon Jul 1 11:10:57 2013 +0200

    use document base url from defaults.php

commit 6c5403748a45717125a2aa375550f05646317d72
Merge: bea6b1c 7b0e3e6
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Mon Jul 1 11:00:15 2013 +0200

    Merge branch 'master' into better-messages

commit bea6b1c8a0968846065b9153e0a3f46a4e3245ee
Author: Jan-Christoph Borchardt <hey@jancborchardt.net>
Date:   Mon Jun 24 16:21:12 2013 +0200

    link to docs in WebDAV message, ref #3791

commit 3119b364a1094769e711283d1ce9014505f64ab9
Author: Jan-Christoph Borchardt <hey@jancborchardt.net>
Date:   Mon Jun 24 16:10:21 2013 +0200

    link to docs in error messages, fix #3819

Conflicts:

	lib/config.php
2013-07-08 10:14:39 +02:00
Michael Gapczynski
eb017b2666 Implement getDirectoryPermissions() in Shared Permissions, fixes #2846 2013-07-06 21:34:38 +02:00
Michael Gapczynski
3244d23bcf Only retrieve the current user's permissions 2013-07-06 21:34:38 +02:00
Robin Appelman
918b1b77a2 Cache: provide a function to get the permissions of all files in a folder with one query
Conflicts:
	lib/files/view.php
2013-07-06 21:34:38 +02:00
Frank Karlitschek
16a3502cf1 5.0.8 RC 2013-07-05 17:06:34 +02:00
Thomas Müller
b2cfa01e57 Backport of #3951 to stable5
Squashed commit of the following:

commit 46c1280e4f2ac61f0b3c5fed9d2a516cb000c009
Author: Thomas Müller <thomas.mueller@tmit.eu>
Date:   Fri Jul 5 13:45:21 2013 +0200

    proper fix for getting the shared item if no user is logged in

commit 99e32baec4464444a1a46ae47321e0378e367c3e
Author: Thomas Müller <thomas.mueller@tmit.eu>
Date:   Fri Jul 5 13:22:38 2013 +0200

    php 5.3 compliant now

commit 227e5f10016e362ed1302acb4426de391d4d9b4b
Author: Thomas Müller <thomas.mueller@tmit.eu>
Date:   Fri Jul 5 12:15:47 2013 +0200

    get the real physical folder name for anonymous upload
2013-07-05 23:47:18 +02:00
Thomas Müller
79558c26a0 Backport of #3948 to stable5 2013-07-05 23:35:23 +02:00
Thomas Mueller
2634eb33f1 for now we disable public upload in case encryption is enabled 2013-07-05 18:00:36 +02:00
Thomas Müller
9d2495c63f adding tipsy to the upload button showing the max upload and restoring client side upload size validation
Conflicts:
	apps/files_sharing/templates/public.php
2013-07-05 17:51:40 +02:00
Björn Schießle
ba11ab92c7 remove unneeded bracket, was introduced by the last merge 2013-07-05 16:18:17 +02:00
Björn Schießle
133279714b added helper function to escape glob pattern
Conflicts:

	apps/files_encryption/lib/helper.php
2013-07-05 16:14:57 +02:00
Björn Schießle
2fa95cdebc fix getUidAndFilename() test 2013-07-05 16:13:47 +02:00
Björn Schießle
0cc1f6e70a only check for external mount points if the external storage app is enabled 2013-07-05 16:13:38 +02:00
Björn Schießle
db51ffc553 make trash bin aware of system wide mounts with respect to encryption keys 2013-07-05 16:13:30 +02:00
Björn Schießle
5c5a8a0eba only escape glob pattern 2013-07-05 16:13:22 +02:00
Björn Schießle
7bc153a87a del share keys from correct location 2013-07-05 16:13:14 +02:00
Björn Schießle
f535b57896 always return normalized path 2013-07-05 16:13:05 +02:00
Björn Schießle
cbe97b5df2 delete file keys from the correct location 2013-07-05 16:12:54 +02:00
Björn Schießle
c818115a4f handle rename correctly for system wide mounts 2013-07-05 16:12:46 +02:00
Björn Schießle
ec1c769da3 move isSystemWideMountPoint() to util.php 2013-07-05 16:12:35 +02:00
Björn Schießle
2177001152 some performance improvements, check for system wide mounts only once while writing share keys 2013-07-05 16:12:22 +02:00
Björn Schießle
a46a1eed6e fix path to OC_Mount_Config 2013-07-05 16:12:11 +02:00
Björn Schießle
3a2603e1fe handle system wide mount points 2013-07-05 16:11:59 +02:00
Jörn Friedrich Dreyer
126ab4ee11 fix insertIfNotExist return value, update doc and corresponding test 2013-07-05 15:41:16 +02:00
Thomas Müller
b585e960e7 no anonymous upload on read-only folders 2013-07-05 12:20:02 +02:00
Victor Dubiniuk
c60c76d03b Do not add groups if user has no groups 2013-07-04 21:55:25 +03:00
Georg Ehrke
6d1e2dc8c0 fix position of 'user shared the folder foldername with you' label 2013-07-04 20:17:27 +02:00
Jörn Friedrich Dreyer
4bf8a93fbd add correct check if table exists for oracle 2013-07-04 18:20:56 +02:00
Bart Visscher
fc9e3c63f6 Oracle doesn't know & as bitwise AND
Conflicts:
	lib/public/share.php
2013-07-04 17:34:54 +02:00
Jörn Friedrich Dreyer
87e0a1f85c for oracle use BITAND() instead of & in sharing permissions sql 2013-07-04 17:34:43 +02:00
Jörn Friedrich Dreyer
6d70b64fab fix type of numeric columns 2013-07-04 17:08:50 +02:00
Jörn Friedrich Dreyer
9d33ed376d check item id is set 2013-07-04 17:08:33 +02:00
Jörn Friedrich Dreyer
07377ed431 stable5 does not have execute audited yet 2013-07-04 17:08:24 +02:00
Jörn Friedrich Dreyer
24fa167898 add missing backticks 2013-07-04 17:07:18 +02:00
Jörn Friedrich Dreyer
804eee87c9 manuall calculate unix_timestamp for oracle 2013-07-04 16:55:41 +02:00
Björn Schießle
d01854fd75 more verbose error message 2013-07-04 16:35:14 +02:00
Björn Schießle
2dedc3aa57 improved error message 2013-07-04 16:35:06 +02:00
Thomas Müller
b722f8bba3 no ?> at the end of a file
missing .

Conflicts:

	apps/files_encryption/files/error.php
2013-07-04 16:34:53 +02:00
Thomas Müller
4a67257c42 typo 2013-07-04 16:34:03 +02:00
Björn Schießle
8dd61163bc cast result to bool 2013-07-04 16:33:54 +02:00
Björn Schießle
0d36205083 fix error string 2013-07-04 16:33:43 +02:00
Björn Schießle
f13ce01499 add correct php version 2013-07-04 16:33:33 +02:00
Björn Schießle
d4c58027e0 check php version, the encryption app needs php >= 5.3.3
Conflicts:

	apps/files_encryption/appinfo/app.php
2013-07-04 16:33:20 +02:00
Jörn Friedrich Dreyer
dbb2457d81 one if less 2013-07-04 16:13:39 +02:00
Jörn Friedrich Dreyer
1ed103f650 use assertEquals number of rows in db tests 2013-07-04 16:13:30 +02:00
Jörn Friedrich Dreyer
b46c7fe872 fix numRows usage in files_encryption 2013-07-04 16:13:18 +02:00
Jörn Friedrich Dreyer
0fb1d3421f fix numRows usage in core lib 2013-07-04 16:13:09 +02:00
Jörn Friedrich Dreyer
42b0fa0c9f fix numRows usage in user_ldap
Conflicts:
	apps/user_ldap/lib/access.php
	apps/user_ldap/lib/helper.php
2013-07-04 16:12:49 +02:00
Jörn Friedrich Dreyer
dc748f3ced make PDOStatementWrapper return number of updated rows on INSERT, UPDATE or DELETE queries, introduces isManipulation() to guess type of query 2013-07-04 15:48:45 +02:00
Jörn Friedrich Dreyer
a902e5048a Merge pull request #3931 from owncloud/backport_selectRange
Fixing renaming for stable5
2013-07-04 05:39:08 -07:00
Björn Schießle
72e6d915d4 Merge pull request #3921 from owncloud/init_default_strings
Add init funtion to OC_Defaults to be able to wrap translatable strings
2013-07-04 01:04:19 -07:00
Victor Dubiniuk
93430ec17e Add selectRange function 2013-07-04 00:24:43 +03:00
Björn Schießle
6857e87a82 eddition string should be empty by default 2013-07-03 17:10:17 +02:00
Björn Schießle
c20653cedc add public api 2013-07-03 15:18:19 +02:00
Björn Schießle
7bc3edae0a move to non-static OC_Defaults 2013-07-03 14:21:51 +02:00
Björn Schießle
f155826dc2 Add init funtion to OC_Defaults to be able to wrap translatable strings 2013-07-03 12:38:20 +02:00
Robin Appelman
d6f2fe6a6b Sabre: throw exceptions when delete/create/write operations are not permitted 2013-07-02 22:29:20 +02:00
Thomas Müller
9532859e4d use $_SERVER['SERVER_NAME'] in case $_SERVER['HTTP_HOST'] is not set 2013-07-02 22:27:52 +02:00
Thomas Mueller
61c569c76a in case $_SERVER['HTTP_HOST']) is not set let's return localhost - better than nothing 2013-07-02 22:27:52 +02:00
Thomas Müller
919c0b6248 Merge pull request #3905 from owncloud/emit_signals_for_part_files
Emit signals for part files
2013-07-02 13:12:17 -07:00
Björn Schießle
9a4f2f1318 add openssl_error_string() output to the owncloud.log 2013-07-02 16:59:13 +02:00
Björn Schießle
c459a5cec2 fix function documentation 2013-07-02 16:28:40 +02:00
Björn Schießle
a7b01ae74d introduce pre-disable-app hook and use it for the encryption app to reset migration status if the app was disabled 2013-07-02 16:28:27 +02:00
Jörn Friedrich Dreyer
102a0415d4 Merge pull request #3909 from owncloud/stable5-anon-upload
Stable5 anon upload
2013-07-02 05:49:36 -07:00
Björn Schießle
3a2f662a0f improved error message 2013-07-02 10:11:17 +02:00
Victor Dubiniuk
73ac5c68a6 Use svg to png fallback on demand only 2013-07-01 23:12:22 +03:00
Victor Dubiniuk
511a806f4e Add fallback for svg app icons 2013-07-01 23:11:54 +03:00
Victor Dubiniuk
bcb85ea79b Hide a ghost image on the apps management page 2013-07-01 23:11:36 +03:00
Robin Appelman
4dfc560419 fix detection of public upload in filelist.js 2013-07-01 19:41:47 +02:00
Robin Appelman
66773ac96b fix uploading when ['dirtoken'] is not set 2013-07-01 19:41:47 +02:00
Robin Appelman
f7b64993b8 code style 2013-07-01 19:41:29 +02:00
Roman Geber
fb83481936 Added file-upload to GIT repo
Optimized CSS identifiers
2013-07-01 19:38:33 +02:00
Roman Geber
a987f9f4cf Public upload feature
Conflicts:
	apps/files/js/filelist.js
2013-07-01 19:38:15 +02:00
Jörn Friedrich Dreyer
9e5983c569 use css browser switch instead of deprecated jquery browser detection 2013-07-01 19:35:45 +02:00
Jörn Friedrich Dreyer
2a0a4ad0df '#upload' is actually '#uploadprogresswrapper', fix css and js to show cancel button correctly 2013-07-01 19:35:32 +02:00
Jörn Friedrich Dreyer
a3862c43da use local variable to walk DOM only once 2013-07-01 19:35:22 +02:00
Jörn Friedrich Dreyer
b9abc8002b use === to compare empty string '' 2013-07-01 19:35:11 +02:00
Jörn Friedrich Dreyer
0c10c4a15d don't update progress bar in ie < 10 2013-07-01 19:34:59 +02:00
Jörn Friedrich Dreyer
f60a74e75f return created table row, use as context in fileupload events 2013-07-01 19:34:47 +02:00
Jörn Friedrich Dreyer
b94272b8a3 refactor files.js, make proper use of fileupload events 2013-07-01 19:34:34 +02:00
Jörn Friedrich Dreyer
8f846006d3 return original filename to fileupload 2013-07-01 19:34:24 +02:00
Jörn Friedrich Dreyer
5cabb73337 Merge pull request #3802 from owncloud/stable5_backport_oracle_fixes
backport oracle related changes, mostly comments, but also setup related...
2013-07-01 08:53:33 -07:00
Björn Schießle
c32b267a36 don't run hooks for .part files 2013-07-01 17:00:17 +02:00
Björn Schießle
ef51a42522 if a part file gets renamed to a real file, that this was the second step of a write operation, hence emit a write signal 2013-07-01 16:21:31 +02:00
Björn Schießle
c421103ed5 Merge pull request #3863 from owncloud/improved_footer
Improved footer
2013-07-01 01:22:32 -07:00
Björn Schießle
1eae41e033 set default logo claim to '' 2013-07-01 10:22:05 +02:00
Thomas Müller
60173be25e Squashed commit of the following:
commit 557df5cc5e62fab80125d1ea86f8ed56ad3b10cc
Author: Thomas Mueller <thomas.mueller@tmit.eu>
Date:   Fri Jun 28 15:17:54 2013 +0200

    session_life_time -> session_lifetime
    default session_lifetime is 24hrs
    recreation of session is triggered at 50% of the session life time

    Conflicts:
    	lib/base.php

commit fcd2e91459ef2ff41d9ca3d07e325c358ded091a
Author: Thomas Mueller <thomas.mueller@tmit.eu>
Date:   Wed Jun 26 09:19:19 2013 +0200

    session life time is now configurable and set to the same value

    Conflicts:
    	lib/base.php
2013-07-01 00:05:06 +02:00
Lukas Reschke
87ef930587 Escape dropdown
Fixes #3241
2013-06-29 13:43:19 +02:00
herbrechtsmeier
65de4a0522 request.php: add type check to the not empty check of a string
The not equal comparison (<>) of a variable with an empty string
could lead to false positive results as the compare do not check
the type and thereby could not make sure that the checked variable
is a string. The usage of the not identical comparison operator
(!==) make sure that the variable is a string and not empty.
2013-06-28 21:06:36 +02:00
herbrechtsmeier
4df9a9aa65 Overwrite host and webroot when forcessl is enabled
This patch enables the use of forcessl together with a multiple domains
reverse SSL proxy (owncloud/core#1099) which have different hostname
and webroot for http and https access. The code assumes that the ssl
proxy (https) hostname and webroot is configured via overwritehost and
overwritewebroot.
2013-06-28 21:06:24 +02:00
Björn Schießle
d80b2cdc42 fix array access and change variable names according to the coding style 2013-06-28 20:31:33 +02:00
Björn Schießle
8e3eff5549 continue cleaning-up old versions if availableSpace=0. It's not necessary but gives us some additional free space, especially in the case of a hard quota 2013-06-28 17:13:14 +02:00
Björn Schießle
ee1a3ea0d8 fix some var names according to our style guide 2013-06-28 17:06:02 +02:00
Thomas Mueller
6d3349c85e PHP Strict standards: Non-static method OC_Defaults::themeExist() should not be called statically 2013-06-28 16:23:26 +02:00
Björn Schießle
6ae9af16f9 add logo claim to defaults.php 2013-06-28 10:06:57 +02:00
Björn Schießle
6a7efa3a47 logo claim added 2013-06-27 19:53:49 +02:00
Björn Schießle
49e86ed779 make mail footer aware of different themes 2013-06-27 18:28:53 +02:00
Björn Schießle
f8374faa08 remove unneeded if condition 2013-06-27 16:28:45 +02:00
Björn Schießle
31d565131c lib/defaults.php should only contain the default strings and read the other strings directly from the theme 2013-06-27 16:24:03 +02:00
Björn Schießle
5ce718f0b1 adjust comments 2013-06-27 14:22:01 +02:00
Björn Schießle
84ad37ac9a fix typo in comment 2013-06-27 10:49:13 +02:00
Thomas Mueller
498bb50597 move javascript variables 'oc_current_user' and 'oc_requesttoken' to js.js - fixes #3853 2013-06-26 18:59:37 +02:00
Björn Schießle
26cb6ba08c check for updates only in the community edition 2013-06-26 18:05:37 +02:00
Björn Schießle
3e3ed0784a construct the foother in defaults.php so that we use always the same footer 2013-06-26 17:56:19 +02:00
Björn Schießle
e51a569e03 also expire versions on rename, to update the history more regularly 2013-06-26 16:28:23 +02:00
Björn Schießle
ae89676af4 it is enough to call the expire function once 2013-06-26 16:24:46 +02:00
Markus Goetz
07a5914dc4 Fix ugly error style on install
By initializing the template engine first we can show the
'Can't write into config directory 'config'' error in a nice way instead
of plain unstyled HTML.
2013-06-25 16:27:07 +03:00
Björn Schießle
2f4cf6a585 call expire function before writing the new version to make sure to have enough free space 2013-06-25 09:39:01 +02:00
blizzz
38d702e3f8 Merge pull request #3816 from owncloud/fix_3815
LDAP: better check for emptiness, fixes #3815
2013-06-22 00:11:03 -07:00
blizzz
a1e1456bdb Merge pull request #3814 from owncloud/fix-german-du-and-deine-stable5
In German we want uppercase 'Du' and 'Deine*'
2013-06-21 15:13:34 -07:00
Arthur Schiwon
b52d765dbf LDAP: even better check for emptiness, fixes #3815 2013-06-21 23:58:44 +02:00
Arthur Schiwon
4f75a9cf1c Revert "LDAP: better check for emptiness, fixes #3815"
This reverts commit 4797f9d7db.
2013-06-21 23:58:27 +02:00
Arthur Schiwon
4797f9d7db LDAP: better check for emptiness, fixes #3815 2013-06-21 23:19:53 +02:00
Thomas Mueller
62f01a1239 In German we want uppercase 'Du' and 'Deine*' 2013-06-21 22:55:26 +02:00
Victor Dubiniuk
96e42ebff1 Replace display name only 2013-06-21 23:00:44 +03:00
Georg Ehrke
fee313e256 improve error handling of webdavauth 2013-06-21 20:38:05 +02:00
Björn Schießle
437a79e2f9 encryption is LDAP compatible 2013-06-21 13:07:52 +02:00
Björn Schießle
2a26336080 check openssl dependency for the encryption app
commit 1345201c9da99a82f198e41fba24da6b0d7ae59a
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jun 20 16:27:46 2013 +0200

    add l10n support

commit bf2c79c8de8710e839a4a55642a91874c374fa1c
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jun 20 16:19:10 2013 +0200

    only init session if openssl extension is loaded

commit cbd52af6afbaa310bb1a534db64ff5e476dfd5d7
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jun 20 12:25:40 2013 +0200

    first disable app and than show error page

commit 55baf593179c433642de59552592e6b0f1932880
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jun 20 12:17:34 2013 +0200

    typo fixed

commit 1d9bef0b058e7cc3d511b81ae12d5a07660c75b2
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jun 20 12:15:40 2013 +0200

    move dependency check to the encryption app

commit c186e95da526f0470e20f014f1bd9513db5518ff
Author: Björn Schießle <schiessle@owncloud.com>
Date:   Thu Jun 20 11:13:11 2013 +0200

    make sure that openssl is installed and loaded

Conflicts:

	apps/files_encryption/appinfo/app.php
2013-06-21 10:43:22 +02:00
Jörn Friedrich Dreyer
761c7e9a51 backport oracle related changes, mostly comments, but also setup related fixes 2013-06-20 17:42:02 +02:00
Thomas Mueller
ba7797e6a1 adding unit test for folder remove: testRemovedFolder() 2013-06-20 13:05:45 +02:00
Robin Appelman
7992953f1c remove deleted files when re-scanning a folder 2013-06-20 13:05:45 +02:00
Robin Appelman
4f99dcf699 use json to encode user list 2013-06-20 11:59:43 +02:00
Robin Appelman
850cde6ed4 allow scanning files for multiple users 2013-06-20 11:59:43 +02:00
Björn Schießle
8e5bc02e92 always have a defined return value 2013-06-20 11:14:54 +02:00
Björn Schießle
433cb9f01d some more error messages 2013-06-20 11:14:42 +02:00
Björn Schießle
41fa7ec791 add some more error messages, in case something went wrong 2013-06-20 11:14:27 +02:00
Björn Schießle
908c8fdc71 fixed enghlish sentence, thanks to @MTGap 2013-06-19 16:11:09 +02:00
Robin Appelman
fa894beb5c fix updaters test cases 2013-06-19 13:33:32 +02:00
Robin Appelman
b06432fef0 add tests for reusing existing data in scanner 2013-06-19 13:33:25 +02:00
Robin Appelman
a498876aa6 reuse etag when doing a forced rescan 2013-06-19 13:33:18 +02:00
Robin Appelman
90acda6c06 scanner: give more percision about what data is reused during scanning 2013-06-19 13:33:09 +02:00
Robin Appelman
663c30ede0 split of scanning the childs of a folder 2013-06-19 13:32:58 +02:00
Jan-Christoph Borchardt
5e06b068ce hide the logo claim in case the theme is not loaded 2013-06-19 12:58:31 +02:00
Björn Schießle
c72e3ca442 Merge pull request #3770 from owncloud/fix_theme_loading
getTheme() should also return the default theme if a empty theme is set in the config.php
2013-06-19 02:54:56 -07:00
Robin Appelman
9700b84a62 Fix OC_User::getDisplaynames when using numeric user id's
fixes #2948
2013-06-19 00:19:53 +03:00
Frank Karlitschek
87f70d643e Merge pull request #3771 from owncloud/fix_lost_password_page
fix lost password page
2013-06-18 14:06:00 -07:00
Arthur Schiwon
f01e568046 LDAP: fix background job, resolves #3528 2013-06-18 20:03:59 +02:00
Björn Schießle
96983c2ad0 fix lost password page, don't show checkbox is encryption is not enabled 2013-06-18 11:43:11 +02:00
Björn Schießle
cf51be0fa8 use default value when we try to retrieve the theme from the config 2013-06-18 11:18:31 +02:00
Björn Schießle
07b1e677a6 also use the default theme if the theme is set to an empty string in the config.php 2013-06-18 10:57:37 +02:00
Björn Schießle
592656c699 don't normalize absolute local path 2013-06-17 15:39:56 +02:00
Björn Schießle
1fead354b2 only escape glob pattern
Conflicts:

	apps/files_trashbin/lib/trash.php
2013-06-17 15:39:43 +02:00
Björn Schießle
52d1797b30 Merge pull request #3753 from owncloud/fix_translation_link
fix link to translation
2013-06-17 03:56:43 -07:00
Björn Schießle
1171a5a2e0 fix link to translation, bug was introduced by ca7699c8bd (settings)/templates/personal.php 2013-06-17 11:48:23 +02:00
Jörn Friedrich Dreyer
112f9f055b Merge pull request #3725 from owncloud/oracle_stable5
Oracle stable5
2013-06-14 07:07:49 -07:00
Jörn Friedrich Dreyer
b6e664c445 don't use sequence suffix, MDB2 handles that internally 2013-06-14 13:43:50 +02:00
Thomas Mueller
f5b1f598ea Squashed commit of the following:
commit 85043af59846edd54b6f402829a698142fdb412f
Author: Michael Gapczynski <mtgap@owncloud.com>
Date:   Sat May 25 11:25:43 2013 -0400

    Clear opcode caches after writing to the config file, fixes #3372

commit e96ca0a217112a612e5018fb06115879be634f0b
Author: Michael Gapczynski <mtgap@owncloud.com>
Date:   Fri May 17 11:15:53 2013 -0400

    Add undefined verision variables

commit d7faeea0b8a79bcd84255120e396280fe62c8aa1
Author: Michael Gapczynski <mtgap@owncloud.com>
Date:   Tue May 14 09:34:01 2013 -0400

    Turn off theme before update

commit f620df4e88201a8d35ecb6173f258d5e5f67c7f9
Author: Bart Visscher <bartv@thisnet.nl>
Date:   Tue Apr 16 08:07:44 2013 +0200

    Also check for needed upgrade in the Sabre Maintenance connector

commit 223cfce8c89663beb95cf7438f47cea4bac6e0de
Author: Bart Visscher <bartv@thisnet.nl>
Date:   Tue Apr 9 21:05:11 2013 +0200

    Connect watcher failure function to the failure signal

commit 49b9a1e8af062c03ebc863e1139ca310944b784a
Author: Bart Visscher <bartv@thisnet.nl>
Date:   Tue Apr 9 20:51:43 2013 +0200

    Move start of the maintenance mode to the ajax call

    Make sure the update page is shown in a browser. And not an ajax request
2013-06-14 13:34:01 +02:00
Jörn Friedrich Dreyer
1099960e55 cleanup codestyle 2013-06-14 13:17:15 +02:00
Jörn Friedrich Dreyer
d6878f5551 use to_char only for oracle, whitespace 2013-06-14 13:16:02 +02:00
Jörn Friedrich Dreyer
be534fecf4 oracle fixes, missing backticks, LIMIT to param
Conflicts:
	lib/files/cache/cache.php
2013-06-14 13:13:29 +02:00
Jörn Friedrich Dreyer
61c89874cd allow install when only oracle is available 2013-06-14 13:08:05 +02:00
Jörn Friedrich Dreyer
fb33c01a8f convert LIMIT to parameter 2013-06-14 13:06:13 +02:00
Jörn Friedrich Dreyer
715648e79d fix fetchRow checks to also work with MDB2 2013-06-14 13:05:33 +02:00
Jörn Friedrich Dreyer
2d876c2bf5 add missing backticks all over the place
Conflicts:
	apps/files_encryption/lib/util.php
	lib/files/cache/backgroundwatcher.php
	lib/files/cache/cache.php
2013-06-14 13:04:23 +02:00
Jörn Friedrich Dreyer
3903977166 shorten table identifiers in tests 2013-06-14 12:50:49 +02:00
Jörn Friedrich Dreyer
fe2ef4bcc4 db structure, allow null in columns for '' values 2013-06-14 12:49:23 +02:00
Thomas Mueller
28d8ed9726 Squashed commit of the following:
commit 1c7d5da4d1687183f8701336fc14636f61095f4e
Author: infoneo <infoneo@yahoo.pl>
Date:   Sat Jun 8 19:44:58 2013 +0300

    Update mapper.php

commit 37f1f034f776b084ac7e25be136ce64b5772a446
Author: infoneo <infoneo@yahoo.pl>
Date:   Sat Jun 8 18:39:25 2013 +0300

    Update mapper.php

    Now slugify is performed on whole filename (including extension). Changed method of adding index number (using regular expressions pathinfo() method removed).

commit 4a5f872f1f55941d07992d7ac5e8f8b74ec8febc
Author: infoneo <infoneo@yahoo.pl>
Date:   Sun May 12 15:22:57 2013 +0300

    Fixed problems with a dots in a filenames

commit bc17f958349e36c1caacfc9263ae1de2df8e6a76
Author: infoneo <infoneo@yahoo.pl>
Date:   Sun May 12 01:47:48 2013 +0200

    Dots in a filenames fix
2013-06-14 11:19:13 +02:00
Florin Peter
d7528a9b9f fix for path_hash not unique as reported at #3641 2013-06-14 10:40:44 +02:00
Florin Peter
1d956b1faf fix memory problems as reported at #3620 2013-06-14 10:40:33 +02:00
Björn Schießle
5efbf25c2a improved footer 2013-06-13 16:40:04 +02:00
Björn Schießle
d8a55da9b6 add logo-claim 2013-06-13 16:39:51 +02:00
Björn Schießle
ca7699c8bd don't show translation hints in enterprise edition
Conflicts:

	settings/templates/personal.php
2013-06-13 16:39:40 +02:00
Jan-Christoph Borchardt
5572e1dc11 move common settings footer fieldset out of conditional 2013-06-13 16:38:18 +02:00
Björn Schießle
43146a68cf short explanation about OC_Defaults 2013-06-13 16:38:09 +02:00
Björn Schießle
89191a9c1f make pub link share footer aware of different owncloud editions 2013-06-13 16:37:58 +02:00
Björn Schießle
68229009ac make main menu aware of the different owncloud editions 2013-06-13 16:37:48 +02:00
Björn Schießle
22394d5855 add default doc url 2013-06-13 16:37:30 +02:00
Björn Schießle
ae2615e74d make footer and urls aware of ownCloud editions 2013-06-13 16:37:14 +02:00
Björn Schießle
939bc3e71c keep all strings in one place to make it easier to change them 2013-06-13 16:37:02 +02:00
Björn Schießle
7e556475f8 make footer aware of ownCloud editions 2013-06-13 16:36:51 +02:00
Björn Schießle
a74ece336d mage page title aware of ownCloud edition
Conflicts:

	core/templates/layout.user.php
2013-06-13 16:36:36 +02:00
Björn Schießle
aa16518f66 only check for recovery key if someone else than the user wants to change the password
Conflicts:

	settings/ajax/changepassword.php
2013-06-13 14:02:19 +02:00
Björn Schießle
56a0b7a71a add a hint that the admin can recover your files; Don't let the user change the recovery settings if no private key is set 2013-06-13 13:45:40 +02:00
Björn Schießle
af23fa9863 print a warning if a user wants to reset his password and encryption is enabled
Conflicts:

	core/lostpassword/templates/lostpassword.php
2013-06-13 13:45:30 +02:00
Björn Schießle
ac77c2f98c allow to press enter to update the password 2013-06-13 13:43:44 +02:00
Björn Schießle
fef186e7dc tell the user what he can do to regain access to his files 2013-06-13 13:43:32 +02:00
Björn Schießle
c062322d0f only show personal settings if the recovery feature is enabled or if no private key is set 2013-06-13 13:43:17 +02:00
Florin Peter
03907da05b improved error msg and removed duplicate string 2013-06-13 13:43:08 +02:00
Björn Schießle
bea81bcc69 improved label for the password recovery feature 2013-06-13 13:42:52 +02:00
Björn Schießle
76db8c0506 link directly to the encryption settings 2013-06-13 13:42:42 +02:00
Florin Peter
f637118008 better handling for http post 2013-06-13 13:40:44 +02:00
Florin Peter
e65ff413e2 changed redirect handling 2013-06-13 13:40:27 +02:00
Florin Peter
4e2ff14cda fixed typo 2013-06-13 13:40:13 +02:00
Florin Peter
5d7aa761bc fix password change when files_encryption app is disabled
Conflicts:

	settings/ajax/changepassword.php
2013-06-13 13:39:54 +02:00
Florin Peter
86a1a7ea53 reformat code
Conflicts:

	apps/files_encryption/lib/session.php
	apps/files_encryption/lib/util.php
2013-06-13 13:32:52 +02:00
Björn Schießle
380a402699 use generated private key fro m setUp() 2013-06-13 13:26:59 +02:00
Björn Schießle
7a5c4fd092 added test for decryptPrivateKey() 2013-06-13 13:26:48 +02:00
Björn Schießle
fe9a9c3264 let user update private key password in case it was changed from outside, e.g. external auth back-ends 2013-06-13 13:26:33 +02:00
Björn Schießle
30b00f4bc1 $session->setPrivateKey expects only one parameter 2013-06-13 13:26:18 +02:00
Björn Schießle
1d38e244fd control files are no longer needed, remove them from the tests 2013-06-13 13:26:05 +02:00
Björn Schießle
b3d87def99 introduce decryptPrivateKey() method which also checks if the result is a valid private key to avoid additional checks on various places
Conflicts:

	apps/files_encryption/lib/session.php
2013-06-13 13:25:50 +02:00
Florin Peter
1914353c49 code optimized and cleaned up unused vars 2013-06-13 13:24:06 +02:00
Florin Peter
d45bddc035 allow the user to login but do not allow upload and show error message on the web
Conflicts:

	apps/files_encryption/appinfo/app.php
2013-06-13 13:23:32 +02:00
Florin Peter
d33b215b21 check if the decrypted private key is valid on login and on read/write files 2013-06-13 13:22:10 +02:00
Florin Peter
64cb67c6d7 cleanup unused method legacyKeyRecryptKeyfile 2013-06-13 13:00:44 +02:00
Florin Peter
9620f0df98 normalize path to prevent following split to fail 2013-06-13 13:00:06 +02:00
Florin Peter
a7017167bc fix legacy key in until test 2013-06-13 12:59:40 +02:00
Florin Peter
1fb9a5126f fix re-encrypt legacy files
Conflicts:

	apps/files_encryption/lib/util.php
2013-06-13 12:59:06 +02:00
Florin Peter
514e47f57e use legacyDecrypt to decrypt key file like the previous files_encryption 2013-06-13 12:57:26 +02:00
Florin Peter
49b4d8e3f0 fix for autoloader while user logged in and system is in maintenance
Conflicts:

	apps/files_encryption/appinfo/app.php
2013-06-13 12:57:07 +02:00
Björn Schießle
07fb6a0d57 add comment to explain the helper function 2013-06-13 12:37:57 +02:00
Björn Schießle
301b0f1b77 fix typo in var name 2013-06-13 12:37:38 +02:00
Björn Schießle
8c07eddc65 use number of manipulated rows as idicator if it was possible to enter the migration mode
Conflicts:

	apps/files_encryption/lib/util.php
2013-06-13 12:37:12 +02:00
Björn Schießle
1d5c9d84fd adapt test to the code changes 2013-06-13 12:33:45 +02:00
Björn Schießle
76bb5a4ba7 use constants for different migration status 2013-06-13 12:33:17 +02:00
Björn Schießle
7252d09dd2 make sure that only one process can enter the migration mode 2013-06-13 12:32:58 +02:00
Jan-Christoph Borchardt
33afa9a253 move storage bar below clients showcase to make it more visible 2013-06-12 18:18:44 +02:00
Björn Schießle
2d5f97ef2e Merge branch 'stable5' of github.com:owncloud/core into stable5 2013-06-12 14:11:17 +02:00
Björn Schießle
4b50145617 disable proxys during ssl root cert upload to avoid encryption 2013-06-12 14:10:14 +02:00
Thomas Müller
1fa76e53dc Merge pull request #3470 from owncloud/fix_ssl_root_certs
fix deletion of ssl root certificates
2013-06-11 14:15:05 -07:00
Björn Schießle
243b7d82d4 IE doesn't like class as keyword, add quotation marks 2013-06-11 23:07:33 +02:00
Björn Schießle
ec80dd5e3a use pre_setPassword hook to update the encryption keys if the back-end doesn't support password change; improved output to let the admin know what happened 2013-06-10 11:12:55 +02:00
Björn Schießle
d3a663469a add hint about what the recovery password field is for 2013-06-10 11:12:12 +02:00
Michael Gapczynski
1b39f46cc2 Backport #2919 2013-06-07 09:42:52 -04:00
Björn Schießle
07c3f08e66 remove html entities since this seems to be a problem only on my system 2013-06-06 14:19:09 +02:00
Frank Karlitschek
e35303f702 5.0.7 2013-06-06 10:13:32 +02:00
blizzz
68960db77e Merge pull request #3584 from owncloud/fix_ldap_port
LDAP: append port when URL is passed in LDAP Host configuration, fixes #...
2013-06-04 01:31:52 -07:00
Arthur Schiwon
03e5982026 LDAP: append port when URL is passed in LDAP Host configuration, fixes #2600 2013-06-03 23:07:32 +02:00
Frank Karlitschek
9046c65af5 5.0.7 RC 2013-06-02 23:02:52 +02:00
Arthur Schiwon
f3620b7c03 LDAP: sqlite compatibility for emptyiing tables 2013-05-31 21:18:39 +02:00
Arthur Schiwon
7b95d031a1 LDAP: fix possible recursion 2013-05-31 20:13:33 +02:00
Arthur Schiwon
78520cdfc7 Backport bfa7157 2013-05-31 20:13:22 +02:00
Florin Peter
1ef101c439 also fix login errors while filesystem is not loaded in app.php 2013-05-31 20:06:43 +02:00
Florin Peter
a1401f686a fix login errors while filesystem is not loaded 2013-05-31 20:06:33 +02:00
Florin Peter
5eded27fa3 added our own file extension .part will not work here if we use file_get_contents so we used our own extension '.etmp' 2013-05-31 12:28:45 +02:00
Florin Peter
7c9b34a416 prevent files_versions from calling file proxy which calls files_encryption and do unnecessary load and file operations 2013-05-31 12:28:40 +02:00
Florin Peter
6e3acd3111 fix share and un-share for single file 2013-05-31 12:28:29 +02:00
Florin Peter
aed15ef72b fixed problems with file_get_contents and file_put_contents this problem was related to text editor with big text files 2013-05-31 12:28:22 +02:00
Florin Peter
5353bcc246 fixes for pgsql 2013-05-31 12:28:12 +02:00
Florin Peter
2e5fcf4d56 changed deprecated class 2013-05-31 12:28:06 +02:00
Florin Peter
4dac837046 fixed typo 2013-05-31 12:28:00 +02:00
Florin Peter
512571c54f fixes if cache returns false 2013-05-31 12:27:55 +02:00
Florin Peter
0fa0e92883 fix $parent/$source typo 2013-05-31 12:27:49 +02:00
Florin Peter
8e80aa3630 backport of #3527 2013-05-31 12:27:38 +02:00
Björn Schießle
15e0fc6b7f fix indention 2013-05-31 12:24:44 +02:00
Björn Schießle
6d667c02fc remove unnecessary variable 2013-05-31 12:24:36 +02:00
Björn Schießle
8e512bdfdf use public API for error handling; improved while condition 2013-05-31 12:24:26 +02:00
Björn Schießle
a5b75d348f for external storages we never reach the path 'files', instead we need to leave the loop if no further parent exists 2013-05-31 12:24:21 +02:00
Björn Schießle
ae2ab015d9 if one public link share was found, we don't have to check it for the other folders 2013-05-31 12:24:15 +02:00
Björn Schießle
a8c3d51a49 check list of users with access to the file from the bottom to the top. This way we avoid calling getFileInfo() on every dir, which creates a lot of overhead, especially for external storages 2013-05-31 12:24:08 +02:00
Florin Peter
f9c9cceb30 fixed if fopen returns false typically on external storage 2013-05-31 12:23:25 +02:00
blizzz
acff4fc4fa Merge pull request #3543 from owncloud/fix_ldap_alternateintname
Fix ldap alternateintname
2013-05-30 07:54:48 -07:00
Arthur Schiwon
deeb1cfd50 Merge branch 'stable5' into fix_ldap_alternateintname 2013-05-30 14:15:38 +02:00
Arthur Schiwon
955eff8d87 LDAP: fix generation of alternate internal name on conflicts. Use also smaller number for better user experience on e.g. *DAV links 2013-05-30 14:14:43 +02:00
Morris Jobke
1b4d2e851d Merge pull request #3526 from owncloud/fix_ldap_doc_url
LDAP: fix help (doc) URL. Old one works, but leads to an outdated versio...
2013-05-30 04:16:10 -07:00
Florin Peter
1c49784f7f backport #3507 2013-05-30 00:40:30 +02:00
Michael Gapczynski
9a25f7b849 Organize conditionals in a better order 2013-05-29 13:25:19 -04:00
Michael Gapczynski
71cdd17df4 Only update metadata that has changed 2013-05-29 13:25:04 -04:00
Michael Gapczynski
3891a4cef9 Style fixes 2013-05-29 17:22:06 +02:00
Robin Appelman
0017753ec5 Cache mimetype icons 2013-05-29 17:22:00 +02:00
Arthur Schiwon
a4ef49c2be LDAP: fix help (doc) URL. Old one works, but leads to an outdated version 2013-05-29 14:07:47 +02:00
zafi
621d18f77d The "lost password" field depends on OC_USER_BACKEND_SET_PASSWORD
so it should only be visible for users with a supporting backend.
2013-05-28 13:17:07 +02:00
Florin Peter
0c5bd4e578 fix for undefined index 2013-05-28 10:56:48 +02:00
Florin Peter
54768402b6 fix for losing private key while being logged in and accessing a public link 2013-05-28 10:56:41 +02:00
Björn Schießle
7316d6f850 Merge pull request #3504 from owncloud/fix_enc_migration
fix migration old encryption -> new encryption
2013-05-27 08:29:58 -07:00
Florin Peter
daf5d47821 backport of #3495 2013-05-27 17:19:48 +02:00
Georg Ehrke
c872042616 fix https://github.com/owncloud/core/issues/3320 2013-05-27 17:07:45 +02:00
Georg Ehrke
0cf6e5693a add event.preventDefault to undelete function 2013-05-27 17:07:39 +02:00
Björn Schießle
9ac29cd122 Merge branch 'stable5' into fix_enc_migration 2013-05-27 14:28:26 +02:00
Florin Peter
55e4e054d6 added users for tests
reformat code to meet coding guidelines
2013-05-27 14:20:24 +02:00
Florin Peter
3cbe6b2d8b improved test
- fixed testPermanentDeleteFile sometimes failed
- speed optimization
- reformat code
2013-05-27 14:20:18 +02:00
Björn Schießle
087b21c913 legacyBlockDecryprt() needs to be public 2013-05-27 13:47:03 +02:00
Björn Schießle
09765ea27c make legacyDecrypt() private als always call legacyBlockDecrypt() from other classes 2013-05-27 12:21:39 +02:00
Björn Schießle
189d251c6a fix migration from old to new encryption 2013-05-27 12:02:27 +02:00
Roland Hager
07fb230cbe Fixing UPDATE error in filecache table when renaming files by calling move(). Add storage id to the where clause to avoid updating entries of other users. 2013-05-25 14:19:11 -04:00
Bart Visscher
faad2d0d69 Add check for Magic Quotes 2013-05-25 14:06:40 -04:00
Arthur Schiwon
c7d8cd9679 Merge branch 'backport_ldap_configurable_username_n_uuid' into stable5 2013-05-25 14:07:38 +02:00
Frank Karlitschek
6c53253ad6 preview of stable5 including the new encryption app 2013-05-25 12:12:07 +02:00
Frank Karlitschek
2018e94b41 increase version and add warning 2013-05-25 12:07:16 +02:00
Björn Schießle
e044260bc1 Merge pull request #3484 from owncloud/files_encryption_stable5
file encryption app backport master -> stable5
2013-05-24 14:09:50 -07:00
Florin Peter
12f5b5ce61 improved trashbin test again 2013-05-24 22:01:27 +02:00
Florin Peter
210ae9e5f7 improved trashbin test 2013-05-24 21:35:18 +02:00
Florin Peter
f164f43590 added files_encryption tests at first position 2013-05-24 20:04:51 +02:00
Florin Peter
9a25c39c36 fixed missing directory creation in files_trashbin 2013-05-24 20:04:21 +02:00
Björn Schießle
397dc3dcde fix first time encryption after app was enabled 2013-05-24 20:02:41 +02:00
Björn Schießle
8c235de826 no use the recoveryPassword var instead of accessing the POST array 2013-05-24 20:00:29 +02:00
Florin Peter
e7734d0c46 Merge branch 'stable5' into files_encryption_stable5 2013-05-24 19:40:23 +02:00
Florin Peter
1a638cd3a8 backport of #3271 2013-05-24 19:37:28 +02:00
Björn Schießle
890b7702ef port css for recovery passwd input to stable5 2013-05-24 18:04:23 +02:00
Björn Schießle
a4018ad4d7 handle recovery password 2013-05-24 17:57:39 +02:00
Björn Schießle
c6dc7993b6 enable files_encryption for testing 2013-05-24 14:59:12 +02:00
Björn Schießle
7b8f64d20f remove unneeded hooks 2013-05-24 14:54:47 +02:00
Björn Schießle
cb12cf8324 increase ownCloud version number to upgrade file cache table 2013-05-24 13:44:05 +02:00
Björn Schießle
3bd0141e6d backport file cache changes from master to stable5, needed for encryption app 2013-05-24 13:40:37 +02:00
Björn Schießle
89546bf90c add post hooks to share API, needed by the encryption app 2013-05-24 13:26:03 +02:00
Björn Schießle
c960cfcd55 add post hooks to share API, needed by the encryption app 2013-05-24 13:15:51 +02:00
Björn Schießle
a99676a73e backport trashbin: enable trashbin to handle encryption keys 2013-05-24 13:04:31 +02:00
Björn Schießle
8fa5f35e4f backport changes to share.php to enable the encryption app to get all users with access to a given file 2013-05-24 12:45:30 +02:00
Björn Schießle
c4b40af602 backport: enable admin to recover encrypted files 2013-05-24 12:42:08 +02:00
Björn Schießle
1c3ced26c1 add new files encryption app 2013-05-24 12:08:40 +02:00
Björn Schießle
33520c2985 move old files_encryption out of the way 2013-05-24 12:05:13 +02:00
Björn Schießle
365c77c52c fix var naming 2013-05-24 10:21:48 +02:00
Michael Gapczynski
0eb32bfc93 Switch to calling deleteAll via storage to avoid emitting delete hook 2013-05-23 20:43:08 -04:00
Michael Gapczynski
ae98c50b16 Remove user name addition to paths in deleteAll 2013-05-23 20:42:59 -04:00
Michael Gapczynski
c528fbb9bb Add data-dir attribute to home breadcrumb 2013-05-23 20:42:44 -04:00
Michael Gapczynski
0e4d45a56d Fix undefined variable for copying empty folders 2013-05-23 20:42:23 -04:00
Michael Gapczynski
a55a92752a Add support for copying/moving folders between storages, move isIgnoredDir() to Filesystem
Conflicts:
	lib/files/cache/scanner.php
2013-05-23 20:40:13 -04:00
Björn Schießle
df39e681b5 remove debug output 2013-05-23 16:16:17 +02:00
Björn Schießle
2ed0d6e1dc fix deletion of ssl root certificates 2013-05-23 16:13:48 +02:00
Michael Gapczynski
34fda272d6 RUNTIME_NOSETUPFS no longer exists, using tearDownFS() in public links instead 2013-05-22 18:21:39 -04:00
Robin Appelman
412f0962e7 Have the filecache updater testcase clean the filesystem properly 2013-05-22 15:04:39 -04:00
Jörn Friedrich Dreyer
74e475cf2d cleanup after people who don't test in ie 2013-05-20 13:00:32 +02:00
Robin Appelman
1291f36709 Set storage id for openstack swift backend 2013-05-17 18:26:57 -04:00
Michael Gapczynski
1284179589 Initialize collectionTypes variable as false 2013-05-17 15:29:38 +02:00
Florin Peter
75fd96878a only connect share hooks if installation OC is installed 2013-05-17 10:56:59 +02:00
Thomas Tanghus
f6dac667fd Add Compound property to avoid double escaping values. 2013-05-16 16:59:37 +02:00
Thomas Tanghus
197914480e StringProperty unittest 2013-05-16 16:58:50 +02:00
Thomas Tanghus
3a6181620a Add OC\VObject\StringProperty. Partial fix for owncloud/apps#762 2013-05-16 16:58:28 +02:00
Arthur Schiwon
41aef94c24 LDAP: fix display of numerical display names 2013-05-16 14:48:02 +02:00
Arthur Schiwon
0e3e3d15a1 LDAP: Implement clear mappings functionality 2013-05-16 14:47:52 +02:00
Arthur Schiwon
6573fdc717 LDAP: implement UUID and internal username override 2013-05-16 14:47:00 +02:00
Arthur Schiwon
0e2c3dc89e LDAP: better variable name 2013-05-16 14:46:53 +02:00
Arthur Schiwon
34c8fd5149 LDAP: implement r+w for new settings 2013-05-16 14:46:45 +02:00
Arthur Schiwon
55332fe1bb LDAP: add settings for UUID override 2013-05-16 14:46:39 +02:00
Arthur Schiwon
57339b725e LDAP: prepare settings for internal username attribute and clearing user mappings 2013-05-16 14:46:33 +02:00
Arthur Schiwon
c8d63e3c79 LDAP: Coypright info 2013-05-16 14:46:25 +02:00
Thomas Tanghus
7a1992a170 Merge pull request #3355 from owncloud/filepicker_escape_names
Escape file names and types in filepicker.
2013-05-15 05:08:58 -07:00
Thomas Tanghus
752a316a52 Escape file names and types in filepicker. 2013-05-15 01:31:53 +02:00
Björn Schießle
408aed3175 Merge pull request #3350 from owncloud/fix_history_template
fix history template, print_unescaped() needs to include closing tags
2013-05-14 12:18:16 -07:00
Björn Schießle
1282c33db4 fix history template, print_unescaped() needs to include closing tags 2013-05-14 20:06:53 +02:00
Björn Schießle
256e53ba68 touch() needs to be performed relative to user/files otherwise ownCloud doesn't execute the hooks which means that etags aren't updated properly; backport of https://github.com/owncloud/core/pull/3303 2013-05-14 11:34:40 +02:00
Frank Karlitschek
2020f35c6a 5.0.6 2013-05-14 08:14:24 +02:00
Frank Karlitschek
cc495ed6d8 backport https://github.com/owncloud/core/pull/3329 2013-05-13 03:23:07 +02:00
Lukas Reschke
f2911e76bc Add requesttoken to guest view
Should fix #3321
2013-05-13 14:54:18 +02:00
Frank Karlitschek
726350ea97 5.0.6 RC2 2013-05-12 23:59:31 +02:00
Lukas Reschke
9a53d50e16 Merge pull request #3290 from owncloud/config-data
Move config data to template
2013-05-12 11:41:42 +02:00
Jörn Friedrich Dreyer
bc767f1899 don't emit rename hooks on partial file renames 2013-05-10 15:19:02 +02:00
Jörn Friedrich Dreyer
35b1f40ba4 rename isIgnoredFile to isPartialFile, remove check of blacklisted files in isPartialFile, correct usage of isPartialFile and isFileBlacklisted 2013-05-10 15:18:57 +02:00
Björn Schießle
a23e8833c3 Merge pull request #3282 from owncloud/fix_etag_update
Fix etag update
2013-05-08 13:58:24 -07:00
Björn Schießle
8875bae0c3 don't call correctFolder() in touchHook, it will be called later in the writeUpdate() 2013-05-08 22:57:08 +02:00
Robin Appelman
144977352d Cache: only look for child entires when doing a move operation when moving a folder 2013-05-08 22:35:38 +02:00
Björn Schießle
35da6f25b1 rename a file if it gets restored so that it no longer exists as a version. Otherwise it can happen that the expire() function removes all other versions so that we end up with only one version which is exactly the same as the original file 2013-05-08 16:32:29 +02:00
Björn Schießle
c43ec33ecb update etag for for the touched file 2013-05-08 15:49:45 +02:00
Björn Schießle
08561da5b6 touch file relative to users file folder, otherwise the hooks will be ignored 2013-05-08 15:05:03 +02:00
Bart Visscher
d6fe8f213d Merge pull request #3141 from owncloud/fix_2553
Cache: mount user mountpoints to make sure that $data/$user/ exists before accessi...
2013-05-08 05:05:21 -07:00
Morris Jobke
dd8c1f7759 Merge pull request #3244 from owncloud/allow_set_quota_to_zero
allow to set quota to zero, issue #2696
2013-05-07 01:37:10 -07:00
Björn Schießle
7ff26af107 allow to set quota to zero, issue #2696 2013-05-06 11:43:50 +02:00
blizzz
44fedae69f Merge pull request #3143 from owncloud/ldap_guid_check
LDAP: do not reset UUID attribute setting when guid is detected
2013-05-06 01:16:32 -07:00
Frank Karlitschek
ffb91cdd66 5.0.6 RC 2013-05-05 23:35:20 +02:00
Lukas Reschke
1dfb757593 Merge pull request #3245 from owncloud/use-$view
Use the internal ownCloud view
2013-05-06 18:23:58 +02:00
Michael Gapczynski
c0047b9079 Fix #2816 renaming shared files 2013-05-06 11:40:55 -04:00
Arthur Schiwon
0d5c82cd2a LDAP: cachekey in set method needs to match with that one from get 2013-05-03 16:05:46 +02:00
Bernhard Posselt
e3c7386be4 respect format output 2013-05-03 15:39:51 +02:00
Bernhard Posselt
5db33b47c2 logout before output to not run into header already sent problems 2013-05-03 15:39:45 +02:00
Bernhard Posselt
6c26143516 fix bug that would only return error responses for 3rdparty apps 2013-05-03 15:39:35 +02:00
Robin Appelman
9c605c3fd1 Dont task external storages with creating their own root 2013-05-03 15:11:56 +02:00
Arthur Schiwon
0639634782 LDAP: remove restriction from group names to be in line with core behaviour again 2013-05-03 15:07:10 +02:00
blizzz
7d5b8e85ac Merge pull request #3197 from owncloud/fix_userlist
Fix retrieval of users with multiple backends
2013-05-03 04:48:51 -07:00
Arthur Schiwon
c99b667021 Fix retrieval of users with multiple backends 2013-04-30 19:51:28 +02:00
Lukas Reschke
c08c22aa54 It's a class 2013-04-29 14:28:49 +02:00
Lukas Reschke
cbd216414a Remove uneeded onclick handler 2013-04-29 14:28:43 +02:00
Lukas Reschke
5428086204 Move onclick handler 2013-04-29 14:28:33 +02:00
Robin Appelman
b38a1adf2d Files: Fix XSS when creating dropshadow 2013-04-28 19:33:54 +02:00
Tom Needham
a5978ad544 Correct the api response when both a shipped app and/or a third party app fail 2013-04-28 11:56:31 +01:00
Tom Needham
b24e6f11ba Fix typo 2013-04-28 11:53:30 +01:00
Tom Needham
d642480c55 Code style for ocs/routes.php 2013-04-28 11:53:23 +01:00
Tom Needham
556ea61f8e Change app identifier for core api routes 2013-04-28 11:53:17 +01:00
Tom Needham
3bcd10a97c Use correct variable when checking auth 2013-04-28 11:53:08 +01:00
Arthur Schiwon
54a3038dc0 Cache Test: set datadir to temporary location, otherwise initmountpoints will access to productive location 2013-04-26 22:14:38 +02:00
Arthur Schiwon
a6ece109ba LDAP: do not reset UUID attribute setting when guid is detected 2013-04-26 15:02:05 +02:00
Arthur Schiwon
4c008a8f92 Cache: mount user mountpoints to make sure that // exists before accessing it. Fixes #2553 and #2374 2013-04-26 13:20:12 +02:00
Morris Jobke
2030037301 modify password clone to password type right on submit to prevent the browser remind the content 2013-04-26 11:05:07 +02:00
Morris Jobke
794ed99927 turn off autocompletion for password field
refs #2632
2013-04-26 11:04:54 +02:00
Morris Jobke
65c7746504 Merge pull request #3115 from owncloud/backport-3109-stable5-2
backport #3109 to stable5 - changed *.po and *.pot have been ignored
2013-04-25 01:51:38 -07:00
Jenkins for ownCloud
faa51bd002 backport #3109 to stable5 - changed *.po and *.pot have been ignored 2013-04-24 22:37:41 +02:00
Robin Appelman
d9f10e2c26 Files: fix the order fileactions are computed for a file 2013-04-24 19:58:43 +02:00
Morris Jobke
8d92aaf3b7 fix wrong shared icon description
fix #2928

translation of string "Shared" has to be marked as located in "files" for the translation extractor
2013-04-24 17:51:50 +02:00
Lukas Reschke
9894145f8d Allow loading of external media ressources 2013-04-24 17:20:00 +02:00
Florian Scholz
deba972093 - xframe restriction configurable now 2013-04-24 17:02:58 +02:00
Daniel Molkentin
41dc1fee68 Merge pull request #3100 from owncloud/ensure_index_php
Fix for #3049(cherry picked from commit ff6fb0906b)
2013-04-24 16:23:21 +02:00
Bernhard Posselt
72ea678c0e use variable instead of relative path to file 2013-04-24 16:12:23 +02:00
Bernhard Posselt
ff49824312 check if there is a default/ folder in the theme directory if no theme exists 2013-04-24 16:12:10 +02:00
Lukas Reschke
bb3d39f728 Disallow URLs containing a @ 2013-04-23 21:24:05 +02:00
Robin Appelman
a7f1269f92 Files: also check if the source path is valid when doing a rename or copy operation 2013-04-23 21:13:29 +02:00
Arthur Schiwon
7ae0e38c4f LDAP: reset user/group-config association only after exists-check, may performance in some cases 2013-04-23 19:20:54 +02:00
Thomas Tanghus
b626e514f7 Merge pull request #3076 from owncloud/manually_backport_insertIfNotExist
Backport #2567 OC_DB:insertIfNotExist()
2013-04-22 13:48:55 -07:00
Thomas Tanghus
3e8beddfe3 Backport #2567 2013-04-22 21:12:30 +02:00
Jan-Christoph Borchardt
18d515450a remove unnecessary border from navigation, looked strange with scrollbar and pushed the text over 1px 2013-04-22 16:17:22 +02:00
Jan-Christoph Borchardt
969bcb3ced make textarea inherit ownCloud font instead of using monospace 2013-04-22 16:16:52 +02:00
Bart Visscher
1d255ebf70 No need to strip slashes, json_decode handles that for us 2013-04-19 15:08:46 +02:00
Frank Karlitschek
9aae21db79 5.0.5 2013-04-10 02:14:16 +02:00
Jan-Christoph Borchardt
536117da2a apply navigation hover effect directly to img and span, cleaner code 2013-04-18 10:03:14 +02:00
Brice Maron
29054c27c9 Warn when we do an upgrade 2013-04-17 22:03:05 +02:00
Jan-Christoph Borchardt
207bf4bffe additional comments 2013-04-17 19:44:20 +02:00
Jan-Christoph Borchardt
4e11814a0c fix navigation hover effect, documentation 2013-04-17 19:44:07 +02:00
Thomas Tanghus
32667f8c38 Remove not null constraint. Fix #2976 2013-04-17 19:18:17 +02:00
Thomas Müller
1c06bec262 Merge pull request #2967 from Mirodin/patch-6
Update de_DE.php
2013-04-17 02:29:34 -07:00
Thomas Müller
a82965edf2 Merge pull request #2965 from Mirodin/patch-5
Update de.php
2013-04-17 02:29:02 -07:00
Mirodin
76f12567be Update de_DE.php 2013-04-17 11:54:56 +03:00
Mirodin
d7cbf45d15 Update de.php
Fixed a translation issue
2013-04-17 11:53:17 +03:00
Bart Visscher
05a2f31352 Merge pull request #2960 from owncloud/always_load_file_cache_hooks_first_stable5
always connect file cache updater hooks first
2013-04-17 00:32:45 -07:00
Jörn Friedrich Dreyer
811d649262 always connect file cache updater hooks first 2013-04-17 08:21:33 +02:00
Frank Karlitschek
6e32fc1db7 Merge pull request #2945 from owncloud/improved_quota_calc
Improved free space calculation for trash and versions
2013-04-16 19:55:32 -07:00
Björn Schießle
e718a728c4 adapt free space calculation to the way it is done for the trash bin 2013-04-16 13:52:46 +02:00
Björn Schießle
a065ae5db2 improved free space calculation if no quota is set, discussed in #2936 2013-04-16 13:51:53 +02:00
Bernhard Posselt
623db8549e also show black background on links that are active, fixes the news app that doesnt show the bg for folders correctly 2013-04-15 21:07:50 +02:00
Jan-Christoph Borchardt
16ef7c62dc Merge pull request #2931 from owncloud/info_message_trash_bin
write a info message to the log if a file gets removed from the trash bin automatically
2013-04-15 11:16:43 -07:00
Björn Schießle
0978ebd195 add explenation of the expire function to the apps description 2013-04-15 11:42:50 +02:00
Björn Schießle
1ddfefed3f write a info message to the log if a file gets removed from the trash bin automatically 2013-04-15 10:34:38 +02:00
Arthur Schiwon
16b62c697f allow Storages to join MountPoint initialization 2013-04-15 10:28:14 +02:00
Jan-Christoph Borchardt
f70b1c1b0d add .disabled class so it can be used for simple a buttons as well 2013-04-14 22:07:07 +02:00
raghunayyar
b400c29944 Add span tag while enabling or disbling apps as well. 2013-04-13 20:08:25 +05:30
Lukas Reschke
86d8b831f2 Add a name to the version parameter
Without an additional name it's nearly impossible to write positive security model based rules since the parameter name isn't defined.
2013-04-13 15:49:15 +02:00
Thomas Mueller
5fbb8b374d more accurate safe_mode check - refs #2258 2013-04-13 01:16:45 +02:00
Bernhard Posselt
0a3e87c890 used oc version 5.0.3 2013-04-13 01:15:35 +02:00
Bernhard Posselt
2220802cdd added yet another test for the verion compare check due to mail 2013-04-13 01:15:35 +02:00
Jan-Christoph Borchardt
0ff7aa4436 add styles for disabled input fields 2013-04-12 19:14:09 +02:00
Jan-Christoph Borchardt
5e817584db use proper sans-serif font-stack 2013-04-12 19:10:20 +02:00
Bernhard Posselt
fbcb4b2673 Merge pull request #2899 from owncloud/stable5-backport-buttonfix
dont overwrite background image when hovering over button
2013-04-12 09:44:13 -07:00
Bernhard Posselt
edae196f34 dont overwrite background image when hovering over button 2013-04-12 15:41:37 +02:00
Bernhard Posselt
11dcc29c0c Merge pull request #2867 from owncloud/cleanup_after_delUser
Cleanup database after del user
2013-04-11 05:00:44 -07:00
Björn Schießle
d068325bdb cleanup the trash bin tables in the database after a user was deleted 2013-04-11 12:37:52 +02:00
Björn Schießle
6dc66e14fb remove used space for versions from db is a user was deleted 2013-04-11 12:36:08 +02:00
raghunayyar
30d5c70180 Using max-width instead of width for filename. 2013-04-11 13:55:31 +05:30
raghunayyar
e9c3caeb9b Adds a fixed width to the filename to prevent horizontal scroll. 2013-04-11 13:55:11 +05:30
raghunayyar
9a0344f1d5 The Opacity for the navigation loads fine for icon and App name. 2013-04-11 11:00:35 +05:30
raghunayyar
33b27362ff Long Application Names are ellipsis correctly. 2013-04-11 10:59:46 +05:30
Frank Karlitschek
15c50017cc 5.0.5 RC1 2013-04-09 20:04:37 +02:00
Frank Karlitschek
c43e33cdf5 5.0.4 2013-04-09 18:01:26 +02:00
Robin Appelman
ef1481c7bb Fix touch for creating new files 2013-04-10 14:52:56 +02:00
Robin Appelman
892d85556b Add the quota change listeners to newly added user entries in the user list 2013-04-10 14:50:42 +02:00
Frank Karlitschek
5fb891e20a Merge pull request #2828 from owncloud/trashbin_fixes
Trashbin fixes
2013-04-10 01:07:17 -07:00
Frank Karlitschek
c241985f04 5.0.4 RC 2013-04-09 16:59:03 +02:00
Lukas Reschke
9a4fe09979 Use a more random source... 2013-04-10 00:15:44 +02:00
Bart Visscher
e26cdc4cdd Suppress the notice from the nullbyte check 2013-04-09 22:20:48 +02:00
Björn Schießle
317b00988a size of the trash bin could be incorrect, remove it for all users to enforce a recalculation during next usage. 2013-04-09 15:27:19 +02:00
Thomas Mueller
9159d55639 fixes #2743 - use public OC_User::getDisplayName instead of OC_User::determineDisplayName 2013-04-09 15:23:35 +02:00
Thomas Mueller
06ab314c15 fixes #2125 - the warning is now displayed with a disabled button 2013-04-09 15:18:19 +02:00
Björn Schießle
f26a4e0b80 only add filesize to trashbin size if the file was moved to the trash bin successfully 2013-04-09 15:16:15 +02:00
Robin Appelman
2c3d66c776 Users: fix "Other.." quota option for the default quota 2013-04-09 15:15:08 +02:00
Frank Karlitschek
aef66e06b3 Merge pull request #2818 from owncloud/fix_versioncheck
fix versioning check
2013-04-09 05:35:46 -07:00
kondou
67a84ad487 Fix #2730
Swap OC.dialogs.alert()'s parameters, so Error is shown
as its title.
2013-04-09 14:20:23 +02:00
Frank Karlitschek
440148aa1f fix versioning check 2013-04-09 13:13:52 +02:00
OpenLarry
b35148bbb6 fixes #2679 2013-04-09 13:02:35 +02:00
Lukas Reschke
5ef8762886 Merge pull request #2786 from owncloud/disable-archive-app
manually disable archive app for stable5 to fix upgrade problems
2013-04-09 03:04:46 -07:00
Thomas Mueller
b52666567a fixes #2792 - only touch if writable 2013-04-09 10:52:06 +02:00
Bernhard Posselt
1e580bf04b manually disable archive app for stable5 to fix upgrade problems 2013-04-08 15:53:43 +02:00
Bart Visscher
2a5599b3e0 Merge pull request #2614 from eMerzh/fix_internet_check
Improve internet connection check with proxy
2013-04-06 09:50:40 -07:00
Bernhard Posselt
f82799cf7d Merge pull request #2741 from owncloud/fix_2650
Make FileCache upgrade more robust, fixes #2650
2013-04-05 12:22:59 -07:00
root
e6d286b449 Proper CSS comment
CSS comments don't work like that.
2013-04-05 17:13:17 +02:00
Arthur Schiwon
dc3a7e09af Make FileCache upgrade more robust, fixes #2650 2013-04-05 11:27:08 +02:00
Lukas Reschke
5add001373 Unescape the update hint
Backport of 8000f9db74ef2890cac74a34132c2550e4be6f11, fixes #2676
2013-04-05 00:41:08 +03:00
Bernhard Posselt
5317e7071e Merge pull request #2680 from owncloud/fix_2666
PostgreSQL compatibility, fixes #2666
2013-04-03 13:06:40 -07:00
Arthur Schiwon
f5592cc88e Typo, fixes #2690 2013-04-03 20:06:33 +02:00
Arthur Schiwon
09f11c2679 PostreSQL compatibility, fixes #2666 2013-04-03 13:04:38 +02:00
Frank Karlitschek
db48f5302a 5.0.3 2013-04-03 00:53:09 +02:00
Bernhard Posselt
4cd4bbd489 Merge pull request #2665 from owncloud/backport-2275-app-styles
manually backport #2275 app styles to stable
2013-04-02 14:24:00 -07:00
Bernhard Posselt
7b42c20180 Merge pull request #2595 from owncloud/fix_part_file_ignoring_stable5
Fix part file ignoring stable5
2013-04-02 14:01:17 -07:00
Jan-Christoph Borchardt
835df6c177 manually backport #2275 app styles to stable 2013-04-02 22:20:46 +02:00
root
5268aadb62 Backport PR #2622 2013-04-02 21:13:09 +02:00
Frank Karlitschek
d7dccfb648 5.0.3 RC1 2013-04-02 19:14:24 +02:00
Frank Karlitschek
cc204a608a Merge pull request #2656 from owncloud/fix_2642
fix upgrade error for instances not upgraded from 4.5
2013-04-02 09:34:29 -07:00
Arthur Schiwon
22c8194cc8 fix upgrade error for instances not upgraded from 4.5 2013-04-02 16:25:12 +02:00
Frank Karlitschek
8231f657d9 Merge pull request #2641 from owncloud/fix_2612
Key must use less then 767 bytes long
2013-04-02 02:58:57 -07:00
Arthur Schiwon
4f9f5a41b1 Key must use less then 767 bytes long 2013-04-02 11:29:41 +02:00
Frank Karlitschek
5944ee6ebe 5.0.2 2013-04-02 11:23:47 +02:00
VicDeo
e1b6574ce7 Merge pull request #2625 from owncloud/fix_namespace_in_autoloader_stable5
Fix namespace in autoloader stable5
2013-03-31 06:10:47 -07:00
VicDeo
c16860e648 Remove space before parethesis 2013-03-31 16:51:54 +04:00
Lukas Reschke
d4a492d321 Show a warning in the installer if the used PHP version is vulnerable to the NULL Byte attack 2013-03-31 16:51:29 +04:00
Lukas Reschke
a004266b7c Check if the installed PHP version has a fix for the nullbyte vulnerability 2013-03-31 16:51:12 +04:00
Thomas Mueller
da96d1adb0 some basic unit test for loading classes 2013-03-31 16:50:29 +04:00
VicDeo
ed39e47c9d Remove leading and trailing backslashes in classname. Ref #2310 2013-03-31 16:49:43 +04:00
Thomas Tanghus
b9213cf451 User list: Keep array of available groups. Should fix #873 2013-03-29 20:45:35 +01:00
Brice Maron
f308b0e321 Improve internet connection check with proxy 2013-03-29 15:37:39 +00:00
Thomas Mueller
eeebf21fce fixes #1463 - file size is now displayed correctly in IE8 2013-03-29 13:50:53 +01:00
Thomas Mueller
75d944f96a fixes #1461 2013-03-29 13:50:53 +01:00
Jörn Friedrich Dreyer
9bfdfdf071 supress write hook for .part files 2013-03-28 12:21:00 +01:00
Jörn Friedrich Dreyer
2bb22d3aab ignore files in scanFile instead of scan to catch all occurences.
Conflicts:
	lib/files/cache/scanner.php
2013-03-28 12:21:00 +01:00
blizzz
4742d0eb94 Merge pull request #2602 from owncloud/fix_share_with_displayname
Fix share with displayname
2013-03-27 14:54:16 -07:00
Arthur Schiwon
c901709d53 Whitespaces 2013-03-27 21:18:19 +01:00
Arthur Schiwon
84bc4c175a Share Dialog: show Displayname instead of internal name 2013-03-27 21:17:58 +01:00
blizzz
4d50a21eb4 Merge pull request #2558 from owncloud/fix_cache_upgrade
Fix cache upgrade
2013-03-27 11:10:22 -07:00
blizzz
37971133f1 Merge pull request #2596 from owncloud/fix_files_external_displayname
Files External: show display names instead of internal user names in Set...
2013-03-27 11:06:49 -07:00
blizzz
c962f9db47 Merge pull request #2593 from owncloud/fix_userlist_append_displayname
Users: use DisplayName in the Display Name col when appending users
2013-03-27 10:47:52 -07:00
Jan-Christoph Borchardt
6333036a1a Merge pull request #2599 from owncloud/backport-2515-nav-scrollbar
Backport 2515 nav scrollbar
2013-03-27 09:19:06 -07:00
yannickoo
73758c1f78 Fixed typo 2013-03-27 17:13:06 +01:00
yannickoo
7e9e94d8d7 No Scrolling for more than approximately 10 Applications 2013-03-27 17:13:04 +01:00
Arthur Schiwon
07d0245336 Files External: show display names instead of internal user names in Settings UI 2013-03-27 14:33:35 +01:00
Arthur Schiwon
0bbac66ec5 Users: use DisplayName in the Display Name col when appending users 2013-03-27 14:05:00 +01:00
Arthur Schiwon
4411de0dbf Cache: on equal mtime also for equal size before keeping ETag, at least makes Unit Test happy 2013-03-26 23:42:00 +01:00
Thomas Mueller
871bbbba8a prevent to fire delete ajax a second time.
Before the click on a single file delete icon fired two different handlers - one of them is for multiple deletion only
2013-03-26 22:56:42 +01:00
Arthur Schiwon
4384cf70da Cache: Do not overwrite ETag when file did not change 2013-03-26 16:03:40 +01:00
Thomas Müller
e0cf61dfc8 Merge pull request #2272 from owncloud/fix_json_encoded_pubic_download_oc5
let public link download handle json encoded file lists [oc5]
2013-03-26 01:55:40 -07:00
Björn Schießle
2387fbd9dd Merge pull request #2562 from owncloud/update_mtime_after_sync
listen to touch hook to update the mtime after sync
2013-03-26 01:41:41 -07:00
Arthur Schiwon
0b6b5e807c Only prepare an SQL statement once. 2013-03-25 21:46:50 +01:00
Arthur Schiwon
b2b78228d6 Add PHPDoc 2013-03-25 21:45:55 +01:00
Arthur Schiwon
2e5829445f Adjust to Icewind's fix 2013-03-25 21:45:10 +01:00
Robin Appelman
e63a12a481 Cache: fix property path for getting legacy etag 2013-03-25 21:43:51 +01:00
Robin Appelman
56302ff9cf Port Icewind's fix I 2013-03-25 21:43:49 +01:00
Arthur Schiwon
707de3e644 Add Index to properties table for better performance on upgrade 2013-03-25 17:54:45 +01:00
Arthur Schiwon
19a65f6c3f Change LIMIT in DB query respectively remove where not necessary 2013-03-25 17:54:10 +01:00
Björn Schießle
011ab3a11c listen to touch hook to update the mtime after sync 2013-03-25 16:26:17 +01:00
Arthur Schiwon
ad62d89f2b Remove Debug output 2013-03-25 14:23:46 +01:00
Jörn Friedrich Dreyer
9b84c50f15 Merge pull request #2533 from owncloud/fix_sharing_updater
fix shared updated for rename action
2013-03-25 05:13:57 -07:00
Thomas Müller
01ffa519d5 Fixing author and copyright 2013-03-24 19:17:56 +01:00
Thomas Mueller
fe73b5919d some more test cases & fix on file name generation with index 2013-03-24 19:17:56 +01:00
Thomas Mueller
5ad7eb080e adding extension to slugified physical path 2013-03-24 19:17:55 +01:00
Thomas Müller
2ce8329503 Merge pull request #2531 from Mirodin/patch-5
Update de.php
2013-03-24 11:14:33 -07:00
Thomas Müller
83e5383912 Merge pull request #2532 from Mirodin/patch-6
Update de_DE.php
2013-03-24 11:13:25 -07:00
Bernhard Posselt
660d204cbf Merge pull request #2525 from owncloud/fix_db_queries
add backticks around table names
2013-03-23 05:39:01 -07:00
Bernhard Posselt
d091db4bc7 Merge pull request #2474 from owncloud/fix_2299
skip update if the recipient is the same user as the owner
2013-03-23 05:35:50 -07:00
Bernhard Posselt
d61e820285 Merge pull request #2538 from eMerzh/improve_pbm_detect
Improve detection of installations errors
2013-03-23 05:31:19 -07:00
Brice Maron
85613cc66c Improve detection of installations errors 2013-03-23 12:19:43 +01:00
Arthur Schiwon
0fb9cc3c25 Upgrade FileCache on ownCloud upgrade for all users with files 2013-03-22 23:33:40 +01:00
Björn Schießle
76e5ffaa92 the old path no longer exists after rename, update the parent folder instead 2013-03-22 16:20:40 +01:00
Mirodin
9a26b1e0a6 Update de_DE.php
Fixed some translation issues
2013-03-22 15:33:52 +01:00
Mirodin
bfd69dc8e0 Update de.php
Fixed some translation issues
2013-03-22 15:28:20 +01:00
Arthur Schiwon
0d075df15e Performance: prepare queries only once 2013-03-22 13:36:31 +01:00
Arthur Schiwon
c82f43ee55 Fix lost ETag on Cache Upgrade 2013-03-22 13:23:43 +01:00
Björn Schießle
0eaf141528 add backticks around table names 2013-03-22 12:47:43 +01:00
Arthur Schiwon
ee0dab1b13 LDAP: fix wrong return value 2013-03-20 13:17:40 +01:00
Björn Schießle
98ee292c93 fix indention 2013-03-20 12:58:39 +01:00
Björn Schießle
4ff5658475 skip update if the recipient is the same user as the owner, otherwise we run in a infinite loop for group shares 2013-03-20 12:45:24 +01:00
Thomas Mueller
7de540b8ee using rtrim 2013-03-19 17:00:48 +01:00
Thomas Mueller
9a41453254 fixes #2081 2013-03-19 17:00:35 +01:00
Jörn Friedrich Dreyer
707b319157 Merge pull request #2449 from owncloud/fix_npe
fix npe when createStorage() returns null
2013-03-19 07:48:54 -07:00
Bernhard Posselt
f7911412e0 Merge pull request #2444 from owncloud/fix_ldap_issues
Fix ldap issues
2013-03-19 06:20:33 -07:00
Jörn Friedrich Dreyer
1cb3872df0 fix npe when createStorage() returns null 2013-03-19 14:18:44 +01:00
Arthur Schiwon
432fb55d91 LDAP: specify appid when selecting from appconfig 2013-03-19 13:39:52 +01:00
Arthur Schiwon
98c5d10bb5 LDAP: remove unnecessary func call, was a leftover from earlier refactor 2013-03-19 13:29:09 +01:00
Thomas Tanghus
84a2be1aad Backport #2440 js parameter. 2013-03-19 13:13:11 +01:00
Thomas Tanghus
9e383db75b User list: Avoid dupes and better sorting. Fix #2420 2013-03-19 12:59:32 +01:00
Arthur Schiwon
c12b30f7a2 LDAP: check first whether group exists in this backend before doing other operations 2013-03-19 11:52:35 +01:00
Arthur Schiwon
5bf111e75f LDAP: check whether user exists for before trying to determine displayname 2013-03-19 11:16:57 +01:00
Arthur Schiwon
f42d98edab LDAP: avoid irritating log output 2013-03-19 00:23:59 +01:00
Arthur Schiwon
d392aa81c7 LDAP: user exists check on getHome, otherwise check will be performed with wrong configs on a multi LDAP server setup. 2013-03-19 00:23:35 +01:00
Frank Karlitschek
532e5463db backport https://github.com/owncloud/core/pull/2411 2013-03-17 22:17:24 +01:00
Robin Appelman
cfea3ce2d7 Cache: better rename hook for cache updater 2013-03-17 14:16:13 +01:00
Robin Appelman
2c76ee1c8b Close sessions when doing background jobs 2013-03-17 02:25:21 +01:00
Michael Gapczynski
9a2c1cbcc3 Merge pull request #2384 from owncloud/error-handling-upgrade-backport
Backport add error handling to the file cache upgrade
2013-03-16 13:17:01 -07:00
Michael Gapczynski
e6616ed758 Add error handling to the file cache upgrade 2013-03-16 15:22:27 -04:00
Ceri Davies
b51b41468d Correct emails when folders are shared.
itemType is never "dir"; it's either "file" or "folder".
2013-03-15 12:43:22 +01:00
Frank Karlitschek
6f86802a48 Merge pull request #2348 from owncloud/fix_version_db_query
Fix db query in versions app, add backticks
2013-03-15 03:37:35 -07:00
Björn Schießle
0c6c175d62 remove backticks around table names 2013-03-15 11:24:13 +01:00
Brice Maron
885b81ba23 Add backtick for trash app to prevent pg errors 2013-03-15 11:19:02 +01:00
Björn Schießle
fc86815a2c add backtick for db queries to prevent postgresql errors 2013-03-15 11:06:51 +01:00
Björn Schießle
6ca2abc108 create new version if the same file is uploaded again over the web interface, approved in #2317 2013-03-15 10:47:19 +01:00
Björn Schießle
0fe2f81a0c create new version if the same file is uploaded again over the web interface 2013-03-15 10:44:27 +01:00
Bernhard Posselt
2cd52e52c8 Merge pull request #2294 from owncloud/use_display_name_in_mail
use display name as sender for private link mails
2013-03-14 05:22:45 -07:00
Björn Schießle
d06fec658c use display name as sender for private link mails 2013-03-14 11:48:04 +01:00
Bernhard Posselt
049329588f Merge pull request #2276 from owncloud/fix_sharing_hooks_oc5
listen to the pre delete hook in the sharing app [oc5]
2013-03-13 10:16:14 -07:00
Jörn Friedrich Dreyer
09d3b9ef26 Merge pull request #2278 from owncloud/fix_2267_master
use OC_DB instead of MDB2
2013-03-13 10:09:39 -07:00
Björn Schießle
92ce2bf89b fix for #2267, use OC_DB instead of MDB2 2013-03-13 16:51:41 +01:00
Björn Schießle
ca93f6e1de don't show share action for the Shared folder, approved pull request #2265 2013-03-13 16:26:20 +01:00
Björn Schießle
d166471a46 we need to listen to the pre delete hook, otherwise the file is already gone 2013-03-13 15:36:02 +01:00
Björn Schießle
896c56996e let public link download handle json encoded file lists 2013-03-13 11:40:46 +01:00
Arthur Schiwon
6017ca5ddd LDAP: compatibility with Novell eDirectory UUID 2013-03-12 20:16:09 +01:00
Thomas Mueller
eedc1e76db enable UTF-8 charset on mssql
disable MDB2_PORTABILITY_EMPTY_TO_NULL for mssql to allow insert of empty string to no null fields
2013-03-12 20:01:40 +01:00
Thomas Mueller
510cbc4ff9 write error message to log file in case insert to file cache failed - took hours to find that the insert failed :-( 2013-03-12 20:01:40 +01:00
Thomas Mueller
9b9497bedf fixing various filesystem/storage unit tests on windows
fixing copy operation on mapper
2013-03-12 19:57:56 +01:00
Thomas Mueller
8846edd919 skip archive tests for now 2013-03-12 19:57:42 +01:00
Thomas Mueller
253f7ec932 adding //IGNORE to iconv to prevent nasty php warnings 2013-03-12 19:57:28 +01:00
Thomas Mueller
8bafcd1414 slug generates uniqid in case the file/folder name contains not one single valid character 2013-03-12 19:56:44 +01:00
Thomas Mueller
40bb805b83 indexed slug should be created based on logic path 2013-03-12 19:56:33 +01:00
icewind1991
00030a6c24 Merge pull request #2248 from otetard/bugfix/fix-public-link-file-sharing
Fix file sharing via public link for one particular file.
2013-03-12 11:49:08 -07:00
Olivier Tétard
2afece459a Fix file sharing via public link for one particular file.
Fix OC_Files::get() to not return the first character of the filename
if only one file is requested.
2013-03-12 11:53:41 +01:00
494 changed files with 36904 additions and 6274 deletions

29
.gitignore vendored
View File

@@ -7,15 +7,25 @@ apps/inc.php
3rdparty
# ignore all apps except core ones
apps/*
!apps/files
!apps/files_encryption
!apps/files_external
!apps/files_sharing
!apps/files_trashbin
!apps/files_versions
!apps/user_ldap
!apps/user_webdavauth
/apps*/*
!/apps/files
!/apps/files_encryption
!/apps/files_external
!/apps/files_sharing
!/apps/files_trashbin
!/apps/files_versions
!/apps/user_ldap
!/apps/user_webdavauth
/apps/files_external/3rdparty/irodsphp/PHPUnitTest
/apps/files_external/3rdparty/irodsphp/web
/apps/files_external/3rdparty/irodsphp/prods/test
/apps/files_external/3rdparty/irodsphp/prods/tutorials
/apps/files_external/3rdparty/irodsphp/prods/test*
# ignore themes except the README
/themes/*
!/themes/README
# just sane ignores
.*.sw[po]
@@ -73,3 +83,4 @@ data-autotest
/tests/coverage*
/tests/autoconfig*
/tests/autotest*
/l10n/.tx/

View File

@@ -32,5 +32,8 @@ RewriteRule ^remote/(.*) remote.php [QSA,L]
AddType image/svg+xml svg svgz
AddEncoding gzip svgz
</IfModule>
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
AddDefaultCharset utf-8
Options -Indexes

View File

@@ -8,7 +8,7 @@ OCP\JSON::callCheck();
// Get data
$dir = stripslashes($_POST["dir"]);
$files = isset($_POST["file"]) ? stripslashes($_POST["file"]) : stripslashes($_POST["files"]);
$files = isset($_POST["file"]) ? $_POST["file"] : $_POST["files"];
$files = json_decode($files);
$filesWithError = '';

View File

@@ -35,7 +35,7 @@ $dir = $_GET["dir"];
$files_list = json_decode($files);
// in case we get only a single file
if ($files_list === NULL ) {
if (!is_array($files_list)) {
$files_list = array($files);
}

View File

@@ -3,7 +3,13 @@
// only need filesystem apps
$RUNTIME_APPTYPES = array('filesystem');
$dir = '/';
if (isset($_GET['dir'])) {
$dir = $_GET['dir'];
}
OCP\JSON::checkLoggedIn();
// send back json
OCP\JSON::success(array('data' => \OCA\files\lib\Helper::buildFileStorageStatistics('/')));
OCP\JSON::success(array('data' => \OCA\files\lib\Helper::buildFileStorageStatistics($dir)));

View File

@@ -10,6 +10,7 @@ OCP\JSON::checkLoggedIn();
// Load the files
$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : '';
$dir = \OC\Files\Filesystem::normalizePath($dir);
$doBreadcrumb = isset( $_GET['breadcrumb'] ) ? true : false;
$data = array();

View File

@@ -60,7 +60,16 @@ if($source) {
exit();
}
$ctx = stream_context_create(null, array('notification' =>'progress'));
$contextArray = array(
'http' => array(
'timeout' => 10,
'follow_location' => false, // Do not follow the location since we can't limit the protocol
),
'ssl' => array(
'disable_compression' => true
)
);
$ctx = stream_context_create($contextArray, array('notification' =>'progress'));
$sourceStream=fopen($source, 'rb', false, $ctx);
$target=$dir.'/'.$filename;
$result=\OC\Files\Filesystem::file_put_contents($target, $sourceStream);
@@ -79,13 +88,15 @@ if($source) {
if(\OC\Files\Filesystem::file_put_contents($dir.'/'.$filename, $content)) {
$meta = \OC\Files\Filesystem::getFileInfo($dir.'/'.$filename);
$id = $meta['fileid'];
OCP\JSON::success(array("data" => array('content'=>$content, 'id' => $id)));
$mime = $meta['mimetype'];
OCP\JSON::success(array("data" => array('mime'=>$mime, 'content'=>$content, 'id' => $id)));
exit();
}
}elseif(\OC\Files\Filesystem::touch($dir . '/' . $filename)) {
$meta = \OC\Files\Filesystem::getFileInfo($dir.'/'.$filename);
$id = $meta['fileid'];
OCP\JSON::success(array("data" => array('content'=>$content, 'id' => $id)));
$mime = $meta['mimetype'];
OCP\JSON::success(array("data" => array('mime'=>$mime, 'content'=>$content, 'id' => $id)));
exit();
}
}

View File

@@ -4,6 +4,16 @@ session_write_close();
$force = (isset($_GET['force']) and ($_GET['force'] === 'true'));
$dir = isset($_GET['dir']) ? $_GET['dir'] : '';
if (isset($_GET['users'])) {
OC_JSON::checkAdminUser();
if ($_GET['users'] === 'all') {
$users = OC_User::getUsers();
} else {
$users = json_decode($_GET['users']);
}
} else {
$users = array(OC_User::getUser());
}
$eventSource = new OC_EventSource();
ScanListener::$eventSource = $eventSource;
@@ -12,21 +22,27 @@ ScanListener::$view = \OC\Files\Filesystem::getView();
OC_Hook::connect('\OC\Files\Cache\Scanner', 'scan_folder', 'ScanListener', 'folder');
OC_Hook::connect('\OC\Files\Cache\Scanner', 'scan_file', 'ScanListener', 'file');
$absolutePath = \OC\Files\Filesystem::getView()->getAbsolutePath($dir);
foreach ($users as $user) {
$eventSource->send('user', $user);
OC_Util::tearDownFS();
OC_Util::setupFS($user);
$mountPoints = \OC\Files\Filesystem::getMountPoints($absolutePath);
$mountPoints[] = \OC\Files\Filesystem::getMountPoint($absolutePath);
$mountPoints = array_reverse($mountPoints); //start with the mount point of $dir
$absolutePath = \OC\Files\Filesystem::getView()->getAbsolutePath($dir);
foreach ($mountPoints as $mountPoint) {
$storage = \OC\Files\Filesystem::getStorage($mountPoint);
if ($storage) {
ScanListener::$mountPoints[$storage->getId()] = $mountPoint;
$scanner = $storage->getScanner();
if ($force) {
$scanner->scan('');
} else {
$scanner->backgroundScan();
$mountPoints = \OC\Files\Filesystem::getMountPoints($absolutePath);
$mountPoints[] = \OC\Files\Filesystem::getMountPoint($absolutePath);
$mountPoints = array_reverse($mountPoints); //start with the mount point of $dir
foreach ($mountPoints as $mountPoint) {
$storage = \OC\Files\Filesystem::getStorage($mountPoint);
if ($storage) {
ScanListener::$mountPoints[$storage->getId()] = $mountPoint;
$scanner = $storage->getScanner();
if ($force) {
$scanner->scan('', \OC\Files\Cache\Scanner::SCAN_RECURSIVE, \OC\Files\Cache\Scanner::REUSE_ETAG);
} else {
$scanner->backgroundScan();
}
}
}
}

View File

@@ -1,17 +1,61 @@
<?php
// Init owncloud
// Firefox and Konqueror tries to download application/json for me. --Arthur
OCP\JSON::setContentTypeHeader('text/plain');
OCP\JSON::checkLoggedIn();
OCP\JSON::callCheck();
// If a directory token is sent along check if public upload is permitted.
// If not, check the login.
// If no token is sent along, rely on login only
$allowedPermissions = OCP\PERMISSION_ALL;
$l = OC_L10N::get('files');
if (empty($_POST['dirToken'])) {
// The standard case, files are uploaded through logged in users :)
OCP\JSON::checkLoggedIn();
$dir = isset($_POST['dir']) ? $_POST['dir'] : "";
if (!$dir || empty($dir) || $dir === false) {
OCP\JSON::error(array('data' => array_merge(array('message' => $l->t('Unable to set upload directory.')))));
die();
}
} else {
// return only read permissions for public upload
$allowedPermissions = OCP\PERMISSION_READ;
$linkItem = OCP\Share::getShareByToken($_POST['dirToken']);
if ($linkItem === false) {
OCP\JSON::error(array('data' => array_merge(array('message' => $l->t('Invalid Token')))));
die();
}
if (!($linkItem['permissions'] & OCP\PERMISSION_CREATE)) {
OCP\JSON::checkLoggedIn();
} else {
// resolve reshares
$rootLinkItem = OCP\Share::resolveReShare($linkItem);
// Setup FS with owner
OC_Util::setupFS($rootLinkItem['uid_owner']);
// The token defines the target directory (security reasons)
$path = \OC\Files\Filesystem::getPath($linkItem['file_source']);
$dir = sprintf(
"/%s/%s",
$path,
isset($_POST['subdir']) ? $_POST['subdir'] : ''
);
if (!$dir || empty($dir) || $dir === false) {
OCP\JSON::error(array('data' => array_merge(array('message' => $l->t('Unable to set upload directory.')))));
die();
}
}
}
OCP\JSON::callCheck();
$dir = $_POST['dir'];
// get array with current storage stats (e.g. max file size)
$storageStats = \OCA\files\lib\Helper::buildFileStorageStatistics($dir);
@@ -25,7 +69,7 @@ foreach ($_FILES['files']['error'] as $error) {
$errors = array(
UPLOAD_ERR_OK => $l->t('There is no error, the file uploaded with success'),
UPLOAD_ERR_INI_SIZE => $l->t('The uploaded file exceeds the upload_max_filesize directive in php.ini: ')
. ini_get('upload_max_filesize'),
. ini_get('upload_max_filesize'),
UPLOAD_ERR_FORM_SIZE => $l->t('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'),
UPLOAD_ERR_PARTIAL => $l->t('The uploaded file was only partially uploaded'),
UPLOAD_ERR_NO_FILE => $l->t('No file was uploaded'),
@@ -40,17 +84,17 @@ $files = $_FILES['files'];
$error = '';
$maxUploadFilesize = OCP\Util::maxUploadFilesize($dir);
$maxHumanFilesize = OCP\Util::humanFileSize($maxUploadFilesize);
$maxUploadFileSize = $storageStats['uploadMaxFilesize'];
$maxHumanFileSize = OCP\Util::humanFileSize($maxUploadFileSize);
$totalSize = 0;
foreach ($files['size'] as $size) {
$totalSize += $size;
}
if ($totalSize > $maxUploadFilesize) {
if ($maxUploadFileSize >= 0 and $totalSize > $maxUploadFileSize) {
OCP\JSON::error(array('data' => array('message' => $l->t('Not enough storage available'),
'uploadMaxFilesize' => $maxUploadFilesize,
'maxHumanFilesize' => $maxHumanFilesize)));
'uploadMaxFilesize' => $maxUploadFileSize,
'maxHumanFilesize' => $maxHumanFileSize)));
exit();
}
@@ -63,17 +107,24 @@ if (strpos($dir, '..') === false) {
$target = \OC\Files\Filesystem::normalizePath($target);
if (is_uploaded_file($files['tmp_name'][$i]) and \OC\Files\Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) {
$meta = \OC\Files\Filesystem::getFileInfo($target);
// updated max file size after upload
$storageStats = \OCA\files\lib\Helper::buildFileStorageStatistics($dir);
$result[] = array('status' => 'success',
'mime' => $meta['mimetype'],
'size' => $meta['size'],
'id' => $meta['fileid'],
'name' => basename($target),
'uploadMaxFilesize' => $maxUploadFilesize,
'maxHumanFilesize' => $maxHumanFilesize
);
if ($meta === false) {
OCP\JSON::error(array('data' => array_merge(array('message' => $l->t('Upload failed')), $storageStats)));
exit();
} else {
$result[] = array('status' => 'success',
'mime' => $meta['mimetype'],
'size' => $meta['size'],
'id' => $meta['fileid'],
'name' => basename($target),
'originalname' => $files['name'][$i],
'uploadMaxFilesize' => $maxUploadFileSize,
'maxHumanFilesize' => $maxHumanFileSize,
'permissions' => $meta['permissions'] & $allowedPermissions
);
}
}
}
OCP\JSON::encodedPrint($result);

View File

@@ -12,3 +12,10 @@ OCP\App::addNavigationEntry( array( "id" => "files_index",
"name" => $l->t("Files") ));
OC_Search::registerProvider('OC_Search_Provider_File');
// cache hooks must be connected before all other apps.
// since 'files' is always loaded first the hooks need to be connected here
\OC_Hook::connect('OC_Filesystem', 'post_write', '\OC\Files\Cache\Updater', 'writeHook');
\OC_Hook::connect('OC_Filesystem', 'post_touch', '\OC\Files\Cache\Updater', 'touchHook');
\OC_Hook::connect('OC_Filesystem', 'post_delete', '\OC\Files\Cache\Updater', 'deleteHook');
\OC_Hook::connect('OC_Filesystem', 'post_rename', '\OC\Files\Cache\Updater', 'renameHook');

View File

@@ -43,11 +43,14 @@ $server->httpRequest = $requestBackend;
$server->setBaseUri($baseuri);
// Load plugins
$server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend, 'ownCloud'));
$defaults = new OC_Defaults();
$server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend, $defaults->getName()));
$server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend));
$server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload
$server->addPlugin(new OC_Connector_Sabre_FilesPlugin());
$server->addPlugin(new OC_Connector_Sabre_QuotaPlugin());
$server->addPlugin(new OC_Connector_Sabre_MaintenancePlugin());
$server->addPlugin(new OC_Connector_Sabre_ExceptionLoggerPlugin('webdav'));
// And off we go!
$server->exec();

View File

@@ -3,17 +3,19 @@
// fix webdav properties,add namespace in front of the property, update for OC4.5
$installedVersion=OCP\Config::getAppValue('files', 'installed_version');
if (version_compare($installedVersion, '1.1.6', '<')) {
$query = OC_DB::prepare( 'SELECT `propertyname`, `propertypath`, `userid` FROM `*PREFIX*properties`' );
$result = $query->execute();
$updateQuery = OC_DB::prepare('UPDATE `*PREFIX*properties`'
.' SET `propertyname` = ?'
.' WHERE `userid` = ?'
.' AND `propertypath` = ?');
while( $row = $result->fetchRow()) {
if ( $row['propertyname'][0] != '{' ) {
$updateQuery->execute(array('{DAV:}' + $row['propertyname'], $row['userid'], $row['propertypath']));
}
// SQL92 string concatenation is ||, some of the DBMS don't know that
if (OC_Config::getValue('dbtype') === 'mysql') {
$concat = 'concat(\'{DAV:}\', `propertyname`)';
} else if (OC_Config::getValue('dbtype') === 'mssql') {
$concat = '\'{DAV:}\' + `propertyname`';
} else {
$concat = '\'{DAV:}\' || `propertyname`';
}
$query = OC_DB::executeAudited('
UPDATE `*PREFIX*properties`
SET `propertyname` = ' . $concat . '
WHERE `propertyname` NOT LIKE \'{%\'
');
}
//update from OC 3

View File

@@ -0,0 +1,32 @@
<?php
if (count($argv) !== 2) {
echo "Usage:" . PHP_EOL;
echo " files:scan <user_id>" . PHP_EOL;
echo " will rescan all files of the given user" . PHP_EOL;
echo " files:scan --all" . PHP_EOL;
echo " will rescan all files of all known users" . PHP_EOL;
return;
}
function scanFiles($user) {
$scanner = new \OC\Files\Utils\Scanner($user);
$scanner->listen('\OC\Files\Utils\Scanner', 'scanFile', function($path) {
echo "Scanning $path" . PHP_EOL;
});
$scanner->listen('\OC\Files\Utils\Scanner', 'scanFolder', function($path) {
echo "Scanning $path" . PHP_EOL;
});
$scanner->scan('');
}
if ($argv[1] === '--all') {
\OC_App::loadApps('authentication');
$users = OC_User::getUsers();
} else {
$users = array($argv[1]);
}
foreach ($users as $user) {
scanFiles($user);
}

View File

@@ -45,7 +45,11 @@
}
#uploadprogresswrapper { float: right; position: relative; }
#uploadprogresswrapper #uploadprogressbar { position:relative; display:inline-block; width:10em; height:1.5em; top:.4em; }
#uploadprogresswrapper #uploadprogressbar {
position:relative; float: right;
margin-left: 12px; width:10em; height:1.5em; top:.4em;
display:inline-block;
}
/* FILE TABLE */
@@ -56,9 +60,20 @@
color:#888; text-shadow:#fff 0 1px 0;
}
#filestable { position: relative; top:37px; width:100%; }
/* make sure there's enough room for the file actions */
#body-user #filestable {
min-width: 750px;
}
#body-user #controls {
min-width: 600px;
}
tbody tr { background-color:#fff; height:2.5em; }
tbody tr:hover, tbody tr:active, tbody tr.selected { background-color:#f8f8f8; }
tbody tr.selected { background-color:#eee; }
#filestable tbody tr.searchresult {
background-color: rgb(240,240,240);
}
tbody a { color:#000; }
span.extension, span.uploading, td.date { color:#999; }
span.extension { text-transform:lowercase; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; filter:alpha(opacity=70); opacity:.7; -webkit-transition:opacity 300ms; -moz-transition:opacity 300ms; -o-transition:opacity 300ms; transition:opacity 300ms; }
@@ -68,7 +83,10 @@ table th { height:2em; padding:0 .5em; color:#999; }
table th .name { float:left; margin-left:.5em; }
table th, table td { border-bottom:1px solid #ddd; text-align:left; font-weight:normal; }
table td { border-bottom:1px solid #eee; font-style:normal; background-position:1em .5em; background-repeat:no-repeat; }
table th#headerName { width:100em; /* not really sure why this works better than 100% … table styling */ }
table th#headerName {
width: 9999px; /* not really sure why this works better than 100% … table styling */
}
table th#headerSize, table td.filesize { min-width:3em; padding:0 1em; text-align:right; }
table th#headerDate, table td.date { min-width:11em; padding:0 .1em 0 1em; text-align:left; }
@@ -76,7 +94,11 @@ table th#headerDate, table td.date { min-width:11em; padding:0 .1em 0 1em; text-
#filestable.multiselect { top:63px; }
table.multiselect thead { position:fixed; top:82px; z-index:1; -moz-box-sizing: border-box; box-sizing: border-box; left: 0; padding-left: 64px; width:100%; }
table.multiselect thead th { background:rgba(230,230,230,.8); color:#000; font-weight:bold; border-bottom:0; }
table.multiselect #headerName { width: 100%; }
table.multiselect #headerName {
position: relative;
width: 9999px; /* when we use 100%, the styling breaks on mobile … table styling */
}
table td.selection, table th.selection, table td.fileaction { width:2em; text-align:center; }
table td.filename a.name { display:block; height:1.5em; vertical-align:middle; margin-left:3em; }
table tr[data-type="dir"] td.filename a.name span.nametext {font-weight:bold; }
@@ -84,7 +106,7 @@ table td.filename input.filename { width:100%; cursor:text; }
table td.filename a, table td.login, table td.logout, table td.download, table td.upload, table td.create, table td.delete { padding:.2em .5em .5em 0; }
table td.filename .nametext, .uploadtext, .modified { float:left; padding:.3em 0; }
/* TODO fix usability bug (accidental file/folder selection) */
table td.filename .nametext { overflow:hidden; text-overflow:ellipsis; }
table td.filename .nametext { overflow:hidden; text-overflow:ellipsis; max-width:800px; }
table td.filename .uploadtext { font-weight:normal; margin-left:.5em; }
table td.filename form { font-size:.85em; margin-left:3em; margin-right:3em; }
@@ -164,3 +186,8 @@ table.dragshadow td.size {
text-align: center;
margin-left: -200px;
}
html.lte8 #fileList tr:hover a.delete {
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
filter: alpha(opacity=50);
}

View File

@@ -24,6 +24,9 @@
// Check if we are a user
OCP\User::checkLoggedIn();
// don't block php session during download
session_write_close();
$filename = $_GET["file"];
if(!\OC\Files\Filesystem::file_exists($filename)) {
@@ -37,12 +40,7 @@ if(!\OC\Files\Filesystem::file_exists($filename)) {
$ftype=\OC\Files\Filesystem::getMimeType( $filename );
header('Content-Type:'.$ftype);
if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) {
header( 'Content-Disposition: attachment; filename="' . rawurlencode( basename($filename) ) . '"' );
} else {
header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode( basename($filename) )
. '; filename="' . rawurlencode( basename($filename) ) . '"' );
}
OCP\Response::setContentDispositionHeader(basename($filename), 'attachment');
OCP\Response::disableCaching();
header('Content-Length: '.\OC\Files\Filesystem::filesize($filename));

View File

@@ -26,6 +26,7 @@ OCP\User::checkLoggedIn();
// Load the files we need
OCP\Util::addStyle('files', 'files');
OCP\Util::addscript('files', 'file-upload');
OCP\Util::addscript('files', 'jquery.iframe-transport');
OCP\Util::addscript('files', 'jquery.fileupload');
OCP\Util::addscript('files', 'jquery-visibility');
@@ -34,6 +35,7 @@ OCP\Util::addscript('files', 'filelist');
OCP\App::setActiveNavigationEntry('files_index');
// Load the files
$dir = isset($_GET['dir']) ? stripslashes($_GET['dir']) : '';
$dir = \OC\Files\Filesystem::normalizePath($dir);
// Redirect if directory does not exist
if (!\OC\Files\Filesystem::is_dir($dir . '/')) {
header('Location: ' . OCP\Util::getScriptName() . '');
@@ -118,8 +120,12 @@ if ($needUpgrade) {
$tmpl->printPage();
} else {
// information about storage capacities
$storageInfo=OC_Helper::getStorageInfo();
$storageInfo=OC_Helper::getStorageInfo($dir);
$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir);
$publicUploadEnabled = \OC_Appconfig::getValue('core', 'shareapi_allow_public_upload', 'yes');
if (OC_App::isEnabled('files_encryption')) {
$publicUploadEnabled = 'no';
}
OCP\Util::addscript('files', 'fileactions');
OCP\Util::addscript('files', 'files');
@@ -127,7 +133,7 @@ if ($needUpgrade) {
$tmpl = new OCP\Template('files', 'index', 'user');
$tmpl->assign('fileList', $list->fetchPage());
$tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage());
$tmpl->assign('dir', \OC\Files\Filesystem::normalizePath($dir));
$tmpl->assign('dir', $dir);
$tmpl->assign('isCreatable', \OC\Files\Filesystem::isCreatable($dir . '/'));
$tmpl->assign('permissions', $permissions);
$tmpl->assign('files', $files);
@@ -136,5 +142,8 @@ if ($needUpgrade) {
$tmpl->assign('uploadMaxHumanFilesize', OCP\Util::humanFileSize($maxUploadFilesize));
$tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
$tmpl->assign('usedSpacePercent', (int)$storageInfo['relative']);
$tmpl->assign('isPublic', false);
$tmpl->assign('publicUploadEnabled', $publicUploadEnabled);
$tmpl->assign('disableSharing', false);
$tmpl->printPage();
}
}

View File

@@ -0,0 +1,351 @@
$(document).ready(function() {
file_upload_param = {
dropZone: $('#content'), // restrict dropZone to content div
//singleFileUploads is on by default, so the data.files array will always have length 1
add: function(e, data) {
if (!Files.isFileNameValid(data.files[0].name)) {
data.textStatus = 'invalidcharacters';
var fu = $(this).data('blueimp-fileupload') || $(this).data('fileupload');
fu._trigger('fail', e, data);
return true; //don't upload this file but go on with next in queue
}
if(data.files[0].type === '' && data.files[0].size == 4096)
{
data.textStatus = 'dirorzero';
data.errorThrown = t('files','Unable to upload your file as it is a directory or has 0 bytes');
var fu = $(this).data('blueimp-fileupload') || $(this).data('fileupload');
fu._trigger('fail', e, data);
return true; //don't upload this file but go on with next in queue
}
var totalSize=0;
$.each(data.originalFiles, function(i,file){
totalSize+=file.size;
});
if(totalSize>$('#max_upload').val()){
data.textStatus = 'notenoughspace';
data.errorThrown = t('files','Not enough space available');
var fu = $(this).data('blueimp-fileupload') || $(this).data('fileupload');
fu._trigger('fail', e, data);
return false; //don't upload anything
}
// start the actual file upload
var jqXHR = data.submit();
// remember jqXHR to show warning to user when he navigates away but an upload is still in progress
if (typeof data.context !== 'undefined' && data.context.data('type') === 'dir') {
var dirName = data.context.data('file');
if(typeof uploadingFiles[dirName] === 'undefined') {
uploadingFiles[dirName] = {};
}
uploadingFiles[dirName][data.files[0].name] = jqXHR;
} else {
uploadingFiles[data.files[0].name] = jqXHR;
}
//show cancel button
if($('html.lte9').length === 0 && data.dataType !== 'iframe') {
$('#uploadprogresswrapper input.stop').show();
}
},
/**
* called after the first add, does NOT have the data param
* @param e
*/
start: function(e) {
//IE < 10 does not fire the necessary events for the progress bar.
if($('html.lte9').length > 0) {
return;
}
$('#uploadprogressbar').progressbar({value:0});
$('#uploadprogressbar').fadeIn();
},
fail: function(e, data) {
if (typeof data.textStatus !== 'undefined' && data.textStatus !== 'success' ) {
if (data.textStatus === 'abort') {
$('#notification').text(t('files', 'Upload cancelled.'));
} else {
// HTTP connection problem
$('#notification').text(data.errorThrown);
}
$('#notification').fadeIn();
//hide notification after 5 sec
setTimeout(function() {
$('#notification').fadeOut();
}, 5000);
}
delete uploadingFiles[data.files[0].name];
},
progress: function(e, data) {
// TODO: show nice progress bar in file row
},
progressall: function(e, data) {
//IE < 10 does not fire the necessary events for the progress bar.
if($('html.lte9').length > 0) {
return;
}
var progress = (data.loaded/data.total)*100;
$('#uploadprogressbar').progressbar('value',progress);
},
/**
* called for every successful upload
* @param e
* @param data
*/
done:function(e, data) {
// handle different responses (json or body from iframe for ie)
var response;
if (typeof data.result === 'string') {
response = data.result;
} else {
//fetch response from iframe
response = data.result[0].body.innerText;
}
var result=$.parseJSON(response);
if(typeof result[0] !== 'undefined' && result[0].status === 'success') {
var filename = result[0].originalname;
// delete jqXHR reference
if (typeof data.context !== 'undefined' && data.context.data('type') === 'dir') {
var dirName = data.context.data('file');
delete uploadingFiles[dirName][filename];
if ($.assocArraySize(uploadingFiles[dirName]) == 0) {
delete uploadingFiles[dirName];
}
} else {
delete uploadingFiles[filename];
}
} else {
data.textStatus = 'servererror';
data.errorThrown = t('files', result.data.message);
var fu = $(this).data('blueimp-fileupload') || $(this).data('fileupload');
fu._trigger('fail', e, data);
}
},
/**
* called after last upload
* @param e
* @param data
*/
stop: function(e, data) {
if(data.dataType !== 'iframe') {
$('#uploadprogresswrapper input.stop').hide();
}
//IE < 10 does not fire the necessary events for the progress bar.
if($('html.lte9').length > 0) {
return;
}
$('#uploadprogressbar').progressbar('value',100);
$('#uploadprogressbar').fadeOut();
}
}
var file_upload_handler = function() {
$('#file_upload_start').fileupload(file_upload_param);
};
if ( document.getElementById('data-upload-form') ) {
$(file_upload_handler);
}
$.assocArraySize = function(obj) {
// http://stackoverflow.com/a/6700/11236
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
// warn user not to leave the page while upload is in progress
$(window).bind('beforeunload', function(e) {
if ($.assocArraySize(uploadingFiles) > 0)
return t('files','File upload is in progress. Leaving the page now will cancel the upload.');
});
//add multiply file upload attribute to all browsers except konqueror (which crashes when it's used)
if(navigator.userAgent.search(/konqueror/i)==-1){
$('#file_upload_start').attr('multiple','multiple')
}
//if the breadcrumb is to long, start by replacing foldernames with '...' except for the current folder
var crumb=$('div.crumb').first();
while($('div.controls').height()>40 && crumb.next('div.crumb').length>0){
crumb.children('a').text('...');
crumb=crumb.next('div.crumb');
}
//if that isn't enough, start removing items from the breacrumb except for the current folder and it's parent
var crumb=$('div.crumb').first();
var next=crumb.next('div.crumb');
while($('div.controls').height()>40 && next.next('div.crumb').length>0){
crumb.remove();
crumb=next;
next=crumb.next('div.crumb');
}
//still not enough, start shorting down the current folder name
var crumb=$('div.crumb>a').last();
while($('div.controls').height()>40 && crumb.text().length>6){
var text=crumb.text()
text=text.substr(0,text.length-6)+'...';
crumb.text(text);
}
$(document).click(function(){
$('#new>ul').hide();
$('#new').removeClass('active');
$('#new li').each(function(i,element){
if($(element).children('p').length==0){
$(element).children('form').remove();
$(element).append('<p>'+$(element).data('text')+'</p>');
}
});
});
$('#new li').click(function(){
if($(this).children('p').length==0){
return;
}
$('#new li').each(function(i,element){
if($(element).children('p').length==0){
$(element).children('form').remove();
$(element).append('<p>'+$(element).data('text')+'</p>');
}
});
var type=$(this).data('type');
var text=$(this).children('p').text();
$(this).data('text',text);
$(this).children('p').remove();
var form=$('<form></form>');
var input=$('<input>');
form.append(input);
$(this).append(form);
input.focus();
form.submit(function(event){
event.stopPropagation();
event.preventDefault();
var newname=input.val();
if(type == 'web' && newname.length == 0) {
OC.Notification.show(t('files', 'URL cannot be empty.'));
return false;
} else if (type != 'web' && !Files.isFileNameValid(newname)) {
return false;
} else if( type == 'folder' && $('#dir').val() == '/' && newname == 'Shared') {
OC.Notification.show(t('files','Invalid folder name. Usage of \'Shared\' is reserved by ownCloud'));
return false;
}
if (FileList.lastAction) {
FileList.lastAction();
}
var name = getUniqueName(newname);
if (newname != name) {
FileList.checkName(name, newname, true);
var hidden = true;
} else {
var hidden = false;
}
switch(type){
case 'file':
$.post(
OC.filePath('files','ajax','newfile.php'),
{dir:$('#dir').val(),filename:name},
function(result){
if (result.status == 'success') {
var date=new Date();
FileList.addFile(name,0,date,false,hidden);
var tr=FileList.findFileEl(name);
tr.attr('data-mime',result.data.mime);
tr.attr('data-id', result.data.id);
getMimeIcon(result.data.mime,function(path){
tr.find('td.filename').attr('style','background-image:url('+path+')');
});
FileActions.display(tr.find('td.filename'), true);
} else {
OC.dialogs.alert(result.data.message, t('core', 'Error'));
}
}
);
break;
case 'folder':
$.post(
OC.filePath('files','ajax','newfolder.php'),
{dir:$('#dir').val(),foldername:name},
function(result){
if (result.status == 'success') {
var date=new Date();
FileList.addDir(name,0,date,hidden);
var tr=FileList.findFileEl(name);
tr.attr('data-id', result.data.id);
} else {
OC.dialogs.alert(result.data.message, t('core', 'Error'));
}
}
);
break;
case 'web':
if(name.substr(0,8)!='https://' && name.substr(0,7)!='http://'){
name='http://'+name;
}
var localName=name;
if(localName.substr(localName.length-1,1)=='/'){//strip /
localName=localName.substr(0,localName.length-1)
}
if(localName.indexOf('/')){//use last part of url
localName=localName.split('/').pop();
} else { //or the domain
localName=(localName.match(/:\/\/(.[^\/]+)/)[1]).replace('www.','');
}
localName = getUniqueName(localName);
//IE < 10 does not fire the necessary events for the progress bar.
if($('html.lte9').length > 0) {
} else {
$('#uploadprogressbar').progressbar({value:0});
$('#uploadprogressbar').fadeIn();
}
var eventSource=new OC.EventSource(OC.filePath('files','ajax','newfile.php'),{dir:$('#dir').val(),source:name,filename:localName});
eventSource.listen('progress',function(progress){
//IE < 10 does not fire the necessary events for the progress bar.
if($('html.lte9').length > 0) {
} else {
$('#uploadprogressbar').progressbar('value',progress);
}
});
eventSource.listen('success',function(data){
var mime=data.mime;
var size=data.size;
var id=data.id;
$('#uploadprogressbar').fadeOut();
var date=new Date();
FileList.addFile(localName,size,date,false,hidden);
var tr = FileList.findFileEl(localName);
tr.data('mime',mime).data('id',id);
tr.attr('data-id', id);
getMimeIcon(mime,function(path){
tr.find('td.filename').attr('style','background-image:url('+path+')');
});
FileActions.display(tr.find('td.filename'), true);
});
eventSource.listen('error',function(error){
$('#uploadprogressbar').fadeOut();
alert(error);
});
break;
}
var li=form.parent();
form.remove();
/* workaround for IE 9&10 click event trap, 2 lines: */
$('input').first().focus();
$('#content').focus();
li.append('<p>'+li.data('text')+'</p>');
$('#new>a').click();
});
});
});

View File

@@ -22,18 +22,18 @@ var FileActions = {
if (FileActions.actions.all) {
actions = $.extend(actions, FileActions.actions.all);
}
if (mime) {
if (FileActions.actions[mime]) {
actions = $.extend(actions, FileActions.actions[mime]);
if (type) {//type is 'dir' or 'file'
if (FileActions.actions[type]) {
actions = $.extend(actions, FileActions.actions[type]);
}
}
if (mime) {
var mimePart = mime.substr(0, mime.indexOf('/'));
if (FileActions.actions[mimePart]) {
actions = $.extend(actions, FileActions.actions[mimePart]);
}
}
if (type) {//type is 'dir' or 'file'
if (FileActions.actions[type]) {
actions = $.extend(actions, FileActions.actions[type]);
if (FileActions.actions[mime]) {
actions = $.extend(actions, FileActions.actions[mime]);
}
}
var filteredActions = {};
@@ -61,13 +61,22 @@ var FileActions = {
var actions = this.get(mime, type, permissions);
return actions[name];
},
display: function (parent) {
/**
* Display file actions for the given element
* @param parent "td" element of the file for which to display actions
* @param triggerEvent if true, triggers the fileActionsReady on the file
* list afterwards (false by default)
*/
display: function (parent, triggerEvent) {
FileActions.currentFile = parent;
var actions = FileActions.get(FileActions.getCurrentMimeType(), FileActions.getCurrentType(), FileActions.getCurrentPermissions());
var file = FileActions.getCurrentFile();
if ($('tr').filterAttr('data-file', file).data('renaming')) {
if (FileList.findFileEl(file).data('renaming')) {
return;
}
// recreate fileactions
parent.children('a.name').find('.fileactions').remove();
parent.children('a.name').append('<span class="fileactions" />');
var defaultAction = FileActions.getDefault(FileActions.getCurrentMimeType(), FileActions.getCurrentType(), FileActions.getCurrentPermissions());
@@ -94,9 +103,9 @@ var FileActions = {
}
var html = '<a href="#" class="action" data-action="' + name + '">';
if (img) {
html += '<img class ="svg" src="' + img + '" /> ';
html += '<img class ="svg" src="' + img + '" />';
}
html += t('files', name) + '</a>';
html += '<span> ' + t('files', name) + '</span></a>';
var element = $(html);
element.data('action', name);
@@ -112,10 +121,13 @@ var FileActions = {
addAction(name, action);
}
});
if(actions.Share){
if(actions.Share && !($('#dir').val() === '/' && file === 'Shared')){
// t('files', 'Share')
addAction('Share', actions.Share);
}
// remove the existing delete action
parent.parent().children().last().find('.action.delete').remove();
if (actions['Delete']) {
var img = FileActions.icons['Delete'];
if (img.call) {
@@ -134,6 +146,10 @@ var FileActions = {
element.on('click', {a: null, elem: parent, actionFunc: actions['Delete']}, actionHandler);
parent.parent().children().last().append(element);
}
if (triggerEvent){
$('#fileList').trigger(jQuery.Event("fileActionsReady"));
}
},
getCurrentFile: function () {
return FileActions.currentFile.parent().attr('data-file');
@@ -163,10 +179,11 @@ $(document).ready(function () {
window.location = OC.filePath('files', 'ajax', 'download.php') + '?files=' + encodeURIComponent(filename) + '&dir=' + encodeURIComponent($('#dir').val());
});
}
$('#fileList tr').each(function () {
FileActions.display($(this).children('td.filename'));
});
$('#fileList').trigger(jQuery.Event("fileActionsReady"));
});
@@ -178,7 +195,7 @@ FileActions.register('all', 'Delete', OC.PERMISSION_DELETE, function () {
filename = [filename];
}
$.each(filename, function (index, file) {
var filename = $('tr').filterAttr('data-file', file);
var filename = FileList.findFileEl(file);
filename.hide();
filename.find('input[type="checkbox"]').removeAttr('checked');
filename.removeClass('selected');

View File

@@ -1,5 +1,12 @@
var FileList={
useUndo:true,
/**
* Returns the tr element for a given file name
*/
findFileEl: function(fileName){
// use filterAttr to avoid escaping issues
return $('#fileList tr').filterAttr('data-file', fileName);
},
update:function(fileListHtml) {
$('#fileList').empty().html(fileListHtml);
},
@@ -71,8 +78,20 @@ var FileList={
tr.append(td);
return tr;
},
addFile:function(name,size,lastModified,loading,hidden){
addFile:function(name,size,lastModified,loading,hidden,param){
var imgurl;
if (!param) {
param = {};
}
var download_url = null;
if (!param.download_url) {
download_url = OC.Router.generate('download', { file: $('#dir').val()+'/'+name });
} else {
download_url = param.download_url;
}
if (loading) {
imgurl = OC.imagePath('core', 'loading.gif');
} else {
@@ -82,23 +101,22 @@ var FileList={
'file',
name,
imgurl,
OC.Router.generate('download', { file: $('#dir').val()+'/'+name }),
download_url,
size,
lastModified,
$('#permissions').val()
);
FileList.insertElement(name, 'file', tr.attr('data-file',name));
var row = $('tr').filterAttr('data-file',name);
FileList.insertElement(name, 'file', tr);
if(loading){
row.data('loading',true);
tr.data('loading',true);
}else{
row.find('td.filename').draggable(dragOptions);
tr.find('td.filename').draggable(dragOptions);
}
if (hidden) {
row.hide();
tr.hide();
}
FileActions.display(row.find('td.filename'));
return tr;
},
addDir:function(name,size,lastModified,hidden){
@@ -113,13 +131,14 @@ var FileList={
);
FileList.insertElement(name,'dir',tr);
var row = $('tr').filterAttr('data-file',name);
row.find('td.filename').draggable(dragOptions);
row.find('td.filename').droppable(folderDropOptions);
var td = tr.find('td.filename');
td.draggable(dragOptions);
td.droppable(folderDropOptions);
if (hidden) {
row.hide();
tr.hide();
}
FileActions.display(row.find('td.filename'));
FileActions.display(tr.find('td.filename'), true);
return tr;
},
refresh:function(data) {
var result = jQuery.parseJSON(data.responseText);
@@ -130,8 +149,9 @@ var FileList={
resetFileActionPanel();
},
remove:function(name){
$('tr').filterAttr('data-file',name).find('td.filename').draggable('destroy');
$('tr').filterAttr('data-file',name).remove();
var fileEl = FileList.findFileEl(name);
fileEl.find('td.filename').draggable('destroy');
fileEl.remove();
if($('tr[data-file]').length==0){
$('#emptyfolder').show();
}
@@ -164,7 +184,7 @@ var FileList={
$('#emptyfolder').hide();
},
loadingDone:function(name, id){
var mime, tr=$('tr').filterAttr('data-file',name);
var mime, tr = FileList.findFileEl(name);
tr.data('loading',false);
mime=tr.data('mime');
tr.attr('data-mime',mime);
@@ -177,11 +197,11 @@ var FileList={
tr.find('td.filename').draggable(dragOptions);
},
isLoading:function(name){
return $('tr').filterAttr('data-file',name).data('loading');
return FileList.findFileEl(name).data('loading');
},
rename:function(name){
var tr, td, input, form;
tr=$('tr').filterAttr('data-file',name);
tr = FileList.findFileEl(name);
tr.data('renaming',true);
td=tr.children('td.filename');
input=$('<input class="filename"/>').val(name);
@@ -190,6 +210,14 @@ var FileList={
td.children('a.name').hide();
td.append(form);
input.focus();
//preselect input
var len = input.val().lastIndexOf('.');
if (len === -1) {
len = input.val().length;
}
input.selectRange(0,len);
form.submit(function(event){
event.stopPropagation();
event.preventDefault();
@@ -245,7 +273,7 @@ var FileList={
});
},
checkName:function(oldName, newName, isNewFile) {
if (isNewFile || $('tr').filterAttr('data-file', newName).length > 0) {
if (isNewFile || FileList.findFileEl(newName).length > 0) {
var html;
if(isNewFile){
html = t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+'<span class="replace">'+t('files', 'replace')+'</span><span class="suggest">'+t('files', 'suggest name')+'</span>&nbsp;<span class="cancel">'+t('files', 'cancel')+'</span>';
@@ -264,9 +292,11 @@ var FileList={
},
replace:function(oldName, newName, isNewFile) {
// Finish any existing actions
$('tr').filterAttr('data-file', oldName).hide();
$('tr').filterAttr('data-file', newName).hide();
var tr = $('tr').filterAttr('data-file', oldName).clone();
var oldFileEl = FileList.findFileEl(oldName);
var newFileEl = FileList.findFileEl(newName);
oldFileEl.hide();
newFileEl.hide();
var tr = oldFileEl.clone();
tr.attr('data-replace', 'true');
tr.attr('data-file', newName);
var td = tr.children('td.filename');
@@ -318,7 +348,7 @@ var FileList={
files=[files];
}
for (var i=0; i<files.length; i++) {
var deleteAction = $('tr').filterAttr('data-file',files[i]).children("td.date").children(".action.delete");
var deleteAction = FileList.findFileEl(files[i]).children("td.date").children(".action.delete");
var oldHTML = deleteAction[0].outerHTML;
var newHTML = '<img class="move2trash" data-action="Delete" title="'+t('files', 'perform delete operation')+'" src="'+ OC.imagePath('core', 'loading.gif') +'"></a>';
deleteAction[0].outerHTML = newHTML;
@@ -334,7 +364,7 @@ var FileList={
function(result){
if (result.status == 'success') {
$.each(files,function(index,file){
var files = $('tr').filterAttr('data-file',file);
var files = FileList.findFileEl(file);
files.remove();
files.find('input[type="checkbox"]').removeAttr('checked');
files.removeClass('selected');
@@ -342,20 +372,203 @@ var FileList={
procesSelection();
} else {
$.each(files,function(index,file) {
var deleteAction = $('tr').filterAttr('data-file',file).children("td.date").children(".move2trash");
var deleteAction = FileList.findFileEl(file).children("td.date").children('.move2trash');
deleteAction[0].outerHTML = oldHTML;
});
}
});
},
scrollTo:function(file) {
//scroll to and highlight preselected file
var $scrolltorow = FileList.findFileEl(file);
if ($scrolltorow.exists()) {
$scrolltorow.addClass('searchresult');
$(window).scrollTop($scrolltorow.position().top);
//remove highlight when hovered over
$scrolltorow.one('hover', function() {
$scrolltorow.removeClass('searchresult');
});
}
},
filter:function(query) {
$('#fileList tr:not(.summary)').each(function(i,e) {
if ($(e).data('file').toString().toLowerCase().indexOf(query.toLowerCase()) !== -1) {
$(e).addClass("searchresult");
} else {
$(e).removeClass("searchresult");
}
});
//do not use scrollto to prevent removing searchresult css class
var first = $('#fileList tr.searchresult').first();
if (first.exists()) {
$(window).scrollTop(first.position().top);
}
},
unfilter:function() {
$('#fileList tr.searchresult').each(function(i,e) {
$(e).removeClass("searchresult");
});
}
};
$(document).ready(function(){
// handle upload events
var file_upload_start = $('#file_upload_start');
file_upload_start.on('fileuploaddrop', function(e, data) {
// only handle drop to dir if fileList exists
if ($('#fileList').length > 0) {
var dropTarget = $(e.originalEvent.target).closest('tr');
if(dropTarget && dropTarget.data('type') === 'dir') { // drag&drop upload to folder
var dirName = dropTarget.data('file');
// update folder in form
data.formData = function(form) {
var formArray = form.serializeArray();
// array index 0 contains the max files size
// array index 1 contains the request token
// array index 2 contains the directory
var parentDir = formArray[2]['value'];
if (parentDir === '/') {
formArray[2]['value'] += dirName;
} else {
formArray[2]['value'] += '/'+dirName;
}
return formArray;
}
}
}
});
file_upload_start.on('fileuploadadd', function(e, data) {
// only add to fileList if it exists
if ($('#fileList').length > 0) {
if(FileList.deleteFiles && FileList.deleteFiles.indexOf(data.files[0].name)!=-1){//finish delete if we are uploading a deleted file
FileList.finishDelete(null, true); //delete file before continuing
}
// add ui visualization to existing folder or as new stand-alone file?
var dropTarget = $(e.originalEvent.target).closest('tr');
if(dropTarget && dropTarget.data('type') === 'dir') {
// add to existing folder
var dirName = dropTarget.data('file');
// set dir context
data.context = FileList.findFileEl(dirName).filterAttr('data-type', 'dir');
// update upload counter ui
var uploadtext = data.context.find('.uploadtext');
var currentUploads = parseInt(uploadtext.attr('currentUploads'));
currentUploads += 1;
uploadtext.attr('currentUploads', currentUploads);
if(currentUploads === 1) {
var img = OC.imagePath('core', 'loading.gif');
data.context.find('td.filename').attr('style','background-image:url('+img+')');
uploadtext.text(t('files', '1 file uploading'));
uploadtext.show();
} else {
uploadtext.text(currentUploads + ' ' + t('files', 'files uploading'));
}
} else {
// add as stand-alone row to filelist
var uniqueName = getUniqueName(data.files[0].name);
var size=t('files','Pending');
if(data.files[0].size>=0){
size=data.files[0].size;
}
var date=new Date();
var param = {};
if ($('#publicUploadRequestToken').length) {
param.download_url = document.location.href + '&download&path=/' + $('#dir').val() + '/' + uniqueName;
}
// create new file context
data.context = FileList.addFile(uniqueName,size,date,true,false,param);
}
}
});
file_upload_start.on('fileuploaddone', function(e, data) {
// only update the fileList if it exists
if ($('#fileList').length > 0) {
var response;
if (typeof data.result === 'string') {
response = data.result;
} else {
// fetch response from iframe
response = data.result[0].body.innerText;
}
var result=$.parseJSON(response);
if(typeof result[0] !== 'undefined' && result[0].status === 'success') {
var file = result[0];
if (data.context.data('type') === 'file') {
// update file data
data.context.attr('data-mime',file.mime).attr('data-id',file.id);
var size = data.context.data('size');
if(size!=file.size){
data.context.attr('data-size', file.size);
data.context.find('td.filesize').text(humanFileSize(file.size));
}
var permissions = data.context.data('permissions');
if(permissions != file.permissions) {
data.context.attr('data-permissions', file.permissions);
data.context.data('permissions', file.permissions);
}
FileActions.display(data.context.find('td.filename'), true);
if (FileList.loadingDone) {
FileList.loadingDone(file.name, file.id);
}
} else {
// update upload counter ui
var uploadtext = data.context.find('.uploadtext');
var currentUploads = parseInt(uploadtext.attr('currentUploads'));
currentUploads -= 1;
uploadtext.attr('currentUploads', currentUploads);
if(currentUploads === 0) {
var img = OC.imagePath('core', 'filetypes/folder.png');
data.context.find('td.filename').attr('style','background-image:url('+img+')');
uploadtext.text('');
uploadtext.hide();
} else {
uploadtext.text(currentUploads + ' ' + t('files', 'files uploading'));
}
// update folder size
var size = parseInt(data.context.data('size'));
size += parseInt(file.size) ;
data.context.attr('data-size', size);
data.context.find('td.filesize').text(humanFileSize(size));
}
}
}
});
file_upload_start.on('fileuploadfail', function(e, data) {
// only update the fileList if it exists
// cleanup files, error notification has been shown by fileupload code
var tr = data.context;
if (typeof tr === 'undefined') {
tr = FileList.findFileEl(data.files[0].name);
}
if (tr.attr('data-type') === 'dir') {
//cleanup uploading to a dir
var uploadtext = tr.find('.uploadtext');
var img = OC.imagePath('core', 'filetypes/folder.png');
tr.find('td.filename').attr('style','background-image:url('+img+')');
uploadtext.text('');
uploadtext.hide(); //TODO really hide already
} else {
//remove file
tr.fadeOut();
tr.remove();
}
});
$('#notification').hide();
$('#notification').on('click', '.undo', function(){
if (FileList.deleteFiles) {
$.each(FileList.deleteFiles,function(index,file){
$('tr').filterAttr('data-file',file).show();
FileList.findFileEl(file).show();
});
FileList.deleteCanceled=true;
FileList.deleteFiles=null;
@@ -365,10 +578,10 @@ $(document).ready(function(){
FileList.deleteCanceled = false;
FileList.deleteFiles = [FileList.replaceOldName];
} else {
$('tr').filterAttr('data-file', FileList.replaceOldName).show();
FileList.findFileEl(FileList.replaceOldName).show();
}
$('tr').filterAttr('data-replace', 'true').remove();
$('tr').filterAttr('data-file', FileList.replaceNewName).show();
FileList.findFileEl(FileList.replaceNewName).show();
FileList.replaceCanceled = true;
FileList.replaceOldName = null;
FileList.replaceNewName = null;
@@ -383,7 +596,8 @@ $(document).ready(function(){
});
});
$('#notification:first-child').on('click', '.suggest', function() {
$('tr').filterAttr('data-file', $('#notification > span').attr('data-oldName')).show();
var file = $('#notification > span').attr('data-oldName');
FileList.findFileEl(file).show();
OC.Notification.hide();
});
$('#notification:first-child').on('click', '.cancel', function() {

View File

@@ -12,7 +12,7 @@ Files={
$.each(uploadingFiles,function(index,file) {
if(typeof file['abort'] === 'function') {
file.abort();
var filename = $('tr').filterAttr('data-file',index);
var filename = FileList.findFileEl(index);
filename.hide();
filename.find('input[type="checkbox"]').removeAttr('checked');
filename.removeClass('selected');
@@ -115,6 +115,11 @@ $(document).ready(function() {
return false;
});
// Trigger cancelling of file upload
$('#uploadprogresswrapper .stop').on('click', function() {
Files.cancelUploads();
});
// Show trash bin
$('#trash a').live('click', function() {
window.location=OC.filePath('files_trashbin', '', 'index.php');
@@ -159,7 +164,7 @@ $(document).ready(function() {
procesSelection();
} else {
var filename=$(this).parent().parent().attr('data-file');
var tr=$('tr').filterAttr('data-file',filename);
var tr = FileList.findFileEl(filename);
var renaming=tr.data('renaming');
if(!renaming && !FileList.isLoading(filename)){
FileActions.currentFile = $(this).parent();
@@ -225,15 +230,16 @@ $(document).ready(function() {
var dir=$('#dir').val()||'/';
OC.Notification.show(t('files','Your download is being prepared. This might take some time if the files are big.'));
// use special download URL if provided, e.g. for public shared files
if ( (downloadURL = document.getElementById("downloadURL")) ) {
window.location=downloadURL.value+"&download&files="+files;
var downloadURL = document.getElementById("downloadURL");
if (downloadURL) {
window.location=downloadURL.value+"&download&files="+encodeURIComponent(fileslist);
} else {
window.location=OC.filePath('files', 'ajax', 'download.php') + '?'+ $.param({ dir: dir, files: fileslist });
}
return false;
});
$('.delete').click(function(event) {
$('.delete-selected').click(function(event) {
var files=getSelectedFiles('name');
event.preventDefault();
FileList.do_delete(files);
@@ -246,243 +252,6 @@ $(document).ready(function() {
e.preventDefault(); // prevent browser from doing anything, if file isn't dropped in dropZone
});
if ( document.getElementById('data-upload-form') ) {
$(function() {
$('#file_upload_start').fileupload({
dropZone: $('#content'), // restrict dropZone to content div
add: function(e, data) {
var files = data.files;
var totalSize=0;
if(files){
if (FileList.lastAction) {
FileList.lastAction();
}
for(var i=0;i<files.length;i++){
if(files[i].size ==0 && files[i].type== '')
{
OC.dialogs.alert(t('files', 'Unable to upload your file as it is a directory or has 0 bytes'), t('files', 'Upload Error'));
return;
}
totalSize+=files[i].size;
}
}
if(totalSize>$('#max_upload').val()){
$( '#uploadsize-message' ).dialog({
modal: true,
buttons: {
Close: {
text:t('files', 'Close'),
click:function() {
$( this ).dialog( 'close' );
}
}
}
});
}else{
var dropTarget = $(e.originalEvent.target).closest('tr');
if(dropTarget && dropTarget.attr('data-type') === 'dir') { // drag&drop upload to folder
var dirName = dropTarget.attr('data-file')
}
var date=new Date();
if(files){
for(var i=0;i<files.length;i++){
if(files[i].size>0){
var size=files[i].size;
}else{
var size=t('files','Pending');
}
if(files && !dirName){
var uniqueName = getUniqueName(files[i].name);
if (uniqueName != files[i].name) {
FileList.checkName(uniqueName, files[i].name, true);
var hidden = true;
} else {
var hidden = false;
}
FileList.addFile(uniqueName,size,date,true,hidden);
} else if(dirName) {
var uploadtext = $('tr').filterAttr('data-type', 'dir').filterAttr('data-file', dirName).find('.uploadtext')
var currentUploads = parseInt(uploadtext.attr('currentUploads'));
currentUploads += 1;
uploadtext.attr('currentUploads', currentUploads);
if(currentUploads === 1) {
var img = OC.imagePath('core', 'loading.gif');
var tr=$('tr').filterAttr('data-file',dirName);
tr.find('td.filename').attr('style','background-image:url('+img+')');
uploadtext.text(t('files', '1 file uploading'));
uploadtext.show();
} else {
uploadtext.text(t('files', '{count} files uploading', {count: currentUploads}));
}
}
}
}else{
var filename=this.value.split('\\').pop(); //ie prepends C:\fakepath\ in front of the filename
var uniqueName = getUniqueName(filename);
if (uniqueName != filename) {
FileList.checkName(uniqueName, filename, true);
var hidden = true;
} else {
var hidden = false;
}
FileList.addFile(uniqueName,'Pending',date,true,hidden);
}
if($.support.xhrFileUpload) {
for(var i=0;i<files.length;i++){
var fileName = files[i].name
var dropTarget = $(e.originalEvent.target).closest('tr');
if(dropTarget && dropTarget.attr('data-type') === 'dir') { // drag&drop upload to folder
var dirName = dropTarget.attr('data-file')
var jqXHR = $('#file_upload_start').fileupload('send', {files: files[i],
formData: function(form) {
var formArray = form.serializeArray();
// array index 0 contains the max files size
// array index 1 contains the request token
// array index 2 contains the directory
formArray[2]['value'] = dirName;
return formArray;
}}).success(function(result, textStatus, jqXHR) {
var response;
response=jQuery.parseJSON(result);
if(response[0] == undefined || response[0].status != 'success') {
OC.Notification.show(t('files', response.data.message));
}
Files.updateMaxUploadFilesize(response);
var file=response[0];
// TODO: this doesn't work if the file name has been changed server side
delete uploadingFiles[dirName][file.name];
if ($.assocArraySize(uploadingFiles[dirName]) == 0) {
delete uploadingFiles[dirName];
}
//TODO update file upload size limit
var uploadtext = $('tr').filterAttr('data-type', 'dir').filterAttr('data-file', dirName).find('.uploadtext')
var currentUploads = parseInt(uploadtext.attr('currentUploads'));
currentUploads -= 1;
uploadtext.attr('currentUploads', currentUploads);
if(currentUploads === 0) {
var img = OC.imagePath('core', 'filetypes/folder.png');
var tr=$('tr').filterAttr('data-file',dirName);
tr.find('td.filename').attr('style','background-image:url('+img+')');
uploadtext.text('');
uploadtext.hide();
} else {
uploadtext.text(t('files', '{count} files uploading', {count: currentUploads}));
}
})
.error(function(jqXHR, textStatus, errorThrown) {
if(errorThrown === 'abort') {
var currentUploads = parseInt(uploadtext.attr('currentUploads'));
currentUploads -= 1;
uploadtext.attr('currentUploads', currentUploads);
if(currentUploads === 0) {
var img = OC.imagePath('core', 'filetypes/folder.png');
var tr=$('tr').filterAttr('data-file',dirName);
tr.find('td.filename').attr('style','background-image:url('+img+')');
uploadtext.text('');
uploadtext.hide();
} else {
uploadtext.text(t('files', '{count} files uploading', {count: currentUploads}));
}
delete uploadingFiles[dirName][fileName];
OC.Notification.show(t('files', 'Upload cancelled.'));
}
});
//TODO test with filenames containing slashes
if(uploadingFiles[dirName] === undefined) {
uploadingFiles[dirName] = {};
}
uploadingFiles[dirName][fileName] = jqXHR;
} else {
var jqXHR = $('#file_upload_start').fileupload('send', {files: files[i]})
.success(function(result, textStatus, jqXHR) {
var response;
response=jQuery.parseJSON(result);
Files.updateMaxUploadFilesize(response);
if(response[0] != undefined && response[0].status == 'success') {
var file=response[0];
delete uploadingFiles[file.name];
$('tr').filterAttr('data-file',file.name).data('mime',file.mime).data('id',file.id);
var size = $('tr').filterAttr('data-file',file.name).find('td.filesize').text();
if(size==t('files','Pending')){
$('tr').filterAttr('data-file',file.name).find('td.filesize').text(file.size);
}
//TODO update file upload size limit
FileList.loadingDone(file.name, file.id);
} else {
Files.cancelUpload(this.files[0].name);
OC.Notification.show(t('files', response.data.message));
$('#fileList > tr').not('[data-mime]').fadeOut();
$('#fileList > tr').not('[data-mime]').remove();
}
})
.error(function(jqXHR, textStatus, errorThrown) {
if(errorThrown === 'abort') {
Files.cancelUpload(this.files[0].name);
OC.Notification.show(t('files', 'Upload cancelled.'));
}
});
uploadingFiles[uniqueName] = jqXHR;
}
}
}else{
data.submit().success(function(data, status) {
// in safari data is a string
response = jQuery.parseJSON(typeof data === 'string' ? data : data[0].body.innerText);
Files.updateMaxUploadFilesize(response);
if(response[0] != undefined && response[0].status == 'success') {
var file=response[0];
delete uploadingFiles[file.name];
$('tr').filterAttr('data-file',file.name).data('mime',file.mime).data('id',file.id);
var size = $('tr').filterAttr('data-file',file.name).find('td.filesize').text();
if(size==t('files','Pending')){
$('tr').filterAttr('data-file',file.name).find('td.filesize').text(file.size);
}
//TODO update file upload size limit
FileList.loadingDone(file.name, file.id);
} else {
//TODO Files.cancelUpload(/*where do we get the filename*/);
OC.Notification.show(t('files', response.data.message));
$('#fileList > tr').not('[data-mime]').fadeOut();
$('#fileList > tr').not('[data-mime]').remove();
}
});
}
}
},
fail: function(e, data) {
// TODO: cancel upload & display error notification
},
progress: function(e, data) {
// TODO: show nice progress bar in file row
},
progressall: function(e, data) {
var progress = (data.loaded/data.total)*100;
$('#uploadprogressbar').progressbar('value',progress);
},
start: function(e, data) {
//IE < 10 does not fire the necessary events for the progress bar.
if($.browser.msie && parseInt($.browser.version) < 10) {
return;
}
$('#uploadprogressbar').progressbar({value:0});
$('#uploadprogressbar').fadeIn();
if(data.dataType != 'iframe ') {
$('#upload input.stop').show();
}
},
stop: function(e, data) {
if(data.dataType != 'iframe ') {
$('#upload input.stop').hide();
}
$('#uploadprogressbar').progressbar('value',100);
$('#uploadprogressbar').fadeOut();
}
})
});
}
$.assocArraySize = function(obj) {
// http://stackoverflow.com/a/6700/11236
var size = 0, key;
@@ -595,7 +364,7 @@ $(document).ready(function() {
if (result.status == 'success') {
var date=new Date();
FileList.addFile(name,0,date,false,hidden);
var tr=$('tr').filterAttr('data-file',name);
var tr=FileList.findFileEl(name);
tr.attr('data-mime','text/plain');
tr.attr('data-id', result.data.id);
getMimeIcon('text/plain',function(path){
@@ -615,7 +384,7 @@ $(document).ready(function() {
if (result.status == 'success') {
var date=new Date();
FileList.addDir(name,0,date,hidden);
var tr=$('tr').filterAttr('data-file',name);
var tr=FileList.findFileEl(name);
tr.attr('data-id', result.data.id);
} else {
OC.dialogs.alert(result.data.message, 'Error');
@@ -637,12 +406,20 @@ $(document).ready(function() {
localName=(localName.match(/:\/\/(.[^/]+)/)[1]).replace('www.','');
}
localName = getUniqueName(localName);
$('#uploadprogressbar').progressbar({value:0});
$('#uploadprogressbar').fadeIn();
//IE < 10 does not fire the necessary events for the progress bar.
if($('html.lte9').length > 0) {
} else {
$('#uploadprogressbar').progressbar({value:0});
$('#uploadprogressbar').fadeIn();
}
var eventSource=new OC.EventSource(OC.filePath('files','ajax','newfile.php'),{dir:$('#dir').val(),source:name,filename:localName});
eventSource.listen('progress',function(progress){
$('#uploadprogressbar').progressbar('value',progress);
//IE < 10 does not fire the necessary events for the progress bar.
if($('html.lte9').length > 0) {
} else {
$('#uploadprogressbar').progressbar('value',progress);
}
});
eventSource.listen('success',function(data){
var mime=data.mime;
@@ -651,7 +428,7 @@ $(document).ready(function() {
$('#uploadprogressbar').fadeOut();
var date=new Date();
FileList.addFile(localName,size,date,false,hidden);
var tr=$('tr').filterAttr('data-file',localName);
var tr=FileList.findFileEl(localName);
tr.data('mime',mime).data('id',id);
tr.attr('data-id', id);
getMimeIcon(mime,function(path){
@@ -747,7 +524,8 @@ $(document).ready(function() {
// file space size sync
function update_storage_statistics() {
$.getJSON(OC.filePath('files','ajax','getstoragestats.php'),function(response) {
var currentDir = $('#dir').val() || '/';
$.getJSON(OC.filePath('files','ajax','getstoragestats.php') + '?dir=' + encodeURIComponent(currentDir),function(response) {
Files.updateMaxUploadFilesize(response);
});
}
@@ -770,9 +548,14 @@ $(document).ready(function() {
}
});
}
//scroll to and highlight preselected file
if (getURLParameter('scrollto')) {
FileList.scrollTo(getURLParameter('scrollto'));
}
});
function scanFiles(force, dir){
function scanFiles(force, dir, users){
if (!OC.currentUser) {
return;
}
@@ -782,7 +565,18 @@ function scanFiles(force, dir){
}
force = !!force; //cast to bool
scanFiles.scanning = true;
var scannerEventSource = new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force:force,dir:dir});
var scannerEventSource;
if (users) {
var usersString;
if (users === 'all') {
usersString = users;
} else {
usersString = JSON.stringify(users);
}
scannerEventSource = new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force: force,dir: dir, users: usersString});
} else {
scannerEventSource = new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force: force,dir: dir});
}
scanFiles.cancel = scannerEventSource.close.bind(scannerEventSource);
scannerEventSource.listen('count',function(count){
console.log(count + 'files scanned')
@@ -794,6 +588,9 @@ function scanFiles(force, dir){
scanFiles.scanning=false;
console.log('done after ' + count + 'files');
});
scannerEventSource.listen('user',function(user){
console.log('scanning files for ' + user);
});
}
scanFiles.scanning=false;
@@ -839,9 +636,9 @@ var createDragShadow = function(event){
var dir=$('#dir').val();
$(selectedFiles).each(function(i,elem){
var newtr = $('<tr data-dir="'+dir+'" data-filename="'+elem.name+'">'
+'<td class="filename">'+elem.name+'</td><td class="size">'+humanFileSize(elem.size)+'</td>'
+'</tr>');
var newtr = $('<tr/>').attr('data-dir', dir).attr('data-filename', elem.name);
newtr.append($('<td/>').addClass('filename').text(elem.name));
newtr.append($('<td/>').addClass('size').text(humanFileSize(elem.size)));
tbody.append(newtr);
if (elem.type === 'dir') {
newtr.find('td.filename').attr('style','background-image:url('+OC.imagePath('core', 'filetypes/folder.png')+')');
@@ -865,9 +662,9 @@ var dragOptions={
}
}
// sane browsers support using the distance option
if ( ! $.browser.msie) {
if ( $('html.ie').length === 0) {
dragOptions['distance'] = 20;
}
}
var folderDropOptions={
drop: function( event, ui ) {
@@ -876,7 +673,7 @@ var folderDropOptions={
return false;
}
var target=$.trim($(this).find('.nametext').text());
var target = $(this).closest('tr').data('file');
var files = ui.helper.find('tr');
$(files).each(function(i,row){
@@ -886,10 +683,12 @@ var folderDropOptions={
if (result) {
if (result.status === 'success') {
//recalculate folder size
var oldSize = $('#fileList tr').filterAttr('data-file',target).data('size');
var newSize = oldSize + $('#fileList tr').filterAttr('data-file',file).data('size');
$('#fileList tr').filterAttr('data-file',target).data('size', newSize);
$('#fileList tr').filterAttr('data-file',target).find('td.filesize').text(humanFileSize(newSize));
var oldFile = FileList.findFileEl(target);
var newFile = FileList.findFileEl(file);
var oldSize = oldFile.data('size');
var newSize = oldSize + newFile.data('size');
oldFile.data('size', newSize);
oldFile.find('td.filesize').text(humanFileSize(newSize));
FileList.remove(file);
procesSelection();
@@ -1034,7 +833,7 @@ function getMimeIcon(mime, ready){
getMimeIcon.cache={};
function getUniqueName(name){
if($('tr').filterAttr('data-file',name).length>0){
if (FileList.findFileEl(name).exists()) {
var parts=name.split('.');
var extension = "";
if (parts.length > 1) {

View File

@@ -5,6 +5,8 @@
"No file was uploaded" => "لم يتم ترفيع أي من الملفات",
"Missing a temporary folder" => "المجلد المؤقت غير موجود",
"Files" => "الملفات",
"Share" => "شارك",
"Delete permanently" => "حذف بشكل دائم",
"Delete" => "محذوف",
"Close" => "إغلق",
"Name" => "الاسم",

View File

@@ -3,6 +3,7 @@
"Failed to write to disk" => "Възникна проблем при запис в диска",
"Invalid directory." => "Невалидна директория.",
"Files" => "Файлове",
"Share" => "Споделяне",
"Delete permanently" => "Изтриване завинаги",
"Delete" => "Изтриване",
"Rename" => "Преименуване",

View File

@@ -12,6 +12,7 @@
"Failed to write to disk" => "ডিস্কে লিখতে ব্যর্থ",
"Invalid directory." => "ভুল ডিরেক্টরি",
"Files" => "ফাইল",
"Share" => "ভাগাভাগি কর",
"Delete" => "মুছে ফেল",
"Rename" => "পূনঃনামকরণ",
"Pending" => "মুলতুবি",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "No hi ha prou espai disponible",
"Invalid directory." => "Directori no vàlid.",
"Files" => "Fitxers",
"Share" => "Comparteix",
"Delete permanently" => "Esborra permanentment",
"Delete" => "Suprimeix",
"Rename" => "Reanomena",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Nedostatek dostupného úložného prostoru",
"Invalid directory." => "Neplatný adresář",
"Files" => "Soubory",
"Share" => "Sdílet",
"Delete permanently" => "Trvale odstranit",
"Delete" => "Smazat",
"Rename" => "Přejmenovat",

74
apps/files/l10n/cy_GB.php Normal file
View File

@@ -0,0 +1,74 @@
<?php $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "Methwyd symud %s - Mae ffeil gyda'r enw hwn eisoes yn bodoli",
"Could not move %s" => "Methwyd symud %s",
"Unable to rename file" => "Methu ailenwi ffeil",
"No file was uploaded. Unknown error" => "Ni lwythwyd ffeil i fyny. Gwall anhysbys.",
"There is no error, the file uploaded with success" => "Does dim gwall, llwythodd y ffeil i fyny'n llwyddiannus",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Mae'r ffeil lwythwyd i fyny'n fwy na chyfarwyddeb upload_max_filesize yn php.ini:",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Mae'r ffeil lwythwyd i fyny'n fwy na chyfarwyddeb MAX_FILE_SIZE bennwyd yn y ffurflen HTML",
"The uploaded file was only partially uploaded" => "Dim ond yn rhannol y llwythwyd y ffeil i fyny",
"No file was uploaded" => "Ni lwythwyd ffeil i fyny",
"Missing a temporary folder" => "Plygell dros dro yn eisiau",
"Failed to write to disk" => "Methwyd ysgrifennu i'r ddisg",
"Not enough storage available" => "Dim digon o le storio ar gael",
"Invalid directory." => "Cyfeiriadur annilys.",
"Files" => "Ffeiliau",
"Share" => "Rhannu",
"Delete permanently" => "Dileu'n barhaol",
"Delete" => "Dileu",
"Rename" => "Ailenwi",
"Pending" => "I ddod",
"{new_name} already exists" => "{new_name} yn bodoli'n barod",
"replace" => "amnewid",
"suggest name" => "awgrymu enw",
"cancel" => "diddymu",
"replaced {new_name} with {old_name}" => "newidiwyd {new_name} yn lle {old_name}",
"undo" => "dadwneud",
"perform delete operation" => "cyflawni gweithred dileu",
"1 file uploading" => "1 ffeil yn llwytho i fyny",
"files uploading" => "ffeiliau'n llwytho i fyny",
"'.' is an invalid file name." => "Mae '.' yn enw ffeil annilys.",
"File name cannot be empty." => "Does dim hawl cael enw ffeil gwag.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Enw annilys, ni chaniateir, '\\', '/', '<', '>', ':', '\"', '|', '?' na '*'.",
"Your storage is full, files can not be updated or synced anymore!" => "Mae eich storfa'n llawn, ni ellir diweddaru a chydweddu ffeiliau mwyach!",
"Your storage is almost full ({usedSpacePercent}%)" => "Mae eich storfa bron a bod yn llawn ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Wrthi'n paratoi i lwytho i lawr. Gall gymryd peth amser os yw'r ffeiliau'n fawr.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Methu llwytho'ch ffeil i fyny gan ei fod yn gyferiadur neu'n cynnwys 0 beit",
"Not enough space available" => "Dim digon o le ar gael",
"Upload cancelled." => "Diddymwyd llwytho i fyny.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Mae ffeiliau'n cael eu llwytho i fyny. Bydd gadael y dudalen hon nawr yn diddymu'r broses.",
"URL cannot be empty." => "Does dim hawl cael URL gwag.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Enw plygell annilys. Mae'r defnydd o 'Shared' yn cael ei gadw gan Owncloud",
"Error" => "Gwall",
"Name" => "Enw",
"Size" => "Maint",
"Modified" => "Addaswyd",
"1 folder" => "1 blygell",
"{count} folders" => "{count} plygell",
"1 file" => "1 ffeil",
"{count} files" => "{count} ffeil",
"Upload" => "Llwytho i fyny",
"File handling" => "Trafod ffeiliau",
"Maximum upload size" => "Maint mwyaf llwytho i fyny",
"max. possible: " => "mwyaf. posib:",
"Needed for multi-file and folder downloads." => "Angen ar gyfer llwytho mwy nag un ffeil neu blygell i lawr yr un pryd.",
"Enable ZIP-download" => "Galluogi llwytho i lawr ZIP",
"0 is unlimited" => "0 yn ddiderfyn",
"Maximum input size for ZIP files" => "Maint mewnbynnu mwyaf ffeiliau ZIP",
"Save" => "Cadw",
"New" => "Newydd",
"Text file" => "Ffeil destun",
"Folder" => "Plygell",
"From link" => "Dolen o",
"Deleted files" => "Ffeiliau ddilewyd",
"Cancel upload" => "Diddymu llwytho i fyny",
"You dont have write permissions here." => "Nid oes gennych hawliau ysgrifennu fan hyn.",
"Nothing in here. Upload something!" => "Does dim byd fan hyn. Llwythwch rhywbeth i fyny!",
"Download" => "Llwytho i lawr",
"Unshare" => "Dad-rannu",
"Upload too large" => "Maint llwytho i fyny'n rhy fawr",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Mae'r ffeiliau rydych yn ceisio llwytho i fyny'n fwy na maint mwyaf llwytho ffeiliau i fyny ar y gweinydd hwn.",
"Files are being scanned, please wait." => "Arhoswch, mae ffeiliau'n cael eu sganio.",
"Current scanning" => "Sganio cyfredol",
"Upgrading filesystem cache..." => "Uwchraddio storfa system ffeiliau..."
);

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Der er ikke nok plads til rådlighed",
"Invalid directory." => "Ugyldig mappe.",
"Files" => "Filer",
"Share" => "Del",
"Delete permanently" => "Slet permanent",
"Delete" => "Slet",
"Rename" => "Omdøb",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Nicht genug Speicherplatz verfügbar",
"Invalid directory." => "Ungültiges Verzeichnis.",
"Files" => "Dateien",
"Share" => "Teilen",
"Delete permanently" => "Permanent löschen",
"Delete" => "Löschen",
"Rename" => "Umbenennen",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Nicht genug Speicher vorhanden.",
"Invalid directory." => "Ungültiges Verzeichnis.",
"Files" => "Dateien",
"Share" => "Teilen",
"Delete permanently" => "Entgültig löschen",
"Delete" => "Löschen",
"Rename" => "Umbenennen",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Μη επαρκής διαθέσιμος αποθηκευτικός χώρος",
"Invalid directory." => "Μη έγκυρος φάκελος.",
"Files" => "Αρχεία",
"Share" => "Διαμοιρασμός",
"Delete permanently" => "Μόνιμη διαγραφή",
"Delete" => "Διαγραφή",
"Rename" => "Μετονομασία",

View File

@@ -12,6 +12,7 @@
"Failed to write to disk" => "Malsukcesis skribo al disko",
"Invalid directory." => "Nevalida dosierujo.",
"Files" => "Dosieroj",
"Share" => "Kunhavigi",
"Delete" => "Forigi",
"Rename" => "Alinomigi",
"Pending" => "Traktotaj",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "No hay suficiente espacio disponible",
"Invalid directory." => "Directorio invalido.",
"Files" => "Archivos",
"Share" => "Compartir",
"Delete permanently" => "Eliminar permanentemente",
"Delete" => "Eliminar",
"Rename" => "Renombrar",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "No hay suficiente capacidad de almacenamiento",
"Invalid directory." => "Directorio invalido.",
"Files" => "Archivos",
"Share" => "Compartir",
"Delete permanently" => "Borrar de manera permanente",
"Delete" => "Borrar",
"Rename" => "Cambiar nombre",

View File

@@ -11,6 +11,7 @@
"Not enough storage available" => "Saadaval pole piisavalt ruumi",
"Invalid directory." => "Vigane kaust.",
"Files" => "Failid",
"Share" => "Jaga",
"Delete permanently" => "Kustuta jäädavalt",
"Delete" => "Kustuta",
"Rename" => "ümber",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Ez dago behar aina leku erabilgarri,",
"Invalid directory." => "Baliogabeko karpeta.",
"Files" => "Fitxategiak",
"Share" => "Elkarbanatu",
"Delete permanently" => "Ezabatu betirako",
"Delete" => "Ezabatu",
"Rename" => "Berrizendatu",

View File

@@ -12,6 +12,7 @@
"Failed to write to disk" => "نوشتن بر روی دیسک سخت ناموفق بود",
"Invalid directory." => "فهرست راهنما نامعتبر می باشد.",
"Files" => "فایل ها",
"Share" => "اشتراک‌گذاری",
"Delete permanently" => "حذف قطعی",
"Delete" => "پاک کردن",
"Rename" => "تغییرنام",

View File

@@ -12,6 +12,7 @@
"Not enough storage available" => "Tallennustilaa ei ole riittävästi käytettävissä",
"Invalid directory." => "Virheellinen kansio.",
"Files" => "Tiedostot",
"Share" => "Jaa",
"Delete permanently" => "Poista pysyvästi",
"Delete" => "Poista",
"Rename" => "Nimeä uudelleen",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Plus assez d'espace de stockage disponible",
"Invalid directory." => "Dossier invalide.",
"Files" => "Fichiers",
"Share" => "Partager",
"Delete permanently" => "Supprimer de façon définitive",
"Delete" => "Supprimer",
"Rename" => "Renommer",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Non hai espazo de almacenamento abondo",
"Invalid directory." => "O directorio é incorrecto.",
"Files" => "Ficheiros",
"Share" => "Compartir",
"Delete permanently" => "Eliminar permanentemente",
"Delete" => "Eliminar",
"Rename" => "Renomear",

View File

@@ -8,6 +8,7 @@
"Missing a temporary folder" => "תיקייה זמנית חסרה",
"Failed to write to disk" => "הכתיבה לכונן נכשלה",
"Files" => "קבצים",
"Share" => "שתף",
"Delete permanently" => "מחק לצמיתות",
"Delete" => "מחיקה",
"Rename" => "שינוי שם",

View File

@@ -6,6 +6,7 @@
"Missing a temporary folder" => "Nedostaje privremena mapa",
"Failed to write to disk" => "Neuspjelo pisanje na disk",
"Files" => "Datoteke",
"Share" => "Podijeli",
"Delete" => "Briši",
"Rename" => "Promjeni ime",
"Pending" => "U tijeku",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Nincs elég szabad hely.",
"Invalid directory." => "Érvénytelen mappa.",
"Files" => "Fájlok",
"Share" => "Megosztás",
"Delete permanently" => "Végleges törlés",
"Delete" => "Törlés",
"Rename" => "Átnevezés",

View File

@@ -3,6 +3,7 @@
"No file was uploaded" => "Nulle file esseva incargate",
"Missing a temporary folder" => "Manca un dossier temporari",
"Files" => "Files",
"Share" => "Compartir",
"Delete" => "Deler",
"Close" => "Clauder",
"Name" => "Nomine",

View File

@@ -6,6 +6,8 @@
"Missing a temporary folder" => "Kehilangan folder temporer",
"Failed to write to disk" => "Gagal menulis ke disk",
"Files" => "Berkas",
"Share" => "Bagikan",
"Delete permanently" => "Hapus secara permanen",
"Delete" => "Hapus",
"Pending" => "Menunggu",
"replace" => "mengganti",

View File

@@ -12,6 +12,7 @@
"Failed to write to disk" => "Tókst ekki að skrifa á disk",
"Invalid directory." => "Ógild mappa.",
"Files" => "Skrár",
"Share" => "Deila",
"Delete" => "Eyða",
"Rename" => "Endurskýra",
"Pending" => "Bíður",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Spazio di archiviazione insufficiente",
"Invalid directory." => "Cartella non valida.",
"Files" => "File",
"Share" => "Condividi",
"Delete permanently" => "Elimina definitivamente",
"Delete" => "Elimina",
"Rename" => "Rinomina",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "ストレージに十分な空き容量がありません",
"Invalid directory." => "無効なディレクトリです。",
"Files" => "ファイル",
"Share" => "共有",
"Delete permanently" => "完全に削除する",
"Delete" => "削除",
"Rename" => "名前の変更",

View File

@@ -6,6 +6,8 @@
"Missing a temporary folder" => "დროებითი საქაღალდე არ არსებობს",
"Failed to write to disk" => "შეცდომა დისკზე ჩაწერისას",
"Files" => "ფაილები",
"Share" => "გაზიარება",
"Delete permanently" => "სრულად წაშლა",
"Delete" => "წაშლა",
"Rename" => "გადარქმევა",
"Pending" => "მოცდის რეჟიმში",

View File

@@ -12,6 +12,7 @@
"Failed to write to disk" => "디스크에 쓰지 못했습니다",
"Invalid directory." => "올바르지 않은 디렉터리입니다.",
"Files" => "파일",
"Share" => "공유",
"Delete" => "삭제",
"Rename" => "이름 바꾸기",
"Pending" => "보류 중",

View File

@@ -6,6 +6,7 @@
"Missing a temporary folder" => "Et feelt en temporären Dossier",
"Failed to write to disk" => "Konnt net op den Disk schreiwen",
"Files" => "Dateien",
"Share" => "Deelen",
"Delete" => "Läschen",
"replace" => "ersetzen",
"cancel" => "ofbriechen",

View File

@@ -6,6 +6,7 @@
"Missing a temporary folder" => "Nėra laikinojo katalogo",
"Failed to write to disk" => "Nepavyko įrašyti į diską",
"Files" => "Failai",
"Share" => "Dalintis",
"Delete" => "Ištrinti",
"Rename" => "Pervadinti",
"Pending" => "Laukiantis",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Nav pietiekami daudz vietas",
"Invalid directory." => "Nederīga direktorija.",
"Files" => "Datnes",
"Share" => "Dalīties",
"Delete permanently" => "Dzēst pavisam",
"Delete" => "Dzēst",
"Rename" => "Pārsaukt",

View File

@@ -8,6 +8,7 @@
"Missing a temporary folder" => "Не постои привремена папка",
"Failed to write to disk" => "Неуспеав да запишам на диск",
"Files" => "Датотеки",
"Share" => "Сподели",
"Delete" => "Избриши",
"Rename" => "Преименувај",
"Pending" => "Чека",

View File

@@ -7,6 +7,7 @@
"Missing a temporary folder" => "Folder sementara hilang",
"Failed to write to disk" => "Gagal untuk disimpan",
"Files" => "fail",
"Share" => "Kongsi",
"Delete" => "Padam",
"Pending" => "Dalam proses",
"replace" => "ganti",

View File

@@ -7,6 +7,7 @@
"Missing a temporary folder" => "Mangler en midlertidig mappe",
"Failed to write to disk" => "Klarte ikke å skrive til disk",
"Files" => "Filer",
"Share" => "Del",
"Delete permanently" => "Slett permanent",
"Delete" => "Slett",
"Rename" => "Omdøp",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Niet genoeg opslagruimte beschikbaar",
"Invalid directory." => "Ongeldige directory.",
"Files" => "Bestanden",
"Share" => "Delen",
"Delete permanently" => "Verwijder definitief",
"Delete" => "Verwijder",
"Rename" => "Hernoem",

View File

@@ -6,6 +6,7 @@
"Missing a temporary folder" => "Un dorsièr temporari manca",
"Failed to write to disk" => "L'escriptura sul disc a fracassat",
"Files" => "Fichièrs",
"Share" => "Parteja",
"Delete" => "Escafa",
"Rename" => "Torna nomenar",
"Pending" => "Al esperar",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Za mało dostępnego miejsca",
"Invalid directory." => "Zła ścieżka.",
"Files" => "Pliki",
"Share" => "Udostępnij",
"Delete permanently" => "Trwale usuń",
"Delete" => "Usuń",
"Rename" => "Zmień nazwę",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Espaço de armazenamento insuficiente",
"Invalid directory." => "Diretório inválido.",
"Files" => "Arquivos",
"Share" => "Compartilhar",
"Delete permanently" => "Excluir permanentemente",
"Delete" => "Excluir",
"Rename" => "Renomear",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Não há espaço suficiente em disco",
"Invalid directory." => "Directório Inválido",
"Files" => "Ficheiros",
"Share" => "Partilhar",
"Delete permanently" => "Eliminar permanentemente",
"Delete" => "Apagar",
"Rename" => "Renomear",

View File

@@ -12,6 +12,7 @@
"Failed to write to disk" => "Eroare la scriere pe disc",
"Invalid directory." => "Director invalid.",
"Files" => "Fișiere",
"Share" => "Partajează",
"Delete" => "Șterge",
"Rename" => "Redenumire",
"Pending" => "În așteptare",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Недостаточно доступного места в хранилище",
"Invalid directory." => "Неправильный каталог.",
"Files" => "Файлы",
"Share" => "Открыть доступ",
"Delete permanently" => "Удалено навсегда",
"Delete" => "Удалить",
"Rename" => "Переименовать",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Недостаточно места в хранилище",
"Invalid directory." => "Неверный каталог.",
"Files" => "Файлы",
"Share" => "Сделать общим",
"Delete permanently" => "Удалить навсегда",
"Delete" => "Удалить",
"Rename" => "Переименовать",

View File

@@ -7,6 +7,7 @@
"Missing a temporary folder" => "තාවකාලික ෆොල්ඩරයක් සොයාගත නොහැක",
"Failed to write to disk" => "තැටිගත කිරීම අසාර්ථකයි",
"Files" => "ගොනු",
"Share" => "බෙදා හදා ගන්න",
"Delete" => "මකන්න",
"Rename" => "නැවත නම් කරන්න",
"replace" => "ප්‍රතිස්ථාපනය කරන්න",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Nedostatok dostupného úložného priestoru",
"Invalid directory." => "Neplatný priečinok",
"Files" => "Súbory",
"Share" => "Zdieľať",
"Delete permanently" => "Zmazať trvalo",
"Delete" => "Odstrániť",
"Rename" => "Premenovať",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Na voljo ni dovolj prostora",
"Invalid directory." => "Neveljavna mapa.",
"Files" => "Datoteke",
"Share" => "Souporaba",
"Delete permanently" => "Izbriši trajno",
"Delete" => "Izbriši",
"Rename" => "Preimenuj",

74
apps/files/l10n/sq.php Normal file
View File

@@ -0,0 +1,74 @@
<?php $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "%s nuk u spostua - Aty ekziston një skedar me të njëjtin emër",
"Could not move %s" => "%s nuk u spostua",
"Unable to rename file" => "Nuk është i mundur riemërtimi i skedarit",
"No file was uploaded. Unknown error" => "Nuk u ngarkua asnjë skedar. Veprim i gabuar i panjohur",
"There is no error, the file uploaded with success" => "Nuk pati veprime të gabuara, skedari u ngarkua me sukses",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Skedari i ngarkuar tejkalon udhëzimin upload_max_filesize tek php.ini:",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Skedari i ngarkuar tejkalon udhëzimin MAX_FILE_SIZE të specifikuar në formularin HTML",
"The uploaded file was only partially uploaded" => "Skedari i ngarkuar u ngarkua vetëm pjesërisht",
"No file was uploaded" => "Nuk u ngarkua asnjë skedar",
"Missing a temporary folder" => "Një dosje e përkohshme nuk u gjet",
"Failed to write to disk" => "Ruajtja në disk dështoi",
"Not enough storage available" => "Nuk ka mbetur hapësirë memorizimi e mjaftueshme",
"Invalid directory." => "Dosje e pavlefshme.",
"Files" => "Skedarët",
"Share" => "Nda",
"Delete permanently" => "Elimino përfundimisht",
"Delete" => "Elimino",
"Rename" => "Riemërto",
"Pending" => "Pezulluar",
"{new_name} already exists" => "{new_name} ekziston",
"replace" => "zëvëndëso",
"suggest name" => "sugjero një emër",
"cancel" => "anulo",
"replaced {new_name} with {old_name}" => "U zëvëndësua {new_name} me {old_name}",
"undo" => "anulo",
"perform delete operation" => "ekzekuto operacionin e eliminimit",
"1 file uploading" => "Po ngarkohet 1 skedar",
"files uploading" => "po ngarkoj skedarët",
"'.' is an invalid file name." => "'.' është emër i pavlefshëm.",
"File name cannot be empty." => "Emri i skedarit nuk mund të jetë bosh.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Emër i pavlefshëm, '\\', '/', '<', '>', ':', '\"', '|', '?' dhe '*' nuk lejohen.",
"Your storage is full, files can not be updated or synced anymore!" => "Hapësira juaj e memorizimit është plot, nuk mund të ngarkoni apo sinkronizoni më skedarët.",
"Your storage is almost full ({usedSpacePercent}%)" => "Hapësira juaj e memorizimit është gati plot ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Shkarkimi juaj po përgatitet. Mund të duhet pak kohë nqse skedarët janë të mëdhenj.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nuk është i mundur ngarkimi i skedarit tuaj sepse është dosje ose ka dimension 0 byte",
"Not enough space available" => "Nuk ka hapësirë memorizimi e mjaftueshme",
"Upload cancelled." => "Ngarkimi u anulua.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Ngarkimi i skedarit është në vazhdim. Nqse ndërroni faqen tani ngarkimi do të anulohet.",
"URL cannot be empty." => "URL-i nuk mund të jetë bosh.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Emri i dosjes është i pavlefshëm. Përdorimi i \"Shared\" është i rezervuar nga Owncloud-i.",
"Error" => "Veprim i gabuar",
"Name" => "Emri",
"Size" => "Dimensioni",
"Modified" => "Modifikuar",
"1 folder" => "1 dosje",
"{count} folders" => "{count} dosje",
"1 file" => "1 skedar",
"{count} files" => "{count} skedarë",
"Upload" => "Ngarko",
"File handling" => "Trajtimi i skedarit",
"Maximum upload size" => "Dimensioni maksimal i ngarkimit",
"max. possible: " => "maks. i mundur:",
"Needed for multi-file and folder downloads." => "Duhet për shkarkimin e dosjeve dhe të skedarëve",
"Enable ZIP-download" => "Aktivizo shkarkimin e ZIP-eve",
"0 is unlimited" => "0 është i pakufizuar",
"Maximum input size for ZIP files" => "Dimensioni maksimal i ngarkimit të skedarëve ZIP",
"Save" => "Ruaj",
"New" => "I ri",
"Text file" => "Skedar teksti",
"Folder" => "Dosje",
"From link" => "Nga lidhja",
"Deleted files" => "Skedarë të eliminuar",
"Cancel upload" => "Anulo ngarkimin",
"You dont have write permissions here." => "Nuk keni të drejta për të shkruar këtu.",
"Nothing in here. Upload something!" => "Këtu nuk ka asgjë. Ngarkoni diçka!",
"Download" => "Shkarko",
"Unshare" => "Hiq ndarjen",
"Upload too large" => "Ngarkimi është shumë i madh",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Skedarët që doni të ngarkoni tejkalojnë dimensionet maksimale për ngarkimet në këtë server.",
"Files are being scanned, please wait." => "Skedarët po analizohen, ju lutemi pritni.",
"Current scanning" => "Analizimi aktual",
"Upgrading filesystem cache..." => "Po përmirësoj memorjen e filesystem-it..."
);

View File

@@ -7,6 +7,8 @@
"Missing a temporary folder" => "Недостаје привремена фасцикла",
"Failed to write to disk" => "Не могу да пишем на диск",
"Files" => "Датотеке",
"Share" => "Дели",
"Delete permanently" => "Обриши за стално",
"Delete" => "Обриши",
"Rename" => "Преименуј",
"Pending" => "На чекању",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Inte tillräckligt med lagringsutrymme tillgängligt",
"Invalid directory." => "Felaktig mapp.",
"Files" => "Filer",
"Share" => "Dela",
"Delete permanently" => "Radera permanent",
"Delete" => "Radera",
"Rename" => "Byt namn",

View File

@@ -7,6 +7,7 @@
"Missing a temporary folder" => "ஒரு தற்காலிகமான கோப்புறையை காணவில்லை",
"Failed to write to disk" => "வட்டில் எழுத முடியவில்லை",
"Files" => "கோப்புகள்",
"Share" => "பகிர்வு",
"Delete" => "அழிக்க",
"Rename" => "பெயர்மாற்றம்",
"Pending" => "நிலுவையிலுள்ள",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "เหลือพื้นที่ไม่เพียงสำหรับใช้งาน",
"Invalid directory." => "ไดเร็กทอรี่ไม่ถูกต้อง",
"Files" => "ไฟล์",
"Share" => "แชร์",
"Delete" => "ลบ",
"Rename" => "เปลี่ยนชื่อ",
"Pending" => "อยู่ระหว่างดำเนินการ",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Yeterli disk alanı yok",
"Invalid directory." => "Geçersiz dizin.",
"Files" => "Dosyalar",
"Share" => "Paylaş",
"Delete permanently" => "Kalıcı olarak sil",
"Delete" => "Sil",
"Rename" => "İsim değiştir.",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Місця більше немає",
"Invalid directory." => "Невірний каталог.",
"Files" => "Файли",
"Share" => "Поділитися",
"Delete permanently" => "Видалити назавжди",
"Delete" => "Видалити",
"Rename" => "Перейменувати",

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "Không đủ không gian lưu trữ",
"Invalid directory." => "Thư mục không hợp lệ",
"Files" => "Tập tin",
"Share" => "Chia sẻ",
"Delete permanently" => "Xóa vĩnh vễn",
"Delete" => "Xóa",
"Rename" => "Sửa tên",

View File

@@ -7,6 +7,7 @@
"Missing a temporary folder" => "丢失了一个临时文件夹",
"Failed to write to disk" => "写磁盘失败",
"Files" => "文件",
"Share" => "分享",
"Delete" => "删除",
"Rename" => "重命名",
"Pending" => "Pending",

View File

@@ -12,6 +12,8 @@
"Failed to write to disk" => "写入磁盘失败",
"Invalid directory." => "无效文件夹。",
"Files" => "文件",
"Share" => "分享",
"Delete permanently" => "永久删除",
"Delete" => "删除",
"Rename" => "重命名",
"Pending" => "操作等待中",

12
apps/files/l10n/zh_HK.php Normal file
View File

@@ -0,0 +1,12 @@
<?php $TRANSLATIONS = array(
"Files" => "文件",
"Share" => "分享",
"Delete" => "刪除",
"Error" => "錯誤",
"Name" => "名稱",
"{count} folders" => "{}文件夾",
"Upload" => "上傳",
"Save" => "儲存",
"Download" => "下載",
"Unshare" => "取消分享"
);

View File

@@ -13,6 +13,7 @@
"Not enough storage available" => "儲存空間不足",
"Invalid directory." => "無效的資料夾。",
"Files" => "檔案",
"Share" => "分享",
"Delete permanently" => "永久刪除",
"Delete" => "刪除",
"Rename" => "重新命名",

View File

@@ -11,7 +11,7 @@ class Helper
$maxHumanFilesize = $l->t('Upload') . ' max. ' . $maxHumanFilesize;
// information about storage capacities
$storageInfo = \OC_Helper::getStorageInfo();
$storageInfo = \OC_Helper::getStorageInfo($dir);
return array('uploadMaxFilesize' => $maxUploadFilesize,
'maxHumanFilesize' => $maxHumanFilesize,

View File

@@ -3,6 +3,7 @@
<?php print_unescaped($_['breadcrumb']); ?>
<?php if ($_['isCreatable']):?>
<div class="actions <?php if (isset($_['files']) and count($_['files'])==0):?>emptyfolder<?php endif; ?>">
<?php if(!isset($_['dirToken'])):?>
<div id="new" class="button">
<a><?php p($l->t('New'));?></a>
<ul>
@@ -14,6 +15,7 @@
data-type='web'><p><?php p($l->t('From link'));?></p></li>
</ul>
</div>
<?php endif;?>
<div id="upload" class="button"
title="<?php p($l->t('Upload') . ' max. '.$_['uploadMaxHumanFilesize']) ?>">
<form data-upload-id='1'
@@ -27,12 +29,16 @@
value="<?php p($_['uploadMaxFilesize']) ?>">
<!-- Send the requesttoken, this is needed for older IE versions
because they don't send the CSRF token via HTTP header in this case -->
<input type="hidden" name="requesttoken" value="<?php p($_['requesttoken']) ?>" id="requesttoken">
<input type="hidden" id="requesttoken" name="requesttoken" value="<?php p($_['requesttoken']) ?>" />
<?php if(isset($_['dirToken'])):?>
<input type="hidden" id="publicUploadRequestToken" name="requesttoken" value="<?php p($_['requesttoken']) ?>" />
<input type="hidden" id="dirToken" name="dirToken" value="<?php p($_['dirToken']) ?>" />
<?php endif;?>
<input type="hidden" class="max_human_file_size"
value="(max <?php p($_['uploadMaxHumanFilesize']); ?>)">
<input type="hidden" name="dir" value="<?php p($_['dir']) ?>" id="dir">
<input type="file" id="file_upload_start" name='files[]'/>
<a href="#" class="svg" onclick="return false;"></a>
<a href="#" class="svg"></a>
</form>
</div>
<?php if ($_['trash'] ): ?>
@@ -44,13 +50,12 @@
<div id="uploadprogressbar"></div>
<input type="button" class="stop" style="display:none"
value="<?php p($l->t('Cancel upload'));?>"
onclick="javascript:Files.cancelUploads();"
/>
</div>
</div>
<div id="file_action_panel"></div>
<?php else:?>
<div class="crumb last"><?php p($l->t('You dont have write permissions here.'))?></div>
<?php elseif( !$_['isPublic'] ):?>
<div class="actions"><input type="button" disabled value="<?php p($l->t('You dont have write permissions here.'))?>"></div>
<input type="hidden" name="dir" value="<?php p($_['dir']) ?>" id="dir">
<?php endif;?>
<input type="hidden" name="permissions" value="<?php p($_['permissions']); ?>" id="permissions">
@@ -60,7 +65,9 @@
<div id="emptyfolder"><?php p($l->t('Nothing in here. Upload something!'))?></div>
<?php endif; ?>
<table id="filestable">
<input type="hidden" id="disableSharing" data-status="<?php p($_['disableSharing']); ?>" />
<table id="filestable" data-allow-public-upload="<?php p($_['publicUploadEnabled'])?>">
<thead>
<tr>
<th id='headerName'>
@@ -80,20 +87,11 @@
<th id="headerDate">
<span id="modified"><?php p($l->t( 'Modified' )); ?></span>
<?php if ($_['permissions'] & OCP\PERMISSION_DELETE): ?>
<!-- NOTE: Temporary fix to allow unsharing of files in root of Shared folder -->
<?php if ($_['dir'] == '/Shared'): ?>
<span class="selectedActions"><a href="" class="delete">
<?php p($l->t('Unshare'))?>
<img class="svg" alt="<?php p($l->t('Unshare'))?>"
src="<?php print_unescaped(OCP\image_path("core", "actions/delete.svg")); ?>" />
</a></span>
<?php else: ?>
<span class="selectedActions"><a href="" class="delete">
<?php p($l->t('Delete'))?>
<img class="svg" alt="<?php p($l->t('Delete'))?>"
src="<?php print_unescaped(OCP\image_path("core", "actions/delete.svg")); ?>" />
</a></span>
<?php endif; ?>
<span class="selectedActions"><a href="" class="delete-selected">
<?php p($l->t('Delete'))?>
<img class="svg" alt="<?php p($l->t('Delete'))?>"
src="<?php print_unescaped(OCP\image_path("core", "actions/delete.svg")); ?>" />
</a></span>
<?php endif; ?>
</th>
</tr>

View File

@@ -1,5 +1,5 @@
<?php if(count($_["breadcrumb"])):?>
<div class="crumb">
<div class="crumb" data-dir=''>
<a href="<?php print_unescaped($_['baseURL']); ?>">
<img src="<?php print_unescaped(OCP\image_path('core', 'places/home.svg'));?>" class="svg" />
</a>

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/../../lib/base.php';
if (OC::$CLI) {
if (count($argv) === 2) {
$file = $argv[1];
list(, $user) = explode('/', $file);
OC_Util::setupFS($user);
$view = new \OC\Files\View('');
/**
* @var \OC\Files\Storage\Storage $storage
*/
list($storage, $internalPath) = $view->resolvePath($file);
$watcher = $storage->getWatcher($internalPath);
$watcher->checkUpdate($internalPath);
} else {
echo "Usage: php triggerupdate.php /path/to/file\n";
}
} else {
echo "This script can be run from the command line only\n";
}

View File

@@ -0,0 +1,317 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
* Crypt_Blowfish allows for encryption and decryption on the fly using
* the Blowfish algorithm. Crypt_Blowfish does not require the mcrypt
* PHP extension, it uses only PHP.
* Crypt_Blowfish support encryption/decryption with or without a secret key.
*
*
* PHP versions 4 and 5
*
* LICENSE: This source file is subject to version 3.0 of the PHP license
* that is available through the world-wide-web at the following URI:
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to license@php.net so we can mail you a copy immediately.
*
* @category Encryption
* @package Crypt_Blowfish
* @author Matthew Fonda <mfonda@php.net>
* @copyright 2005 Matthew Fonda
* @license http://www.php.net/license/3_0.txt PHP License 3.0
* @version CVS: $Id: Blowfish.php,v 1.81 2005/05/30 18:40:36 mfonda Exp $
* @link http://pear.php.net/package/Crypt_Blowfish
*/
require_once 'PEAR.php';
/**
*
* Example usage:
* $bf = new Crypt_Blowfish('some secret key!');
* $encrypted = $bf->encrypt('this is some example plain text');
* $plaintext = $bf->decrypt($encrypted);
* echo "plain text: $plaintext";
*
*
* @category Encryption
* @package Crypt_Blowfish
* @author Matthew Fonda <mfonda@php.net>
* @copyright 2005 Matthew Fonda
* @license http://www.php.net/license/3_0.txt PHP License 3.0
* @link http://pear.php.net/package/Crypt_Blowfish
* @version @package_version@
* @access public
*/
class Crypt_Blowfish
{
/**
* P-Array contains 18 32-bit subkeys
*
* @var array
* @access private
*/
var $_P = array();
/**
* Array of four S-Blocks each containing 256 32-bit entries
*
* @var array
* @access private
*/
var $_S = array();
/**
* Mcrypt td resource
*
* @var resource
* @access private
*/
var $_td = null;
/**
* Initialization vector
*
* @var string
* @access private
*/
var $_iv = null;
/**
* Crypt_Blowfish Constructor
* Initializes the Crypt_Blowfish object, and gives a sets
* the secret key
*
* @param string $key
* @access public
*/
function Crypt_Blowfish($key)
{
if (extension_loaded('mcrypt')) {
$this->_td = mcrypt_module_open(MCRYPT_BLOWFISH, '', 'ecb', '');
$this->_iv = mcrypt_create_iv(8, MCRYPT_RAND);
}
$this->setKey($key);
}
/**
* Deprecated isReady method
*
* @return bool
* @access public
* @deprecated
*/
function isReady()
{
return true;
}
/**
* Deprecated init method - init is now a private
* method and has been replaced with _init
*
* @return bool
* @access public
* @deprecated
* @see Crypt_Blowfish::_init()
*/
function init()
{
$this->_init();
}
/**
* Initializes the Crypt_Blowfish object
*
* @access private
*/
function _init()
{
$defaults = new Crypt_Blowfish_DefaultKey();
$this->_P = $defaults->P;
$this->_S = $defaults->S;
}
/**
* Enciphers a single 64 bit block
*
* @param int &$Xl
* @param int &$Xr
* @access private
*/
function _encipher(&$Xl, &$Xr)
{
for ($i = 0; $i < 16; $i++) {
$temp = $Xl ^ $this->_P[$i];
$Xl = ((($this->_S[0][($temp>>24) & 255] +
$this->_S[1][($temp>>16) & 255]) ^
$this->_S[2][($temp>>8) & 255]) +
$this->_S[3][$temp & 255]) ^ $Xr;
$Xr = $temp;
}
$Xr = $Xl ^ $this->_P[16];
$Xl = $temp ^ $this->_P[17];
}
/**
* Deciphers a single 64 bit block
*
* @param int &$Xl
* @param int &$Xr
* @access private
*/
function _decipher(&$Xl, &$Xr)
{
for ($i = 17; $i > 1; $i--) {
$temp = $Xl ^ $this->_P[$i];
$Xl = ((($this->_S[0][($temp>>24) & 255] +
$this->_S[1][($temp>>16) & 255]) ^
$this->_S[2][($temp>>8) & 255]) +
$this->_S[3][$temp & 255]) ^ $Xr;
$Xr = $temp;
}
$Xr = $Xl ^ $this->_P[1];
$Xl = $temp ^ $this->_P[0];
}
/**
* Encrypts a string
*
* @param string $plainText
* @return string Returns cipher text on success, PEAR_Error on failure
* @access public
*/
function encrypt($plainText)
{
if (!is_string($plainText)) {
PEAR::raiseError('Plain text must be a string', 0, PEAR_ERROR_DIE);
}
if (extension_loaded('mcrypt')) {
return mcrypt_generic($this->_td, $plainText);
}
$cipherText = '';
$len = strlen($plainText);
$plainText .= str_repeat(chr(0),(8 - ($len%8))%8);
for ($i = 0; $i < $len; $i += 8) {
list(,$Xl,$Xr) = unpack("N2",substr($plainText,$i,8));
$this->_encipher($Xl, $Xr);
$cipherText .= pack("N2", $Xl, $Xr);
}
return $cipherText;
}
/**
* Decrypts an encrypted string
*
* @param string $cipherText
* @return string Returns plain text on success, PEAR_Error on failure
* @access public
*/
function decrypt($cipherText)
{
if (!is_string($cipherText)) {
PEAR::raiseError('Cipher text must be a string', 1, PEAR_ERROR_DIE);
}
if (extension_loaded('mcrypt')) {
return mdecrypt_generic($this->_td, $cipherText);
}
$plainText = '';
$len = strlen($cipherText);
$cipherText .= str_repeat(chr(0),(8 - ($len%8))%8);
for ($i = 0; $i < $len; $i += 8) {
list(,$Xl,$Xr) = unpack("N2",substr($cipherText,$i,8));
$this->_decipher($Xl, $Xr);
$plainText .= pack("N2", $Xl, $Xr);
}
return $plainText;
}
/**
* Sets the secret key
* The key must be non-zero, and less than or equal to
* 56 characters in length.
*
* @param string $key
* @return bool Returns true on success, PEAR_Error on failure
* @access public
*/
function setKey($key)
{
if (!is_string($key)) {
PEAR::raiseError('Key must be a string', 2, PEAR_ERROR_DIE);
}
$len = strlen($key);
if ($len > 56 || $len == 0) {
PEAR::raiseError('Key must be less than 56 characters and non-zero. Supplied key length: ' . $len, 3, PEAR_ERROR_DIE);
}
if (extension_loaded('mcrypt')) {
mcrypt_generic_init($this->_td, $key, $this->_iv);
return true;
}
require_once 'Blowfish/DefaultKey.php';
$this->_init();
$k = 0;
$data = 0;
$datal = 0;
$datar = 0;
for ($i = 0; $i < 18; $i++) {
$data = 0;
for ($j = 4; $j > 0; $j--) {
$data = $data << 8 | ord($key{$k});
$k = ($k+1) % $len;
}
$this->_P[$i] ^= $data;
}
for ($i = 0; $i <= 16; $i += 2) {
$this->_encipher($datal, $datar);
$this->_P[$i] = $datal;
$this->_P[$i+1] = $datar;
}
for ($i = 0; $i < 256; $i += 2) {
$this->_encipher($datal, $datar);
$this->_S[0][$i] = $datal;
$this->_S[0][$i+1] = $datar;
}
for ($i = 0; $i < 256; $i += 2) {
$this->_encipher($datal, $datar);
$this->_S[1][$i] = $datal;
$this->_S[1][$i+1] = $datar;
}
for ($i = 0; $i < 256; $i += 2) {
$this->_encipher($datal, $datar);
$this->_S[2][$i] = $datal;
$this->_S[2][$i+1] = $datar;
}
for ($i = 0; $i < 256; $i += 2) {
$this->_encipher($datal, $datar);
$this->_S[3][$i] = $datal;
$this->_S[3][$i+1] = $datar;
}
return true;
}
}
?>

View File

@@ -0,0 +1,327 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
* Crypt_Blowfish allows for encryption and decryption on the fly using
* the Blowfish algorithm. Crypt_Blowfish does not require the mcrypt
* PHP extension, it uses only PHP.
* Crypt_Blowfish support encryption/decryption with or without a secret key.
*
*
* PHP versions 4 and 5
*
* LICENSE: This source file is subject to version 3.0 of the PHP license
* that is available through the world-wide-web at the following URI:
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
* the PHP License and are unable to obtain it through the web, please
* send a note to license@php.net so we can mail you a copy immediately.
*
* @category Encryption
* @package Crypt_Blowfish
* @author Matthew Fonda <mfonda@php.net>
* @copyright 2005 Matthew Fonda
* @license http://www.php.net/license/3_0.txt PHP License 3.0
* @version CVS: $Id: DefaultKey.php,v 1.81 2005/05/30 18:40:37 mfonda Exp $
* @link http://pear.php.net/package/Crypt_Blowfish
*/
/**
* Class containing default key
*
* @category Encryption
* @package Crypt_Blowfish
* @author Matthew Fonda <mfonda@php.net>
* @copyright 2005 Matthew Fonda
* @license http://www.php.net/license/3_0.txt PHP License 3.0
* @link http://pear.php.net/package/Crypt_Blowfish
* @version @package_version@
* @access public
*/
class Crypt_Blowfish_DefaultKey
{
var $P = array();
var $S = array();
function Crypt_Blowfish_DefaultKey()
{
$this->P = array(
0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,
0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,
0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,
0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,
0x9216D5D9, 0x8979FB1B
);
$this->S = array(
array(
0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,
0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,
0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,
0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,
0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,
0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,
0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,
0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,
0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,
0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,
0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,
0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,
0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,
0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,
0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,
0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,
0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,
0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,
0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,
0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,
0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,
0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,
0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,
0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,
0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,
0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,
0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,
0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,
0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,
0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,
0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,
0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,
0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,
0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,
0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,
0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,
0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,
0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,
0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,
0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,
0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,
0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,
0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,
0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,
0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,
0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,
0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,
0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,
0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,
0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,
0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,
0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,
0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,
0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,
0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,
0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,
0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,
0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,
0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,
0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,
0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,
0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,
0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,
0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A
),
array(
0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,
0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,
0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,
0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,
0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,
0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,
0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,
0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,
0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,
0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,
0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,
0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,
0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,
0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,
0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,
0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,
0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,
0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,
0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,
0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,
0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,
0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,
0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,
0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,
0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,
0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,
0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,
0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,
0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,
0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,
0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,
0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,
0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,
0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,
0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,
0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,
0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,
0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,
0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,
0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,
0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,
0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,
0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,
0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,
0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,
0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,
0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,
0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,
0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,
0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,
0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,
0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,
0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,
0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,
0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,
0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,
0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,
0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,
0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,
0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,
0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,
0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,
0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,
0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7
),
array(
0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,
0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,
0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,
0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,
0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,
0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,
0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,
0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,
0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,
0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,
0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,
0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,
0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,
0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,
0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,
0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,
0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,
0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,
0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,
0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,
0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,
0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,
0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,
0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,
0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,
0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,
0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,
0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,
0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,
0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,
0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,
0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,
0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,
0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,
0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,
0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,
0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,
0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,
0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,
0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,
0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,
0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,
0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,
0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,
0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,
0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,
0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,
0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,
0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,
0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,
0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,
0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,
0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,
0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,
0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,
0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,
0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,
0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,
0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,
0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,
0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,
0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,
0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,
0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0
),
array(
0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,
0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,
0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,
0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,
0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,
0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,
0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,
0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,
0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,
0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,
0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,
0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,
0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,
0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,
0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,
0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,
0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,
0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,
0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,
0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,
0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,
0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,
0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,
0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,
0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,
0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,
0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,
0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,
0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,
0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,
0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,
0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,
0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,
0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,
0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,
0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,
0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,
0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,
0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,
0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,
0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,
0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,
0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,
0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,
0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,
0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,
0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,
0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,
0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,
0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,
0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,
0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,
0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,
0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,
0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,
0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,
0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,
0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,
0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,
0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,
0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,
0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,
0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,
0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6
)
);
}
}
?>

View File

@@ -0,0 +1,59 @@
<?php
/**
* Copyright (c) 2013, Sam Tuke <samtuke@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or later.
* See the COPYING-README file.
*
* @brief Script to handle admin settings for encrypted key recovery
*/
use OCA\Encryption;
\OCP\JSON::checkAdminUser();
\OCP\JSON::checkAppEnabled('files_encryption');
\OCP\JSON::callCheck();
$l = OC_L10N::get('files_encryption');
$return = false;
// Enable recoveryAdmin
$recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId');
if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] === '1') {
$return = \OCA\Encryption\Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']);
// Return success or failure
if ($return) {
\OCP\JSON::success(array('data' => array('message' => $l->t('Recovery key successfully enabled'))));
} else {
\OCP\JSON::error(array(
'data' => array(
'message' => $l->t(
'Could not enable recovery key. Please check your recovery key password!')
)
));
}
// Disable recoveryAdmin
} elseif (
isset($_POST['adminEnableRecovery'])
&& '0' === $_POST['adminEnableRecovery']
) {
$return = \OCA\Encryption\Helper::adminDisableRecovery($_POST['recoveryPassword']);
// Return success or failure
if ($return) {
\OCP\JSON::success(array('data' => array('message' => $l->t('Recovery key successfully disabled'))));
} else {
\OCP\JSON::error(array(
'data' => array(
'message' => $l->t(
'Could not disable recovery key. Please check your recovery key password!')
)
));
}
}

View File

@@ -0,0 +1,52 @@
<?php
/**
* Copyright (c) 2013, Bjoern Schiessle <schiessle@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or later.
* See the COPYING-README file.
*
* @brief Script to change recovery key password
*
*/
use OCA\Encryption;
\OCP\JSON::checkAdminUser();
\OCP\JSON::checkAppEnabled('files_encryption');
\OCP\JSON::callCheck();
$l = OC_L10N::get('core');
$return = false;
$oldPassword = $_POST['oldPassword'];
$newPassword = $_POST['newPassword'];
$view = new \OC\Files\View('/');
$util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser());
$proxyStatus = \OC_FileProxy::$enabled;
\OC_FileProxy::$enabled = false;
$keyId = $util->getRecoveryKeyId();
$keyPath = '/owncloud_private_key/' . $keyId . '.private.key';
$encryptedRecoveryKey = $view->file_get_contents($keyPath);
$decryptedRecoveryKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedRecoveryKey, $oldPassword);
if ($decryptedRecoveryKey) {
$encryptedRecoveryKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($decryptedRecoveryKey, $newPassword);
$view->file_put_contents($keyPath, $encryptedRecoveryKey);
$return = true;
}
\OC_FileProxy::$enabled = $proxyStatus;
// success or failure
if ($return) {
\OCP\JSON::success(array('data' => array('message' => $l->t('Password successfully changed.'))));
} else {
\OCP\JSON::error(array('data' => array('message' => $l->t('Could not change the password. Maybe the old password was not correct.'))));
}

View File

@@ -0,0 +1,54 @@
<?php
/**
* Copyright (c) 2013, Bjoern Schiessle <schiessle@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or later.
* See the COPYING-README file.
*
* @brief Script to change recovery key password
*
*/
use OCA\Encryption;
\OCP\JSON::checkLoggedIn();
\OCP\JSON::checkAppEnabled('files_encryption');
\OCP\JSON::callCheck();
$l = OC_L10N::get('core');
$return = false;
$oldPassword = $_POST['oldPassword'];
$newPassword = $_POST['newPassword'];
$view = new \OC\Files\View('/');
$session = new \OCA\Encryption\Session($view);
$user = \OCP\User::getUser();
$proxyStatus = \OC_FileProxy::$enabled;
\OC_FileProxy::$enabled = false;
$keyPath = '/' . $user . '/files_encryption/' . $user . '.private.key';
$encryptedKey = $view->file_get_contents($keyPath);
$decryptedKey = \OCA\Encryption\Crypt::decryptPrivateKey($encryptedKey, $oldPassword);
if ($decryptedKey) {
$encryptedKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($decryptedKey, $newPassword);
$view->file_put_contents($keyPath, $encryptedKey);
$session->setPrivateKey($decryptedKey);
$return = true;
}
\OC_FileProxy::$enabled = $proxyStatus;
// success or failure
if ($return) {
\OCP\JSON::success(array('data' => array('message' => $l->t('Private key password successfully updated.'))));
} else {
\OCP\JSON::error(array('data' => array('message' => $l->t('Could not update the private key password. Maybe the old password was not correct.'))));
}

View File

@@ -0,0 +1,41 @@
<?php
/**
* Copyright (c) 2013, Sam Tuke <samtuke@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or later.
* See the COPYING-README file.
*
* @brief Script to handle admin settings for encrypted key recovery
*/
use OCA\Encryption;
\OCP\JSON::checkLoggedIn();
\OCP\JSON::checkAppEnabled('files_encryption');
\OCP\JSON::callCheck();
if (
isset($_POST['userEnableRecovery'])
&& (0 == $_POST['userEnableRecovery'] || '1' === $_POST['userEnableRecovery'])
) {
$userId = \OCP\USER::getUser();
$view = new \OC_FilesystemView('/');
$util = new \OCA\Encryption\Util($view, $userId);
// Save recovery preference to DB
$return = $util->setRecoveryForUser($_POST['userEnableRecovery']);
if ($_POST['userEnableRecovery'] === '1') {
$util->addRecoveryKeys();
} else {
$util->removeRecoveryKeys();
}
} else {
$return = false;
}
// Return success or failure
($return) ? \OCP\JSON::success() : \OCP\JSON::error();

View File

@@ -8,42 +8,63 @@ OC::$CLASSPATH['OCA\Encryption\Stream'] = 'files_encryption/lib/stream.php';
OC::$CLASSPATH['OCA\Encryption\Proxy'] = 'files_encryption/lib/proxy.php';
OC::$CLASSPATH['OCA\Encryption\Session'] = 'files_encryption/lib/session.php';
OC::$CLASSPATH['OCA\Encryption\Capabilities'] = 'files_encryption/lib/capabilities.php';
OC::$CLASSPATH['OCA\Encryption\Helper'] = 'files_encryption/lib/helper.php';
OC_FileProxy::register( new OCA\Encryption\Proxy() );
if (!OC_Config::getValue('maintenance', false)) {
OC_FileProxy::register(new OCA\Encryption\Proxy());
// User-related hooks
OCP\Util::connectHook( 'OC_User', 'post_login', 'OCA\Encryption\Hooks', 'login' );
OCP\Util::connectHook( 'OC_User', 'pre_setPassword', 'OCA\Encryption\Hooks', 'setPassphrase' );
// User related hooks
OCA\Encryption\Helper::registerUserHooks();
// Sharing-related hooks
OCP\Util::connectHook( 'OCP\Share', 'post_shared', 'OCA\Encryption\Hooks', 'postShared' );
OCP\Util::connectHook( 'OCP\Share', 'pre_unshare', 'OCA\Encryption\Hooks', 'preUnshare' );
OCP\Util::connectHook( 'OCP\Share', 'pre_unshareAll', 'OCA\Encryption\Hooks', 'preUnshareAll' );
// Sharing related hooks
OCA\Encryption\Helper::registerShareHooks();
// Webdav-related hooks
OCP\Util::connectHook( 'OC_Webdav_Properties', 'update', 'OCA\Encryption\Hooks', 'updateKeyfile' );
// Filesystem related hooks
OCA\Encryption\Helper::registerFilesystemHooks();
stream_wrapper_register( 'crypt', 'OCA\Encryption\Stream' );
// App manager related hooks
OCA\Encryption\Helper::registerAppHooks();
$session = new OCA\Encryption\Session();
if(!in_array('crypt', stream_get_wrappers())) {
stream_wrapper_register('crypt', 'OCA\Encryption\Stream');
}
if (
! $session->getPrivateKey( \OCP\USER::getUser() )
&& OCP\User::isLoggedIn()
&& OCA\Encryption\Crypt::mode() == 'server'
) {
// check if we are logged in
if (OCP\User::isLoggedIn()) {
// Force the user to log-in again if the encryption key isn't unlocked
// (happens when a user is logged in before the encryption app is
// enabled)
// ensure filesystem is loaded
if (!\OC\Files\Filesystem::$loaded) {
\OC_Util::setupFS();
}
$view = new OC_FilesystemView('/');
$sessionReady = OCA\Encryption\Helper::checkRequirements();
if($sessionReady) {
$session = new \OCA\Encryption\Session($view);
}
$user = \OCP\USER::getUser();
// check if user has a private key
if ($sessionReady === false || (!$view->file_exists('/' . $user . '/files_encryption/' . $user . '.private.key') && OCA\Encryption\Crypt::mode() === 'server')
) {
// Force the user to log-in again if the encryption key isn't unlocked
// (happens when a user is logged in before the encryption app is
// enabled)
OCP\User::logout();
header("Location: " . OC::$WEBROOT . '/');
exit();
}
}
} else {
// logout user if we are in maintenance to force re-login
OCP\User::logout();
header( "Location: " . OC::$WEBROOT.'/' );
exit();
}
// Register settings scripts
OCP\App::registerAdmin( 'files_encryption', 'settings' );
OCP\App::registerPersonal( 'files_encryption', 'settings-personal' );
OCP\App::registerAdmin('files_encryption', 'settings-admin');
OCP\App::registerPersonal('files_encryption', 'settings-personal');

View File

@@ -18,6 +18,21 @@
<type>text</type>
<notnull>true</notnull>
<length>64</length>
<comments>What client-side / server-side configuration is used</comments>
</field>
<field>
<name>recovery_enabled</name>
<type>integer</type>
<notnull>true</notnull>
<default>0</default>
<comments>Whether encryption key recovery is enabled</comments>
</field>
<field>
<name>migration_status</name>
<type>integer</type>
<notnull>true</notnull>
<default>0</default>
<comments>Whether encryption migration has been performed</comments>
</field>
</declaration>
</table>

View File

@@ -2,11 +2,12 @@
<info>
<id>files_encryption</id>
<name>Encryption</name>
<description>Server side encryption of files. Warning: You will lose your data if you enable this App and forget your password. Encryption is not yet compatible with LDAP.</description>
<description>The ownCloud files encryption system provides server side-encryption. After the app is enabled you need to re-login to initialize your encryption keys. Please note that server side encryption requires that the ownCloud server admin can be trusted. The main purpose of this app is the encryption of files that are stored on externally mounted storages.</description>
<licence>AGPL</licence>
<author>Sam Tuke</author>
<author>Sam Tuke, Bjoern Schiessle, Florin Peter</author>
<require>4</require>
<shipped>true</shipped>
<rememberlogin>false</rememberlogin>
<types>
<filesystem/>
</types>

View File

@@ -9,6 +9,57 @@ Encrypted files
[encrypted data string][delimiter][IV][padding]
[anhAAjAmcGXqj1X9g==][00iv00][MSHU5N5gECP7aAg7][xx] (square braces added)
- Directory structure:
- Encrypted user data (catfiles) are stored in the usual /data/user/files dir
- Keyfiles are stored in /data/user/files_encryption/keyfiles
- Sharekey are stored in /data/user/files_encryption/share-files
- File extensions:
- Catfiles have to keep the file extension of the original file, pre-encryption
- Keyfiles use .keyfile
- Sharekeys have .shareKey
Shared files
------------
Shared files have a centrally stored catfile and keyfile, and one sharekey for
each user that shares it.
When sharing is used, a different encryption method is used to encrypt the
keyfile (openssl_seal). Although shared files have a keyfile, its contents
use a different format therefore.
Each time a shared file is edited or deleted, all sharekeys for users sharing
that file must have their sharekeys changed also. The keyfile and catfile
however need only changing in the owners files, as there is only one copy of
these.
Publicly shared files (public links)
------------------------------------
Files shared via public links use a separate system user account called 'ownCloud'. All public files are shared to that user's public key, and the private key is used to access the files when the public link is used in browser.
This means that files shared via public links are accessible only to users who know the shared URL, or to admins who know the 'ownCloud' user password.
Lost password recovery
----------------------
In order to enable users to read their encrypted files in the event of a password loss/reset scenario, administrators can choose to enable a 'recoveryAdmin' account. This is a user that all user files will automatically be shared to of the option is enabled. This allows the recoveryAdmin user to generate new keyfiles for the user. By default the UID of the recoveryAdmin is 'recoveryAdmin'.
OC_FilesystemView
-----------------
files_encryption deals extensively with paths and the filesystem. In order to minimise bugs, it makes calls to filesystem methods in a consistent way: OC_FilesystemView{} objects always use '/' as their root, and specify paths each time particular methods are called. e.g. do this:
$view->file_exists( 'path/to/file' );
Not:
$view->chroot( 'path/to' );
$view->file_exists( 'file' );
Using this convention means that $view objects are more predictable and less likely to break. Problems with paths are the #1 cause of bugs in this app, and consistent $view handling is an important way to prevent them.
Notes
-----
@@ -16,4 +67,11 @@ Notes
- The user passphrase is required in order to set up or upgrade the app. New
keypair generation, and the re-encryption of legacy encrypted files requires
it. Therefore an appinfo/update.php script cannot be used, and upgrade logic
is handled in the login hook listener.
is handled in the login hook listener. Therefore each time the user logs in
their files are scanned to detect unencrypted and legacy encrypted files, and
they are (re)encrypted as necessary. This may present a performance issue; we
need to monitor this.
- When files are saved to ownCloud via WebDAV, a .part file extension is used so
that the file isn't cached before the upload has been completed. .part files
are not compatible with files_encrytion's key management system however, so
we have to always sanitise such paths manually before using them.

View File

@@ -1 +1 @@
0.3
0.4

View File

@@ -0,0 +1,10 @@
/* Copyright (c) 2013, Sam Tuke, <samtuke@owncloud.com>
This file is licensed under the Affero General Public License version 3 or later.
See the COPYING-README file. */
#encryptAllError
, #encryptAllSuccess
, #recoveryEnabledError
, #recoveryEnabledSuccess {
display: none;
}

View File

@@ -0,0 +1,23 @@
<?php
if (!isset($_)) { //also provide standalone error page
require_once __DIR__ . '/../../../lib/base.php';
$l = OC_L10N::get('files_encryption');
$errorMsg = $l->t('Your private key is not valid or wasn\'t initialized correctly! Likely your password was changed outside the ownCloud system (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files. If your log-in password didn\'t change than first try to log out and log in back in order to initialize your encryption keys');
if(isset($_GET['p']) && $_GET['p'] === '1') {
header('HTTP/1.0 404 ' . $errorMsg);
}
// check if ajax request
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
\OCP\JSON::error(array('data' => array('message' => $errorMsg)));
} else {
header('HTTP/1.0 404 ' . $errorMsg);
$tmpl = new OC_Template('files_encryption', 'invalid_private_key', 'guest');
$tmpl->printPage();
}
exit;
}

View File

@@ -23,169 +23,579 @@
namespace OCA\Encryption;
use OC\Files\Filesystem;
/**
* Class for hook specific logic
*/
class Hooks {
// TODO: use passphrase for encrypting private key that is separate to
// TODO: use passphrase for encrypting private key that is separate to
// the login password
/**
* @brief Startup encryption backend upon user login
* @note This method should never be called for users using client side encryption
*/
public static function login( $params ) {
// Manually initialise Filesystem{} singleton with correct
// fake root path, in order to avoid fatal webdav errors
\OC\Files\Filesystem::init( $params['uid'], $params['uid'] . '/' . 'files' . '/' );
$view = new \OC_FilesystemView( '/' );
public static function login($params) {
$util = new Util( $view, $params['uid'] );
// Check files_encryption infrastructure is ready for action
if ( ! $util->ready() ) {
\OC_Log::write( 'Encryption library', 'User account "' . $params['uid'] . '" is not ready for encryption; configuration started', \OC_Log::DEBUG );
return $util->setupServerSide( $params['password'] );
if (\OCP\App::isEnabled('files_encryption') === false) {
return true;
}
$l = new \OC_L10N('files_encryption');
$view = new \OC_FilesystemView('/');
$privateKey = \OCA\Encryption\Keymanager::getPrivateKey($view, $params['uid']);
// if no private key exists, check server configuration
if(!$privateKey) {
if(!Helper::checkRequirements() || !Helper::checkConfiguration() ) {
$error_msg = $l->t("Missing requirements.");
$hint = $l->t('Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled.');
\OC_App::disable('files_encryption');
\OCP\Util::writeLog('Encryption library', $error_msg . ' ' . $hint, \OCP\Util::ERROR);
\OCP\Template::printErrorPage($error_msg, $hint);
}
}
\OC_FileProxy::$enabled = false;
$encryptedKey = Keymanager::getPrivateKey( $view, $params['uid'] );
\OC_FileProxy::$enabled = true;
$privateKey = Crypt::symmetricDecryptFileContent( $encryptedKey, $params['password'] );
$session = new Session();
$session->setPrivateKey( $privateKey, $params['uid'] );
$view1 = new \OC_FilesystemView( '/' . $params['uid'] );
// Set legacy encryption key if it exists, to support
// depreciated encryption system
if (
$view1->file_exists( 'encryption.key' )
&& $encLegacyKey = $view1->file_get_contents( 'encryption.key' )
) {
$plainLegacyKey = Crypt::legacyDecrypt( $encLegacyKey, $params['password'] );
$session->setLegacyKey( $plainLegacyKey );
// ensure filesystem is loaded
if(!\OC\Files\Filesystem::$loaded) {
\OC_Util::setupFS($params['uid']);
}
$publicKey = Keymanager::getPublicKey( $view, $params['uid'] );
// Encrypt existing user files:
// This serves to upgrade old versions of the encryption
// app (see appinfo/spec.txt)
if (
$util->encryptAll( $publicKey, '/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password'] )
) {
\OC_Log::write(
'Encryption library', 'Encryption of existing files belonging to "' . $params['uid'] . '" started at login'
, \OC_Log::INFO
);
$util = new Util($view, $params['uid']);
// setup user, if user not ready force relogin
if (Helper::setupUser($util, $params['password']) === false) {
return false;
}
$encryptedKey = Keymanager::getPrivateKey($view, $params['uid']);
$privateKey = Crypt::decryptPrivateKey($encryptedKey, $params['password']);
if ($privateKey === false) {
\OCP\Util::writeLog('Encryption library', 'Private key for user "' . $params['uid']
. '" is not valid! Maybe the user password was changed from outside if so please change it back to gain access', \OCP\Util::ERROR);
}
$session = new \OCA\Encryption\Session($view);
$session->setPrivateKey($privateKey);
// Check if first-run file migration has already been performed
$ready = false;
if ($util->getMigrationStatus() === Util::MIGRATION_OPEN) {
$ready = $util->beginMigration();
}
// If migration not yet done
if ($ready) {
$userView = new \OC_FilesystemView('/' . $params['uid']);
// Set legacy encryption key if it exists, to support
// depreciated encryption system
if (
$userView->file_exists('encryption.key')
&& $encLegacyKey = $userView->file_get_contents('encryption.key')
) {
$plainLegacyKey = Crypt::legacyDecrypt($encLegacyKey, $params['password']);
$session->setLegacyKey($plainLegacyKey);
}
// Encrypt existing user files:
if (
$util->encryptAll('/' . $params['uid'] . '/' . 'files', $session->getLegacyKey(), $params['password'])
) {
\OC_Log::write(
'Encryption library', 'Encryption of existing files belonging to "' . $params['uid'] . '" completed'
, \OC_Log::INFO
);
}
// Register successful migration in DB
$util->finishMigration();
}
return true;
}
/**
* @brief setup encryption backend upon user created
* @note This method should never be called for users using client side encryption
*/
public static function postCreateUser($params) {
if (\OCP\App::isEnabled('files_encryption')) {
$view = new \OC_FilesystemView('/');
$util = new Util($view, $params['uid']);
Helper::setupUser($util, $params['password']);
}
}
/**
* @brief cleanup encryption backend upon user deleted
* @note This method should never be called for users using client side encryption
*/
public static function postDeleteUser($params) {
if (\OCP\App::isEnabled('files_encryption')) {
$view = new \OC_FilesystemView('/');
// cleanup public key
$publicKey = '/public-keys/' . $params['uid'] . '.public.key';
// Disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy::$enabled;
\OC_FileProxy::$enabled = false;
$view->unlink($publicKey);
\OC_FileProxy::$enabled = $proxyStatus;
}
}
/**
* @brief If the password can't be changed within ownCloud, than update the key password in advance.
*/
public static function preSetPassphrase($params) {
if (\OCP\App::isEnabled('files_encryption')) {
if ( ! \OC_User::canUserChangePassword($params['uid']) ) {
self::setPassphrase($params);
}
}
}
/**
* @brief Change a user's encryption passphrase
* @param array $params keys: uid, password
*/
public static function setPassphrase( $params ) {
public static function setPassphrase($params) {
if (\OCP\App::isEnabled('files_encryption') === false) {
return true;
}
// Only attempt to change passphrase if server-side encryption
// is in use (client-side encryption does not have access to
// is in use (client-side encryption does not have access to
// the necessary keys)
if ( Crypt::mode() == 'server' ) {
$session = new Session();
// Get existing decrypted private key
$privateKey = $session->getPrivateKey();
// Encrypt private key with new user pwd as passphrase
$encryptedPrivateKey = Crypt::symmetricEncryptFileContent( $privateKey, $params['password'] );
// Save private key
Keymanager::setPrivateKey( $encryptedPrivateKey );
// NOTE: Session does not need to be updated as the
// private key has not changed, only the passphrase
// used to decrypt it has changed
}
}
/**
* @brief update the encryption key of the file uploaded by the client
*/
public static function updateKeyfile( $params ) {
if ( Crypt::mode() == 'client' ) {
if ( isset( $params['properties']['key'] ) ) {
$view = new \OC_FilesystemView( '/' );
$userId = \OCP\User::getUser();
Keymanager::setFileKey( $view, $params['path'], $userId, $params['properties']['key'] );
} else {
\OC_Log::write(
'Encryption library', "Client side encryption is enabled but the client doesn't provide a encryption key for the file!"
, \OC_Log::ERROR
);
error_log( "Client side encryption is enabled but the client doesn't provide an encryption key for the file!" );
if (Crypt::mode() === 'server') {
if ($params['uid'] === \OCP\User::getUser()) {
$view = new \OC_FilesystemView('/');
$session = new \OCA\Encryption\Session($view);
// Get existing decrypted private key
$privateKey = $session->getPrivateKey();
// Encrypt private key with new user pwd as passphrase
$encryptedPrivateKey = Crypt::symmetricEncryptFileContent($privateKey, $params['password']);
// Save private key
Keymanager::setPrivateKey($encryptedPrivateKey);
// NOTE: Session does not need to be updated as the
// private key has not changed, only the passphrase
// used to decrypt it has changed
} else { // admin changed the password for a different user, create new keys and reencrypt file keys
$user = $params['uid'];
$recoveryPassword = $params['recoveryPassword'];
$newUserPassword = $params['password'];
$view = new \OC_FilesystemView('/');
// make sure that the users home is mounted
\OC\Files\Filesystem::initMountPoints($user);
$keypair = Crypt::createKeypair();
// Disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy::$enabled;
\OC_FileProxy::$enabled = false;
// Save public key
$view->file_put_contents('/public-keys/' . $user . '.public.key', $keypair['publicKey']);
// Encrypt private key empty passphrase
$encryptedPrivateKey = Crypt::symmetricEncryptFileContent($keypair['privateKey'], $newUserPassword);
// Save private key
$view->file_put_contents(
'/' . $user . '/files_encryption/' . $user . '.private.key', $encryptedPrivateKey);
if ($recoveryPassword) { // if recovery key is set we can re-encrypt the key files
$util = new Util($view, $user);
$util->recoverUsersFiles($recoveryPassword);
}
\OC_FileProxy::$enabled = $proxyStatus;
}
}
}
/**
* @brief
/*
* @brief check if files can be encrypted to every user.
*/
public static function postShared( $params ) {
}
/**
* @brief
* @param $params
*/
public static function preUnshare( $params ) {
// Delete existing catfile
// Generate new catfile and env keys
// Save env keys to user folders
public static function preShared($params) {
if (\OCP\App::isEnabled('files_encryption') === false) {
return true;
}
$l = new \OC_L10N('files_encryption');
$users = array();
$view = new \OC\Files\View('/public-keys/');
switch ($params['shareType']) {
case \OCP\Share::SHARE_TYPE_USER:
$users[] = $params['shareWith'];
break;
case \OCP\Share::SHARE_TYPE_GROUP:
$users = \OC_Group::usersInGroup($params['shareWith']);
break;
}
$notConfigured = array();
foreach ($users as $user) {
if (!$view->file_exists($user . '.public.key')) {
$notConfigured[] = $user;
}
}
if (count($notConfigured) > 0) {
$params['run'] = false;
$params['error'] = $l->t('Following users are not set up for encryption:') . ' ' . join(', ' , $notConfigured);
}
}
/**
* @brief
* @brief
*/
public static function preUnshareAll( $params ) {
trigger_error( "preUnshareAll" );
public static function postShared($params) {
if (\OCP\App::isEnabled('files_encryption') === false) {
return true;
}
// NOTE: $params has keys:
// [itemType] => file
// itemSource -> int, filecache file ID
// [parent] =>
// [itemTarget] => /13
// shareWith -> string, uid of user being shared to
// fileTarget -> path of file being shared
// uidOwner -> owner of the original file being shared
// [shareType] => 0
// [shareWith] => test1
// [uidOwner] => admin
// [permissions] => 17
// [fileSource] => 13
// [fileTarget] => /test8
// [id] => 10
// [token] =>
// [run] => whether emitting script should continue to run
// TODO: Should other kinds of item be encrypted too?
if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') {
$view = new \OC_FilesystemView('/');
$session = new \OCA\Encryption\Session($view);
$userId = \OCP\User::getUser();
$util = new Util($view, $userId);
$path = $util->fileIdToPath($params['itemSource']);
$share = $util->getParentFromShare($params['id']);
//if parent is set, then this is a re-share action
if ($share['parent'] !== null) {
// get the parent from current share
$parent = $util->getShareParent($params['parent']);
// if parent is file the it is an 1:1 share
if ($parent['item_type'] === 'file') {
// prefix path with Shared
$path = '/Shared' . $parent['file_target'];
} else {
// NOTE: parent is folder but shared was a file!
// we try to rebuild the missing path
// some examples we face here
// user1 share folder1 with user2 folder1 has
// the following structure
// /folder1/subfolder1/subsubfolder1/somefile.txt
// user2 re-share subfolder2 with user3
// user3 re-share somefile.txt user4
// so our path should be
// /Shared/subfolder1/subsubfolder1/somefile.txt
// while user3 is sharing
if ($params['itemType'] === 'file') {
// get target path
$targetPath = $util->fileIdToPath($params['fileSource']);
$targetPathSplit = array_reverse(explode('/', $targetPath));
// init values
$path = '';
$sharedPart = ltrim($parent['file_target'], '/');
// rebuild path
foreach ($targetPathSplit as $pathPart) {
if ($pathPart !== $sharedPart) {
$path = '/' . $pathPart . $path;
} else {
break;
}
}
// prefix path with Shared
$path = '/Shared' . $parent['file_target'] . $path;
} else {
// prefix path with Shared
$path = '/Shared' . $parent['file_target'] . $params['fileTarget'];
}
}
}
$sharingEnabled = \OCP\Share::isEnabled();
// get the path including mount point only if not a shared folder
if (strncmp($path, '/Shared', strlen('/Shared') !== 0)) {
// get path including the the storage mount point
$path = $util->getPathWithMountPoint($params['itemSource']);
}
// if a folder was shared, get a list of all (sub-)folders
if ($params['itemType'] === 'folder') {
$allFiles = $util->getAllFiles($path);
} else {
$allFiles = array($path);
}
foreach ($allFiles as $path) {
$usersSharing = $util->getSharingUsersArray($sharingEnabled, $path);
$util->setSharedFileKeyfiles($session, $usersSharing, $path);
}
}
}
/**
* @brief
*/
public static function postUnshare($params) {
if (\OCP\App::isEnabled('files_encryption') === false) {
return true;
}
// NOTE: $params has keys:
// [itemType] => file
// [itemSource] => 13
// [shareType] => 0
// [shareWith] => test1
// [itemParent] =>
if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') {
$view = new \OC_FilesystemView('/');
$userId = \OCP\User::getUser();
$util = new Util($view, $userId);
$path = $util->fileIdToPath($params['itemSource']);
// check if this is a re-share
if ($params['itemParent']) {
// get the parent from current share
$parent = $util->getShareParent($params['itemParent']);
// get target path
$targetPath = $util->fileIdToPath($params['itemSource']);
$targetPathSplit = array_reverse(explode('/', $targetPath));
// init values
$path = '';
$sharedPart = ltrim($parent['file_target'], '/');
// rebuild path
foreach ($targetPathSplit as $pathPart) {
if ($pathPart !== $sharedPart) {
$path = '/' . $pathPart . $path;
} else {
break;
}
}
// prefix path with Shared
$path = '/Shared' . $parent['file_target'] . $path;
}
// for group shares get a list of the group members
if ($params['shareType'] === \OCP\Share::SHARE_TYPE_GROUP) {
$userIds = \OC_Group::usersInGroup($params['shareWith']);
} else {
if ($params['shareType'] === \OCP\Share::SHARE_TYPE_LINK) {
$userIds = array($util->getPublicShareKeyId());
} else {
$userIds = array($params['shareWith']);
}
}
// get the path including mount point only if not a shared folder
if (strncmp($path, '/Shared', strlen('/Shared') !== 0)) {
// get path including the the storage mount point
$path = $util->getPathWithMountPoint($params['itemSource']);
}
// if we unshare a folder we need a list of all (sub-)files
if ($params['itemType'] === 'folder') {
$allFiles = $util->getAllFiles($path);
} else {
$allFiles = array($path);
}
foreach ($allFiles as $path) {
// check if the user still has access to the file, otherwise delete share key
$sharingUsers = $util->getSharingUsersArray(true, $path);
// Unshare every user who no longer has access to the file
$delUsers = array_diff($userIds, $sharingUsers);
// delete share key
Keymanager::delShareKey($view, $delUsers, $path);
}
}
}
/**
* @brief after a file is renamed, rename its keyfile and share-keys also fix the file size and fix also the sharing
* @param array with oldpath and newpath
*
* This function is connected to the rename signal of OC_Filesystem and adjust the name and location
* of the stored versions along the actual file
*/
public static function postRename($params) {
if (\OCP\App::isEnabled('files_encryption') === false) {
return true;
}
// Disable encryption proxy to prevent recursive calls
$proxyStatus = \OC_FileProxy::$enabled;
\OC_FileProxy::$enabled = false;
$view = new \OC_FilesystemView('/');
$session = new \OCA\Encryption\Session($view);
$userId = \OCP\User::getUser();
$util = new Util($view, $userId);
// Format paths to be relative to user files dir
if ($util->isSystemWideMountPoint($params['oldpath'])) {
$baseDir = 'files_encryption/';
$oldKeyfilePath = $baseDir . 'keyfiles/' . $params['oldpath'];
} else {
$baseDir = $userId . '/' . 'files_encryption/';
$oldKeyfilePath = $baseDir . 'keyfiles/' . $params['oldpath'];
}
if ($util->isSystemWideMountPoint($params['newpath'])) {
$newKeyfilePath = $baseDir . 'keyfiles/' . $params['newpath'];
} else {
$newKeyfilePath = $baseDir . 'keyfiles/' . $params['newpath'];
}
// add key ext if this is not an folder
if (!$view->is_dir($oldKeyfilePath)) {
$oldKeyfilePath .= '.key';
$newKeyfilePath .= '.key';
// handle share-keys
$localKeyPath = $view->getLocalFile($baseDir . 'share-keys/' . $params['oldpath']);
$escapedPath = Helper::escapeGlobPattern($localKeyPath);
$matches = glob($escapedPath . '*.shareKey');
foreach ($matches as $src) {
$dst = \OC\Files\Filesystem::normalizePath(str_replace($params['oldpath'], $params['newpath'], $src));
// create destination folder if not exists
if (!file_exists(dirname($dst))) {
mkdir(dirname($dst), 0750, true);
}
rename($src, $dst);
}
} else {
// handle share-keys folders
$oldShareKeyfilePath = $baseDir . 'share-keys/' . $params['oldpath'];
$newShareKeyfilePath = $baseDir . 'share-keys/' . $params['newpath'];
// create destination folder if not exists
if (!$view->file_exists(dirname($newShareKeyfilePath))) {
$view->mkdir(dirname($newShareKeyfilePath), 0750, true);
}
$view->rename($oldShareKeyfilePath, $newShareKeyfilePath);
}
// Rename keyfile so it isn't orphaned
if ($view->file_exists($oldKeyfilePath)) {
// create destination folder if not exists
if (!$view->file_exists(dirname($newKeyfilePath))) {
$view->mkdir(dirname($newKeyfilePath), 0750, true);
}
$view->rename($oldKeyfilePath, $newKeyfilePath);
}
// build the path to the file
$newPath = '/' . $userId . '/files' . $params['newpath'];
$newPathRelative = $params['newpath'];
if ($util->fixFileSize($newPath)) {
// get sharing app state
$sharingEnabled = \OCP\Share::isEnabled();
// get users
$usersSharing = $util->getSharingUsersArray($sharingEnabled, $newPathRelative);
// update sharing-keys
$util->setSharedFileKeyfiles($session, $usersSharing, $newPathRelative);
}
\OC_FileProxy::$enabled = $proxyStatus;
}
/**
* set migration status back to '0' so that all new files get encrypted
* if the app gets enabled again
* @param array $params contains the app ID
*/
public static function preDisable($params) {
if (\OCP\App::isEnabled('files_encryption')) {
if ($params['app'] === 'files_encryption') {
$query = \OC_DB::prepare('UPDATE `*PREFIX*encryption` SET `migration_status`=0');
$query->execute();
}
}
}
}

View File

@@ -0,0 +1,102 @@
/**
* Copyright (c) 2013, Sam Tuke <samtuke@owncloud.com>, Robin Appelman
* <icewind1991@gmail.com>
* This file is licensed under the Affero General Public License version 3 or later.
* See the COPYING-README file.
*/
OC.msg={
startSaving:function(selector){
$(selector)
.html( t('settings', 'Saving...') )
.removeClass('success')
.removeClass('error')
.stop(true, true)
.show();
},
finishedSaving:function(selector, data){
if( data.status === "success" ){
$(selector).html( data.data.message )
.addClass('success')
.stop(true, true)
.delay(3000)
.fadeOut(900);
}else{
$(selector).html( data.data.message ).addClass('error');
}
}
};
$(document).ready(function(){
// Trigger ajax on recoveryAdmin status change
var enabledStatus = $('#adminEnableRecovery').val();
$('input:password[name="recoveryPassword"]').keyup(function(event) {
var recoveryPassword = $( '#recoveryPassword' ).val();
var checkedButton = $('input:radio[name="adminEnableRecovery"]:checked').val();
var uncheckedValue = (1+parseInt(checkedButton)) % 2;
if (recoveryPassword != '' ) {
$('input:radio[name="adminEnableRecovery"][value="'+uncheckedValue.toString()+'"]').removeAttr("disabled");
} else {
$('input:radio[name="adminEnableRecovery"][value="'+uncheckedValue.toString()+'"]').attr("disabled", "true");
}
});
$( 'input:radio[name="adminEnableRecovery"]' ).change(
function() {
var recoveryStatus = $( this ).val();
var oldStatus = (1+parseInt(recoveryStatus)) % 2;
var recoveryPassword = $( '#recoveryPassword' ).val();
$.post(
OC.filePath( 'files_encryption', 'ajax', 'adminrecovery.php' )
, { adminEnableRecovery: recoveryStatus, recoveryPassword: recoveryPassword }
, function( result ) {
if (result.status === "error") {
OC.Notification.show(t('admin', result.data.message));
$('input:radio[name="adminEnableRecovery"][value="'+oldStatus.toString()+'"]').attr("checked", "true");
} else {
OC.Notification.hide();
if (recoveryStatus === "0") {
$('button:button[name="submitChangeRecoveryKey"]').attr("disabled", "true");
$('input:password[name="changeRecoveryPassword"]').attr("disabled", "true");
$('input:password[name="changeRecoveryPassword"]').val("");
} else {
$('input:password[name="changeRecoveryPassword"]').removeAttr("disabled");
}
}
}
);
}
);
// change recovery password
$('input:password[name="changeRecoveryPassword"]').keyup(function(event) {
var oldRecoveryPassword = $('input:password[id="oldRecoveryPassword"]').val();
var newRecoveryPassword = $('input:password[id="newRecoveryPassword"]').val();
if (newRecoveryPassword != '' && oldRecoveryPassword != '' ) {
$('button:button[name="submitChangeRecoveryKey"]').removeAttr("disabled");
} else {
$('button:button[name="submitChangeRecoveryKey"]').attr("disabled", "true");
}
});
$('button:button[name="submitChangeRecoveryKey"]').click(function() {
var oldRecoveryPassword = $('input:password[id="oldRecoveryPassword"]').val();
var newRecoveryPassword = $('input:password[id="newRecoveryPassword"]').val();
OC.msg.startSaving('#encryption .msg');
$.post(
OC.filePath( 'files_encryption', 'ajax', 'changeRecoveryPassword.php' )
, { oldPassword: oldRecoveryPassword, newPassword: newRecoveryPassword }
, function( data ) {
if (data.status == "error") {
OC.msg.finishedSaving('#encryption .msg', data);
} else {
OC.msg.finishedSaving('#encryption .msg', data);
}
}
);
});
});

View File

@@ -0,0 +1,98 @@
/**
* Copyright (c) 2013, Sam Tuke <samtuke@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or later.
* See the COPYING-README file.
*/
function updatePrivateKeyPasswd() {
var oldPrivateKeyPassword = $('input:password[id="oldPrivateKeyPassword"]').val();
var newPrivateKeyPassword = $('input:password[id="newPrivateKeyPassword"]').val();
OC.msg.startSaving('#encryption .msg');
$.post(
OC.filePath( 'files_encryption', 'ajax', 'updatePrivateKeyPassword.php' )
, { oldPassword: oldPrivateKeyPassword, newPassword: newPrivateKeyPassword }
, function( data ) {
if (data.status === "error") {
OC.msg.finishedSaving('#encryption .msg', data);
} else {
OC.msg.finishedSaving('#encryption .msg', data);
}
}
);
}
$(document).ready(function(){
// Trigger ajax on recoveryAdmin status change
$( 'input:radio[name="userEnableRecovery"]' ).change(
function() {
// Hide feedback messages in case they're already visible
$('#recoveryEnabledSuccess').hide();
$('#recoveryEnabledError').hide();
var recoveryStatus = $( this ).val();
$.post(
OC.filePath( 'files_encryption', 'ajax', 'userrecovery.php' )
, { userEnableRecovery: recoveryStatus }
, function( data ) {
if ( data.status == "success" ) {
$('#recoveryEnabledSuccess').show();
} else {
$('#recoveryEnabledError').show();
}
}
);
// Ensure page is not reloaded on form submit
return false;
}
);
$("#encryptAll").click(
function(){
// Hide feedback messages in case they're already visible
$('#encryptAllSuccess').hide();
$('#encryptAllError').hide();
var userPassword = $( '#userPassword' ).val();
var encryptAll = $( '#encryptAll' ).val();
$.post(
OC.filePath( 'files_encryption', 'ajax', 'encryptall.php' )
, { encryptAll: encryptAll, userPassword: userPassword }
, function( data ) {
if ( data.status == "success" ) {
$('#encryptAllSuccess').show();
} else {
$('#encryptAllError').show();
}
}
);
// Ensure page is not reloaded on form submit
return false;
}
);
// update private key password
$('input:password[name="changePrivateKeyPassword"]').keyup(function(event) {
var oldPrivateKeyPassword = $('input:password[id="oldPrivateKeyPassword"]').val();
var newPrivateKeyPassword = $('input:password[id="newPrivateKeyPassword"]').val();
if (newPrivateKeyPassword !== '' && oldPrivateKeyPassword !== '' ) {
$('button:button[name="submitChangePrivateKeyPassword"]').removeAttr("disabled");
if(event.which === 13) {
updatePrivateKeyPasswd();
}
} else {
$('button:button[name="submitChangePrivateKeyPassword"]').attr("disabled", "true");
}
});
$('button:button[name="submitChangePrivateKeyPassword"]').click(function() {
updatePrivateKeyPasswd();
});
});

View File

@@ -1,19 +0,0 @@
/**
* Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com>
* This file is licensed under the Affero General Public License version 3 or later.
* See the COPYING-README file.
*/
$(document).ready(function(){
$('#encryption_blacklist').multiSelect({
oncheck:blackListChange,
onuncheck:blackListChange,
createText:'...'
});
function blackListChange(){
var blackList=$('#encryption_blacklist').val().join(',');
OC.AppConfig.setValue('files_encryption','type_blacklist',blackList);
}
})

View File

@@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array(
"Encryption" => "التشفير",
"File encryption is enabled." => "تشفير الملفات فعال.",
"The following file types will not be encrypted:" => "الملفات الاتية لن يتم تشفيرها:",
"Exclude the following file types from encryption:" => "إستثناء أنواع الملفات الاتية من التشفير: ",
"None" => "لا شيء"
);

Some files were not shown because too many files have changed in this diff Show More