diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml
index f7b1dd975..94cf3cf41 100644
--- a/.github/workflows/cypress.yml
+++ b/.github/workflows/cypress.yml
@@ -22,7 +22,7 @@ env:
# Usually it's the base branch of the PR, but for pushes it's the branch itself.
# e.g. 'main', 'stable27' or 'feature/my-feature'
# n.b. server will use head_ref, as we want to test the PR branch.
- BRANCH: ${{ github.base_ref || github.ref_name }}
+ BRANCH: stable30
permissions:
diff --git a/.github/workflows/phpunit-mysql-sharding.yml b/.github/workflows/phpunit-mysql-sharding.yml
index d17bf33c2..d2278f2b7 100644
--- a/.github/workflows/phpunit-mysql-sharding.yml
+++ b/.github/workflows/phpunit-mysql-sharding.yml
@@ -139,7 +139,7 @@ jobs:
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
repository: nextcloud/circles
- ref: master
+ ref: stable30
path: apps/circles
- name: Checkout app
diff --git a/.github/workflows/phpunit-mysql.yml b/.github/workflows/phpunit-mysql.yml
index 2e242ce07..70c508b88 100644
--- a/.github/workflows/phpunit-mysql.yml
+++ b/.github/workflows/phpunit-mysql.yml
@@ -100,7 +100,7 @@ jobs:
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
repository: nextcloud/circles
- ref: stable32
+ ref: stable30
path: apps/circles
- name: Checkout app
diff --git a/.github/workflows/phpunit-oci.yml b/.github/workflows/phpunit-oci.yml
index 712d7f99e..9e4f05146 100644
--- a/.github/workflows/phpunit-oci.yml
+++ b/.github/workflows/phpunit-oci.yml
@@ -113,7 +113,7 @@ jobs:
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
repository: nextcloud/circles
- ref: stable32
+ ref: stable30
path: apps/circles
- name: Checkout app
diff --git a/.github/workflows/phpunit-pgsql.yml b/.github/workflows/phpunit-pgsql.yml
index 52a2aad88..3d530dc25 100644
--- a/.github/workflows/phpunit-pgsql.yml
+++ b/.github/workflows/phpunit-pgsql.yml
@@ -103,7 +103,7 @@ jobs:
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
repository: nextcloud/circles
- ref: stable32
+ ref: stable30
path: apps/circles
- name: Checkout app
diff --git a/.github/workflows/phpunit-sqlite-s3.yml b/.github/workflows/phpunit-sqlite-s3.yml
index d14e36755..c995806c1 100644
--- a/.github/workflows/phpunit-sqlite-s3.yml
+++ b/.github/workflows/phpunit-sqlite-s3.yml
@@ -102,7 +102,7 @@ jobs:
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
repository: nextcloud/circles
- ref: master
+ ref: stable30
path: apps/circles
- name: Checkout app
diff --git a/.github/workflows/phpunit-sqlite.yml b/.github/workflows/phpunit-sqlite.yml
index 6ebbf79fa..3d4b34a40 100644
--- a/.github/workflows/phpunit-sqlite.yml
+++ b/.github/workflows/phpunit-sqlite.yml
@@ -92,7 +92,7 @@ jobs:
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
repository: nextcloud/circles
- ref: stable32
+ ref: stable30
path: apps/circles
- name: Checkout app
diff --git a/appinfo/info.xml b/appinfo/info.xml
index 5fa2af4f1..dd290813a 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -34,7 +34,7 @@ As of Hub 10/Nextcloud 31, the admin needs to be a part of the team to be able t
https://raw.githubusercontent.com/nextcloud/groupfolders/master/screenshots/permissions.png
-
+
diff --git a/composer.json b/composer.json
index d53061841..f48a1333c 100644
--- a/composer.json
+++ b/composer.json
@@ -3,7 +3,7 @@
"roave/security-advisories": "dev-latest",
"sabre/dav": "^4.1",
"sabre/xml": "^2.2",
- "nextcloud/ocp": "dev-stable32"
+ "nextcloud/ocp": "dev-stable30"
},
"require": {
"bamarni/composer-bin-plugin": "^1.8"
diff --git a/composer.lock b/composer.lock
index a907b0e3a..775ab719a 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "8be7585f75c8217d39f923f6b02ac3cc",
+ "content-hash": "ef94d47ebb872f78b1dcd152d40fb5d1",
"packages": [
{
"name": "bamarni/composer-bin-plugin",
- "version": "1.8.2",
+ "version": "1.8.3",
"source": {
"type": "git",
"url": "https://github.com/bamarni/composer-bin-plugin.git",
- "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880"
+ "reference": "e7ef9e012667327516c24e5fad9903a3bc91389d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880",
- "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880",
+ "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/e7ef9e012667327516c24e5fad9903a3bc91389d",
+ "reference": "e7ef9e012667327516c24e5fad9903a3bc91389d",
"shasum": ""
},
"require": {
@@ -30,7 +30,7 @@
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.1",
- "phpunit/phpunit": "^8.5 || ^9.5",
+ "phpunit/phpunit": "^8.5 || ^9.6 || ^10.0",
"symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0",
"symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0",
"symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0"
@@ -59,37 +59,37 @@
],
"support": {
"issues": "https://github.com/bamarni/composer-bin-plugin/issues",
- "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.2"
+ "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.3"
},
- "time": "2022-10-31T08:38:03+00:00"
+ "time": "2025-11-24T19:20:55+00:00"
}
],
"packages-dev": [
{
"name": "nextcloud/ocp",
- "version": "dev-stable32",
+ "version": "dev-stable30",
"source": {
"type": "git",
"url": "https://github.com/nextcloud-deps/ocp.git",
- "reference": "76d31f226abe036a5dfef3702f788c118a619731"
+ "reference": "b152be1a1f97e9f3a4eab84908ea0ad38a1d8187"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/76d31f226abe036a5dfef3702f788c118a619731",
- "reference": "76d31f226abe036a5dfef3702f788c118a619731",
+ "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/b152be1a1f97e9f3a4eab84908ea0ad38a1d8187",
+ "reference": "b152be1a1f97e9f3a4eab84908ea0ad38a1d8187",
"shasum": ""
},
"require": {
- "php": "~8.1 || ~8.2 || ~8.3 || ~8.4",
+ "php": "~8.0 || ~8.1 || ~8.2 || ~8.3",
"psr/clock": "^1.0",
"psr/container": "^2.0.2",
"psr/event-dispatcher": "^1.0",
- "psr/log": "^3.0.2"
+ "psr/log": "^2.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-stable32": "32.0.0-dev"
+ "dev-stable30": "30.0.0-dev"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -100,18 +100,14 @@
{
"name": "Christoph Wurst",
"email": "christoph@winzerhof-wurst.at"
- },
- {
- "name": "Joas Schilling",
- "email": "coding@schilljs.com"
}
],
- "description": "Composer package containing Nextcloud's public OCP API and the unstable NCU API",
+ "description": "Composer package containing Nextcloud's public API (classes, interfaces)",
"support": {
"issues": "https://github.com/nextcloud-deps/ocp/issues",
- "source": "https://github.com/nextcloud-deps/ocp/tree/stable32"
+ "source": "https://github.com/nextcloud-deps/ocp/tree/stable30"
},
- "time": "2025-11-28T00:50:34+00:00"
+ "time": "2025-12-01T01:03:15+00:00"
},
{
"name": "psr/clock",
@@ -266,16 +262,16 @@
},
{
"name": "psr/log",
- "version": "3.0.2",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
+ "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
- "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376",
+ "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376",
"shasum": ""
},
"require": {
@@ -284,7 +280,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
@@ -310,9 +306,9 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/3.0.2"
+ "source": "https://github.com/php-fig/log/tree/2.0.0"
},
- "time": "2024-09-11T13:17:53+00:00"
+ "time": "2021-07-14T16:41:46+00:00"
},
{
"name": "roave/security-advisories",
@@ -320,40 +316,45 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
- "reference": "b3d9a3d80bf68f14f44ffa521454b162d8ff5561"
+ "reference": "3f393e137e490ecb2ac77989a692129c31192de7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/b3d9a3d80bf68f14f44ffa521454b162d8ff5561",
- "reference": "b3d9a3d80bf68f14f44ffa521454b162d8ff5561",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3f393e137e490ecb2ac77989a692129c31192de7",
+ "reference": "3f393e137e490ecb2ac77989a692129c31192de7",
"shasum": ""
},
"conflict": {
"3f/pygmentize": "<1.2",
- "admidio/admidio": "<4.3.10",
- "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3",
+ "adaptcms/adaptcms": "<=1.3",
+ "admidio/admidio": "<=4.3.16",
+ "adodb/adodb-php": "<=5.22.9",
"aheinze/cockpit": "<2.2",
- "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.04.6",
+ "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.07.2",
"aimeos/ai-admin-jsonadm": "<2020.10.13|>=2021.04.1,<2021.10.6|>=2022.04.1,<2022.10.3|>=2023.04.1,<2023.10.4|==2024.04.1",
"aimeos/ai-client-html": ">=2020.04.1,<2020.10.27|>=2021.04.1,<2021.10.22|>=2022.04.1,<2022.10.13|>=2023.04.1,<2023.10.15|>=2024.04.1,<2024.04.7",
- "aimeos/ai-controller-frontend": "<2020.10.15|>=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.8|>=2023.04.1,<2023.10.9",
+ "aimeos/ai-controller-frontend": "<2020.10.15|>=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.8|>=2023.04.1,<2023.10.9|==2024.04.1",
"aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7",
"aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5",
"airesvsg/acf-to-rest-api": "<=3.1",
"akaunting/akaunting": "<2.1.13",
"akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53",
- "alextselegidis/easyappointments": "<1.5",
+ "alextselegidis/easyappointments": "<1.5.2.0-beta1",
+ "alt-design/alt-redirect": "<1.6.4",
"alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
"amazing/media2click": ">=1,<1.3.3",
+ "ameos/ameos_tarteaucitron": "<1.2.23",
"amphp/artax": "<1.0.6|>=2,<2.0.6",
"amphp/http": "<=1.7.2|>=2,<=2.1",
"amphp/http-client": ">=4,<4.4",
"anchorcms/anchor-cms": "<=0.12.7",
"andreapollastri/cipi": "<=3.1.15",
"andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5",
+ "aoe/restler": "<1.7.1",
"apache-solr-for-typo3/solr": "<2.8.3",
"apereo/phpcas": "<1.6",
- "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3",
+ "api-platform/core": "<3.4.17|>=4,<4.0.22|>=4.1,<4.1.5",
+ "api-platform/graphql": "<3.4.17|>=4,<4.0.22|>=4.1,<4.1.5",
"appwrite/server-ce": "<=1.2.1",
"arc/web": "<3",
"area17/twill": "<1.2.5|>=2,<2.5.3",
@@ -361,29 +362,38 @@
"asymmetricrypt/asymmetricrypt": "<9.9.99",
"athlon1600/php-proxy": "<=5.1",
"athlon1600/php-proxy-app": "<=3",
+ "athlon1600/youtube-downloader": "<=4",
"austintoddj/canvas": "<=3.4.2",
- "auth0/wordpress": "<=4.6",
+ "auth0/auth0-php": ">=3.3,<=8.16",
+ "auth0/login": "<=7.18",
+ "auth0/symfony": "<=5.4.1",
+ "auth0/wordpress": "<=5.3",
"automad/automad": "<2.0.0.0-alpha5",
"automattic/jetpack": "<9.8",
"awesome-support/awesome-support": "<=6.0.7",
"aws/aws-sdk-php": "<3.288.1",
"azuracast/azuracast": "<0.18.3",
- "backdrop/backdrop": "<1.27.3|>=1.28,<1.28.2",
+ "b13/seo_basics": "<0.8.2",
+ "backdrop/backdrop": "<=1.32",
"backpack/crud": "<3.4.9",
- "bacula-web/bacula-web": "<8.0.0.0-RC2-dev",
- "badaso/core": "<2.7",
- "bagisto/bagisto": "<2.1",
+ "backpack/filemanager": "<2.0.2|>=3,<3.0.9",
+ "bacula-web/bacula-web": "<9.7.1",
+ "badaso/core": "<=2.9.11",
+ "bagisto/bagisto": "<=2.3.7",
"barrelstrength/sprout-base-email": "<1.2.7",
"barrelstrength/sprout-forms": "<3.9",
- "barryvdh/laravel-translation-manager": "<0.6.2",
+ "barryvdh/laravel-translation-manager": "<0.6.8",
"barzahlen/barzahlen-php": "<2.0.1",
- "baserproject/basercms": "<5.0.9",
+ "baserproject/basercms": "<=5.1.1",
"bassjobsen/bootstrap-3-typeahead": ">4.0.2",
"bbpress/bbpress": "<2.6.5",
+ "bcit-ci/codeigniter": "<3.1.3",
"bcosca/fatfree": "<3.7.2",
"bedita/bedita": "<4",
+ "bednee/cooluri": "<1.0.30",
"bigfork/silverstripe-form-capture": ">=3,<3.1.1",
- "billz/raspap-webgui": "<=3.1.4",
+ "billz/raspap-webgui": "<3.3.6",
+ "binarytorch/larecipe": "<2.8.1",
"bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3",
"blueimp/jquery-file-upload": "==6.4.4",
"bmarshall511/wordpress_zero_spam": "<5.2.13",
@@ -398,6 +408,7 @@
"brotkrueml/typo3-matomo-integration": "<1.3.2",
"buddypress/buddypress": "<7.2.1",
"bugsnag/bugsnag-laravel": ">=2,<2.0.2",
+ "bvbmedia/multishop": "<2.0.39",
"bytefury/crater": "<6.0.2",
"cachethq/cachet": "<2.5.1",
"cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10",
@@ -408,48 +419,65 @@
"cart2quote/module-quotation-encoded": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
"cartalyst/sentry": "<=2.1.6",
"catfan/medoo": "<1.7.5",
- "causal/oidc": "<2.1",
+ "causal/oidc": "<4",
"cecil/cecil": "<7.47.1",
"centreon/centreon": "<22.10.15",
"cesnet/simplesamlphp-module-proxystatistics": "<3.1",
"chriskacerguis/codeigniter-restserver": "<=2.7.1",
+ "chrome-php/chrome": "<1.14",
"civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3",
- "ckeditor/ckeditor": "<4.24",
- "cockpit-hq/cockpit": "<2.7|==2.7",
+ "ckeditor/ckeditor": "<4.25",
+ "clickstorm/cs-seo": ">=6,<6.8|>=7,<7.5|>=8,<8.4|>=9,<9.3",
+ "co-stack/fal_sftp": "<0.2.6",
+ "cockpit-hq/cockpit": "<2.11.4",
+ "code16/sharp": "<9.11.1",
"codeception/codeception": "<3.1.3|>=4,<4.1.22",
- "codeigniter/framework": "<3.1.9",
- "codeigniter4/framework": "<4.4.7",
+ "codeigniter/framework": "<3.1.10",
+ "codeigniter4/framework": "<4.6.2",
"codeigniter4/shield": "<1.0.0.0-beta8",
"codiad/codiad": "<=2.8.4",
+ "codingms/additional-tca": ">=1.7,<1.15.17|>=1.16,<1.16.9",
+ "codingms/modules": "<4.3.11|>=5,<5.7.4|>=6,<6.4.2|>=7,<7.5.5",
+ "commerceteam/commerce": ">=0.9.6,<0.9.9",
+ "components/jquery": ">=1.0.3,<3.5",
"composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7",
- "concrete5/concrete5": "<9.3.4",
+ "concrete5/concrete5": "<9.4.3",
"concrete5/core": "<8.5.8|>=9,<9.1",
"contao-components/mediaelement": ">=2.14.2,<2.21.1",
"contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4",
- "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4",
+ "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.13.56|>=5,<5.3.38|>=5.4.0.0-RC1-dev,<5.6.1",
"contao/core": "<3.5.39",
- "contao/core-bundle": "<4.13.40|>=5,<5.3.4",
+ "contao/core-bundle": "<4.13.57|>=5,<5.3.42|>=5.4,<5.6.5",
"contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8",
"contao/managed-edition": "<=1.5",
"corveda/phpsandbox": "<1.3.5",
"cosenary/instagram": "<=2.3",
- "craftcms/cms": "<4.6.2|>=5,<=5.2.2",
+ "couleurcitron/tarteaucitron-wp": "<0.3",
+ "craftcms/cms": "<=4.16.5|>=5,<=5.8.6",
"croogo/croogo": "<4",
"cuyz/valinor": "<0.12",
+ "czim/file-handling": "<1.5|>=2,<2.3",
"czproject/git-php": "<4.0.3",
- "damienharper/auditor-bundle": "<6",
+ "damienharper/auditor-bundle": "<5.2.6",
"dapphp/securimage": "<3.6.6",
"darylldoyle/safe-svg": "<1.9.10",
"datadog/dd-trace": ">=0.30,<0.30.2",
+ "datahihi1/tiny-env": "<1.0.3|>=1.0.9,<1.0.11",
"datatables/datatables": "<1.10.10",
"david-garcia/phpwhois": "<=4.3.1",
"dbrisinajumi/d2files": "<1",
- "dcat/laravel-admin": "<=2.1.3",
+ "dcat/laravel-admin": "<=2.1.3|==2.2.0.0-beta|==2.2.2.0-beta",
"derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3",
"derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4",
"desperado/xml-bundle": "<=0.1.7",
+ "dev-lancer/minecraft-motd-parser": "<=1.0.5",
+ "devcode-it/openstamanager": "<=2.9.4",
"devgroup/dotplant": "<2020.09.14-dev",
+ "digimix/wp-svg-upload": "<=1",
"directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2",
+ "dl/yag": "<3.0.1",
+ "dmk/webkitpdf": "<1.1.4",
+ "dnadesign/silverstripe-elemental": "<5.3.12",
"doctrine/annotations": "<1.2.7",
"doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
"doctrine/common": "<2.4.3|>=2.5,<2.5.1",
@@ -459,12 +487,45 @@
"doctrine/mongodb-odm": "<1.0.2",
"doctrine/mongodb-odm-bundle": "<3.0.1",
"doctrine/orm": ">=1,<1.2.4|>=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
- "dolibarr/dolibarr": "<19.0.2",
+ "dolibarr/dolibarr": "<21.0.3",
"dompdf/dompdf": "<2.0.4",
"doublethreedigital/guest-entries": "<3.1.2",
- "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2|==11.9999999.9999999.9999999-dev",
- "drupal/core-recommended": "==11.9999999.9999999.9999999-dev",
- "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4|==11.9999999.9999999.9999999-dev",
+ "drupal-pattern-lab/unified-twig-extensions": "<=0.1",
+ "drupal/access_code": "<2.0.5",
+ "drupal/acquia_dam": "<1.1.5",
+ "drupal/admin_audit_trail": "<1.0.5",
+ "drupal/ai": "<1.0.5",
+ "drupal/alogin": "<2.0.6",
+ "drupal/cache_utility": "<1.2.1",
+ "drupal/civictheme": "<1.12",
+ "drupal/commerce_alphabank_redirect": "<1.0.3",
+ "drupal/commerce_eurobank_redirect": "<2.1.1",
+ "drupal/config_split": "<1.10|>=2,<2.0.2",
+ "drupal/core": ">=6,<6.38|>=7,<7.102|>=8,<10.4.9|>=10.5,<10.5.6|>=11,<11.1.9|>=11.2,<11.2.8",
+ "drupal/core-recommended": ">=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8",
+ "drupal/currency": "<3.5",
+ "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8",
+ "drupal/email_tfa": "<2.0.6",
+ "drupal/formatter_suite": "<2.1",
+ "drupal/gdpr": "<3.0.1|>=3.1,<3.1.2",
+ "drupal/google_tag": "<1.8|>=2,<2.0.8",
+ "drupal/ignition": "<1.0.4",
+ "drupal/json_field": "<1.5",
+ "drupal/lightgallery": "<1.6",
+ "drupal/link_field_display_mode_formatter": "<1.6",
+ "drupal/matomo": "<1.24",
+ "drupal/oauth2_client": "<4.1.3",
+ "drupal/oauth2_server": "<2.1",
+ "drupal/obfuscate": "<2.0.1",
+ "drupal/plausible_tracking": "<1.0.2",
+ "drupal/quick_node_block": "<2",
+ "drupal/rapidoc_elements_field_formatter": "<1.0.1",
+ "drupal/reverse_proxy_header": "<1.1.2",
+ "drupal/simple_multistep": "<2",
+ "drupal/simple_oauth": ">=6,<6.0.7",
+ "drupal/spamspan": "<3.2.1",
+ "drupal/tfa": "<1.10",
+ "drupal/umami_analytics": "<1.0.1",
"duncanmcclean/guest-entries": "<3.1.2",
"dweeves/magmi": "<=0.7.24",
"ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2",
@@ -474,10 +535,11 @@
"elefant/cms": "<2.0.7",
"elgg/elgg": "<3.3.24|>=4,<4.0.5",
"elijaa/phpmemcacheadmin": "<=1.3",
+ "elmsln/haxcms": "<11.0.14",
"encore/laravel-admin": "<=1.8.19",
"endroid/qr-code-bundle": "<3.4.2",
"enhavo/enhavo-app": "<=0.13.1",
- "enshrined/svg-sanitize": "<0.15",
+ "enshrined/svg-sanitize": "<0.22",
"erusev/parsedown": "<1.7.2",
"ether/logs": "<3.0.4",
"evolutioncms/evolution": "<=3.2.3",
@@ -488,35 +550,39 @@
"ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev",
"ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev",
"ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24",
- "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26|>=3.3,<3.3.39",
- "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
+ "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.39|>=3.3,<3.3.39",
+ "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1|>=5.3.0.0-beta1,<5.3.5",
"ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12",
+ "ezsystems/ezplatform-http-cache": "<2.3.16",
"ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35",
"ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8",
- "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev|>=3.3,<3.3.40",
+ "ezsystems/ezplatform-richtext": ">=2.3,<2.3.26|>=3.3,<3.3.40",
"ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15",
"ezsystems/ezplatform-user": ">=1,<1.0.1",
"ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31",
"ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1",
"ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3",
"ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15",
- "ezyang/htmlpurifier": "<4.1.1",
+ "ezyang/htmlpurifier": "<=4.2",
"facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2",
"facturascripts/facturascripts": "<=2022.08",
"fastly/magento2": "<1.2.26",
"feehi/cms": "<=2.1.1",
"feehi/feehicms": "<=2.1.1",
"fenom/fenom": "<=2.12.1",
+ "filament/actions": ">=3.2,<3.2.123",
+ "filament/infolists": ">=3,<3.2.115",
+ "filament/tables": ">=3,<3.2.115",
"filegator/filegator": "<7.8",
"filp/whoops": "<2.1.13",
"fineuploader/php-traditional-server": "<=1.2.2",
"firebase/php-jwt": "<6",
"fisharebest/webtrees": "<=2.1.18",
"fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2",
- "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6",
- "flarum/core": "<1.8.5",
+ "fixpunkt/fp-newsletter": "<1.1.1|>=1.2,<2.1.2|>=2.2,<3.2.6",
+ "flarum/core": "<1.8.10",
"flarum/flarum": "<0.1.0.0-beta8",
- "flarum/framework": "<1.8.5",
+ "flarum/framework": "<1.8.10",
"flarum/mentions": "<1.6.3",
"flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15",
"flarum/tags": "<=0.1.0.0-beta13",
@@ -537,32 +603,38 @@
"friendsofsymfony1/symfony1": ">=1.1,<1.5.19",
"friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
"friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6",
- "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.3",
- "froxlor/froxlor": "<=2.2.0.0-RC3",
+ "froala/wysiwyg-editor": "<=4.3",
+ "froxlor/froxlor": "<=2.2.5",
"frozennode/administrator": "<=5.0.12",
"fuel/core": "<1.8.1",
- "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3",
+ "funadmin/funadmin": "<=5.0.2",
"gaoming13/wechat-php-sdk": "<=1.10.2",
"genix/cms": "<=1.1.11",
- "getformwork/formwork": "<1.13.1|==2.0.0.0-beta1",
+ "georgringer/news": "<1.3.3",
+ "geshi/geshi": "<=1.0.9.1",
+ "getformwork/formwork": "<2.2",
"getgrav/grav": "<1.7.46",
- "getkirby/cms": "<=3.6.6.5|>=3.7,<=3.7.5.4|>=3.8,<=3.8.4.3|>=3.9,<=3.9.8.1|>=3.10,<=3.10.1|>=4,<=4.3",
- "getkirby/kirby": "<=2.5.12",
+ "getkirby/cms": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1|>=5,<5.1.4",
+ "getkirby/kirby": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1",
"getkirby/panel": "<2.5.14",
"getkirby/starterkit": "<=3.7.0.2",
"gilacms/gila": "<=1.15.4",
"gleez/cms": "<=1.3|==2",
"globalpayments/php-sdk": "<2",
+ "goalgorilla/open_social": "<12.3.11|>=12.4,<12.4.10|>=13.0.0.0-alpha1,<13.0.0.0-alpha11",
"gogentooss/samlbase": "<1.2.7",
- "google/protobuf": "<3.15",
+ "google/protobuf": "<3.4",
"gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
+ "gp247/core": "<1.1.24",
"gree/jose": "<2.2.1",
"gregwar/rst": "<1.0.3",
"grumpydictator/firefly-iii": "<6.1.17",
"gugoan/economizzer": "<=0.9.0.0-beta1",
"guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5",
+ "guzzlehttp/oauth-subscriber": "<0.8.1",
"guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5",
"haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2",
+ "handcraftedinthealps/goodby-csv": "<1.4.3",
"harvesthq/chosen": "<1.8.7",
"helloxz/imgurl": "<=2.31",
"hhxsv5/laravel-s": "<3.7.36",
@@ -572,13 +644,15 @@
"hov/jobfair": "<1.0.13|>=2,<2.0.2",
"httpsoft/http-message": "<1.0.12",
"hyn/multi-tenant": ">=5.6,<5.7.2",
- "ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6.0.0-beta1,<4.6.9",
+ "ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6,<4.6.25|>=5,<5.0.3",
+ "ibexa/admin-ui-assets": ">=4.6.0.0-alpha1,<4.6.21",
"ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2",
- "ibexa/fieldtype-richtext": ">=4.6,<4.6.10",
+ "ibexa/fieldtype-richtext": ">=4.6,<4.6.25|>=5,<5.0.3",
"ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3",
- "ibexa/post-install": "<=1.0.4",
+ "ibexa/http-cache": ">=4.6,<4.6.14",
+ "ibexa/post-install": "<1.0.16|>=4.6,<4.6.14",
"ibexa/solr": ">=4.5,<4.5.4",
- "ibexa/user": ">=4,<4.4.3",
+ "ibexa/user": ">=4,<4.4.3|>=5,<5.0.3",
"icecoder/icecoder": "<=8.1",
"idno/known": "<=1.3.1",
"ilicmiljan/secure-props": ">=1.2,<1.2.2",
@@ -589,119 +663,154 @@
"illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75",
"imdbphp/imdbphp": "<=5.1.1",
"impresscms/impresscms": "<=1.4.5",
- "impresspages/impresspages": "<=1.0.12",
- "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3",
+ "impresspages/impresspages": "<1.0.13",
+ "in2code/femanager": "<6.4.2|>=7,<7.5.3|>=8,<8.3.1",
"in2code/ipandlanguageredirect": "<5.1.2",
"in2code/lux": "<17.6.1|>=18,<24.0.2",
- "in2code/powermail": "<7.5|>=8,<8.5|>=9,<10.9|>=11,<12.4",
+ "in2code/powermail": "<7.5.1|>=8,<8.5.1|>=9,<10.9.1|>=11,<12.5.3|==13",
"innologi/typo3-appointments": "<2.0.6",
"intelliants/subrion": "<4.2.2",
"inter-mediator/inter-mediator": "==5.5",
"ipl/web": "<0.10.1",
+ "islandora/crayfish": "<4.1",
"islandora/islandora": ">=2,<2.4.1",
"ivankristianto/phpwhois": "<=4.3",
"jackalope/jackalope-doctrine-dbal": "<1.7.4",
+ "jambagecom/div2007": "<0.10.2",
"james-heinrich/getid3": "<1.9.21",
- "james-heinrich/phpthumb": "<1.7.12",
+ "james-heinrich/phpthumb": "<=1.7.23",
"jasig/phpcas": "<1.3.3",
+ "jbartels/wec-map": "<3.0.3",
"jcbrand/converse.js": "<3.3.3",
- "johnbillion/wp-crontrol": "<1.16.2",
+ "joelbutcher/socialstream": "<5.6|>=6,<6.2",
+ "johnbillion/wp-crontrol": "<1.16.2|>=1.17,<1.19.2",
"joomla/application": "<1.0.13",
"joomla/archive": "<1.1.12|>=2,<2.0.1",
+ "joomla/database": ">=1,<2.2|>=3,<3.4",
"joomla/filesystem": "<1.6.2|>=2,<2.0.1",
- "joomla/filter": "<1.4.4|>=2,<2.0.1",
+ "joomla/filter": "<2.0.6|>=3,<3.0.5|==4",
"joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12",
"joomla/input": ">=2,<2.0.2",
- "joomla/joomla-cms": ">=2.5,<3.9.12",
+ "joomla/joomla-cms": "<3.9.12|>=4,<4.4.13|>=5,<5.2.6",
+ "joomla/joomla-platform": "<1.5.4",
"joomla/session": "<1.3.1",
"joyqi/hyper-down": "<=2.4.27",
"jsdecena/laracom": "<2.0.9",
"jsmitty12/phpwhois": "<5.1",
- "juzaweb/cms": "<=3.4",
+ "juzaweb/cms": "<=3.4.2",
"jweiland/events2": "<8.3.8|>=9,<9.0.6",
+ "jweiland/kk-downloader": "<1.2.2",
"kazist/phpwhois": "<=4.2.6",
"kelvinmo/simplexrd": "<3.1.1",
"kevinpapst/kimai2": "<1.16.7",
"khodakhah/nodcms": "<=3",
- "kimai/kimai": "<2.16",
+ "kimai/kimai": "<=2.20.1",
"kitodo/presentation": "<3.2.3|>=3.3,<3.3.4",
"klaviyo/magento2-extension": ">=1,<3",
"knplabs/knp-snappy": "<=1.4.2",
"kohana/core": "<3.3.3",
- "krayin/laravel-crm": "<1.2.2",
+ "koillection/koillection": "<1.6.12",
+ "krayin/laravel-crm": "<=1.3",
"kreait/firebase-php": ">=3.2,<3.8.1",
"kumbiaphp/kumbiapp": "<=1.1.1",
"la-haute-societe/tcpdf": "<6.2.22",
"laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2",
"laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1",
"laminas/laminas-http": "<2.14.2",
+ "lara-zeus/artemis": ">=1,<=1.0.6",
+ "lara-zeus/dynamic-dashboard": ">=3,<=3.0.1",
"laravel/fortify": "<1.11.1",
- "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75",
+ "laravel/framework": "<10.48.29|>=11,<11.44.1|>=12,<12.1.1",
"laravel/laravel": ">=5.4,<5.4.22",
+ "laravel/pulse": "<1.3.1",
+ "laravel/reverb": "<1.4",
"laravel/socialite": ">=1,<2.0.10",
"latte/latte": "<2.10.8",
"lavalite/cms": "<=9|==10.1",
+ "lavitto/typo3-form-to-database": "<2.2.5|>=3,<3.2.2|>=4,<4.2.3|>=5,<5.0.2",
"lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5",
- "league/commonmark": "<0.18.3",
+ "league/commonmark": "<2.7",
"league/flysystem": "<1.1.4|>=2,<2.1.1",
"league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3",
+ "leantime/leantime": "<3.3",
"lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
"libreform/libreform": ">=2,<=2.0.8",
"librenms/librenms": "<2017.08.18",
"liftkit/database": "<2.13.2",
"lightsaml/lightsaml": "<1.3.5",
- "limesurvey/limesurvey": "<3.27.19",
+ "limesurvey/limesurvey": "<6.5.12",
"livehelperchat/livehelperchat": "<=3.91",
- "livewire/livewire": ">2.2.4,<2.2.6|>=3.3.5,<3.4.9",
+ "livewire/livewire": "<2.12.7|>=3.0.0.0-beta1,<3.6.4",
+ "livewire/volt": "<1.7",
"lms/routes": "<2.1.1",
"localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2",
+ "lomkit/laravel-rest-api": "<2.13",
+ "luracast/restler": "<3.1",
"luyadev/yii-helpers": "<1.2.1",
- "magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch9|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch7|==2.4.7|>=2.4.7.0-patch1,<2.4.7.0-patch2",
+ "macropay-solutions/laravel-crud-wizard-free": "<3.4.17",
+ "maestroerror/php-heic-to-jpg": "<1.0.5",
+ "magento/community-edition": "<2.4.6.0-patch13|>=2.4.7.0-beta1,<2.4.7.0-patch8|>=2.4.8.0-beta1,<2.4.8.0-patch3|>=2.4.9.0-alpha1,<2.4.9.0-alpha3|==2.4.9",
"magento/core": "<=1.9.4.5",
"magento/magento1ce": "<1.9.4.3-dev",
"magento/magento1ee": ">=1,<1.14.4.3-dev",
"magento/product-community-edition": "<2.4.4.0-patch9|>=2.4.5,<2.4.5.0-patch8|>=2.4.6,<2.4.6.0-patch6|>=2.4.7,<2.4.7.0-patch1",
+ "magento/project-community-edition": "<=2.0.2",
"magneto/core": "<1.9.4.4-dev",
+ "mahocommerce/maho": "<25.9",
"maikuolan/phpmussel": ">=1,<1.6",
"mainwp/mainwp": "<=4.4.3.3",
- "mantisbt/mantisbt": "<2.26.2",
+ "manogi/nova-tiptap": "<=3.2.6",
+ "mantisbt/mantisbt": "<2.27.2",
"marcwillmann/turn": "<0.3.3",
+ "marshmallow/nova-tiptap": "<5.7",
+ "matomo/matomo": "<1.11",
"matyhtf/framework": "<3.0.6",
- "mautic/core": "<4.4.12|>=5.0.0.0-alpha,<5.0.4",
+ "mautic/core": "<5.2.8|>=6.0.0.0-alpha,<6.0.5",
+ "mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1",
+ "maximebf/debugbar": "<1.19",
"mdanter/ecc": "<2",
- "mediawiki/core": "<1.36.2",
+ "mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2",
+ "mediawiki/cargo": "<3.8.3",
+ "mediawiki/core": "<1.39.5|==1.40",
+ "mediawiki/data-transfer": ">=1.39,<1.39.11|>=1.41,<1.41.3|>=1.42,<1.42.2",
"mediawiki/matomo": "<2.4.3",
"mediawiki/semantic-media-wiki": "<4.0.2",
+ "mehrwert/phpmyadmin": "<3.2",
"melisplatform/melis-asset-manager": "<5.0.1",
- "melisplatform/melis-cms": "<5.0.1",
+ "melisplatform/melis-cms": "<5.3.4",
+ "melisplatform/melis-cms-slider": "<5.3.1",
+ "melisplatform/melis-core": "<5.3.11",
"melisplatform/melis-front": "<5.0.1",
"mezzio/mezzio-swoole": "<3.7|>=4,<4.3",
"mgallegos/laravel-jqgrid": "<=1.3",
"microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1",
"microsoft/microsoft-graph-beta": "<2.0.1",
"microsoft/microsoft-graph-core": "<2.0.2",
- "microweber/microweber": "<=2.0.16",
+ "microweber/microweber": "<=2.0.19",
"mikehaertl/php-shellcommand": "<1.6.1",
"miniorange/miniorange-saml": "<1.4.3",
"mittwald/typo3_forum": "<1.2.1",
"mobiledetect/mobiledetectlib": "<2.8.32",
- "modx/revolution": "<=2.8.3.0-patch",
+ "modx/revolution": "<=3.1",
"mojo42/jirafeau": "<4.4",
"mongodb/mongodb": ">=1,<1.9.2",
+ "mongodb/mongodb-extension": "<1.21.2",
"monolog/monolog": ">=1.8,<1.12",
- "moodle/moodle": "<4.3.5|>=4.4.0.0-beta,<4.4.1",
+ "moodle/moodle": "<4.4.11|>=4.5.0.0-beta,<4.5.7|>=5.0.0.0-beta,<5.0.3",
+ "moonshine/moonshine": "<=3.12.5",
"mos/cimage": "<0.7.19",
"movim/moxl": ">=0.8,<=0.10",
"movingbytes/social-network": "<=1.2.1",
"mpdf/mpdf": "<=7.1.7",
- "munkireport/comment": "<4.1",
+ "munkireport/comment": "<4",
"munkireport/managedinstalls": "<2.6",
"munkireport/munki_facts": "<1.5",
- "munkireport/munkireport": ">=2.5.3,<5.6.3",
"munkireport/reportdata": "<3.5",
"munkireport/softwareupdate": "<1.6",
"mustache/mustache": ">=2,<2.14.1",
+ "mwdelaney/wp-enable-svg": "<=0.2",
"namshi/jose": "<2.2",
+ "nasirkhan/laravel-starter": "<11.11",
"nategood/httpful": "<1",
"neoan3-apps/template": "<1.1.1",
"neorazorx/facturascripts": "<2022.04",
@@ -710,14 +819,18 @@
"neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9",
"neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2",
"neos/swiftmailer": "<5.4.5",
+ "nesbot/carbon": "<2.72.6|>=3,<3.8.4",
+ "netcarver/textile": "<=4.1.2",
"netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15",
"nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
"nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
- "nilsteampassnet/teampass": "<3.0.10",
+ "nilsteampassnet/teampass": "<3.1.3.1-dev",
+ "nitsan/ns-backup": "<13.0.1",
"nonfiction/nterchange": "<4.1.1",
"notrinos/notrinos-erp": "<=0.7",
"noumo/easyii": "<=0.9",
"novaksolutions/infusionsoft-php-sdk": "<1",
+ "novosga/novosga": "<=2.2.12",
"nukeviet/nukeviet": "<4.5.02",
"nyholm/psr7": "<1.6.1",
"nystudio107/craft-seomatic": "<3.4.12",
@@ -725,19 +838,20 @@
"nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
"october/backend": "<1.1.2",
"october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1",
- "october/october": "<=3.4.4",
+ "october/october": "<3.7.5",
"october/rain": "<1.0.472|>=1.1,<1.1.2",
- "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.15",
+ "october/system": "<3.7.5",
+ "oliverklee/phpunit": "<3.5.15",
"omeka/omeka-s": "<4.0.3",
"onelogin/php-saml": "<2.10.4",
"oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5",
- "open-web-analytics/open-web-analytics": "<1.7.4",
+ "open-web-analytics/open-web-analytics": "<1.8.1",
"opencart/opencart": ">=0",
"openid/php-openid": "<2.3",
- "openmage/magento-lts": "<20.10.1",
+ "openmage/magento-lts": "<20.16",
"opensolutions/vimbadmin": "<=3.0.15",
- "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2",
- "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5",
+ "opensource-workshop/connect-cms": "<1.8.7|>=2,<2.4.7",
+ "orchid/platform": ">=8,<14.43",
"oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1",
"oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1",
"oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7",
@@ -745,7 +859,7 @@
"oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3",
"oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3",
"oveleon/contao-cookiebar": "<1.16.3|>=2,<2.1.3",
- "oxid-esales/oxideshop-ce": "<4.5",
+ "oxid-esales/oxideshop-ce": "<=7.0.5",
"oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1",
"packbackbooks/lti-1-3-php-library": "<5",
"padraic/humbug_get_contents": "<1.1.2",
@@ -761,6 +875,7 @@
"pear/archive_tar": "<1.4.14",
"pear/auth": "<1.2.4",
"pear/crypt_gpg": "<1.6.7",
+ "pear/http_request2": "<2.7",
"pear/pear": "<=1.10.1",
"pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1",
"personnummer/personnummer": "<3.0.2",
@@ -768,16 +883,18 @@
"phenx/php-svg-lib": "<0.5.2",
"php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5",
"php-mod/curl": "<2.3.2",
- "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1",
+ "phpbb/phpbb": "<3.3.11",
"phpems/phpems": ">=6,<=6.1.3",
"phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7",
"phpmailer/phpmailer": "<6.5",
"phpmussel/phpmussel": ">=1,<1.6",
- "phpmyadmin/phpmyadmin": "<5.2.1",
- "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5",
+ "phpmyadmin/phpmyadmin": "<5.2.2",
+ "phpmyfaq/phpmyfaq": "<=4.0.13",
"phpoffice/common": "<0.2.9",
- "phpoffice/phpexcel": "<1.8",
- "phpoffice/phpspreadsheet": "<1.29.1|>=2,<2.1.1|>=2.2,<2.2.1",
+ "phpoffice/math": "<=0.2",
+ "phpoffice/phpexcel": "<=1.8.2",
+ "phpoffice/phpspreadsheet": "<1.30|>=2,<2.1.12|>=2.2,<2.4|>=3,<3.10|>=4,<5",
+ "phppgadmin/phppgadmin": "<=7.13",
"phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36",
"phpservermon/phpservermon": "<3.6",
"phpsysinfo/phpsysinfo": "<3.4.3",
@@ -786,18 +903,19 @@
"phpxmlrpc/extras": "<0.6.1",
"phpxmlrpc/phpxmlrpc": "<4.9.2",
"pi/pi": "<=2.5",
- "pimcore/admin-ui-classic-bundle": "<1.5.4",
- "pimcore/customer-management-framework-bundle": "<4.0.6",
+ "pimcore/admin-ui-classic-bundle": "<1.7.6",
+ "pimcore/customer-management-framework-bundle": "<4.2.1",
"pimcore/data-hub": "<1.2.4",
"pimcore/data-importer": "<1.8.9|>=1.9,<1.9.3",
"pimcore/demo": "<10.3",
"pimcore/ecommerce-framework-bundle": "<1.0.10",
"pimcore/perspective-editor": "<1.5.1",
- "pimcore/pimcore": "<11.2.4",
- "pixelfed/pixelfed": "<0.11.11",
+ "pimcore/pimcore": "<11.5.4",
+ "piwik/piwik": "<1.11",
+ "pixelfed/pixelfed": "<0.12.5",
"plotly/plotly.js": "<2.25.2",
"pocketmine/bedrock-protocol": "<8.0.2",
- "pocketmine/pocketmine-mp": "<5.11.2",
+ "pocketmine/pocketmine-mp": "<5.32.1",
"pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1",
"pressbooks/pressbooks": "<5.18",
"prestashop/autoupgrade": ">=4,<4.10.1",
@@ -805,19 +923,22 @@
"prestashop/blockwishlist": ">=2,<2.1.1",
"prestashop/contactform": ">=1.0.1,<4.3",
"prestashop/gamification": "<2.3.2",
- "prestashop/prestashop": "<8.1.6",
+ "prestashop/prestashop": "<8.2.3",
"prestashop/productcomments": "<5.0.2",
+ "prestashop/ps_checkout": "<4.4.1|>=5,<5.0.5",
+ "prestashop/ps_contactinfo": "<=3.3.2",
"prestashop/ps_emailsubscription": "<2.6.1",
"prestashop/ps_facetedsearch": "<3.4.1",
"prestashop/ps_linklist": "<3.1",
- "privatebin/privatebin": "<1.4|>=1.5,<1.7.4",
- "processwire/processwire": "<=3.0.229",
+ "privatebin/privatebin": "<1.4|>=1.5,<1.7.4|>=1.7.7,<2.0.3",
+ "processwire/processwire": "<=3.0.246",
"propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7",
"propel/propel1": ">=1,<=1.7.1",
- "pterodactyl/panel": "<1.11.6",
+ "pterodactyl/panel": "<=1.11.10",
"ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2",
"ptrofimov/beanstalk_console": "<1.7.14",
"pubnub/pubnub": "<6.1",
+ "punktde/pt_extbase": "<1.5.1",
"pusher/pusher-php-server": "<2.2.1",
"pwweb/laravel-core": "<=0.3.6.0-beta",
"pxlrbt/filament-excel": "<1.1.14|>=2.0.0.0-alpha,<2.3.3",
@@ -831,37 +952,43 @@
"rap2hpoutre/laravel-log-viewer": "<0.13",
"react/http": ">=0.7,<1.9",
"really-simple-plugins/complianz-gdpr": "<6.4.2",
- "redaxo/source": "<=5.15.1",
+ "redaxo/source": "<5.20.1",
"remdex/livehelperchat": "<4.29",
+ "renolit/reint-downloadmanager": "<4.0.2|>=5,<5.0.1",
"reportico-web/reportico": "<=8.1",
"rhukster/dom-sanitizer": "<1.0.7",
"rmccue/requests": ">=1.6,<1.8",
"robrichards/xmlseclibs": ">=1,<3.0.4",
"roots/soil": "<4.1",
+ "roundcube/roundcubemail": "<1.5.10|>=1.6,<1.6.11",
"rudloff/alltube": "<3.0.3",
- "s-cart/core": "<6.9",
+ "rudloff/rtmpdump-bin": "<=2.3.1",
+ "s-cart/core": "<=9.0.5",
"s-cart/s-cart": "<6.9",
"sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1",
"sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9",
+ "samwilson/unlinked-wikibase": "<1.42",
"scheb/two-factor-bundle": "<3.26|>=4,<4.11",
"sensiolabs/connect": "<4.2.3",
"serluck/phpwhois": "<=4.2.6",
+ "setasign/fpdi": "<2.6.4",
"sfroemken/url_redirect": "<=1.2.1",
- "sheng/yiicms": "<=1.2",
- "shopware/core": "<=6.5.8.12|>=6.6,<=6.6.5",
- "shopware/platform": "<=6.5.8.12|>=6.6,<=6.6.5",
+ "sheng/yiicms": "<1.2.1",
+ "shopware/core": "<6.6.10.9-dev|>=6.7,<6.7.4.1-dev",
+ "shopware/platform": "<6.6.10.7-dev|>=6.7,<6.7.3.1-dev",
"shopware/production": "<=6.3.5.2",
- "shopware/shopware": "<=5.7.17",
+ "shopware/shopware": "<=5.7.17|>=6.7,<6.7.2.1-dev",
"shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev",
- "shopxo/shopxo": "<=6.1",
+ "shopxo/shopxo": "<=6.4",
"showdoc/showdoc": "<2.10.4",
+ "shuchkin/simplexlsx": ">=1.0.12,<1.1.13",
"silverstripe-australia/advancedreports": ">=1,<=2",
"silverstripe/admin": "<1.13.19|>=2,<2.1.8",
"silverstripe/assets": ">=1,<1.11.1",
"silverstripe/cms": "<4.11.3",
"silverstripe/comments": ">=1.3,<3.1.1",
"silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
- "silverstripe/framework": "<5.2.16",
+ "silverstripe/framework": "<5.3.23",
"silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3",
"silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1",
"silverstripe/recipe-cms": ">=4.5,<4.5.3",
@@ -873,47 +1000,61 @@
"silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1",
"silverstripe/userforms": "<3|>=5,<5.4.2",
"silverstripe/versioned-admin": ">=1,<1.11.1",
+ "simogeo/filemanager": "<=2.5",
"simple-updates/phpwhois": "<=1",
- "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12",
+ "simplesamlphp/saml2": "<=4.16.15|>=5.0.0.0-alpha1,<=5.0.0.0-alpha19",
+ "simplesamlphp/saml2-legacy": "<=4.16.15",
"simplesamlphp/simplesamlphp": "<1.18.6",
"simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
"simplesamlphp/simplesamlphp-module-openid": "<1",
"simplesamlphp/simplesamlphp-module-openidprovider": "<0.9",
+ "simplesamlphp/xml-common": "<1.20",
"simplesamlphp/xml-security": "==1.6.11",
"simplito/elliptic-php": "<1.0.6",
"sitegeist/fluid-components": "<3.5",
+ "sjbr/sr-feuser-register": "<2.6.2|>=5.1,<12.5",
"sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3",
+ "sjbr/static-info-tables": "<2.3.1",
"slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1",
"slim/slim": "<2.6",
"slub/slub-events": "<3.0.3",
"smarty/smarty": "<4.5.3|>=5,<5.1.1",
- "snipe/snipe-it": "<6.4.2",
+ "snipe/snipe-it": "<=8.3.4",
"socalnick/scn-social-auth": "<1.15.2",
"socialiteproviders/steam": "<1.1",
- "spatie/browsershot": "<3.57.4",
+ "solspace/craft-freeform": ">=5,<5.10.16",
+ "soosyze/soosyze": "<=2",
+ "spatie/browsershot": "<5.0.5",
"spatie/image-optimizer": "<1.7.3",
+ "spencer14420/sp-php-email-handler": "<1",
"spipu/html2pdf": "<5.2.8",
+ "spiral/roadrunner": "<2025.1",
"spoon/library": "<1.4.1",
"spoonity/tcpdf": "<6.2.22",
"squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
"ssddanbrown/bookstack": "<24.05.1",
- "statamic/cms": "<4.46|>=5.3,<5.6.2",
+ "starcitizentools/citizen-skin": ">=1.9.4,<3.9",
+ "starcitizentools/short-description": ">=4,<4.0.1",
+ "starcitizentools/tabber-neue": ">=1.9.1,<2.7.2|>=3,<3.1.1",
+ "starcitizenwiki/embedvideo": "<=4",
+ "statamic/cms": "<=5.22",
"stormpath/sdk": "<9.9.99",
"studio-42/elfinder": "<=2.1.64",
"studiomitte/friendlycaptcha": "<0.1.4",
"subhh/libconnect": "<7.0.8|>=8,<8.1",
"sukohi/surpass": "<1",
"sulu/form-bundle": ">=2,<2.5.3",
- "sulu/sulu": "<1.6.44|>=2,<2.4.17|>=2.5,<2.5.13",
+ "sulu/sulu": "<1.6.44|>=2,<2.5.25|>=2.6,<2.6.9|>=3.0.0.0-alpha1,<3.0.0.0-alpha3",
"sumocoders/framework-user-bundle": "<1.4",
"superbig/craft-audit": "<3.0.2",
+ "svewap/a21glossary": "<=0.4.10",
"swag/paypal": "<5.4.4",
"swiftmailer/swiftmailer": "<6.2.5",
"swiftyedit/swiftyedit": "<1.2",
"sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
"sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
"sylius/grid-bundle": "<1.10.1",
- "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1",
+ "sylius/paypal-plugin": "<1.6.2|>=1.7,<1.7.2|>=2,<2.0.2",
"sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
"sylius/sylius": "<1.12.19|>=1.13.0.0-alpha1,<1.13.4",
"symbiote/silverstripe-multivaluefield": ">=3,<3.1",
@@ -926,7 +1067,8 @@
"symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4",
"symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1",
"symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4",
- "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
+ "symfony/http-client": ">=4.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8",
+ "symfony/http-foundation": "<5.4.50|>=6,<6.4.29|>=7,<7.3.7",
"symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6",
"symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
"symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1",
@@ -934,20 +1076,24 @@
"symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
"symfony/polyfill": ">=1,<1.10",
"symfony/polyfill-php55": ">=1,<1.10",
+ "symfony/process": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7",
"symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
"symfony/routing": ">=2,<2.0.19",
+ "symfony/runtime": ">=5.3,<5.4.46|>=6,<6.4.14|>=7,<7.1.7",
"symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8",
- "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6",
+ "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.4.10|>=7,<7.0.10|>=7.1,<7.1.3",
"symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9",
"symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
"symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8",
- "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8",
+ "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8",
"symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12",
- "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
+ "symfony/symfony": "<5.4.50|>=6,<6.4.29|>=7,<7.3.7",
"symfony/translation": ">=2,<2.0.17",
"symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
"symfony/ux-autocomplete": "<2.11.2",
- "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
+ "symfony/ux-live-component": "<2.25.1",
+ "symfony/ux-twig-component": "<2.25.1",
+ "symfony/validator": "<5.4.43|>=6,<6.4.11|>=7,<7.1.4",
"symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8",
"symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
"symfony/webhook": ">=6.3,<6.3.8",
@@ -956,40 +1102,55 @@
"t3/dce": "<0.11.5|>=2.2,<2.6.2",
"t3g/svg-sanitizer": "<1.0.3",
"t3s/content-consent": "<1.0.3|>=2,<2.0.2",
- "tastyigniter/tastyigniter": "<3.3",
- "tcg/voyager": "<=1.4",
- "tecnickcom/tcpdf": "<=6.7.4",
+ "tastyigniter/tastyigniter": "<4",
+ "tcg/voyager": "<=1.8",
+ "tecnickcom/tc-lib-pdf-font": "<2.6.4",
+ "tecnickcom/tcpdf": "<6.8",
"terminal42/contao-tablelookupwizard": "<3.3.5",
"thelia/backoffice-default-template": ">=2.1,<2.1.2",
"thelia/thelia": ">=2.1,<2.1.3",
"theonedemon/phpwhois": "<=4.2.5",
"thinkcmf/thinkcmf": "<6.0.8",
- "thorsten/phpmyfaq": "<3.2.2",
+ "thorsten/phpmyfaq": "<=4.0.13",
"tikiwiki/tiki-manager": "<=17.1",
"timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1",
"tinymce/tinymce": "<7.2",
"tinymighty/wiki-seo": "<1.2.2",
"titon/framework": "<9.9.99",
+ "tltneon/lgsl": "<7",
"tobiasbg/tablepress": "<=2.0.0.0-RC1",
"topthink/framework": "<6.0.17|>=6.1,<=8.0.4",
"topthink/think": "<=6.1.1",
- "topthink/thinkphp": "<=3.2.3",
- "torrentpier/torrentpier": "<=2.4.3",
+ "topthink/thinkphp": "<=3.2.3|>=6.1.3,<=8.0.4",
+ "torrentpier/torrentpier": "<=2.8.8",
"tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2",
- "tribalsystems/zenario": "<9.5.60602",
+ "tribalsystems/zenario": "<=9.7.61188",
"truckersmp/phpwhois": "<=4.3.1",
"ttskch/pagination-service-provider": "<1",
- "twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2",
- "twig/twig": "<1.44.8|>=2,<2.16.1|>=3,<3.11.1|>=3.12,<3.14",
+ "twbs/bootstrap": "<3.4.1|>=4,<4.3.1",
+ "twig/twig": "<3.11.2|>=3.12,<3.14.1|>=3.16,<3.19",
"typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
- "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
- "typo3/cms-core": "<=8.7.56|>=9,<=9.5.47|>=10,<=10.4.44|>=11,<=11.5.36|>=12,<=12.4.14|>=13,<=13.1",
+ "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18",
+ "typo3/cms-belog": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
+ "typo3/cms-beuser": ">=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18",
+ "typo3/cms-core": "<=8.7.56|>=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18",
+ "typo3/cms-dashboard": ">=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18",
"typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1",
+ "typo3/cms-extensionmanager": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
+ "typo3/cms-felogin": ">=4.2,<4.2.3",
"typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1",
- "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
+ "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
"typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5",
- "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8",
+ "typo3/cms-indexed-search": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
+ "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8|==13.4.2",
+ "typo3/cms-lowlevel": ">=11,<=11.5.41",
+ "typo3/cms-recordlist": ">=11,<11.5.48",
+ "typo3/cms-recycler": ">=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18",
"typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30",
+ "typo3/cms-scheduler": ">=11,<=11.5.41",
+ "typo3/cms-setup": ">=9,<=9.5.50|>=10,<=10.4.49|>=11,<=11.5.43|>=12,<=12.4.30|>=13,<=13.4.11",
+ "typo3/cms-webhooks": ">=12,<=12.4.30|>=13,<=13.4.11",
+ "typo3/cms-workspaces": ">=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18",
"typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
"typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3",
"typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
@@ -998,40 +1159,48 @@
"typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10",
"ua-parser/uap-php": "<3.8",
"uasoft-indonesia/badaso": "<=2.9.7",
- "unisharp/laravel-filemanager": "<2.6.4",
+ "unisharp/laravel-filemanager": "<2.9.1",
+ "universal-omega/dynamic-page-list3": "<3.6.4",
+ "unopim/unopim": "<=0.3",
"userfrosting/userfrosting": ">=0.3.1,<4.6.3",
"usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
"uvdesk/community-skeleton": "<=1.1.1",
"uvdesk/core-framework": "<=1.1.1",
"vanilla/safecurl": "<0.9.2",
"verbb/comments": "<1.5.5",
- "verbb/formie": "<2.1.6",
+ "verbb/formie": "<=2.1.43",
"verbb/image-resizer": "<2.0.9",
"verbb/knock-knock": "<1.2.8",
"verot/class.upload.php": "<=2.1.6",
+ "vertexvaar/falsftp": "<0.2.6",
"villagedefrance/opencart-overclocked": "<=1.11.1",
"vova07/yii2-fileapi-widget": "<0.1.9",
- "vrana/adminer": "<4.8.1",
+ "vrana/adminer": "<=4.8.1",
"vufind/vufind": ">=2,<9.1.1",
"waldhacker/hcaptcha": "<2.1.2",
"wallabag/tcpdf": "<6.2.22",
- "wallabag/wallabag": "<2.6.7",
+ "wallabag/wallabag": "<2.6.11",
"wanglelecc/laracms": "<=1.0.3",
+ "wapplersystems/a21glossary": "<=0.4.10",
"web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9",
"web-auth/webauthn-lib": ">=4.5,<4.9",
"web-feet/coastercms": "==5.5",
+ "web-tp3/wec_map": "<3.0.3",
"webbuilders-group/silverstripe-kapost-bridge": "<0.4",
"webcoast/deferred-image-processing": "<1.0.2",
"webklex/laravel-imap": "<5.3",
"webklex/php-imap": "<5.3",
"webpa/webpa": "<3.1.2",
+ "webreinvent/vaahcms": "<=2.3.1",
"wikibase/wikibase": "<=1.39.3",
"wikimedia/parsoid": "<0.12.2",
"willdurand/js-translation-bundle": "<2.1.1",
"winter/wn-backend-module": "<1.2.4",
+ "winter/wn-cms-module": "<1.0.476|>=1.1,<1.1.11|>=1.2,<1.2.7",
"winter/wn-dusk-plugin": "<2.1",
"winter/wn-system-module": "<1.2.4",
"wintercms/winter": "<=1.2.3",
+ "wireui/wireui": "<1.19.3|>=2,<2.1.3",
"woocommerce/woocommerce": "<6.6|>=8.8,<8.8.5|>=8.9,<8.9.3",
"wp-cli/wp-cli": ">=0.12,<2.5",
"wp-graphql/wp-graphql": "<=1.14.5",
@@ -1043,23 +1212,24 @@
"xataface/xataface": "<3",
"xpressengine/xpressengine": "<3.0.15",
"yab/quarx": "<2.4.5",
- "yeswiki/yeswiki": "<4.1",
- "yetiforce/yetiforce-crm": "<=6.4",
+ "yeswiki/yeswiki": "<=4.5.4",
+ "yetiforce/yetiforce-crm": "<6.5",
"yidashi/yii2cmf": "<=2",
"yii2mod/yii2-cms": "<1.9.2",
- "yiisoft/yii": "<1.1.29",
- "yiisoft/yii2": "<2.0.49.4-dev",
+ "yiisoft/yii": "<1.1.31",
+ "yiisoft/yii2": "<2.0.52",
"yiisoft/yii2-authclient": "<2.2.15",
"yiisoft/yii2-bootstrap": "<2.0.4",
- "yiisoft/yii2-dev": "<2.0.43",
+ "yiisoft/yii2-dev": "<=2.0.45",
"yiisoft/yii2-elasticsearch": "<2.0.5",
"yiisoft/yii2-gii": "<=2.2.4",
"yiisoft/yii2-jui": "<2.0.4",
- "yiisoft/yii2-redis": "<2.0.8",
+ "yiisoft/yii2-redis": "<2.0.20",
"yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6",
"yoast-seo-for-typo3/yoast_seo": "<7.2.3",
"yourls/yourls": "<=1.8.2",
"yuan1994/tpadmin": "<=1.3.12",
+ "z-push/z-push-dev": "<2.7.6",
"zencart/zencart": "<=1.5.7.0-beta",
"zendesk/zendesk_api_client_php": "<2.2.11",
"zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
@@ -1134,7 +1304,7 @@
"type": "tidelift"
}
],
- "time": "2024-09-16T22:05:02+00:00"
+ "time": "2025-11-26T00:22:38+00:00"
},
{
"name": "sabre/dav",
@@ -1287,16 +1457,16 @@
},
{
"name": "sabre/http",
- "version": "5.1.12",
+ "version": "5.1.13",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/http.git",
- "reference": "dedff73f3995578bc942fa4c8484190cac14f139"
+ "reference": "7c2a14097d1a0de2347dcbdc91a02f38e338f4db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/http/zipball/dedff73f3995578bc942fa4c8484190cac14f139",
- "reference": "dedff73f3995578bc942fa4c8484190cac14f139",
+ "url": "https://api.github.com/repos/sabre-io/http/zipball/7c2a14097d1a0de2347dcbdc91a02f38e338f4db",
+ "reference": "7c2a14097d1a0de2347dcbdc91a02f38e338f4db",
"shasum": ""
},
"require": {
@@ -1308,7 +1478,7 @@
"sabre/uri": "^2.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "~2.17.1||^3.63",
+ "friendsofphp/php-cs-fixer": "~2.17.1||3.63.2",
"phpstan/phpstan": "^0.12",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.6"
},
@@ -1346,7 +1516,7 @@
"issues": "https://github.com/sabre-io/http/issues",
"source": "https://github.com/fruux/sabre-http"
},
- "time": "2024-08-27T16:07:41+00:00"
+ "time": "2025-09-09T10:21:47+00:00"
},
{
"name": "sabre/uri",
@@ -1410,16 +1580,16 @@
},
{
"name": "sabre/vobject",
- "version": "4.5.6",
+ "version": "4.5.7",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/vobject.git",
- "reference": "900266bb3bd448a9f7f41f82344ad0aba237cb27"
+ "reference": "ff22611a53782e90c97be0d0bc4a5f98a5c0a12c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/vobject/zipball/900266bb3bd448a9f7f41f82344ad0aba237cb27",
- "reference": "900266bb3bd448a9f7f41f82344ad0aba237cb27",
+ "url": "https://api.github.com/repos/sabre-io/vobject/zipball/ff22611a53782e90c97be0d0bc4a5f98a5c0a12c",
+ "reference": "ff22611a53782e90c97be0d0bc4a5f98a5c0a12c",
"shasum": ""
},
"require": {
@@ -1429,7 +1599,7 @@
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2.17.1",
- "phpstan/phpstan": "^0.12 || ^1.11",
+ "phpstan/phpstan": "^0.12 || ^1.12 || ^2.0",
"phpunit/php-invoker": "^2.0 || ^3.1",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.6"
},
@@ -1510,7 +1680,7 @@
"issues": "https://github.com/sabre-io/vobject/issues",
"source": "https://github.com/fruux/sabre-vobject"
},
- "time": "2024-10-14T11:53:54+00:00"
+ "time": "2025-04-17T09:22:48+00:00"
},
{
"name": "sabre/xml",
@@ -1595,5 +1765,5 @@
"platform-overrides": {
"php": "8.1"
},
- "plugin-api-version": "2.9.0"
+ "plugin-api-version": "2.6.0"
}
diff --git a/lib/ACL/ACLStorageWrapper.php b/lib/ACL/ACLStorageWrapper.php
index a3856d4bf..0861f85a4 100644
--- a/lib/ACL/ACLStorageWrapper.php
+++ b/lib/ACL/ACLStorageWrapper.php
@@ -11,12 +11,12 @@
use Icewind\Streams\IteratorDirectory;
use OC\Files\Storage\Wrapper\Wrapper;
use OCP\Constants;
-use OCP\Files\Cache\ICache;
-use OCP\Files\Cache\IScanner;
-use OCP\Files\Storage\IConstructableStorage;
-use OCP\Files\Storage\IStorage;
-class ACLStorageWrapper extends Wrapper implements IConstructableStorage {
+/**
+ * @psalm-suppress DeprecatedInterface
+ * @psalm-suppress MissingParamType
+ */
+class ACLStorageWrapper extends Wrapper {
private readonly ACLManager $aclManager;
private readonly bool $inShare;
private int $storageId;
@@ -41,37 +41,37 @@ private function getACLPermissionsForPath(string $path): int {
return $canRead ? $permissions : 0;
}
- private function checkPermissions(string $path, int $permissions): bool {
+ private function checkPermissions($path, $permissions): bool {
return ($this->getACLPermissionsForPath($path) & $permissions) === $permissions;
}
- public function isReadable(string $path): bool {
+ public function isReadable($path) {
return $this->checkPermissions($path, Constants::PERMISSION_READ) && parent::isReadable($path);
}
- public function isUpdatable(string $path): bool {
+ public function isUpdatable($path) {
return $this->checkPermissions($path, Constants::PERMISSION_UPDATE) && parent::isUpdatable($path);
}
- public function isCreatable(string $path): bool {
+ public function isCreatable($path) {
return $this->checkPermissions($path, Constants::PERMISSION_CREATE) && parent::isCreatable($path);
}
- public function isDeletable(string $path): bool {
+ public function isDeletable($path) {
return $this->checkPermissions($path, Constants::PERMISSION_DELETE)
&& $this->canDeleteTree($path)
&& parent::isDeletable($path);
}
- public function isSharable(string $path): bool {
+ public function isSharable($path) {
return $this->checkPermissions($path, Constants::PERMISSION_SHARE) && parent::isSharable($path);
}
- public function getPermissions(string $path): int {
+ public function getPermissions($path): int {
return $this->storage->getPermissions($path) & $this->getACLPermissionsForPath($path);
}
- public function rename(string $source, string $target): bool {
+ public function rename($source, $target): bool {
if (str_starts_with($source, $target)) {
$part = substr($source, strlen($target));
//This is a rename of the transfer file to the original file
@@ -98,7 +98,7 @@ public function rename(string $source, string $target): bool {
&& parent::rename($source, $target);
}
- public function opendir(string $path) {
+ public function opendir($path) {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
}
@@ -120,29 +120,29 @@ public function opendir(string $path) {
return IteratorDirectory::wrap($items);
}
- public function copy(string $source, string $target): bool {
+ public function copy($source, $target): bool {
$permissions = $this->file_exists($target) ? Constants::PERMISSION_UPDATE : Constants::PERMISSION_CREATE;
return $this->checkPermissions($target, $permissions)
&& $this->checkPermissions($source, Constants::PERMISSION_READ)
&& parent::copy($source, $target);
}
- public function touch(string $path, ?int $mtime = null): bool {
+ public function touch($path, $mtime = null): bool {
$permissions = $this->file_exists($path) ? Constants::PERMISSION_UPDATE : Constants::PERMISSION_CREATE;
return $this->checkPermissions($path, $permissions) && parent::touch($path, $mtime);
}
- public function mkdir(string $path): bool {
+ public function mkdir($path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_CREATE) && parent::mkdir($path);
}
- public function rmdir(string $path): bool {
+ public function rmdir($path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_DELETE)
&& $this->canDeleteTree($path)
&& parent::rmdir($path);
}
- public function unlink(string $path): bool {
+ public function unlink($path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_DELETE)
&& $this->canDeleteTree($path)
&& parent::unlink($path);
@@ -156,12 +156,12 @@ private function canDeleteTree(string $path): int {
return $this->aclManager->getPermissionsForTree($this->storageId, $path) & Constants::PERMISSION_DELETE;
}
- public function file_put_contents(string $path, mixed $data): int|float|false {
+ public function file_put_contents($path, $data) {
$permissions = $this->file_exists($path) ? Constants::PERMISSION_UPDATE : Constants::PERMISSION_CREATE;
return $this->checkPermissions($path, $permissions) ? parent::file_put_contents($path, $data) : false;
}
- public function fopen(string $path, string $mode) {
+ public function fopen($path, $mode) {
if ($mode === 'r' or $mode === 'rb') {
$permissions = Constants::PERMISSION_READ;
} else {
@@ -179,7 +179,7 @@ public function writeStream(string $path, $stream, ?int $size = null): int {
/**
* @inheritDoc
*/
- public function getCache(string $path = '', ?IStorage $storage = null): ICache {
+ public function getCache($path = '', $storage = null) {
if (!$storage) {
$storage = $this;
}
@@ -189,7 +189,7 @@ public function getCache(string $path = '', ?IStorage $storage = null): ICache {
return new ACLCacheWrapper($sourceCache, $this->aclManager, $this->inShare);
}
- public function getMetaData(string $path): ?array {
+ public function getMetaData($path): ?array {
$data = parent::getMetaData($path);
if ($data && isset($data['permissions'])) {
@@ -203,7 +203,7 @@ public function getMetaData(string $path): ?array {
/**
* @inheritDoc
*/
- public function getScanner(string $path = '', ?IStorage $storage = null): IScanner {
+ public function getScanner($path = '', $storage = null) {
if (!$storage) {
$storage = $this->storage;
}
@@ -211,17 +211,17 @@ public function getScanner(string $path = '', ?IStorage $storage = null): IScann
return parent::getScanner($path, $storage);
}
- public function is_dir(string $path): bool {
+ public function is_dir($path) {
return $this->checkPermissions($path, Constants::PERMISSION_READ)
&& parent::is_dir($path);
}
- public function is_file(string $path): bool {
+ public function is_file($path) {
return $this->checkPermissions($path, Constants::PERMISSION_READ)
&& parent::is_file($path);
}
- public function stat(string $path): array|false {
+ public function stat($path) {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
}
@@ -229,7 +229,7 @@ public function stat(string $path): array|false {
return parent::stat($path);
}
- public function filetype(string $path): string|false {
+ public function filetype($path) {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
}
@@ -237,7 +237,7 @@ public function filetype(string $path): string|false {
return parent::filetype($path);
}
- public function filesize(string $path): false|int|float {
+ public function filesize($path): float|false|int {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
}
@@ -245,12 +245,12 @@ public function filesize(string $path): false|int|float {
return parent::filesize($path);
}
- public function file_exists(string $path): bool {
+ public function file_exists($path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_READ)
&& parent::file_exists($path);
}
- public function filemtime(string $path): int|false {
+ public function filemtime($path): bool|int {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
}
@@ -258,7 +258,7 @@ public function filemtime(string $path): int|false {
return parent::filemtime($path);
}
- public function file_get_contents(string $path): string|false {
+ public function file_get_contents($path): bool|string {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
}
@@ -266,7 +266,7 @@ public function file_get_contents(string $path): string|false {
return parent::file_get_contents($path);
}
- public function getMimeType(string $path): string|false {
+ public function getMimeType($path): bool|string {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
}
@@ -274,7 +274,7 @@ public function getMimeType(string $path): string|false {
return parent::getMimeType($path);
}
- public function hash(string $type, string $path, bool $raw = false): string|false {
+ public function hash($type, $path, $raw = false): bool|string {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
}
@@ -282,7 +282,7 @@ public function hash(string $type, string $path, bool $raw = false): string|fals
return parent::hash($type, $path, $raw);
}
- public function getETag(string $path): string|false {
+ public function getETag($path): bool|string {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
}
@@ -290,7 +290,7 @@ public function getETag(string $path): string|false {
return parent::getETag($path);
}
- public function getDirectDownload(string $path): array|false {
+ public function getDirectDownload($path): bool|array {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
}
@@ -298,7 +298,7 @@ public function getDirectDownload(string $path): array|false {
return parent::getDirectDownload($path);
}
- public function getDirectoryContent(string $directory): \Traversable {
+ public function getDirectoryContent($directory): \Traversable {
$content = $this->getWrapperStorage()->getDirectoryContent($directory);
foreach ($content as $data) {
$data['scan_permissions'] ??= $data['permissions'];
diff --git a/lib/BackCompat/InvalidObjectStoreConfigurationException.php b/lib/BackCompat/InvalidObjectStoreConfigurationException.php
new file mode 100644
index 000000000..533289754
--- /dev/null
+++ b/lib/BackCompat/InvalidObjectStoreConfigurationException.php
@@ -0,0 +1,16 @@
+
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OCA\GroupFolders\BackCompat;
+
+/**
+ * Copy of \OC\Files\ObjectStore\InvalidObjectStoreConfigurationException from NC 32
+ */
+class InvalidObjectStoreConfigurationException extends \Exception {
+
+}
diff --git a/lib/BackCompat/Mapper.php b/lib/BackCompat/Mapper.php
new file mode 100644
index 000000000..7591e0d28
--- /dev/null
+++ b/lib/BackCompat/Mapper.php
@@ -0,0 +1,35 @@
+config['arguments']['min_bucket'])
+ ? (int)$this->config['arguments']['min_bucket']
+ : 0;
+
+ $hash = md5($this->user->getUID());
+ $num = hexdec(substr($hash, 0, 4));
+ return (string)(($num % ($numBuckets - $minBucket)) + $minBucket);
+ }
+}
diff --git a/lib/BackCompat/PrimaryObjectStoreConfig.php b/lib/BackCompat/PrimaryObjectStoreConfig.php
new file mode 100644
index 000000000..b079ca74c
--- /dev/null
+++ b/lib/BackCompat/PrimaryObjectStoreConfig.php
@@ -0,0 +1,240 @@
+, arguments: array{multibucket: bool, ...}}
+ */
+class PrimaryObjectStoreConfig {
+ public function __construct(
+ private readonly IConfig $config,
+ private readonly IAppManager $appManager,
+ ) {
+ }
+
+ /**
+ * @param ObjectStoreConfig $config
+ */
+ public function buildObjectStore(array $config): IObjectStore {
+ return new $config['class']($config['arguments']);
+ }
+
+ /**
+ * @return ?ObjectStoreConfig
+ */
+ public function getObjectStoreConfigForRoot(): ?array {
+ if (!$this->hasObjectStore()) {
+ return null;
+ }
+
+ $config = $this->getObjectStoreConfiguration('root');
+
+ if ($config['arguments']['multibucket']) {
+ if (!isset($config['arguments']['bucket'])) {
+ $config['arguments']['bucket'] = '';
+ }
+
+ // put the root FS always in first bucket for multibucket configuration
+ $config['arguments']['bucket'] .= '0';
+ }
+ return $config;
+ }
+
+ /**
+ * @return ?ObjectStoreConfig
+ */
+ public function getObjectStoreConfigForUser(IUser $user): ?array {
+ if (!$this->hasObjectStore()) {
+ return null;
+ }
+
+ $store = $this->getObjectStoreForUser($user);
+ $config = $this->getObjectStoreConfiguration($store);
+
+ if ($config['arguments']['multibucket']) {
+ $config['arguments']['bucket'] = $this->getBucketForUser($user, $config);
+ }
+ return $config;
+ }
+
+ /**
+ * @param string $name
+ * @return ObjectStoreConfig
+ */
+ public function getObjectStoreConfiguration(string $name): array {
+ $configs = $this->getObjectStoreConfigs();
+ $name = $this->resolveAlias($name);
+ if (!isset($configs[$name])) {
+ throw new \Exception("Object store configuration for '$name' not found");
+ }
+ if (is_string($configs[$name])) {
+ throw new \Exception("Object store configuration for '{$configs[$name]}' not found");
+ }
+ return $configs[$name];
+ }
+
+ public function resolveAlias(string $name): string {
+ $configs = $this->getObjectStoreConfigs();
+
+ while (isset($configs[$name]) && is_string($configs[$name])) {
+ $name = $configs[$name];
+ }
+ return $name;
+ }
+
+ public function hasObjectStore(): bool {
+ $objectStore = $this->config->getSystemValue('objectstore', null);
+ $objectStoreMultiBucket = $this->config->getSystemValue('objectstore_multibucket', null);
+ return $objectStore || $objectStoreMultiBucket;
+ }
+
+ public function hasMultipleObjectStorages(): bool {
+ $objectStore = $this->config->getSystemValue('objectstore', []);
+ return isset($objectStore['default']);
+ }
+
+ /**
+ * @return ?array
+ * @throws InvalidObjectStoreConfigurationException
+ */
+ public function getObjectStoreConfigs(): ?array {
+ $objectStore = $this->config->getSystemValue('objectstore', null);
+ $objectStoreMultiBucket = $this->config->getSystemValue('objectstore_multibucket', null);
+
+ // new-style multibucket config uses the same 'objectstore' key but sets `'multibucket' => true`, transparently upgrade older style config
+ if ($objectStoreMultiBucket) {
+ $objectStoreMultiBucket['arguments']['multibucket'] = true;
+ $configs = [
+ 'default' => 'server1',
+ 'server1' => $this->validateObjectStoreConfig($objectStoreMultiBucket),
+ 'root' => 'server1',
+ ];
+ } elseif ($objectStore) {
+ if (!isset($objectStore['default'])) {
+ $objectStore = [
+ 'default' => 'server1',
+ 'root' => 'server1',
+ 'server1' => $objectStore,
+ ];
+ }
+ if (!isset($objectStore['root'])) {
+ $objectStore['root'] = 'default';
+ }
+
+ if (!is_string($objectStore['default'])) {
+ throw new InvalidObjectStoreConfigurationException('The \'default\' object storage configuration is required to be a reference to another configuration.');
+ }
+ $configs = array_map($this->validateObjectStoreConfig(...), $objectStore);
+ } else {
+ return null;
+ }
+
+ $usedBuckets = [];
+ foreach ($configs as $config) {
+ if (is_array($config)) {
+ $bucket = $config['arguments']['bucket'] ?? '';
+ if (in_array($bucket, $usedBuckets)) {
+ throw new InvalidObjectStoreConfigurationException('Each object store configuration must use distinct bucket names');
+ }
+ $usedBuckets[] = $bucket;
+ }
+ }
+
+ return $configs;
+ }
+
+ /**
+ * @param array|string $config
+ * @return string|ObjectStoreConfig
+ */
+ private function validateObjectStoreConfig(array|string $config): array|string {
+ if (is_string($config)) {
+ return $config;
+ }
+ if (!isset($config['class'])) {
+ throw new InvalidObjectStoreConfigurationException('No class configured for object store');
+ }
+ if (!isset($config['arguments'])) {
+ $config['arguments'] = [];
+ }
+ $class = $config['class'];
+ $arguments = $config['arguments'];
+ if (!is_array($arguments)) {
+ throw new InvalidObjectStoreConfigurationException('Configured object store arguments are not an array');
+ }
+ if (!isset($arguments['multibucket'])) {
+ $arguments['multibucket'] = false;
+ }
+ if (!is_bool($arguments['multibucket'])) {
+ throw new InvalidObjectStoreConfigurationException('arguments.multibucket must be a boolean in object store configuration');
+ }
+
+ if (!is_string($class)) {
+ throw new InvalidObjectStoreConfigurationException('Configured class for object store is not a string');
+ }
+
+ if (str_starts_with($class, 'OCA\\') && substr_count($class, '\\') >= 2) {
+ [$appId] = explode('\\', $class);
+ $this->appManager->loadApp(strtolower($appId));
+ }
+
+ if (!is_a($class, IObjectStore::class, true)) {
+ throw new InvalidObjectStoreConfigurationException('Configured class for object store is not an object store');
+ }
+ return [
+ 'class' => $class,
+ 'arguments' => $arguments,
+ ];
+ }
+
+ public function getBucketForUser(IUser $user, array $config): string {
+ $bucket = $this->getSetBucketForUser($user);
+
+ if ($bucket === null) {
+ /*
+ * Use any provided bucket argument as prefix
+ * and add the mapping from username => bucket
+ */
+ if (!isset($config['arguments']['bucket'])) {
+ $config['arguments']['bucket'] = '';
+ }
+ $mapper = new Mapper($user, $config);
+ $numBuckets = $config['arguments']['num_buckets'] ?? 64;
+ $bucket = $config['arguments']['bucket'] . $mapper->getBucket($numBuckets);
+
+ $this->config->setUserValue($user->getUID(), 'homeobjectstore', 'bucket', $bucket);
+ }
+
+ return $bucket;
+ }
+
+ public function getSetBucketForUser(IUser $user): ?string {
+ return $this->config->getUserValue($user->getUID(), 'homeobjectstore', 'bucket', null);
+ }
+
+ public function getObjectStoreForUser(IUser $user): string {
+ if ($this->hasMultipleObjectStorages()) {
+ $value = $this->config->getUserValue($user->getUID(), 'homeobjectstore', 'objectstore', null);
+ if ($value === null) {
+ $value = $this->resolveAlias('default');
+ $this->config->setUserValue($user->getUID(), 'homeobjectstore', 'objectstore', $value);
+ }
+ return $value;
+ } else {
+ return 'default';
+ }
+ }
+}
diff --git a/lib/Command/Trashbin/Cleanup.php b/lib/Command/Trashbin/Cleanup.php
index 8abc2ff0d..451caddf6 100644
--- a/lib/Command/Trashbin/Cleanup.php
+++ b/lib/Command/Trashbin/Cleanup.php
@@ -51,6 +51,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
}
/** @var QuestionHelper $helper */
+ /** @psalm-suppress UndefinedMethod */
$helper = $this->getHelper('question');
$folders = $this->folderManager->getAllFoldersWithSize();
diff --git a/lib/Mount/FolderStorageManager.php b/lib/Mount/FolderStorageManager.php
index 1071f1395..85c38cc51 100644
--- a/lib/Mount/FolderStorageManager.php
+++ b/lib/Mount/FolderStorageManager.php
@@ -10,12 +10,12 @@
use OC\Files\Cache\Cache;
use OC\Files\ObjectStore\ObjectStoreStorage;
-use OC\Files\ObjectStore\PrimaryObjectStoreConfig;
use OC\Files\Storage\Local;
use OC\Files\Storage\Wrapper\Jail;
use OCA\GroupFolders\ACL\ACLManagerFactory;
use OCA\GroupFolders\ACL\ACLStorageWrapper;
use OCA\GroupFolders\AppInfo\Application;
+use OCA\GroupFolders\BackCompat\PrimaryObjectStoreConfig;
use OCA\GroupFolders\Folder\FolderDefinition;
use OCP\Files\Folder;
use OCP\Files\IRootFolder;
diff --git a/lib/Mount/GroupFolderEncryptionJail.php b/lib/Mount/GroupFolderEncryptionJail.php
index 295bb6cf3..9f7a3c1af 100644
--- a/lib/Mount/GroupFolderEncryptionJail.php
+++ b/lib/Mount/GroupFolderEncryptionJail.php
@@ -16,6 +16,7 @@
/**
* Jail with overridden behaviors specific to group folders when encryption is
* enabled.
+ * @psalm-suppress DeprecatedInterface
*/
class GroupFolderEncryptionJail extends Jail {
/**
diff --git a/lib/Mount/GroupFolderNoEncryptionStorage.php b/lib/Mount/GroupFolderNoEncryptionStorage.php
index 3cad1f7e6..64696f911 100644
--- a/lib/Mount/GroupFolderNoEncryptionStorage.php
+++ b/lib/Mount/GroupFolderNoEncryptionStorage.php
@@ -14,6 +14,7 @@
* @psalm-suppress UnimplementedInterfaceMethod
* Psalm gets confused about missing methods, but those are implemented in OC\Files\Storage\Wrapper\Wrapper,
* so this suppression is fine and necessary as there is nothing wrong.
+ * @psalm-suppress DeprecatedInterface
*/
class GroupFolderNoEncryptionStorage extends GroupFolderStorage implements IDisableEncryptionStorage {
}
diff --git a/lib/Mount/GroupFolderStorage.php b/lib/Mount/GroupFolderStorage.php
index 694e25201..3e41f38ff 100644
--- a/lib/Mount/GroupFolderStorage.php
+++ b/lib/Mount/GroupFolderStorage.php
@@ -16,12 +16,14 @@
use OCP\Files\Cache\ICache;
use OCP\Files\Cache\ICacheEntry;
use OCP\Files\Cache\IScanner;
-use OCP\Files\Storage\IConstructableStorage;
use OCP\Files\Storage\IStorage;
use OCP\IUser;
use OCP\IUserSession;
-class GroupFolderStorage extends Quota implements IConstructableStorage {
+/**
+ * @psalm-suppress DeprecatedInterface
+ */
+class GroupFolderStorage extends Quota {
private readonly FolderDefinition $folder;
private readonly ?ICacheEntry $rootEntry;
private readonly IUserSession $userSession;
@@ -45,7 +47,7 @@ public function getFolder(): FolderDefinition {
return $this->folder;
}
- public function getOwner(string $path): string|false {
+ public function getOwner($path) {
if ($this->mountOwner !== null) {
return $this->mountOwner->getUID();
}
@@ -55,6 +57,7 @@ public function getOwner(string $path): string|false {
return $user->getUID();
}
+ /** @psalm-suppress FalsableReturnStatement */
return false;
}
@@ -63,10 +66,12 @@ public function getUser(): ?IUser {
}
/**
- * @inheritDoc
+ * @psalm-suppress MoreSpecificReturnType
+ * @psalm-suppress MissingParamType
*/
- public function getCache(string $path = '', ?IStorage $storage = null): ICache {
+ public function getCache($path = '', $storage = null) {
if ($this->cache) {
+ /** @psalm-suppress LessSpecificReturnStatement */
return $this->cache;
}
diff --git a/lib/Mount/GroupMountPoint.php b/lib/Mount/GroupMountPoint.php
index fc98ded24..6a6c056dd 100644
--- a/lib/Mount/GroupMountPoint.php
+++ b/lib/Mount/GroupMountPoint.php
@@ -12,12 +12,11 @@
use OC\Files\Storage\Storage;
use OC\Files\Storage\Wrapper\Jail;
use OCA\GroupFolders\Folder\FolderDefinition;
-use OCP\Files\Mount\IShareOwnerlessMount;
use OCP\Files\Mount\ISystemMountPoint;
use OCP\Files\Storage\IStorage;
use OCP\Files\Storage\IStorageFactory;
-class GroupMountPoint extends MountPoint implements ISystemMountPoint, IShareOwnerlessMount {
+class GroupMountPoint extends MountPoint implements ISystemMountPoint {
public function __construct(
private readonly FolderDefinition $folder,
IStorage $storage,
diff --git a/lib/Mount/RootPermissionsMask.php b/lib/Mount/RootPermissionsMask.php
index 17de6e8bb..6be09e554 100644
--- a/lib/Mount/RootPermissionsMask.php
+++ b/lib/Mount/RootPermissionsMask.php
@@ -16,6 +16,7 @@
/**
* Permissions mask that only masks the root of the storage
+ * @psalm-suppress DeprecatedInterface
*/
class RootPermissionsMask extends Wrapper {
/**
diff --git a/lib/Service/ApplicationService.php b/lib/Service/ApplicationService.php
index a5cffcae2..3eed05e97 100644
--- a/lib/Service/ApplicationService.php
+++ b/lib/Service/ApplicationService.php
@@ -22,7 +22,7 @@ public function __construct(
* @return boolean true if all apps are installed, false otherwise.
*/
public function checkAppsInstalled(): bool {
- $diffApps = array_diff(Application::APPS_USE_GROUPFOLDERS, $this->appManager->getEnabledApps());
+ $diffApps = array_diff(Application::APPS_USE_GROUPFOLDERS, $this->appManager->getInstalledApps());
return empty($diffApps);
}
diff --git a/tests/Trash/TrashBackendTest.php b/tests/Trash/TrashBackendTest.php
index 742a71aca..891e9c443 100644
--- a/tests/Trash/TrashBackendTest.php
+++ b/tests/Trash/TrashBackendTest.php
@@ -223,6 +223,9 @@ public function testHideDeletedTrashItemInDeletedParentFolderAcl(): void {
}
public function testWrongOriginalLocation(): void {
+ /** @psalm-suppress DeprecatedMethod */
+ \OCP\Util::connectHook('OC_Filesystem', 'preSetup', 'OCA\Files_Trashbin\Storage', 'setupStorage');
+
$shareManager = Server::get(Share\IManager::class);
$userA = $this->createUser('A', 'test');
diff --git a/tests/stubs/icewind_streams_directory.php b/tests/stubs/icewind_streams_directory.php
index 50ec2cc6c..64c1e0618 100644
--- a/tests/stubs/icewind_streams_directory.php
+++ b/tests/stubs/icewind_streams_directory.php
@@ -1,7 +1,8 @@
- * SPDX-License-Identifier: MIT
+ * Copyright (c) 2014 Robin Appelman
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
*/
namespace Icewind\Streams;
diff --git a/tests/stubs/icewind_streams_iteratordirectory.php b/tests/stubs/icewind_streams_iteratordirectory.php
index 32f3198fe..9caf54cd3 100644
--- a/tests/stubs/icewind_streams_iteratordirectory.php
+++ b/tests/stubs/icewind_streams_iteratordirectory.php
@@ -1,7 +1,8 @@
- * SPDX-License-Identifier: MIT
+ * Copyright (c) 2014 Robin Appelman
+ * This file is licensed under the Licensed under the MIT license:
+ * http://opensource.org/licenses/MIT
*/
namespace Icewind\Streams;
diff --git a/tests/stubs/icewind_streams_wrapperhandler.php b/tests/stubs/icewind_streams_wrapperhandler.php
index 407bc7b9c..136805e27 100644
--- a/tests/stubs/icewind_streams_wrapperhandler.php
+++ b/tests/stubs/icewind_streams_wrapperhandler.php
@@ -1,7 +1,22 @@
- * SPDX-License-Identifier: AGPL-3.0-or-later
+ * @copyright Copyright (c) 2019 Robin Appelman
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ *
*/
namespace Icewind\Streams;
diff --git a/tests/stubs/oc.php b/tests/stubs/oc.php
index 4216334cb..f97f3e2d2 100644
--- a/tests/stubs/oc.php
+++ b/tests/stubs/oc.php
@@ -6,28 +6,24 @@
* SPDX-FileCopyrightText: 2013-2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-only
*/
-
-use OC\Profiler\BuiltInProfiler;
+use OC\Encryption\HookManager;
use OC\Share20\GroupDeletedListener;
use OC\Share20\Hooks;
use OC\Share20\UserDeletedListener;
use OC\Share20\UserRemovedListener;
use OC\User\DisabledUserException;
use OCP\EventDispatcher\IEventDispatcher;
-use OCP\Files\Events\BeforeFileSystemSetupEvent;
use OCP\Group\Events\GroupDeletedEvent;
use OCP\Group\Events\UserRemovedEvent;
-use OCP\IConfig;
use OCP\ILogger;
use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\Security\Bruteforce\IThrottler;
use OCP\Server;
-use OCP\Template\ITemplateManager;
+use OCP\Share;
use OCP\User\Events\UserChangedEvent;
use OCP\User\Events\UserDeletedEvent;
-use OCP\Util;
use Psr\Log\LoggerInterface;
use Symfony\Component\Routing\Exception\MethodNotAllowedException;
use function OCP\Log\logger;
@@ -38,6 +34,10 @@
* OC_autoload!
*/
class OC {
+ /**
+ * Associative array for autoloading. classname => filename
+ */
+ public static array $CLASSPATH = [];
/**
* The installation path for Nextcloud on the server (e.g. /srv/http/nextcloud)
*/
@@ -64,6 +64,8 @@ class OC {
*/
public static bool $CLI = false;
+ public static \OC\Autoloader $loader;
+
public static \Composer\Autoload\ClassLoader $composerAutoloader;
public static \OC\Server $server;
@@ -122,6 +124,10 @@ public static function registerCleanupHooks(\OC\SystemConfig $systemConfig): voi
*/
public static function registerShareHooks(\OC\SystemConfig $systemConfig): void
{
+ }
+
+ protected static function registerAutoloaderCache(\OC\SystemConfig $systemConfig): void
+ {
}
/**
diff --git a/tests/stubs/oc_appframework_ocs_baseresponse.php b/tests/stubs/oc_appframework_ocs_baseresponse.php
index c554ba7b7..59451c489 100644
--- a/tests/stubs/oc_appframework_ocs_baseresponse.php
+++ b/tests/stubs/oc_appframework_ocs_baseresponse.php
@@ -52,14 +52,6 @@ public function __construct(DataResponse $dataResponse, $format = 'xml', $status
*/
protected function renderResult(array $meta): string
{
- }
-
- /**
- * @psalm-taint-escape has_quotes
- * @psalm-taint-escape html
- */
- protected function toJson(array $array): string
- {
}
protected function toXML(array $array, \XMLWriter $writer): void
diff --git a/tests/stubs/oc_appframework_utility_simplecontainer.php b/tests/stubs/oc_appframework_utility_simplecontainer.php
index 5d7358a0e..de7a44293 100644
--- a/tests/stubs/oc_appframework_utility_simplecontainer.php
+++ b/tests/stubs/oc_appframework_utility_simplecontainer.php
@@ -12,9 +12,7 @@
use OCP\AppFramework\QueryException;
use OCP\IContainer;
use Pimple\Container;
-use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
-use Psr\Log\LoggerInterface;
use ReflectionClass;
use ReflectionException;
use ReflectionNamedType;
@@ -25,8 +23,6 @@
* SimpleContainer is a simple implementation of a container on basis of Pimple
*/
class SimpleContainer implements ArrayAccess, ContainerInterface, IContainer {
- public static bool $useLazyObjects = false;
-
public function __construct()
{
}
@@ -83,15 +79,11 @@ public function registerService($name, Closure $closure, $shared = true)
* @param string $alias the alias that should be registered
* @param string $target the target that should be resolved instead
*/
- public function registerAlias($alias, $target): void
+ public function registerAlias($alias, $target)
{
}
- protected function registerDeprecatedAlias(string $alias, string $target): void
- {
- }
-
- /**
+ /*
* @param string $name
* @return string
*/
diff --git a/tests/stubs/oc_db_querybuilder_querybuilder.php b/tests/stubs/oc_db_querybuilder_querybuilder.php
index 10b17d62f..83f764919 100644
--- a/tests/stubs/oc_db_querybuilder_querybuilder.php
+++ b/tests/stubs/oc_db_querybuilder_querybuilder.php
@@ -952,8 +952,6 @@ public function getTableName($table)
/**
* Returns the table name with database prefix as needed by the implementation
*
- * Was protected until version 30.
- *
* @param string $table
* @return string
*/
@@ -980,10 +978,6 @@ public function getColumnName($column, $tableAlias = '')
*/
public function quoteAlias($alias)
{
- }
-
- public function escapeLikeParameter(string $parameter): string
- {
}
public function hintShardKey(string $column, mixed $value, bool $overwrite = false): self
diff --git a/tests/stubs/oc_files_cache_cache.php b/tests/stubs/oc_files_cache_cache.php
index 90a240793..60a15cdc5 100644
--- a/tests/stubs/oc_files_cache_cache.php
+++ b/tests/stubs/oc_files_cache_cache.php
@@ -7,15 +7,13 @@
*/
namespace OC\Files\Cache;
+use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use OC\DB\Exceptions\DbalException;
use OC\DB\QueryBuilder\Sharded\ShardDefinition;
-use OC\Files\Cache\Wrapper\CacheJail;
-use OC\Files\Cache\Wrapper\CacheWrapper;
use OC\Files\Search\SearchComparison;
use OC\Files\Search\SearchQuery;
use OC\Files\Storage\Wrapper\Encryption;
use OC\SystemConfig;
-use OCP\DB\Exception;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Cache\CacheEntryInsertedEvent;
@@ -94,7 +92,7 @@ public function getNumericStorageId()
/**
* get the stored metadata of a file or folder
*
- * @param string|int $file either the path of a file or folder or the file id for a file or folder
+ * @param string | int $file either the path of a file or folder or the file id for a file or folder
* @return ICacheEntry|false the cache entry as array or false if the file is not found in the cache
*/
public function get($file)
@@ -152,7 +150,7 @@ public function put($file, array $data)
* @param array $data
*
* @return int file id
- * @throws \RuntimeException|Exception
+ * @throws \RuntimeException
*/
public function insert($file, array $data)
{
@@ -245,10 +243,6 @@ protected function getMoveInfo($path)
protected function hasEncryptionWrapper(): bool
{
- }
-
- protected function shouldEncrypt(string $targetPath): bool
- {
}
/**
@@ -315,9 +309,10 @@ public function searchQuery(ISearchQuery $query)
/**
* Re-calculate the folder size and the size of all parent folders
*
- * @param array|ICacheEntry|null $data (optional) meta data of the folder
+ * @param string|boolean $path
+ * @param array $data (optional) meta data of the folder
*/
- public function correctFolderSize(string $path, $data = null, bool $isBackgroundScan = false): void
+ public function correctFolderSize($path, $data = null, $isBackgroundScan = false)
{
}
@@ -394,7 +389,7 @@ public function getPathById($id)
*
* @param int $id
* @return array first element holding the storage id, second the path
- * @deprecated 17.0.0 use getPathById() instead
+ * @deprecated use getPathById() instead
*/
public static function getById($id)
{
diff --git a/tests/stubs/oc_files_cache_cacheentry.php b/tests/stubs/oc_files_cache_cacheentry.php
index d6d4b62ca..a4351d98e 100644
--- a/tests/stubs/oc_files_cache_cacheentry.php
+++ b/tests/stubs/oc_files_cache_cacheentry.php
@@ -56,7 +56,7 @@ public function getName()
}
- public function getMimeType(): string
+ public function getMimeType()
{
}
@@ -99,10 +99,6 @@ public function getCreationTime(): ?int
public function getUploadTime(): ?int
{
- }
-
- public function getParentId(): int
- {
}
public function getData()
diff --git a/tests/stubs/oc_files_cache_scanner.php b/tests/stubs/oc_files_cache_scanner.php
index 9d70a5dc4..471693932 100644
--- a/tests/stubs/oc_files_cache_scanner.php
+++ b/tests/stubs/oc_files_cache_scanner.php
@@ -15,7 +15,6 @@
use OCP\Files\Cache\IScanner;
use OCP\Files\ForbiddenException;
use OCP\Files\NotFoundException;
-use OCP\Files\Storage\ILockingStorage;
use OCP\Files\Storage\IReliableEtagStorage;
use OCP\IDBConnection;
use OCP\Lock\ILockingProvider;
@@ -75,7 +74,7 @@ public function __construct(\OC\Files\Storage\Storage $storage)
*
* @param bool $useTransactions
*/
- public function setUseTransactions($useTransactions): void
+ public function setUseTransactions($useTransactions)
{
}
@@ -96,9 +95,9 @@ protected function getData($path)
* @param string $file
* @param int $reuseExisting
* @param int $parentId
- * @param array|CacheEntry|null|false $cacheData existing data in the cache for the file to be scanned
+ * @param array|null|false $cacheData existing data in the cache for the file to be scanned
* @param bool $lock set to false to disable getting an additional read lock during scanning
- * @param array|null $data the metadata for the file, as returned by the storage
+ * @param null $data the metadata for the file, as returned by the storage
* @return array|null an array of metadata of the scanned file
* @throws \OCP\Lock\LockedException
*/
@@ -165,9 +164,9 @@ protected function array_diff_assoc_multi(array $array1, array $array2)
* Get the children currently in the cache
*
* @param int $folderId
- * @return array
+ * @return array[]
*/
- protected function getExistingChildren($folderId): array
+ protected function getExistingChildren($folderId)
{
}
diff --git a/tests/stubs/oc_files_cache_wrapper_cachejail.php b/tests/stubs/oc_files_cache_wrapper_cachejail.php
index 9fff517d1..a7be4f416 100644
--- a/tests/stubs/oc_files_cache_wrapper_cachejail.php
+++ b/tests/stubs/oc_files_cache_wrapper_cachejail.php
@@ -21,16 +21,16 @@
* Jail to a subdirectory of the wrapped cache
*/
class CacheJail extends CacheWrapper {
+ /**
+ * @var string
+ */
+ protected $root;
+ protected $unjailedRoot;
- protected string $unjailedRoot;
-
- public function __construct(?ICache $cache, protected string $root, ?CacheDependencies $dependencies = null)
+ public function __construct(?ICache $cache, string $root, ?CacheDependencies $dependencies = null)
{
}
- /**
- * @return string
- */
protected function getRoot()
{
}
@@ -44,10 +44,7 @@ public function getGetUnjailedRoot()
{
}
- /**
- * @return string
- */
- protected function getSourcePath(string $path)
+ protected function getSourcePath($path)
{
}
@@ -67,7 +64,7 @@ protected function formatCacheEntry($entry)
/**
* get the stored metadata of a file or folder
*
- * @param string|int $file
+ * @param string /int $file
* @return ICacheEntry|false
*/
public function get($file)
@@ -175,9 +172,10 @@ public function getStatus($file)
/**
* update the folder size and the size of all parent folders
*
- * @param array|ICacheEntry|null $data (optional) meta data of the folder
+ * @param string|boolean $path
+ * @param array $data (optional) meta data of the folder
*/
- public function correctFolderSize(string $path, $data = null, bool $isBackgroundScan = false): void
+ public function correctFolderSize($path, $data = null, $isBackgroundScan = false)
{
}
diff --git a/tests/stubs/oc_files_cache_wrapper_cachewrapper.php b/tests/stubs/oc_files_cache_wrapper_cachewrapper.php
index b0cf27190..4b6f1d849 100644
--- a/tests/stubs/oc_files_cache_wrapper_cachewrapper.php
+++ b/tests/stubs/oc_files_cache_wrapper_cachewrapper.php
@@ -25,7 +25,7 @@ public function __construct(?ICache $cache, ?CacheDependencies $dependencies = n
{
}
- public function getCache(): ICache
+ protected function getCache()
{
}
@@ -189,9 +189,10 @@ public function searchQuery(ISearchQuery $query)
/**
* update the folder size and the size of all parent folders
*
- * @param array|ICacheEntry|null $data (optional) meta data of the folder
+ * @param string|boolean $path
+ * @param array $data (optional) meta data of the folder
*/
- public function correctFolderSize(string $path, $data = null, bool $isBackgroundScan = false): void
+ public function correctFolderSize($path, $data = null, $isBackgroundScan = false)
{
}
diff --git a/tests/stubs/oc_files_filesystem.php b/tests/stubs/oc_files_filesystem.php
index b13436375..e6f3052a9 100644
--- a/tests/stubs/oc_files_filesystem.php
+++ b/tests/stubs/oc_files_filesystem.php
@@ -8,7 +8,6 @@
namespace OC\Files;
use OC\Files\Mount\MountPoint;
-use OC\Files\Storage\StorageFactory;
use OC\User\NoUserException;
use OCP\Cache\CappedMemoryCache;
use OCP\EventDispatcher\IEventDispatcher;
diff --git a/tests/stubs/oc_files_node_lazyfolder.php b/tests/stubs/oc_files_node_lazyfolder.php
index 4b7481b94..521bc9a9c 100644
--- a/tests/stubs/oc_files_node_lazyfolder.php
+++ b/tests/stubs/oc_files_node_lazyfolder.php
@@ -127,6 +127,9 @@ public function unMount($mount)
{
}
+ /**
+ * @inheritDoc
+ */
public function get($path)
{
}
@@ -271,7 +274,10 @@ public function getUserFolder($userId)
{
}
- public function getMimetype(): string
+ /**
+ * @inheritDoc
+ */
+ public function getMimetype()
{
}
@@ -356,6 +362,9 @@ public function getDirectoryListing()
{
}
+ /**
+ * @inheritDoc
+ */
public function nodeExists($path)
{
}
@@ -494,9 +503,5 @@ public function getParentId(): int
*/
public function getMetadata(): array
{
- }
-
- public function verifyPath($fileName, $readonly = false): void
- {
}
}
diff --git a/tests/stubs/oc_files_node_node.php b/tests/stubs/oc_files_node_node.php
index 962634890..6f99111ae 100644
--- a/tests/stubs/oc_files_node_node.php
+++ b/tests/stubs/oc_files_node_node.php
@@ -254,7 +254,7 @@ public function isShared()
{
}
- public function getMimeType(): string
+ public function getMimeType()
{
}
diff --git a/tests/stubs/oc_files_objectstore_objectstorestorage.php b/tests/stubs/oc_files_objectstore_objectstorestorage.php
index 498f23070..fdcf29fb5 100644
--- a/tests/stubs/oc_files_objectstore_objectstorestorage.php
+++ b/tests/stubs/oc_files_objectstore_objectstorestorage.php
@@ -17,12 +17,10 @@
use OC\Files\Storage\PolyFill\CopyDirectory;
use OCP\Files\Cache\ICache;
use OCP\Files\Cache\ICacheEntry;
-use OCP\Files\Cache\IScanner;
use OCP\Files\FileInfo;
use OCP\Files\GenericFileException;
use OCP\Files\NotFoundException;
use OCP\Files\ObjectStore\IObjectStore;
-use OCP\Files\ObjectStore\IObjectStoreMetaData;
use OCP\Files\ObjectStore\IObjectStoreMultiPartUpload;
use OCP\Files\Storage\IChunkedFileWrite;
use OCP\Files\Storage\IStorage;
@@ -36,34 +34,38 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil
protected bool $validateWrites = true;
/**
- * @param array $parameters
+ * @param array $params
* @throws \Exception
*/
- public function __construct(array $parameters)
+ public function __construct($params)
{
}
- public function mkdir(string $path, bool $force = false, array $metadata = []): bool
+ public function mkdir($path, bool $force = false, array $metadata = [])
{
}
/**
* Object Stores use a NoopScanner because metadata is directly stored in
* the file cache and cannot really scan the filesystem. The storage passed in is not used anywhere.
+ *
+ * @param string $path
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the scanner
+ * @return \OC\Files\ObjectStore\ObjectStoreScanner
*/
- public function getScanner(string $path = '', ?IStorage $storage = null): IScanner
+ public function getScanner($path = '', $storage = null)
{
}
- public function getId(): string
+ public function getId()
{
}
- public function rmdir(string $path): bool
+ public function rmdir($path)
{
}
- public function unlink(string $path): bool
+ public function unlink($path)
{
}
@@ -71,11 +73,11 @@ public function rmObject(ICacheEntry $entry): bool
{
}
- public function stat(string $path): array|false
+ public function stat($path)
{
}
- public function getPermissions(string $path): int
+ public function getPermissions($path)
{
}
@@ -84,53 +86,61 @@ public function getPermissions(string $path): int
* The default implementations just appends the fileId to 'urn:oid:'. Make sure the URN is unique over all users.
* You may need a mapping table to store your URN if it cannot be generated from the fileid.
*
- * @return string the unified resource name used to identify the object
+ * @param int $fileId the fileid
+ * @return null|string the unified resource name used to identify the object
*/
- public function getURN(int $fileId): string
+ public function getURN($fileId)
{
}
- public function opendir(string $path)
+ public function opendir($path)
{
}
- public function filetype(string $path): string|false
+ public function filetype($path)
{
}
- public function fopen(string $path, string $mode)
+ public function fopen($path, $mode)
{
}
- public function file_exists(string $path): bool
+ public function file_exists($path)
{
}
- public function rename(string $source, string $target): bool
+ public function rename($source, $target)
{
}
- public function getMimeType(string $path): string|false
+ public function getMimeType($path)
{
}
- public function touch(string $path, ?int $mtime = null): bool
+ public function touch($path, $mtime = null)
{
}
- public function writeBack(string $tmpFile, string $path)
+ public function writeBack($tmpFile, $path)
{
}
- public function hasUpdated(string $path, int $time): bool
+ /**
+ * external changes are not supported, exclusive access to the object storage is assumed
+ *
+ * @param string $path
+ * @param int $time
+ * @return false
+ */
+ public function hasUpdated($path, $time)
{
}
- public function needsPartFile(): bool
+ public function needsPartFile()
{
}
- public function file_put_contents(string $path, mixed $data): int
+ public function file_put_contents($path, $data)
{
}
@@ -142,15 +152,15 @@ public function getObjectStore(): IObjectStore
{
}
- public function copyFromStorage(IStorage $sourceStorage, string $sourceInternalPath, string $targetInternalPath, bool $preserveMtime = false): bool
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false)
{
}
- public function moveFromStorage(IStorage $sourceStorage, string $sourceInternalPath, string $targetInternalPath, ?ICacheEntry $sourceCacheEntry = null): bool
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, ?ICacheEntry $sourceCacheEntry = null): bool
{
}
- public function copy(string $source, string $target): bool
+ public function copy($source, $target)
{
}
@@ -159,6 +169,7 @@ public function startChunkedWrite(string $targetPath): string
}
/**
+ *
* @throws GenericFileException
*/
public function putChunkedWritePart(string $targetPath, string $writeToken, string $chunkId, $data, $size = null): ?array
diff --git a/tests/stubs/oc_files_setupmanager.php b/tests/stubs/oc_files_setupmanager.php
index 6bb940563..a298315e5 100644
--- a/tests/stubs/oc_files_setupmanager.php
+++ b/tests/stubs/oc_files_setupmanager.php
@@ -21,12 +21,13 @@
use OC\Lockdown\Filesystem\NullStorage;
use OC\Share\Share;
use OC\Share20\ShareDisableChecker;
+use OC_App;
use OC_Hook;
+use OC_Util;
use OCA\Files_External\Config\ExternalMountPoint;
use OCA\Files_Sharing\External\Mount;
use OCA\Files_Sharing\ISharedMountPoint;
use OCA\Files_Sharing\SharedMount;
-use OCP\App\IAppManager;
use OCP\Constants;
use OCP\Diagnostics\IEventLogger;
use OCP\EventDispatcher\IEventDispatcher;
@@ -35,7 +36,6 @@
use OCP\Files\Config\IMountProvider;
use OCP\Files\Config\IRootMountProvider;
use OCP\Files\Config\IUserMountCache;
-use OCP\Files\Events\BeforeFileSystemSetupEvent;
use OCP\Files\Events\InvalidateMountCacheEvent;
use OCP\Files\Events\Node\FilesystemTornDownEvent;
use OCP\Files\Mount\IMountManager;
@@ -55,7 +55,7 @@
use Psr\Log\LoggerInterface;
class SetupManager {
- public function __construct(private IEventLogger $eventLogger, private MountProviderCollection $mountProviderCollection, private IMountManager $mountManager, private IUserManager $userManager, private IEventDispatcher $eventDispatcher, private IUserMountCache $userMountCache, private ILockdownManager $lockdownManager, private IUserSession $userSession, ICacheFactory $cacheFactory, private LoggerInterface $logger, private IConfig $config, private ShareDisableChecker $shareDisableChecker, private IAppManager $appManager)
+ public function __construct(private IEventLogger $eventLogger, private MountProviderCollection $mountProviderCollection, private IMountManager $mountManager, private IUserManager $userManager, private IEventDispatcher $eventDispatcher, private IUserMountCache $userMountCache, private ILockdownManager $lockdownManager, private IUserSession $userSession, ICacheFactory $cacheFactory, private LoggerInterface $logger, private IConfig $config, private ShareDisableChecker $shareDisableChecker)
{
}
diff --git a/tests/stubs/oc_files_storage_common.php b/tests/stubs/oc_files_storage_common.php
index dcf00bffa..b1ac1bde9 100644
--- a/tests/stubs/oc_files_storage_common.php
+++ b/tests/stubs/oc_files_storage_common.php
@@ -16,25 +16,16 @@
use OC\Files\FilenameValidator;
use OC\Files\Filesystem;
use OC\Files\ObjectStore\ObjectStoreStorage;
-use OC\Files\Storage\Wrapper\Encryption;
use OC\Files\Storage\Wrapper\Jail;
use OC\Files\Storage\Wrapper\Wrapper;
-use OCP\Files;
-use OCP\Files\Cache\ICache;
-use OCP\Files\Cache\IPropagator;
-use OCP\Files\Cache\IScanner;
-use OCP\Files\Cache\IUpdater;
-use OCP\Files\Cache\IWatcher;
use OCP\Files\ForbiddenException;
use OCP\Files\GenericFileException;
use OCP\Files\IFilenameValidator;
use OCP\Files\InvalidPathException;
-use OCP\Files\Storage\IConstructableStorage;
use OCP\Files\Storage\ILockingStorage;
use OCP\Files\Storage\IStorage;
use OCP\Files\Storage\IWriteStreamStorage;
use OCP\Files\StorageNotAvailableException;
-use OCP\IConfig;
use OCP\Lock\ILockingProvider;
use OCP\Lock\LockedException;
use OCP\Server;
@@ -51,108 +42,126 @@
* Some \OC\Files\Storage\Common methods call functions which are first defined
* in classes which extend it, e.g. $this->stat() .
*/
-abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage, IConstructableStorage {
+abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
use LocalTempFileTrait;
- protected ?Cache $cache = null;
- protected ?Scanner $scanner = null;
- protected ?Watcher $watcher = null;
- protected ?Propagator $propagator = null;
+ protected $cache;
+ protected $scanner;
+ protected $watcher;
+ protected $propagator;
protected $storageCache;
- protected ?Updater $updater = null;
+ protected $updater;
- protected array $mountOptions = [];
+ protected $mountOptions = [];
protected $owner = null;
- public function __construct(array $parameters) {
+ public function __construct($parameters) {
}
- protected function remove(string $path): bool
+ /**
+ * Remove a file or folder
+ *
+ * @param string $path
+ * @return bool
+ */
+ protected function remove($path)
{
}
- public function is_dir(string $path): bool
+ public function is_dir($path)
{
}
- public function is_file(string $path): bool
+ public function is_file($path)
{
}
- public function filesize(string $path): int|float|false
+ public function filesize($path): false|int|float
{
}
- public function isReadable(string $path): bool
+ public function isReadable($path)
{
}
- public function isUpdatable(string $path): bool
+ public function isUpdatable($path)
{
}
- public function isCreatable(string $path): bool
+ public function isCreatable($path)
{
}
- public function isDeletable(string $path): bool
+ public function isDeletable($path)
{
}
- public function isSharable(string $path): bool
+ public function isSharable($path)
{
}
- public function getPermissions(string $path): int
+ public function getPermissions($path)
{
}
- public function filemtime(string $path): int|false
+ public function filemtime($path)
{
}
- public function file_get_contents(string $path): string|false
+ public function file_get_contents($path)
{
}
- public function file_put_contents(string $path, mixed $data): int|float|false
+ public function file_put_contents($path, $data)
{
}
- public function rename(string $source, string $target): bool
+ public function rename($source, $target)
{
}
- public function copy(string $source, string $target): bool
+ public function copy($source, $target)
{
}
- public function getMimeType(string $path): string|false
+ public function getMimeType($path)
{
}
- public function hash(string $type, string $path, bool $raw = false): string|false
+ public function hash($type, $path, $raw = false)
{
}
- public function getLocalFile(string $path): string|false
+ public function search($query)
{
}
- protected function searchInDir(string $query, string $dir = ''): array
+ public function getLocalFile($path)
+ {
+ }
+
+ /**
+ * @param string $query
+ * @param string $dir
+ * @return array
+ */
+ protected function searchInDir($query, $dir = '')
{
}
/**
- * @inheritDoc
* Check if a file or folder has been updated since $time
*
* The method is only used to check if the cache needs to be updated. Storage backends that don't support checking
* the mtime should always return false here. As a result storage implementations that always return false expect
* exclusive access to the backend and will not pick up files that have been added in a way that circumvents
* Nextcloud filesystem.
+ *
+ * @param string $path
+ * @param int $time
+ * @return bool
*/
- public function hasUpdated(string $path, int $time): bool
+ public function hasUpdated($path, $time)
{
}
@@ -160,35 +169,53 @@ protected function getCacheDependencies(): CacheDependencies
{
}
- public function getCache(string $path = '', ?IStorage $storage = null): ICache
+ public function getCache($path = '', $storage = null)
{
}
- public function getScanner(string $path = '', ?IStorage $storage = null): IScanner
+ public function getScanner($path = '', $storage = null)
{
}
- public function getWatcher(string $path = '', ?IStorage $storage = null): IWatcher
+ public function getWatcher($path = '', $storage = null)
{
}
- public function getPropagator(?IStorage $storage = null): IPropagator
+ /**
+ * get a propagator instance for the cache
+ *
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the watcher
+ * @return \OC\Files\Cache\Propagator
+ */
+ public function getPropagator($storage = null)
{
}
- public function getUpdater(?IStorage $storage = null): IUpdater
+ public function getUpdater($storage = null)
{
}
- public function getStorageCache(?IStorage $storage = null): \OC\Files\Cache\Storage
+ public function getStorageCache($storage = null)
{
}
- public function getOwner(string $path): string|false
+ /**
+ * get the owner of a path
+ *
+ * @param string $path The path to get the owner
+ * @return string|false uid or false
+ */
+ public function getOwner($path)
{
}
- public function getETag(string $path): string|false
+ /**
+ * get the ETag for a file or folder
+ *
+ * @param string $path
+ * @return string
+ */
+ public function getETag($path)
{
}
@@ -199,29 +226,43 @@ public function getETag(string $path): string|false
* @param string $path The path to clean
* @return string cleaned path
*/
- public function cleanPath(string $path): string
+ public function cleanPath($path)
{
}
/**
* Test a storage for availability
+ *
+ * @return bool
*/
- public function test(): bool
+ public function test()
{
}
- public function free_space(string $path): int|float|false
+ /**
+ * get the free space in the storage
+ *
+ * @param string $path
+ * @return int|float|false
+ */
+ public function free_space($path)
{
}
- public function isLocal(): bool
+ /**
+ * {@inheritdoc}
+ */
+ public function isLocal()
{
}
/**
* Check if the storage is an instance of $class or is a wrapper for a storage that is an instance of $class
+ *
+ * @param string $class
+ * @return bool
*/
- public function instanceOfStorage(string $class): bool
+ public function instanceOfStorage($class)
{
}
@@ -229,12 +270,19 @@ public function instanceOfStorage(string $class): bool
* A custom storage implementation can return an url for direct download of a give file.
*
* For now the returned array can hold the parameter url - in future more attributes might follow.
+ *
+ * @param string $path
+ * @return array|false
*/
- public function getDirectDownload(string $path): array|false
+ public function getDirectDownload($path)
{
}
- public function verifyPath(string $path, string $fileName): void
+ /**
+ * @inheritdoc
+ * @throws InvalidPathException
+ */
+ public function verifyPath($path, $fileName)
{
}
@@ -246,62 +294,127 @@ protected function getFilenameValidator(): IFilenameValidator
{
}
- public function setMountOptions(array $options): void
+ /**
+ * @param array $options
+ */
+ public function setMountOptions(array $options)
{
}
- public function getMountOption(string $name, mixed $default = null): mixed
+ /**
+ * @param string $name
+ * @param mixed $default
+ * @return mixed
+ */
+ public function getMountOption($name, $default = null)
{
}
- public function copyFromStorage(IStorage $sourceStorage, string $sourceInternalPath, string $targetInternalPath, bool $preserveMtime = false): bool
+ /**
+ * @param IStorage $sourceStorage
+ * @param string $sourceInternalPath
+ * @param string $targetInternalPath
+ * @param bool $preserveMtime
+ * @return bool
+ */
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false)
{
}
- public function moveFromStorage(IStorage $sourceStorage, string $sourceInternalPath, string $targetInternalPath): bool
+ /**
+ * @param IStorage $sourceStorage
+ * @param string $sourceInternalPath
+ * @param string $targetInternalPath
+ * @return bool
+ */
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath)
{
}
- public function getMetaData(string $path): ?array
+ /**
+ * @inheritdoc
+ */
+ public function getMetaData($path)
{
}
- public function acquireLock(string $path, int $type, ILockingProvider $provider): void
+ /**
+ * @param string $path
+ * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
+ * @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
+ */
+ public function acquireLock($path, $type, ILockingProvider $provider)
{
}
- public function releaseLock(string $path, int $type, ILockingProvider $provider): void
+ /**
+ * @param string $path
+ * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
+ * @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
+ */
+ public function releaseLock($path, $type, ILockingProvider $provider)
{
}
- public function changeLock(string $path, int $type, ILockingProvider $provider): void
+ /**
+ * @param string $path
+ * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
+ * @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
+ */
+ public function changeLock($path, $type, ILockingProvider $provider)
{
}
/**
* @return array [ available, last_checked ]
*/
- public function getAvailability(): array
+ public function getAvailability()
{
}
- public function setAvailability(bool $isAvailable): void
+ /**
+ * @param bool $isAvailable
+ */
+ public function setAvailability($isAvailable)
{
}
+ /**
+ * Allow setting the storage owner
+ *
+ * This can be used for storages that do not have a dedicated owner, where we want to
+ * pass the user that we setup the mountpoint for along to the storage layer
+ *
+ * @param string|null $user
+ * @return void
+ */
public function setOwner(?string $user): void
{
}
- public function needsPartFile(): bool
+ /**
+ * @return bool
+ */
+ public function needsPartFile()
{
}
+ /**
+ * fallback implementation
+ *
+ * @param string $path
+ * @param resource $stream
+ * @param int $size
+ * @return int
+ */
public function writeStream(string $path, $stream, ?int $size = null): int
{
}
- public function getDirectoryContent(string $directory): \Traversable
+ public function getDirectoryContent($directory): \Traversable
{
}
}
diff --git a/tests/stubs/oc_files_storage_local.php b/tests/stubs/oc_files_storage_local.php
index 4fe5790a0..1ce789c5c 100644
--- a/tests/stubs/oc_files_storage_local.php
+++ b/tests/stubs/oc_files_storage_local.php
@@ -17,7 +17,6 @@
use OCP\Files\Storage\IStorage;
use OCP\Files\StorageNotAvailableException;
use OCP\IConfig;
-use OCP\Server;
use OCP\Util;
use Psr\Log\LoggerInterface;
@@ -35,143 +34,182 @@ class Local extends \OC\Files\Storage\Common {
protected bool $caseInsensitive = false;
- public function __construct(array $parameters)
+ public function __construct($arguments)
{
}
public function __destruct() {
}
- public function getId(): string
+ public function getId()
{
}
- public function mkdir(string $path): bool
+ public function mkdir($path)
{
}
- public function rmdir(string $path): bool
+ public function rmdir($path)
{
}
- public function opendir(string $path)
+ public function opendir($path)
{
}
- public function is_dir(string $path): bool
+ public function is_dir($path)
{
}
- public function is_file(string $path): bool
+ public function is_file($path)
{
}
- public function stat(string $path): array|false
+ public function stat($path)
{
}
- public function getMetaData(string $path): ?array
+ /**
+ * @inheritdoc
+ */
+ public function getMetaData($path)
{
}
- public function filetype(string $path): string|false
+ public function filetype($path)
{
}
- public function filesize(string $path): int|float|false
+ public function filesize($path): false|int|float
{
}
- public function isReadable(string $path): bool
+ public function isReadable($path)
{
}
- public function isUpdatable(string $path): bool
+ public function isUpdatable($path)
{
}
- public function file_exists(string $path): bool
+ public function file_exists($path)
{
}
- public function filemtime(string $path): int|false
+ public function filemtime($path)
{
}
- public function touch(string $path, ?int $mtime = null): bool
+ public function touch($path, $mtime = null)
{
}
- public function file_get_contents(string $path): string|false
+ public function file_get_contents($path)
{
}
- public function file_put_contents(string $path, mixed $data): int|float|false
+ public function file_put_contents($path, $data)
{
}
- public function unlink(string $path): bool
+ public function unlink($path)
{
}
- public function rename(string $source, string $target): bool
+ public function rename($source, $target): bool
{
}
- public function copy(string $source, string $target): bool
+ public function copy($source, $target)
{
}
- public function fopen(string $path, string $mode)
+ public function fopen($path, $mode)
{
}
- public function hash(string $type, string $path, bool $raw = false): string|false
+ public function hash($type, $path, $raw = false): string|false
{
}
- public function free_space(string $path): int|float|false
+ public function free_space($path)
{
}
- public function search(string $query): array
+ public function search($query)
{
}
- public function getLocalFile(string $path): string|false
+ public function getLocalFile($path)
{
}
- protected function searchInDir(string $query, string $dir = ''): array
+ /**
+ * @param string $query
+ * @param string $dir
+ * @return array
+ */
+ protected function searchInDir($query, $dir = '')
{
}
- public function hasUpdated(string $path, int $time): bool
+ /**
+ * check if a file or folder has been updated since $time
+ *
+ * @param string $path
+ * @param int $time
+ * @return bool
+ */
+ public function hasUpdated($path, $time)
{
}
/**
* Get the source path (on disk) of a given path
*
+ * @param string $path
+ * @return string
* @throws ForbiddenException
*/
- public function getSourcePath(string $path): string
+ public function getSourcePath($path)
{
}
- public function isLocal(): bool
+ /**
+ * {@inheritdoc}
+ */
+ public function isLocal()
{
}
- public function getETag(string $path): string|false
+ /**
+ * get the ETag for a file or folder
+ *
+ * @param string $path
+ * @return string
+ */
+ public function getETag($path)
{
}
- public function copyFromStorage(IStorage $sourceStorage, string $sourceInternalPath, string $targetInternalPath, bool $preserveMtime = false): bool
+ /**
+ * @param IStorage $sourceStorage
+ * @param string $sourceInternalPath
+ * @param string $targetInternalPath
+ * @param bool $preserveMtime
+ * @return bool
+ */
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $preserveMtime = false)
{
}
- public function moveFromStorage(IStorage $sourceStorage, string $sourceInternalPath, string $targetInternalPath): bool
+ /**
+ * @param IStorage $sourceStorage
+ * @param string $sourceInternalPath
+ * @param string $targetInternalPath
+ * @return bool
+ */
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath)
{
}
diff --git a/tests/stubs/oc_files_storage_storage.php b/tests/stubs/oc_files_storage_storage.php
index 8afb2fb77..fb239aa84 100644
--- a/tests/stubs/oc_files_storage_storage.php
+++ b/tests/stubs/oc_files_storage_storage.php
@@ -5,54 +5,131 @@
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-only
*/
-
namespace OC\Files\Storage;
-use OCP\Files\Cache\ICache;
-use OCP\Files\Cache\IPropagator;
-use OCP\Files\Cache\IScanner;
-use OCP\Files\Cache\IUpdater;
-use OCP\Files\Cache\IWatcher;
-use OCP\Files\Storage\ILockingStorage;
-use OCP\Files\Storage\IStorage;
+use OCP\Lock\ILockingProvider;
/**
* Provide a common interface to all different storage options
*
* All paths passed to the storage are relative to the storage and should NOT have a leading slash.
*/
-interface Storage extends IStorage, ILockingStorage {
- public function getCache(string $path = '', ?IStorage $storage = null): ICache
+interface Storage extends \OCP\Files\Storage {
+ /**
+ * get a cache instance for the storage
+ *
+ * @param string $path
+ * @param \OC\Files\Storage\Storage|null (optional) the storage to pass to the cache
+ * @return \OC\Files\Cache\Cache
+ */
+ public function getCache($path = '', $storage = null)
{
}
- public function getScanner(string $path = '', ?IStorage $storage = null): IScanner
+ /**
+ * get a scanner instance for the storage
+ *
+ * @param string $path
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the scanner
+ * @return \OC\Files\Cache\Scanner
+ */
+ public function getScanner($path = '', $storage = null)
{
}
- public function getWatcher(string $path = '', ?IStorage $storage = null): IWatcher
+
+ /**
+ * get the user id of the owner of a file or folder
+ *
+ * @param string $path
+ * @return string
+ */
+ public function getOwner($path)
{
}
- public function getPropagator(?IStorage $storage = null): IPropagator
+ /**
+ * get a watcher instance for the cache
+ *
+ * @param string $path
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the watcher
+ * @return \OC\Files\Cache\Watcher
+ */
+ public function getWatcher($path = '', $storage = null)
{
}
- public function getUpdater(?IStorage $storage = null): IUpdater
+ /**
+ * get a propagator instance for the cache
+ *
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the watcher
+ * @return \OC\Files\Cache\Propagator
+ */
+ public function getPropagator($storage = null)
{
}
- public function getStorageCache(): \OC\Files\Cache\Storage
+ /**
+ * get a updater instance for the cache
+ *
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the watcher
+ * @return \OC\Files\Cache\Updater
+ */
+ public function getUpdater($storage = null)
{
}
- public function getMetaData(string $path): ?array
+ /**
+ * @return \OC\Files\Cache\Storage
+ */
+ public function getStorageCache()
+ {
+ }
+
+ /**
+ * @param string $path
+ * @return array|null
+ */
+ public function getMetaData($path)
+ {
+ }
+
+ /**
+ * @param string $path The path of the file to acquire the lock for
+ * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
+ * @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
+ */
+ public function acquireLock($path, $type, ILockingProvider $provider)
+ {
+ }
+
+ /**
+ * @param string $path The path of the file to release the lock for
+ * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
+ * @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
+ */
+ public function releaseLock($path, $type, ILockingProvider $provider)
+ {
+ }
+
+ /**
+ * @param string $path The path of the file to change the lock for
+ * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
+ * @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
+ */
+ public function changeLock($path, $type, ILockingProvider $provider)
{
}
/**
* Get the contents of a directory with metadata
*
+ * @param string $directory
+ * @return \Traversable an iterator, containing file metadata
+ *
* The metadata array will contain the following fields
*
* - name
@@ -63,7 +140,7 @@ public function getMetaData(string $path): ?array
* - storage_mtime
* - permissions
*/
- public function getDirectoryContent(string $directory): \Traversable
+ public function getDirectoryContent($directory): \Traversable
{
}
}
diff --git a/tests/stubs/oc_files_storage_temporary.php b/tests/stubs/oc_files_storage_temporary.php
index aecd7f8b2..a8e995b10 100644
--- a/tests/stubs/oc_files_storage_temporary.php
+++ b/tests/stubs/oc_files_storage_temporary.php
@@ -7,19 +7,15 @@
*/
namespace OC\Files\Storage;
-use OCP\Files;
-use OCP\ITempManager;
-use OCP\Server;
-
/**
* local storage backend in temporary folder for testing purpose
*/
class Temporary extends Local {
- public function __construct(array $parameters = [])
+ public function __construct($arguments = null)
{
}
- public function cleanUp(): void
+ public function cleanUp()
{
}
@@ -27,7 +23,7 @@ public function __destruct()
{
}
- public function getDataDir(): array|string
+ public function getDataDir()
{
}
}
diff --git a/tests/stubs/oc_files_storage_wrapper_jail.php b/tests/stubs/oc_files_storage_wrapper_jail.php
index 622224ace..02a5a559f 100644
--- a/tests/stubs/oc_files_storage_wrapper_jail.php
+++ b/tests/stubs/oc_files_storage_wrapper_jail.php
@@ -11,10 +11,6 @@
use OC\Files\Cache\Wrapper\JailPropagator;
use OC\Files\Cache\Wrapper\JailWatcher;
use OC\Files\Filesystem;
-use OCP\Files;
-use OCP\Files\Cache\ICache;
-use OCP\Files\Cache\IPropagator;
-use OCP\Files\Cache\IWatcher;
use OCP\Files\Storage\IStorage;
use OCP\Files\Storage\IWriteStreamStorage;
use OCP\Lock\ILockingProvider;
@@ -31,195 +27,444 @@ class Jail extends Wrapper {
protected $rootPath;
/**
- * @param array $parameters ['storage' => $storage, 'root' => $root]
+ * @param array $arguments ['storage' => $storage, 'root' => $root]
*
* $storage: The storage that will be wrapper
* $root: The folder in the wrapped storage that will become the root folder of the wrapped storage
*/
- public function __construct(array $parameters)
+ public function __construct($arguments)
{
}
- public function getUnjailedPath(string $path): string
+ public function getUnjailedPath($path)
{
}
/**
* This is separate from Wrapper::getWrapperStorage so we can get the jailed storage consistently even if the jail is inside another wrapper
*/
- public function getUnjailedStorage(): IStorage
+ public function getUnjailedStorage()
{
}
- public function getJailedPath(string $path): ?string
+ public function getJailedPath($path)
{
}
- public function getId(): string
+ public function getId()
{
}
- public function mkdir(string $path): bool
+ /**
+ * see https://www.php.net/manual/en/function.mkdir.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function mkdir($path)
{
}
- public function rmdir(string $path): bool
+ /**
+ * see https://www.php.net/manual/en/function.rmdir.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function rmdir($path)
{
}
- public function opendir(string $path)
+ /**
+ * see https://www.php.net/manual/en/function.opendir.php
+ *
+ * @param string $path
+ * @return resource|false
+ */
+ public function opendir($path)
{
}
- public function is_dir(string $path): bool
+ /**
+ * see https://www.php.net/manual/en/function.is_dir.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function is_dir($path)
{
}
- public function is_file(string $path): bool
+ /**
+ * see https://www.php.net/manual/en/function.is_file.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function is_file($path)
{
}
- public function stat(string $path): array|false
+ /**
+ * see https://www.php.net/manual/en/function.stat.php
+ * only the following keys are required in the result: size and mtime
+ *
+ * @param string $path
+ * @return array|bool
+ */
+ public function stat($path)
{
}
- public function filetype(string $path): string|false
+ /**
+ * see https://www.php.net/manual/en/function.filetype.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function filetype($path)
{
}
- public function filesize(string $path): int|float|false
+ /**
+ * see https://www.php.net/manual/en/function.filesize.php
+ * The result for filesize when called on a folder is required to be 0
+ */
+ public function filesize($path): false|int|float
{
}
- public function isCreatable(string $path): bool
+ /**
+ * check if a file can be created in $path
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isCreatable($path)
{
}
- public function isReadable(string $path): bool
+ /**
+ * check if a file can be read
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isReadable($path)
{
}
- public function isUpdatable(string $path): bool
+ /**
+ * check if a file can be written to
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isUpdatable($path)
{
}
- public function isDeletable(string $path): bool
+ /**
+ * check if a file can be deleted
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isDeletable($path)
{
}
- public function isSharable(string $path): bool
+ /**
+ * check if a file can be shared
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isSharable($path)
{
}
- public function getPermissions(string $path): int
+ /**
+ * get the full permissions of a path.
+ * Should return a combination of the PERMISSION_ constants defined in lib/public/constants.php
+ *
+ * @param string $path
+ * @return int
+ */
+ public function getPermissions($path)
{
}
- public function file_exists(string $path): bool
+ /**
+ * see https://www.php.net/manual/en/function.file_exists.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function file_exists($path)
{
}
- public function filemtime(string $path): int|false
+ /**
+ * see https://www.php.net/manual/en/function.filemtime.php
+ *
+ * @param string $path
+ * @return int|bool
+ */
+ public function filemtime($path)
{
}
- public function file_get_contents(string $path): string|false
+ /**
+ * see https://www.php.net/manual/en/function.file_get_contents.php
+ *
+ * @param string $path
+ * @return string|false
+ */
+ public function file_get_contents($path)
{
}
- public function file_put_contents(string $path, mixed $data): int|float|false
+ /**
+ * see https://www.php.net/manual/en/function.file_put_contents.php
+ *
+ * @param string $path
+ * @param mixed $data
+ * @return int|float|false
+ */
+ public function file_put_contents($path, $data)
{
}
- public function unlink(string $path): bool
+ /**
+ * see https://www.php.net/manual/en/function.unlink.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function unlink($path)
{
}
- public function rename(string $source, string $target): bool
+ /**
+ * see https://www.php.net/manual/en/function.rename.php
+ *
+ * @param string $source
+ * @param string $target
+ * @return bool
+ */
+ public function rename($source, $target)
+ {
+ }
+
+ /**
+ * see https://www.php.net/manual/en/function.copy.php
+ *
+ * @param string $source
+ * @param string $target
+ * @return bool
+ */
+ public function copy($source, $target)
{
}
- public function copy(string $source, string $target): bool
+ /**
+ * see https://www.php.net/manual/en/function.fopen.php
+ *
+ * @param string $path
+ * @param string $mode
+ * @return resource|bool
+ */
+ public function fopen($path, $mode)
{
}
- public function fopen(string $path, string $mode)
+ /**
+ * get the mimetype for a file or folder
+ * The mimetype for a folder is required to be "httpd/unix-directory"
+ *
+ * @param string $path
+ * @return string|bool
+ */
+ public function getMimeType($path)
{
}
- public function getMimeType(string $path): string|false
+ /**
+ * see https://www.php.net/manual/en/function.hash.php
+ *
+ * @param string $type
+ * @param string $path
+ * @param bool $raw
+ * @return string|bool
+ */
+ public function hash($type, $path, $raw = false)
{
}
- public function hash(string $type, string $path, bool $raw = false): string|false
+ /**
+ * see https://www.php.net/manual/en/function.free_space.php
+ *
+ * @param string $path
+ * @return int|float|bool
+ */
+ public function free_space($path)
{
}
- public function free_space(string $path): int|float|false
+ /**
+ * search for occurrences of $query in file names
+ *
+ * @param string $query
+ * @return array|bool
+ */
+ public function search($query)
{
}
- public function touch(string $path, ?int $mtime = null): bool
+ /**
+ * see https://www.php.net/manual/en/function.touch.php
+ * If the backend does not support the operation, false should be returned
+ *
+ * @param string $path
+ * @param int $mtime
+ * @return bool
+ */
+ public function touch($path, $mtime = null)
{
}
- public function getLocalFile(string $path): string|false
+ /**
+ * get the path to a local version of the file.
+ * The local version of the file can be temporary and doesn't have to be persistent across requests
+ *
+ * @param string $path
+ * @return string|false
+ */
+ public function getLocalFile($path)
{
}
- public function hasUpdated(string $path, int $time): bool
+ /**
+ * check if a file or folder has been updated since $time
+ *
+ * @param string $path
+ * @param int $time
+ * @return bool
+ *
+ * hasUpdated for folders should return at least true if a file inside the folder is add, removed or renamed.
+ * returning true for other changes in the folder is optional
+ */
+ public function hasUpdated($path, $time)
{
}
- public function getCache(string $path = '', ?IStorage $storage = null): ICache
+ /**
+ * get a cache instance for the storage
+ *
+ * @param string $path
+ * @param \OC\Files\Storage\Storage|null (optional) the storage to pass to the cache
+ * @return \OC\Files\Cache\Cache
+ */
+ public function getCache($path = '', $storage = null)
{
}
- public function getOwner(string $path): string|false
+ /**
+ * get the user id of the owner of a file or folder
+ *
+ * @param string $path
+ * @return string
+ */
+ public function getOwner($path)
{
}
- public function getWatcher(string $path = '', ?IStorage $storage = null): IWatcher
+ /**
+ * get a watcher instance for the cache
+ *
+ * @param string $path
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the watcher
+ * @return \OC\Files\Cache\Watcher
+ */
+ public function getWatcher($path = '', $storage = null)
{
}
- public function getETag(string $path): string|false
+ /**
+ * get the ETag for a file or folder
+ *
+ * @param string $path
+ * @return string|false
+ */
+ public function getETag($path)
{
}
- public function getMetaData(string $path): ?array
+ public function getMetaData($path)
{
}
- public function acquireLock(string $path, int $type, ILockingProvider $provider): void
+ /**
+ * @param string $path
+ * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
+ * @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
+ */
+ public function acquireLock($path, $type, ILockingProvider $provider)
{
}
- public function releaseLock(string $path, int $type, ILockingProvider $provider): void
+ /**
+ * @param string $path
+ * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
+ * @param \OCP\Lock\ILockingProvider $provider
+ */
+ public function releaseLock($path, $type, ILockingProvider $provider)
{
}
- public function changeLock(string $path, int $type, ILockingProvider $provider): void
+ /**
+ * @param string $path
+ * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
+ * @param \OCP\Lock\ILockingProvider $provider
+ */
+ public function changeLock($path, $type, ILockingProvider $provider)
{
}
/**
* Resolve the path for the source of the share
+ *
+ * @param string $path
+ * @return array
*/
- public function resolvePath(string $path): array
+ public function resolvePath($path)
{
}
- public function copyFromStorage(IStorage $sourceStorage, string $sourceInternalPath, string $targetInternalPath): bool
+ /**
+ * @param IStorage $sourceStorage
+ * @param string $sourceInternalPath
+ * @param string $targetInternalPath
+ * @return bool
+ */
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath)
{
}
- public function moveFromStorage(IStorage $sourceStorage, string $sourceInternalPath, string $targetInternalPath): bool
+ /**
+ * @param IStorage $sourceStorage
+ * @param string $sourceInternalPath
+ * @param string $targetInternalPath
+ * @return bool
+ */
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath)
{
}
- public function getPropagator(?IStorage $storage = null): IPropagator
+ public function getPropagator($storage = null)
{
}
@@ -227,7 +472,7 @@ public function writeStream(string $path, $stream, ?int $size = null): int
{
}
- public function getDirectoryContent(string $directory): \Traversable
+ public function getDirectoryContent($directory): \Traversable
{
}
}
diff --git a/tests/stubs/oc_files_storage_wrapper_permissionsmask.php b/tests/stubs/oc_files_storage_wrapper_permissionsmask.php
index 73d73e812..fb662e374 100644
--- a/tests/stubs/oc_files_storage_wrapper_permissionsmask.php
+++ b/tests/stubs/oc_files_storage_wrapper_permissionsmask.php
@@ -9,7 +9,6 @@
use OC\Files\Cache\Wrapper\CachePermissionsMask;
use OCP\Constants;
-use OCP\Files\Storage\IStorage;
/**
* Mask the permissions of a storage
@@ -20,80 +19,87 @@
*/
class PermissionsMask extends Wrapper {
/**
- * @param array $parameters ['storage' => $storage, 'mask' => $mask]
+ * @param array $arguments ['storage' => $storage, 'mask' => $mask]
*
* $storage: The storage the permissions mask should be applied on
* $mask: The permission bits that should be kept, a combination of the \OCP\Constant::PERMISSION_ constants
*/
- public function __construct(array $parameters)
+ public function __construct($arguments)
{
}
- public function isUpdatable(string $path): bool
+ public function isUpdatable($path)
{
}
- public function isCreatable(string $path): bool
+ public function isCreatable($path)
{
}
- public function isDeletable(string $path): bool
+ public function isDeletable($path)
{
}
- public function isSharable(string $path): bool
+ public function isSharable($path)
{
}
- public function getPermissions(string $path): int
+ public function getPermissions($path)
{
}
- public function rename(string $source, string $target): bool
+ public function rename($source, $target)
{
}
- public function copy(string $source, string $target): bool
+ public function copy($source, $target)
{
}
- public function touch(string $path, ?int $mtime = null): bool
+ public function touch($path, $mtime = null)
{
}
- public function mkdir(string $path): bool
+ public function mkdir($path)
{
}
- public function rmdir(string $path): bool
+ public function rmdir($path)
{
}
- public function unlink(string $path): bool
+ public function unlink($path)
{
}
- public function file_put_contents(string $path, mixed $data): int|float|false
+ public function file_put_contents($path, $data)
{
}
- public function fopen(string $path, string $mode)
+ public function fopen($path, $mode)
{
}
- public function getCache(string $path = '', ?IStorage $storage = null): \OCP\Files\Cache\ICache
+ /**
+ * get a cache instance for the storage
+ *
+ * @param string $path
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the cache
+ * @return \OC\Files\Cache\Cache
+ */
+ public function getCache($path = '', $storage = null)
{
}
- public function getMetaData(string $path): ?array
+ public function getMetaData($path)
{
}
- public function getScanner(string $path = '', ?IStorage $storage = null): \OCP\Files\Cache\IScanner
+ public function getScanner($path = '', $storage = null)
{
}
- public function getDirectoryContent(string $directory): \Traversable
+ public function getDirectoryContent($directory): \Traversable
{
}
}
diff --git a/tests/stubs/oc_files_storage_wrapper_quota.php b/tests/stubs/oc_files_storage_wrapper_quota.php
index e7ea43c05..5997398a1 100644
--- a/tests/stubs/oc_files_storage_wrapper_quota.php
+++ b/tests/stubs/oc_files_storage_wrapper_quota.php
@@ -23,31 +23,66 @@ class Quota extends Wrapper {
/**
* @param array $parameters
*/
- public function __construct(array $parameters)
+ public function __construct($parameters)
{
}
+ /**
+ * @return int|float quota value
+ */
public function getQuota(): int|float
{
}
- protected function getSize(string $path, ?IStorage $storage = null): int|float
+ /**
+ * @param string $path
+ * @param IStorage $storage
+ * @return int|float
+ */
+ protected function getSize($path, $storage = null)
{
}
- public function free_space(string $path): int|float|false
+ /**
+ * Get free space as limited by the quota
+ *
+ * @param string $path
+ * @return int|float|bool
+ */
+ public function free_space($path)
{
}
- public function file_put_contents(string $path, mixed $data): int|float|false
+ /**
+ * see https://www.php.net/manual/en/function.file_put_contents.php
+ *
+ * @param string $path
+ * @param mixed $data
+ * @return int|float|false
+ */
+ public function file_put_contents($path, $data)
{
}
- public function copy(string $source, string $target): bool
+ /**
+ * see https://www.php.net/manual/en/function.copy.php
+ *
+ * @param string $source
+ * @param string $target
+ * @return bool
+ */
+ public function copy($source, $target)
{
}
- public function fopen(string $path, string $mode)
+ /**
+ * see https://www.php.net/manual/en/function.fopen.php
+ *
+ * @param string $path
+ * @param string $mode
+ * @return resource|bool
+ */
+ public function fopen($path, $mode)
{
}
@@ -58,23 +93,31 @@ protected function shouldApplyQuota(string $path): bool
{
}
- public function copyFromStorage(IStorage $sourceStorage, string $sourceInternalPath, string $targetInternalPath): bool
- {
- }
-
- public function moveFromStorage(IStorage $sourceStorage, string $sourceInternalPath, string $targetInternalPath): bool
+ /**
+ * @param IStorage $sourceStorage
+ * @param string $sourceInternalPath
+ * @param string $targetInternalPath
+ * @return bool
+ */
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath)
{
}
- public function mkdir(string $path): bool
+ /**
+ * @param IStorage $sourceStorage
+ * @param string $sourceInternalPath
+ * @param string $targetInternalPath
+ * @return bool
+ */
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath)
{
}
- public function touch(string $path, ?int $mtime = null): bool
+ public function mkdir($path)
{
}
- public function enableQuota(bool $enabled): void
+ public function touch($path, $mtime = null)
{
}
}
diff --git a/tests/stubs/oc_files_storage_wrapper_wrapper.php b/tests/stubs/oc_files_storage_wrapper_wrapper.php
index 225156692..7af2696c4 100644
--- a/tests/stubs/oc_files_storage_wrapper_wrapper.php
+++ b/tests/stubs/oc_files_storage_wrapper_wrapper.php
@@ -8,13 +8,7 @@
namespace OC\Files\Storage\Wrapper;
use OC\Files\Storage\FailedStorage;
-use OC\Files\Storage\Storage;
-use OCP\Files;
-use OCP\Files\Cache\ICache;
-use OCP\Files\Cache\IPropagator;
-use OCP\Files\Cache\IScanner;
-use OCP\Files\Cache\IUpdater;
-use OCP\Files\Cache\IWatcher;
+use OCP\Files\InvalidPathException;
use OCP\Files\Storage\ILockingStorage;
use OCP\Files\Storage\IStorage;
use OCP\Files\Storage\IWriteStreamStorage;
@@ -37,171 +31,426 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStrea
/**
* @param array $parameters
*/
- public function __construct(array $parameters)
+ public function __construct($parameters)
{
}
- public function getWrapperStorage(): Storage
+ /**
+ * @return \OC\Files\Storage\Storage
+ */
+ public function getWrapperStorage()
{
}
- public function getId(): string
+ /**
+ * Get the identifier for the storage,
+ * the returned id should be the same for every storage object that is created with the same parameters
+ * and two storage objects with the same id should refer to two storages that display the same files.
+ *
+ * @return string
+ */
+ public function getId()
{
}
- public function mkdir(string $path): bool
+ /**
+ * see https://www.php.net/manual/en/function.mkdir.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function mkdir($path)
{
}
- public function rmdir(string $path): bool
+ /**
+ * see https://www.php.net/manual/en/function.rmdir.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function rmdir($path)
{
}
- public function opendir(string $path)
+ /**
+ * see https://www.php.net/manual/en/function.opendir.php
+ *
+ * @param string $path
+ * @return resource|false
+ */
+ public function opendir($path)
{
}
- public function is_dir(string $path): bool
+ /**
+ * see https://www.php.net/manual/en/function.is_dir.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function is_dir($path)
{
}
- public function is_file(string $path): bool
+ /**
+ * see https://www.php.net/manual/en/function.is_file.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function is_file($path)
{
}
- public function stat(string $path): array|false
+ /**
+ * see https://www.php.net/manual/en/function.stat.php
+ * only the following keys are required in the result: size and mtime
+ *
+ * @param string $path
+ * @return array|bool
+ */
+ public function stat($path)
{
}
- public function filetype(string $path): string|false
+ /**
+ * see https://www.php.net/manual/en/function.filetype.php
+ *
+ * @param string $path
+ * @return string|bool
+ */
+ public function filetype($path)
{
}
- public function filesize(string $path): int|float|false
+ /**
+ * see https://www.php.net/manual/en/function.filesize.php
+ * The result for filesize when called on a folder is required to be 0
+ */
+ public function filesize($path): false|int|float
{
}
- public function isCreatable(string $path): bool
+ /**
+ * check if a file can be created in $path
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isCreatable($path)
{
}
- public function isReadable(string $path): bool
+ /**
+ * check if a file can be read
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isReadable($path)
{
}
- public function isUpdatable(string $path): bool
+ /**
+ * check if a file can be written to
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isUpdatable($path)
{
}
- public function isDeletable(string $path): bool
+ /**
+ * check if a file can be deleted
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isDeletable($path)
+ {
+ }
+
+ /**
+ * check if a file can be shared
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function isSharable($path)
{
}
- public function isSharable(string $path): bool
+ /**
+ * get the full permissions of a path.
+ * Should return a combination of the PERMISSION_ constants defined in lib/public/constants.php
+ *
+ * @param string $path
+ * @return int
+ */
+ public function getPermissions($path)
{
}
- public function getPermissions(string $path): int
+ /**
+ * see https://www.php.net/manual/en/function.file_exists.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function file_exists($path)
{
}
- public function file_exists(string $path): bool
+ /**
+ * see https://www.php.net/manual/en/function.filemtime.php
+ *
+ * @param string $path
+ * @return int|bool
+ */
+ public function filemtime($path)
{
}
- public function filemtime(string $path): int|false
+ /**
+ * see https://www.php.net/manual/en/function.file_get_contents.php
+ *
+ * @param string $path
+ * @return string|false
+ */
+ public function file_get_contents($path)
{
}
- public function file_get_contents(string $path): string|false
+ /**
+ * see https://www.php.net/manual/en/function.file_put_contents.php
+ *
+ * @param string $path
+ * @param mixed $data
+ * @return int|float|false
+ */
+ public function file_put_contents($path, $data)
{
}
- public function file_put_contents(string $path, mixed $data): int|float|false
+ /**
+ * see https://www.php.net/manual/en/function.unlink.php
+ *
+ * @param string $path
+ * @return bool
+ */
+ public function unlink($path)
{
}
- public function unlink(string $path): bool
+ /**
+ * see https://www.php.net/manual/en/function.rename.php
+ *
+ * @param string $source
+ * @param string $target
+ * @return bool
+ */
+ public function rename($source, $target)
{
}
- public function rename(string $source, string $target): bool
+ /**
+ * see https://www.php.net/manual/en/function.copy.php
+ *
+ * @param string $source
+ * @param string $target
+ * @return bool
+ */
+ public function copy($source, $target)
{
}
- public function copy(string $source, string $target): bool
+ /**
+ * see https://www.php.net/manual/en/function.fopen.php
+ *
+ * @param string $path
+ * @param string $mode
+ * @return resource|bool
+ */
+ public function fopen($path, $mode)
{
}
- public function fopen(string $path, string $mode)
+ /**
+ * get the mimetype for a file or folder
+ * The mimetype for a folder is required to be "httpd/unix-directory"
+ *
+ * @param string $path
+ * @return string|bool
+ */
+ public function getMimeType($path)
{
}
- public function getMimeType(string $path): string|false
+ /**
+ * see https://www.php.net/manual/en/function.hash.php
+ *
+ * @param string $type
+ * @param string $path
+ * @param bool $raw
+ * @return string|bool
+ */
+ public function hash($type, $path, $raw = false)
{
}
- public function hash(string $type, string $path, bool $raw = false): string|false
+ /**
+ * see https://www.php.net/manual/en/function.free_space.php
+ *
+ * @param string $path
+ * @return int|float|bool
+ */
+ public function free_space($path)
{
}
- public function free_space(string $path): int|float|false
+ /**
+ * search for occurrences of $query in file names
+ *
+ * @param string $query
+ * @return array|bool
+ */
+ public function search($query)
{
}
- public function touch(string $path, ?int $mtime = null): bool
+ /**
+ * see https://www.php.net/manual/en/function.touch.php
+ * If the backend does not support the operation, false should be returned
+ *
+ * @param string $path
+ * @param int $mtime
+ * @return bool
+ */
+ public function touch($path, $mtime = null)
{
}
- public function getLocalFile(string $path): string|false
+ /**
+ * get the path to a local version of the file.
+ * The local version of the file can be temporary and doesn't have to be persistent across requests
+ *
+ * @param string $path
+ * @return string|false
+ */
+ public function getLocalFile($path)
{
}
- public function hasUpdated(string $path, int $time): bool
+ /**
+ * check if a file or folder has been updated since $time
+ *
+ * @param string $path
+ * @param int $time
+ * @return bool
+ *
+ * hasUpdated for folders should return at least true if a file inside the folder is add, removed or renamed.
+ * returning true for other changes in the folder is optional
+ */
+ public function hasUpdated($path, $time)
{
}
- public function getCache(string $path = '', ?IStorage $storage = null): ICache
+ /**
+ * get a cache instance for the storage
+ *
+ * @param string $path
+ * @param \OC\Files\Storage\Storage|null (optional) the storage to pass to the cache
+ * @return \OC\Files\Cache\Cache
+ */
+ public function getCache($path = '', $storage = null)
{
}
- public function getScanner(string $path = '', ?IStorage $storage = null): IScanner
+ /**
+ * get a scanner instance for the storage
+ *
+ * @param string $path
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the scanner
+ * @return \OC\Files\Cache\Scanner
+ */
+ public function getScanner($path = '', $storage = null)
{
}
- public function getOwner(string $path): string|false
+
+ /**
+ * get the user id of the owner of a file or folder
+ *
+ * @param string $path
+ * @return string
+ */
+ public function getOwner($path)
{
}
- public function getWatcher(string $path = '', ?IStorage $storage = null): IWatcher
+ /**
+ * get a watcher instance for the cache
+ *
+ * @param string $path
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the watcher
+ * @return \OC\Files\Cache\Watcher
+ */
+ public function getWatcher($path = '', $storage = null)
{
}
- public function getPropagator(?IStorage $storage = null): IPropagator
+ public function getPropagator($storage = null)
{
}
- public function getUpdater(?IStorage $storage = null): IUpdater
+ public function getUpdater($storage = null)
{
}
- public function getStorageCache(): \OC\Files\Cache\Storage
+ /**
+ * @return \OC\Files\Cache\Storage
+ */
+ public function getStorageCache()
{
}
- public function getETag(string $path): string|false
+ /**
+ * get the ETag for a file or folder
+ *
+ * @param string $path
+ * @return string|false
+ */
+ public function getETag($path)
{
}
- public function test(): bool
+ /**
+ * Returns true
+ *
+ * @return true
+ */
+ public function test()
{
}
- public function isLocal(): bool
+ /**
+ * Returns the wrapped storage's value for isLocal()
+ *
+ * @return bool wrapped storage's isLocal() value
+ */
+ public function isLocal()
{
}
- public function instanceOfStorage(string $class): bool
+ /**
+ * Check if the storage is an instance of $class or is a wrapper for a storage that is an instance of $class
+ *
+ * @param class-string $class
+ * @return bool
+ */
+ public function instanceOfStorage($class)
{
}
@@ -210,60 +459,117 @@ public function instanceOfStorage(string $class): bool
* @psalm-param class-string $class
* @psalm-return T|null
*/
- public function getInstanceOfStorage(string $class): ?IStorage
+ public function getInstanceOfStorage(string $class)
{
}
/**
* Pass any methods custom to specific storage implementations to the wrapped storage
*
+ * @param string $method
+ * @param array $args
* @return mixed
*/
- public function __call(string $method, array $args)
+ public function __call($method, $args)
{
}
- public function getDirectDownload(string $path): array|false
+ /**
+ * A custom storage implementation can return an url for direct download of a give file.
+ *
+ * For now the returned array can hold the parameter url - in future more attributes might follow.
+ *
+ * @param string $path
+ * @return array|bool
+ */
+ public function getDirectDownload($path)
{
}
- public function getAvailability(): array
+ /**
+ * Get availability of the storage
+ *
+ * @return array [ available, last_checked ]
+ */
+ public function getAvailability()
{
}
- public function setAvailability(bool $isAvailable): void
+ /**
+ * Set availability of the storage
+ *
+ * @param bool $isAvailable
+ */
+ public function setAvailability($isAvailable)
{
}
- public function verifyPath(string $path, string $fileName): void
+ /**
+ * @param string $path the path of the target folder
+ * @param string $fileName the name of the file itself
+ * @return void
+ * @throws InvalidPathException
+ */
+ public function verifyPath($path, $fileName)
{
}
- public function copyFromStorage(IStorage $sourceStorage, string $sourceInternalPath, string $targetInternalPath): bool
+ /**
+ * @param IStorage $sourceStorage
+ * @param string $sourceInternalPath
+ * @param string $targetInternalPath
+ * @return bool
+ */
+ public function copyFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath)
{
}
- public function moveFromStorage(IStorage $sourceStorage, string $sourceInternalPath, string $targetInternalPath): bool
+ /**
+ * @param IStorage $sourceStorage
+ * @param string $sourceInternalPath
+ * @param string $targetInternalPath
+ * @return bool
+ */
+ public function moveFromStorage(IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath)
{
}
- public function getMetaData(string $path): ?array
+ public function getMetaData($path)
{
}
- public function acquireLock(string $path, int $type, ILockingProvider $provider): void
+ /**
+ * @param string $path
+ * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
+ * @param \OCP\Lock\ILockingProvider $provider
+ * @throws \OCP\Lock\LockedException
+ */
+ public function acquireLock($path, $type, ILockingProvider $provider)
{
}
- public function releaseLock(string $path, int $type, ILockingProvider $provider): void
+ /**
+ * @param string $path
+ * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
+ * @param \OCP\Lock\ILockingProvider $provider
+ */
+ public function releaseLock($path, $type, ILockingProvider $provider)
{
}
- public function changeLock(string $path, int $type, ILockingProvider $provider): void
+ /**
+ * @param string $path
+ * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
+ * @param \OCP\Lock\ILockingProvider $provider
+ */
+ public function changeLock($path, $type, ILockingProvider $provider)
{
}
- public function needsPartFile(): bool
+ /**
+ * @return bool
+ */
+ public function needsPartFile()
{
}
@@ -271,11 +577,11 @@ public function writeStream(string $path, $stream, ?int $size = null): int
{
}
- public function getDirectoryContent(string $directory): \Traversable
+ public function getDirectoryContent($directory): \Traversable
{
}
- public function isWrapperOf(IStorage $storage): bool
+ public function isWrapperOf(IStorage $storage)
{
}
diff --git a/tests/stubs/oc_files_view.php b/tests/stubs/oc_files_view.php
index d6b0debc7..9037fde49 100644
--- a/tests/stubs/oc_files_view.php
+++ b/tests/stubs/oc_files_view.php
@@ -10,14 +10,12 @@
use Icewind\Streams\CallbackWrapper;
use OC\Files\Mount\MoveableMount;
use OC\Files\Storage\Storage;
-use OC\Files\Storage\Wrapper\Quota;
use OC\Share\Share;
use OC\User\LazyUser;
use OC\User\Manager as UserManager;
use OC\User\User;
use OCA\Files_Sharing\SharedMount;
use OCP\Constants;
-use OCP\Files;
use OCP\Files\Cache\ICacheEntry;
use OCP\Files\ConnectionLostException;
use OCP\Files\EmptyFileNameException;
@@ -31,7 +29,6 @@
use OCP\Files\NotFoundException;
use OCP\Files\ReservedWordException;
use OCP\IUser;
-use OCP\IUserManager;
use OCP\L10N\IFactory;
use OCP\Lock\ILockingProvider;
use OCP\Lock\LockedException;
@@ -552,9 +549,11 @@ public function searchByTag($tag, $userId)
/**
* Get the owner for a file or folder
*
+ * @param string $path
+ * @return string the user id of the owner
* @throws NotFoundException
*/
- public function getOwner(string $path): string
+ public function getOwner($path)
{
}
@@ -578,7 +577,7 @@ public function getETag($path)
* @return string
* @throws NotFoundException
*/
- public function getPath($id, ?int $storageId = null): string
+ public function getPath($id, ?int $storageId = null)
{
}
diff --git a/tests/stubs/oc_group_database.php b/tests/stubs/oc_group_database.php
index caa9ce7cf..7bf13a504 100644
--- a/tests/stubs/oc_group_database.php
+++ b/tests/stubs/oc_group_database.php
@@ -7,8 +7,8 @@
*/
namespace OC\Group;
+use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use OC\User\LazyUser;
-use OCP\DB\Exception;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Group\Backend\ABackend;
use OCP\Group\Backend\IAddToGroupBackend;
@@ -47,10 +47,9 @@ class Database extends ABackend implements
*
* @param IDBConnection|null $dbConn
*/
- public function __construct(
- private ?IDBConnection $dbConn = null,
- ) {
- }
+ public function __construct(?IDBConnection $dbConn = null)
+ {
+ }
public function createGroup(string $name): ?string
{
@@ -106,7 +105,7 @@ public function removeFromGroup(string $uid, string $gid): bool
/**
* Get all groups a user belongs to
* @param string $uid Name of the user
- * @return list an array of group names
+ * @return array an array of group names
*
* This function fetches all groups a user belongs to. It does not check
* if the user exists at all.
diff --git a/tests/stubs/oc_group_manager.php b/tests/stubs/oc_group_manager.php
index e20887351..d3856bf4d 100644
--- a/tests/stubs/oc_group_manager.php
+++ b/tests/stubs/oc_group_manager.php
@@ -180,7 +180,7 @@ public function isInGroup($userId, $group)
* get a list of group ids for a user
*
* @param IUser $user
- * @return list with group ids
+ * @return string[] with group ids
*/
public function getUserGroupIds(IUser $user): array
{
diff --git a/tests/stubs/oc_server.php b/tests/stubs/oc_server.php
index 8d7f73731..876ebd399 100644
--- a/tests/stubs/oc_server.php
+++ b/tests/stubs/oc_server.php
@@ -8,10 +8,11 @@
namespace OC;
use bantu\IniGetWrapper\IniGetWrapper;
-use NCU\Security\Signature\ISignatureManager;
use OC\Accounts\AccountManager;
use OC\App\AppManager;
use OC\App\AppStore\Bundles\BundleFetcher;
+use OC\App\AppStore\Fetcher\AppFetcher;
+use OC\App\AppStore\Fetcher\CategoryFetcher;
use OC\AppFramework\Bootstrap\Coordinator;
use OC\AppFramework\Http\Request;
use OC\AppFramework\Http\RequestId;
@@ -44,7 +45,6 @@
use OC\Files\Config\MountProviderCollection;
use OC\Files\Config\UserMountCache;
use OC\Files\Config\UserMountCacheListener;
-use OC\Files\Conversion\ConversionManager;
use OC\Files\Lock\LockManager;
use OC\Files\Mount\CacheMountProvider;
use OC\Files\Mount\LocalHomeMountProvider;
@@ -65,6 +65,7 @@
use OC\Http\Client\ClientService;
use OC\Http\Client\NegativeDnsCache;
use OC\IntegrityCheck\Checker;
+use OC\IntegrityCheck\Helpers\AppLocator;
use OC\IntegrityCheck\Helpers\EnvironmentHelper;
use OC\IntegrityCheck\Helpers\FileAccessHelper;
use OC\KnownUser\KnownUserService;
@@ -75,7 +76,6 @@
use OC\Lockdown\LockdownManager;
use OC\Log\LogFactory;
use OC\Log\PsrLoggerAdapter;
-use OC\Mail\EmailValidator;
use OC\Mail\Mailer;
use OC\Memcache\ArrayCache;
use OC\Memcache\Factory;
@@ -105,7 +105,6 @@
use OC\Security\Ip\RemoteAddress;
use OC\Security\RateLimiting\Limiter;
use OC\Security\SecureRandom;
-use OC\Security\Signature\SignatureManager;
use OC\Security\TrustedDomainHelper;
use OC\Security\VerificationToken\VerificationToken;
use OC\Session\CryptoWrapper;
@@ -115,6 +114,7 @@
use OC\Share20\ShareHelper;
use OC\SpeechToText\SpeechToTextManager;
use OC\SystemTag\ManagerFactory as SystemTagManagerFactory;
+use OC\Tagging\TagMapper;
use OC\Talk\Broker;
use OC\Teams\TeamManager;
use OC\Template\JSCombiner;
@@ -124,6 +124,10 @@
use OC\User\Listeners\BeforeUserDeletedListener;
use OC\User\Listeners\UserChangedListener;
use OC\User\Session;
+use OCA\Files_External\Service\BackendService;
+use OCA\Files_External\Service\GlobalStoragesService;
+use OCA\Files_External\Service\UserGlobalStoragesService;
+use OCA\Files_External\Service\UserStoragesService;
use OCA\Theming\ImageManager;
use OCA\Theming\Service\BackgroundService;
use OCA\Theming\ThemingDefaults;
@@ -134,10 +138,10 @@
use OCP\Authentication\LoginCredentials\IStore;
use OCP\Authentication\Token\IProvider as OCPIProvider;
use OCP\BackgroundJob\IJobList;
+use OCP\Collaboration\AutoComplete\IManager;
use OCP\Collaboration\Reference\IReferenceManager;
use OCP\Command\IBus;
use OCP\Comments\ICommentsManager;
-use OCP\Config\IUserConfig;
use OCP\Contacts\ContactsMenu\IActionFactory;
use OCP\Contacts\ContactsMenu\IContactsStore;
use OCP\Defaults;
@@ -152,7 +156,6 @@
use OCP\Files\Cache\IFileAccess;
use OCP\Files\Config\IMountProviderCollection;
use OCP\Files\Config\IUserMountCache;
-use OCP\Files\Conversion\IConversionManager;
use OCP\Files\IMimeTypeDetector;
use OCP\Files\IMimeTypeLoader;
use OCP\Files\IRootFolder;
@@ -162,6 +165,7 @@
use OCP\Files\Template\ITemplateManager;
use OCP\FilesMetadata\IFilesMetadataManager;
use OCP\FullTextSearch\IFullTextSearchManager;
+use OCP\GlobalScale\IConfig;
use OCP\Group\ISubAdmin;
use OCP\Http\Client\IClientService;
use OCP\IAppConfig;
@@ -177,6 +181,7 @@
use OCP\IGroupManager;
use OCP\IInitialStateService;
use OCP\IL10N;
+use OCP\ILogger;
use OCP\INavigationManager;
use OCP\IPhoneNumberUtil;
use OCP\IPreview;
@@ -184,6 +189,7 @@
use OCP\IRequestId;
use OCP\IServerContainer;
use OCP\ISession;
+use OCP\ITagManager;
use OCP\ITempManager;
use OCP\IURLGenerator;
use OCP\IUserManager;
@@ -194,9 +200,7 @@
use OCP\Lock\ILockingProvider;
use OCP\Lockdown\ILockdownManager;
use OCP\Log\ILogFactory;
-use OCP\Mail\IEmailValidator;
use OCP\Mail\IMailer;
-use OCP\OCM\ICapabilityAwareOCMProvider;
use OCP\OCM\IOCMDiscoveryService;
use OCP\OCM\IOCMProvider;
use OCP\Preview\IMimeIconProvider;
@@ -204,10 +208,10 @@
use OCP\Profiler\IProfiler;
use OCP\Remote\Api\IApiFactory;
use OCP\Remote\IInstanceFactory;
-use OCP\RichObjectStrings\IRichTextFormatter;
use OCP\RichObjectStrings\IValidator;
use OCP\Route\IRouter;
use OCP\Security\Bruteforce\IThrottler;
+use OCP\Security\IContentSecurityPolicyManager;
use OCP\Security\ICredentialsManager;
use OCP\Security\ICrypto;
use OCP\Security\IHasher;
@@ -216,7 +220,6 @@
use OCP\Security\ITrustedDomainHelper;
use OCP\Security\RateLimiting\ILimiter;
use OCP\Security\VerificationToken\IVerificationToken;
-use OCP\ServerVersion;
use OCP\Settings\IDeclarativeManager;
use OCP\SetupCheck\ISetupCheckManager;
use OCP\Share\IProviderFactory;
@@ -237,6 +240,7 @@
use OCP\User\Events\UserLoggedInWithCookieEvent;
use OCP\User\Events\UserLoggedOutEvent;
use OCP\User\IAvailabilityCoordinator;
+use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
use Psr\Log\LoggerInterface;
@@ -258,6 +262,30 @@ public function __construct($webRoot, \OC\Config $config)
public function boot()
{
+ }
+
+ /**
+ * @return \OCP\Calendar\IManager
+ * @deprecated 20.0.0
+ */
+ public function getCalendarManager()
+ {
+ }
+
+ /**
+ * @return \OCP\Calendar\Resource\IManager
+ * @deprecated 20.0.0
+ */
+ public function getCalendarResourceBackendManager()
+ {
+ }
+
+ /**
+ * @return \OCP\Calendar\Room\IManager
+ * @deprecated 20.0.0
+ */
+ public function getCalendarRoomBackendManager()
+ {
}
/**
@@ -282,6 +310,14 @@ public function getEncryptionManager()
*/
public function getEncryptionFilesHelper()
{
+ }
+
+ /**
+ * @return \OCP\Encryption\Keys\IStorage
+ * @deprecated 20.0.0
+ */
+ public function getEncryptionKeyStorage()
+ {
}
/**
@@ -294,6 +330,61 @@ public function getEncryptionFilesHelper()
*/
public function getRequest()
{
+ }
+
+ /**
+ * Returns the preview manager which can create preview images for a given file
+ *
+ * @return IPreview
+ * @deprecated 20.0.0
+ */
+ public function getPreviewManager()
+ {
+ }
+
+ /**
+ * Returns the tag manager which can get and set tags for different object types
+ *
+ * @see \OCP\ITagManager::load()
+ * @return ITagManager
+ * @deprecated 20.0.0
+ */
+ public function getTagManager()
+ {
+ }
+
+ /**
+ * Returns the system-tag manager
+ *
+ * @return ISystemTagManager
+ *
+ * @since 9.0.0
+ * @deprecated 20.0.0
+ */
+ public function getSystemTagManager()
+ {
+ }
+
+ /**
+ * Returns the system-tag object mapper
+ *
+ * @return ISystemTagObjectMapper
+ *
+ * @since 9.0.0
+ * @deprecated 20.0.0
+ */
+ public function getSystemTagObjectMapper()
+ {
+ }
+
+ /**
+ * Returns the avatar manager, used for avatar functionality
+ *
+ * @return IAvatarManager
+ * @deprecated 20.0.0
+ */
+ public function getAvatarManager()
+ {
}
/**
@@ -367,6 +458,22 @@ public function getSession()
*/
public function setSession(\OCP\ISession $session)
{
+ }
+
+ /**
+ * @return \OC\Authentication\TwoFactorAuth\Manager
+ * @deprecated 20.0.0
+ */
+ public function getTwoFactorAuthManager()
+ {
+ }
+
+ /**
+ * @return \OC\NavigationManager
+ * @deprecated 20.0.0
+ */
+ public function getNavigationManager()
+ {
}
/**
@@ -383,6 +490,16 @@ public function getConfig()
*/
public function getSystemConfig()
{
+ }
+
+ /**
+ * Returns the app config manager
+ *
+ * @return IAppConfig
+ * @deprecated 20.0.0
+ */
+ public function getAppConfig()
+ {
}
/**
@@ -411,6 +528,14 @@ public function getL10N($app, $lang = null)
*/
public function getURLGenerator()
{
+ }
+
+ /**
+ * @return AppFetcher
+ * @deprecated 20.0.0
+ */
+ public function getAppFetcher()
+ {
}
/**
@@ -434,6 +559,17 @@ public function getMemCacheFactory()
{
}
+ /**
+ * Returns an \OC\RedisFactory instance
+ *
+ * @return \OC\RedisFactory
+ * @deprecated 20.0.0
+ */
+ public function getGetRedisFactory()
+ {
+ }
+
+
/**
* Returns the current session
*
@@ -462,6 +598,35 @@ public function getActivityManager()
*/
public function getJobList()
{
+ }
+
+ /**
+ * Returns a logger instance
+ *
+ * @return ILogger
+ * @deprecated 20.0.0
+ */
+ public function getLogger()
+ {
+ }
+
+ /**
+ * @return ILogFactory
+ * @throws \OCP\AppFramework\QueryException
+ * @deprecated 20.0.0
+ */
+ public function getLogFactory()
+ {
+ }
+
+ /**
+ * Returns a router for generating and matching urls
+ *
+ * @return IRouter
+ * @deprecated 20.0.0
+ */
+ public function getRouter()
+ {
}
/**
@@ -492,6 +657,16 @@ public function getCrypto()
*/
public function getHasher()
{
+ }
+
+ /**
+ * Returns a CredentialsManager instance
+ *
+ * @return ICredentialsManager
+ * @deprecated 20.0.0
+ */
+ public function getCredentialsManager()
+ {
}
/**
@@ -501,6 +676,40 @@ public function getHasher()
*/
public function getCertificateManager()
{
+ }
+
+ /**
+ * Returns an instance of the HTTP client service
+ *
+ * @return IClientService
+ * @deprecated 20.0.0
+ */
+ public function getHTTPClientService()
+ {
+ }
+
+ /**
+ * Get the active event logger
+ *
+ * The returned logger only logs data when debug mode is enabled
+ *
+ * @return IEventLogger
+ * @deprecated 20.0.0
+ */
+ public function getEventLogger()
+ {
+ }
+
+ /**
+ * Get the active query logger
+ *
+ * The returned logger only logs data when debug mode is enabled
+ *
+ * @return IQueryLogger
+ * @deprecated 20.0.0
+ */
+ public function getQueryLogger()
+ {
}
/**
@@ -541,6 +750,66 @@ public function getMailer()
*/
public function getWebRoot()
{
+ }
+
+ /**
+ * @return \OC\OCSClient
+ * @deprecated 20.0.0
+ */
+ public function getOcsClient()
+ {
+ }
+
+ /**
+ * @return IDateTimeZone
+ * @deprecated 20.0.0
+ */
+ public function getDateTimeZone()
+ {
+ }
+
+ /**
+ * @return IDateTimeFormatter
+ * @deprecated 20.0.0
+ */
+ public function getDateTimeFormatter()
+ {
+ }
+
+ /**
+ * @return IMountProviderCollection
+ * @deprecated 20.0.0
+ */
+ public function getMountProviderCollection()
+ {
+ }
+
+ /**
+ * Get the IniWrapper
+ *
+ * @return IniGetWrapper
+ * @deprecated 20.0.0
+ */
+ public function getIniWrapper()
+ {
+ }
+
+ /**
+ * @return \OCP\Command\IBus
+ * @deprecated 20.0.0
+ */
+ public function getCommandBus()
+ {
+ }
+
+ /**
+ * Get the trusted domain helper
+ *
+ * @return TrustedDomainHelper
+ * @deprecated 20.0.0
+ */
+ public function getTrustedDomainHelper()
+ {
}
/**
@@ -552,6 +821,22 @@ public function getWebRoot()
*/
public function getLockingProvider()
{
+ }
+
+ /**
+ * @return IMountManager
+ * @deprecated 20.0.0
+ **/
+ public function getMountManager()
+ {
+ }
+
+ /**
+ * @return IUserMountCache
+ * @deprecated 20.0.0
+ */
+ public function getUserMountCache()
+ {
}
/**
@@ -572,6 +857,16 @@ public function getMimeTypeDetector()
*/
public function getMimeTypeLoader()
{
+ }
+
+ /**
+ * Get the manager of all the capabilities
+ *
+ * @return CapabilitiesManager
+ * @deprecated 20.0.0
+ */
+ public function getCapabilitiesManager()
+ {
}
/**
@@ -583,6 +878,14 @@ public function getMimeTypeLoader()
*/
public function getNotificationManager()
{
+ }
+
+ /**
+ * @return ICommentsManager
+ * @deprecated 20.0.0
+ */
+ public function getCommentsManager()
+ {
}
/**
@@ -599,6 +902,14 @@ public function getThemingDefaults()
*/
public function getIntegrityCodeChecker()
{
+ }
+
+ /**
+ * @return \OC\Session\CryptoWrapper
+ * @deprecated 20.0.0
+ */
+ public function getSessionCryptoWrapper()
+ {
}
/**
@@ -607,6 +918,22 @@ public function getIntegrityCodeChecker()
*/
public function getCsrfTokenManager()
{
+ }
+
+ /**
+ * @return IThrottler
+ * @deprecated 20.0.0
+ */
+ public function getBruteForceThrottler()
+ {
+ }
+
+ /**
+ * @return IContentSecurityPolicyManager
+ * @deprecated 20.0.0
+ */
+ public function getContentSecurityPolicyManager()
+ {
}
/**
@@ -615,6 +942,80 @@ public function getCsrfTokenManager()
*/
public function getContentSecurityPolicyNonceManager()
{
+ }
+
+ /**
+ * Not a public API as of 8.2, wait for 9.0
+ *
+ * @return \OCA\Files_External\Service\BackendService
+ * @deprecated 20.0.0
+ */
+ public function getStoragesBackendService()
+ {
+ }
+
+ /**
+ * Not a public API as of 8.2, wait for 9.0
+ *
+ * @return \OCA\Files_External\Service\GlobalStoragesService
+ * @deprecated 20.0.0
+ */
+ public function getGlobalStoragesService()
+ {
+ }
+
+ /**
+ * Not a public API as of 8.2, wait for 9.0
+ *
+ * @return \OCA\Files_External\Service\UserGlobalStoragesService
+ * @deprecated 20.0.0
+ */
+ public function getUserGlobalStoragesService()
+ {
+ }
+
+ /**
+ * Not a public API as of 8.2, wait for 9.0
+ *
+ * @return \OCA\Files_External\Service\UserStoragesService
+ * @deprecated 20.0.0
+ */
+ public function getUserStoragesService()
+ {
+ }
+
+ /**
+ * @return \OCP\Share\IManager
+ * @deprecated 20.0.0
+ */
+ public function getShareManager()
+ {
+ }
+
+ /**
+ * @return \OCP\Collaboration\Collaborators\ISearch
+ * @deprecated 20.0.0
+ */
+ public function getCollaboratorSearch()
+ {
+ }
+
+ /**
+ * @return \OCP\Collaboration\AutoComplete\IManager
+ * @deprecated 20.0.0
+ */
+ public function getAutoCompleteManager()
+ {
+ }
+
+ /**
+ * Returns the LDAP Provider
+ *
+ * @return \OCP\LDAP\ILDAPProvider
+ * @deprecated 20.0.0
+ */
+ public function getLDAPProvider()
+ {
}
/**
@@ -631,6 +1032,14 @@ public function getSettingsManager()
*/
public function getAppDataDir($app)
{
+ }
+
+ /**
+ * @return \OCP\Lockdown\ILockdownManager
+ * @deprecated 20.0.0
+ */
+ public function getLockdownManager()
+ {
}
/**
@@ -639,5 +1048,64 @@ public function getAppDataDir($app)
*/
public function getCloudIdManager()
{
+ }
+
+ /**
+ * @return \OCP\GlobalScale\IConfig
+ * @deprecated 20.0.0
+ */
+ public function getGlobalScaleConfig()
+ {
+ }
+
+ /**
+ * @return \OCP\Federation\ICloudFederationProviderManager
+ * @deprecated 20.0.0
+ */
+ public function getCloudFederationProviderManager()
+ {
+ }
+
+ /**
+ * @return \OCP\Remote\Api\IApiFactory
+ * @deprecated 20.0.0
+ */
+ public function getRemoteApiFactory()
+ {
+ }
+
+ /**
+ * @return \OCP\Federation\ICloudFederationFactory
+ * @deprecated 20.0.0
+ */
+ public function getCloudFederationFactory()
+ {
+ }
+
+ /**
+ * @return \OCP\Remote\IInstanceFactory
+ * @deprecated 20.0.0
+ */
+ public function getRemoteInstanceFactory()
+ {
+ }
+
+ /**
+ * @return IStorageFactory
+ * @deprecated 20.0.0
+ */
+ public function getStorageFactory()
+ {
+ }
+
+ /**
+ * Get the Preview GeneratorHelper
+ *
+ * @return GeneratorHelper
+ * @since 17.0.0
+ * @deprecated 20.0.0
+ */
+ public function getGeneratorHelper()
+ {
}
}
diff --git a/tests/stubs/oc_user_user.php b/tests/stubs/oc_user_user.php
index f20db3a93..d55403e56 100644
--- a/tests/stubs/oc_user_user.php
+++ b/tests/stubs/oc_user_user.php
@@ -11,6 +11,7 @@
use OC\Accounts\AccountManager;
use OC\Avatar\AvatarManager;
use OC\Hooks\Emitter;
+use OC_Helper;
use OCP\Accounts\IAccountManager;
use OCP\Comments\ICommentsManager;
use OCP\EventDispatcher\IEventDispatcher;
@@ -108,23 +109,17 @@ public function setPrimaryEMailAddress(string $mailAddress): void
/**
* returns the timestamp of the user's last login or 0 if the user did never
* login
+ *
+ * @return int
*/
- public function getLastLogin(): int
- {
- }
-
- /**
- * returns the timestamp of the user's last login or 0 if the user did never
- * login
- */
- public function getFirstLogin(): int
+ public function getLastLogin()
{
}
/**
* updates the timestamp of the most recent login of this user
*/
- public function updateLastLoginTimestamp(): bool
+ public function updateLastLoginTimestamp()
{
}
@@ -179,7 +174,7 @@ public function getBackend(): ?UserInterface
}
/**
- * Check if the backend allows the user to change their avatar on Personal page
+ * Check if the backend allows the user to change his avatar on Personal page
*
* @return bool
*/
@@ -259,10 +254,6 @@ public function getPrimaryEMailAddress(): ?string
*/
public function getQuota()
{
- }
-
- public function getQuotaBytes(): int|float
- {
}
/**
diff --git a/tests/stubs/oca_circles_circlesqueryhelper.php b/tests/stubs/oca_circles_circlesqueryhelper.php
index 58e0e65c5..a3d99d015 100644
--- a/tests/stubs/oca_circles_circlesqueryhelper.php
+++ b/tests/stubs/oca_circles_circlesqueryhelper.php
@@ -40,9 +40,9 @@ public function __construct(CoreRequestBuilder $coreRequestBuilder, FederatedUse
/**
- * @return CoreQueryBuilder&IQueryBuilder
+ * @return IQueryBuilder
*/
- public function getQueryBuilder(): CoreQueryBuilder
+ public function getQueryBuilder(): IQueryBuilder
{
}
diff --git a/tests/stubs/oca_circles_db_corequerybuilder.php b/tests/stubs/oca_circles_db_corequerybuilder.php
index 1d7cad1ca..6be64ba4c 100644
--- a/tests/stubs/oca_circles_db_corequerybuilder.php
+++ b/tests/stubs/oca_circles_db_corequerybuilder.php
@@ -12,6 +12,7 @@
namespace OCA\Circles\Db;
use Doctrine\DBAL\Query\QueryBuilder;
+use OC;
use OCA\Circles\Exceptions\RequestBuilderException;
use OCA\Circles\IFederatedModel;
use OCA\Circles\IFederatedUser;
@@ -25,7 +26,6 @@
use OCA\Circles\Tools\Traits\TArrayTools;
use OCP\DB\QueryBuilder\ICompositeExpression;
use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\Server;
/**
* Class CoreQueryBuilder
@@ -699,7 +699,7 @@ public function leftJoinMountpoint(string $aliasMount, IFederatedUser $federated
* @param array $path
* @param array $options
*
- * @return CoreQueryBuilder&IQueryBuilder
+ * @return CoreQueryBuilder
*/
public function setOptions(array $path, array $options): self
{
diff --git a/tests/stubs/oca_circles_ifederateduser.php b/tests/stubs/oca_circles_ifederateduser.php
index 07c1599b7..989c80ed7 100644
--- a/tests/stubs/oca_circles_ifederateduser.php
+++ b/tests/stubs/oca_circles_ifederateduser.php
@@ -19,29 +19,11 @@
* @package OCA\Circles
*/
interface IFederatedUser extends IFederatedModel {
- /**
- * @param string $singleId
- *
- * @return self
- */
- public function setSingleId(string $singleId): self
- {
- }
-
/**
* @return string
*/
public function getSingleId(): string
{
- }
-
- /**
- * @param string $userId
- *
- * @return self
- */
- public function setUserId(string $userId): self
- {
}
/**
@@ -49,15 +31,6 @@ public function setUserId(string $userId): self
*/
public function getUserId(): string
{
- }
-
- /**
- * @param int $userType
- *
- * @return self
- */
- public function setUserType(int $userType): self
- {
}
/**
@@ -65,15 +38,6 @@ public function setUserType(int $userType): self
*/
public function getUserType(): int
{
- }
-
- /**
- * @param string $displayName
- *
- * @return IFederatedUser
- */
- public function setDisplayName(string $displayName): self
- {
}
/**
@@ -81,15 +45,6 @@ public function setDisplayName(string $displayName): self
*/
public function getDisplayName(): string
{
- }
-
- /**
- * @param ?Circle $basedOn
- *
- * @return $this
- */
- public function setBasedOn(?Circle $basedOn): self
- {
}
/**
@@ -104,14 +59,5 @@ public function getBasedOn(): Circle
*/
public function hasBasedOn(): bool
{
- }
-
- /**
- * @param string $instance
- *
- * @return self
- */
- public function setInstance(string $instance): self
- {
}
}
diff --git a/tests/stubs/oca_circles_model_circle.php b/tests/stubs/oca_circles_model_circle.php
index 15d678d0d..f05fa9ea8 100644
--- a/tests/stubs/oca_circles_model_circle.php
+++ b/tests/stubs/oca_circles_model_circle.php
@@ -33,7 +33,6 @@
use OCA\Circles\Tools\Traits\TArrayTools;
use OCA\Circles\Tools\Traits\TDeserialize;
use OCP\Security\IHasher;
-use OCP\Server;
/**
* Class Circle
@@ -124,7 +123,7 @@ class Circle extends ManagedModel implements IEntity, IDeserializable, IQueryRow
/**
- * Note: When editing those values, update lib/AppInfo/Capabilities.php
+ * Note: When editing those values, update lib/Application/Capabilities.php
*
* @see Capabilities::getCapabilitiesCircleConstants()
* @var array
@@ -134,9 +133,9 @@ class Circle extends ManagedModel implements IEntity, IDeserializable, IQueryRow
2 => 'Nextcloud Group',
4 => 'Email Address',
8 => 'Contact',
- 16 => 'Team',
+ 16 => 'Circle',
10000 => 'Nextcloud App',
- 10001 => 'Teams App',
+ 10001 => 'Circles App',
10002 => 'Admin Command Line',
11000 => '3rd party app',
11010 => 'Collectives App'
diff --git a/tests/stubs/oca_circles_model_federateduser.php b/tests/stubs/oca_circles_model_federateduser.php
index 6aaad5850..f6a14876f 100644
--- a/tests/stubs/oca_circles_model_federateduser.php
+++ b/tests/stubs/oca_circles_model_federateduser.php
@@ -136,11 +136,11 @@ public function hasBasedOn(): bool
}
/**
- * @param ?Circle $basedOn
+ * @param Circle|null $basedOn
*
* @return $this
*/
- public function setBasedOn(?Circle $basedOn): self
+ public function setBasedOn(Circle $basedOn): self
{
}
diff --git a/tests/stubs/oca_circles_model_managedmodel.php b/tests/stubs/oca_circles_model_managedmodel.php
index 729a06545..82aa3ae52 100644
--- a/tests/stubs/oca_circles_model_managedmodel.php
+++ b/tests/stubs/oca_circles_model_managedmodel.php
@@ -11,8 +11,8 @@
namespace OCA\Circles\Model;
+use OC;
use OCA\Circles\IFederatedUser;
-use OCP\Server;
/**
* Class ManagedModel
diff --git a/tests/stubs/oca_circles_model_member.php b/tests/stubs/oca_circles_model_member.php
index a223c08ec..f960d108f 100644
--- a/tests/stubs/oca_circles_model_member.php
+++ b/tests/stubs/oca_circles_model_member.php
@@ -287,11 +287,11 @@ public function hasBasedOn(): bool
}
/**
- * @param ?Circle $basedOn
+ * @param Circle $basedOn
*
* @return $this
*/
- public function setBasedOn(?Circle $basedOn): self
+ public function setBasedOn(Circle $basedOn): self
{
}
@@ -454,7 +454,7 @@ public function setNoteObj(string $key, JsonSerializable $obj): self
/**
* @param string $displayName
*
- * @return $this
+ * @return Member
*/
public function setDisplayName(string $displayName): self
{
diff --git a/tests/stubs/oca_circles_tools_db_extendedquerybuilder.php b/tests/stubs/oca_circles_tools_db_extendedquerybuilder.php
index 630b79cab..52a921d23 100644
--- a/tests/stubs/oca_circles_tools_db_extendedquerybuilder.php
+++ b/tests/stubs/oca_circles_tools_db_extendedquerybuilder.php
@@ -15,6 +15,7 @@
use DateTime;
use Doctrine\DBAL\Query\QueryBuilder as DBALQueryBuilder;
use Exception;
+use OC;
use OC\DB\QueryBuilder\QueryBuilder;
use OC\SystemConfig;
use OCA\Circles\Tools\Exceptions\DateTimeException;
@@ -24,7 +25,6 @@
use OCP\DB\QueryBuilder\ICompositeExpression;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
-use OCP\Server;
use Psr\Log\LoggerInterface;
class ExtendedQueryBuilder extends QueryBuilder {
@@ -709,7 +709,7 @@ public function generateSelect(string $table, array $fields, string $alias = '')
* @param array $fields
* @param string $alias
* @param string $prefix
- * @param array $default
+ * @param array $default
*
* @return $this
*/
diff --git a/tests/stubs/oca_dav_connector_sabre_directory.php b/tests/stubs/oca_dav_connector_sabre_directory.php
index 63c8e89ae..a2b2f1d54 100644
--- a/tests/stubs/oca_dav_connector_sabre_directory.php
+++ b/tests/stubs/oca_dav_connector_sabre_directory.php
@@ -13,15 +13,10 @@
use OCA\DAV\Connector\Sabre\Exception\FileLocked;
use OCA\DAV\Connector\Sabre\Exception\Forbidden;
use OCA\DAV\Connector\Sabre\Exception\InvalidPath;
-use OCA\DAV\Storage\PublicShareWrapper;
-use OCP\App\IAppManager;
-use OCP\Constants;
use OCP\Files\FileInfo;
use OCP\Files\Folder;
use OCP\Files\ForbiddenException;
use OCP\Files\InvalidPathException;
-use OCP\Files\Mount\IMountManager;
-use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
use OCP\Files\StorageNotAvailableException;
use OCP\IL10N;
@@ -29,7 +24,6 @@
use OCP\L10N\IFactory;
use OCP\Lock\ILockingProvider;
use OCP\Lock\LockedException;
-use OCP\Server;
use OCP\Share\IManager as IShareManager;
use Psr\Log\LoggerInterface;
use Sabre\DAV\Exception\BadRequest;
@@ -39,11 +33,11 @@
use Sabre\DAV\IFile;
use Sabre\DAV\INode;
-class Directory extends Node implements \Sabre\DAV\ICollection, \Sabre\DAV\IQuota, \Sabre\DAV\IMoveTarget, \Sabre\DAV\ICopyTarget {
+class Directory extends \OCA\DAV\Connector\Sabre\Node implements \Sabre\DAV\ICollection, \Sabre\DAV\IQuota, \Sabre\DAV\IMoveTarget, \Sabre\DAV\ICopyTarget {
/**
* Sets up the node, expects a full path name
*/
- public function __construct(View $view, FileInfo $info, private ?CachingTree $tree = null, ?IShareManager $shareManager = null)
+ public function __construct(View $view, FileInfo $info, ?CachingTree $tree = null, ?IShareManager $shareManager = null)
{
}
@@ -100,7 +94,7 @@ public function createDirectory($name)
* Returns a specific child node, referenced by its name
*
* @param string $name
- * @param FileInfo $info
+ * @param \OCP\Files\FileInfo $info
* @return \Sabre\DAV\INode
* @throws InvalidPath
* @throws \Sabre\DAV\Exception\NotFound
@@ -115,7 +109,7 @@ public function getChild($name, $info = null, ?IRequest $request = null, ?IL10N
*
* @return \Sabre\DAV\INode[]
* @throws \Sabre\DAV\Exception\Locked
- * @throws Forbidden
+ * @throws \OCA\DAV\Connector\Sabre\Exception\Forbidden
*/
public function getChildren()
{
diff --git a/tests/stubs/oca_dav_connector_sabre_node.php b/tests/stubs/oca_dav_connector_sabre_node.php
index 4492b2d13..22fde839d 100644
--- a/tests/stubs/oca_dav_connector_sabre_node.php
+++ b/tests/stubs/oca_dav_connector_sabre_node.php
@@ -12,19 +12,21 @@
use OC\Files\Node\Folder;
use OC\Files\View;
use OCA\DAV\Connector\Sabre\Exception\InvalidPath;
-use OCP\Constants;
use OCP\Files\DavUtil;
use OCP\Files\FileInfo;
-use OCP\Files\InvalidPathException;
use OCP\Files\IRootFolder;
use OCP\Files\NotFoundException;
use OCP\Files\Storage\ISharedStorage;
use OCP\Files\StorageNotAvailableException;
-use OCP\Server;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IManager;
abstract class Node implements \Sabre\DAV\INode {
+ /**
+ * @var View
+ */
+ protected $fileView;
+
/**
* The path to the current node
*
@@ -51,7 +53,7 @@ abstract class Node implements \Sabre\DAV\INode {
/**
* Sets up the node, expects a full path name
*/
- public function __construct(protected View $fileView, FileInfo $info, ?IManager $shareManager = null)
+ public function __construct(View $view, FileInfo $info, ?IManager $shareManager = null)
{
}
diff --git a/tests/stubs/oca_dav_connector_sabre_principal.php b/tests/stubs/oca_dav_connector_sabre_principal.php
index ac63b7a7c..68966f2d5 100644
--- a/tests/stubs/oca_dav_connector_sabre_principal.php
+++ b/tests/stubs/oca_dav_connector_sabre_principal.php
@@ -8,9 +8,7 @@
namespace OCA\DAV\Connector\Sabre;
use OC\KnownUser\KnownUserService;
-use OCA\Circles\Api\v1\Circles;
use OCA\Circles\Exceptions\CircleNotFoundException;
-use OCA\Circles\Model\Circle;
use OCA\DAV\CalDAV\Proxy\ProxyMapper;
use OCA\DAV\Traits\PrincipalProxyTrait;
use OCP\Accounts\IAccountManager;
@@ -33,7 +31,7 @@
class Principal implements BackendInterface {
- public function __construct(private IUserManager $userManager, private IGroupManager $groupManager, private IAccountManager $accountManager, private IShareManager $shareManager, private IUserSession $userSession, private IAppManager $appManager, private ProxyMapper $proxyMapper, KnownUserService $knownUserService, private IConfig $config, private IFactory $languageFactory, string $principalPrefix = 'principals/users/')
+ public function __construct(IUserManager $userManager, IGroupManager $groupManager, IAccountManager $accountManager, IShareManager $shareManager, IUserSession $userSession, IAppManager $appManager, ProxyMapper $proxyMapper, KnownUserService $knownUserService, IConfig $config, IFactory $languageFactory, string $principalPrefix = 'principals/users/')
{
}
@@ -68,21 +66,6 @@ public function getPrincipalsByPrefix($prefixPath)
*/
public function getPrincipalByPath($path)
{
- }
-
- /**
- * Returns a specific principal, specified by its path.
- * The returned structure should be the exact same as from
- * getPrincipalsByPrefix.
- *
- * It is possible to optionally filter retrieved properties in case only a limited set is
- * required. Note that the implementation might return more properties than requested.
- *
- * @param string $path The path of the principal
- * @param string[]|null $propertyFilter A list of properties to be retrieved or all if null. An empty array will cause a very shallow principal to be retrieved.
- */
- public function getPrincipalPropertiesByPath($path, ?array $propertyFilter = null): ?array
- {
}
/**
@@ -138,11 +121,10 @@ public function findByUri($uri, $principalPrefix)
/**
* @param IUser $user
- * @param string[]|null $propertyFilter
* @return array
* @throws PropertyDoesNotExistException
*/
- protected function userToPrincipal($user, ?array $propertyFilter = null)
+ protected function userToPrincipal($user)
{
}
@@ -164,7 +146,7 @@ protected function circleToPrincipal($circleUniqueId)
* @param string $principal
* @return array
* @throws Exception
- * @throws QueryException
+ * @throws \OCP\AppFramework\QueryException
* @suppress PhanUndeclaredClassMethod
*/
public function getCircleMembership($principal): array
diff --git a/tests/stubs/oca_files_sharing_event_beforetemplaterenderedevent.php b/tests/stubs/oca_files_sharing_event_beforetemplaterenderedevent.php
index 4abf9c5c5..60b36908b 100644
--- a/tests/stubs/oca_files_sharing_event_beforetemplaterenderedevent.php
+++ b/tests/stubs/oca_files_sharing_event_beforetemplaterenderedevent.php
@@ -26,7 +26,7 @@ class BeforeTemplateRenderedEvent extends Event {
/**
* @since 20.0.0
*/
- public function __construct(private IShare $share, private ?string $scope = null)
+ public function __construct(IShare $share, ?string $scope = null)
{
}
diff --git a/tests/stubs/oca_files_trashbin_expiration.php b/tests/stubs/oca_files_trashbin_expiration.php
index 5a387bbc5..18d8c7c09 100644
--- a/tests/stubs/oca_files_trashbin_expiration.php
+++ b/tests/stubs/oca_files_trashbin_expiration.php
@@ -16,7 +16,7 @@ class Expiration {
public const DEFAULT_RETENTION_OBLIGATION = 30;
public const NO_OBLIGATION = -1;
- public function __construct(IConfig $config, private ITimeFactory $timeFactory)
+ public function __construct(IConfig $config, ITimeFactory $timeFactory)
{
}
diff --git a/tests/stubs/oca_files_trashbin_trash_trashitem.php b/tests/stubs/oca_files_trashbin_trash_trashitem.php
index a641f3da5..b5aae0014 100644
--- a/tests/stubs/oca_files_trashbin_trash_trashitem.php
+++ b/tests/stubs/oca_files_trashbin_trash_trashitem.php
@@ -70,7 +70,7 @@ public function getPath()
{
}
- public function getMimetype(): string
+ public function getMimetype()
{
}
diff --git a/tests/stubs/oca_files_versions_expiration.php b/tests/stubs/oca_files_versions_expiration.php
index 2c93ef2da..e19015430 100644
--- a/tests/stubs/oca_files_versions_expiration.php
+++ b/tests/stubs/oca_files_versions_expiration.php
@@ -16,7 +16,7 @@ class Expiration {
// how long do we keep files a version if no other value is defined in the config file (unit: days)
public const NO_OBLIGATION = -1;
- public function __construct(IConfig $config, private ITimeFactory $timeFactory, private LoggerInterface $logger)
+ public function __construct(IConfig $config, ITimeFactory $timeFactory, LoggerInterface $logger)
{
}
diff --git a/tests/stubs/oca_files_versions_versions_ineedsyncversionbackend.php b/tests/stubs/oca_files_versions_versions_ineedsyncversionbackend.php
index 4f82a3db3..8dd0ff5f3 100644
--- a/tests/stubs/oca_files_versions_versions_ineedsyncversionbackend.php
+++ b/tests/stubs/oca_files_versions_versions_ineedsyncversionbackend.php
@@ -8,18 +8,13 @@
*/
namespace OCA\Files_Versions\Versions;
-use OCA\Files_Versions\Db\VersionEntity;
use OCP\Files\File;
/**
* @since 28.0.0
*/
interface INeedSyncVersionBackend {
- /**
- * TODO: Convert return type to strong type once all implementations are fixed.
- * @return null|VersionEntity
- */
- public function createVersionEntity(File $file)
+ public function createVersionEntity(File $file): void
{
}
public function updateVersionEntity(File $sourceFile, int $revision, array $properties): void
diff --git a/tests/stubs/oca_files_versions_versions_iversionbackend.php b/tests/stubs/oca_files_versions_versions_iversionbackend.php
index b2885bee7..6e7c766aa 100644
--- a/tests/stubs/oca_files_versions_versions_iversionbackend.php
+++ b/tests/stubs/oca_files_versions_versions_iversionbackend.php
@@ -8,7 +8,6 @@
*/
namespace OCA\Files_Versions\Versions;
-use OC\Files\Node\Node;
use OCP\Files\File;
use OCP\Files\FileInfo;
use OCP\Files\NotFoundException;
@@ -90,14 +89,5 @@ public function read(IVersion $version)
*/
public function getVersionFile(IUser $user, FileInfo $sourceFile, $revision): File
{
- }
-
- /**
- * Get the revision for a node
- *
- * @since 32.0.0
- */
- public function getRevision(Node $node): int
- {
}
}
diff --git a/tests/stubs/oca_settings_service_authorizedgroupservice.php b/tests/stubs/oca_settings_service_authorizedgroupservice.php
index ddca80bbb..312687d66 100644
--- a/tests/stubs/oca_settings_service_authorizedgroupservice.php
+++ b/tests/stubs/oca_settings_service_authorizedgroupservice.php
@@ -16,10 +16,9 @@
class AuthorizedGroupService {
- public function __construct(
- private AuthorizedGroupMapper $mapper,
- ) {
- }
+ public function __construct(AuthorizedGroupMapper $mapper)
+ {
+ }
/**
* @return AuthorizedGroup[]
diff --git a/tests/stubs/test_testcase.php b/tests/stubs/test_testcase.php
index cfb88fb6a..76ef8b3a8 100644
--- a/tests/stubs/test_testcase.php
+++ b/tests/stubs/test_testcase.php
@@ -11,7 +11,6 @@
use DOMDocument;
use DOMNode;
use OC\Command\QueueBus;
-use OC\Files\Cache\Storage;
use OC\Files\Config\MountProviderCollection;
use OC\Files\Filesystem;
use OC\Files\Mount\CacheMountProvider;
@@ -19,22 +18,15 @@
use OC\Files\Mount\RootMountProvider;
use OC\Files\ObjectStore\PrimaryObjectStoreConfig;
use OC\Files\SetupManager;
-use OC\Files\View;
use OC\Template\Base;
-use OCP\AppFramework\QueryException;
use OCP\Command\IBus;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Defaults;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IL10N;
-use OCP\IUserManager;
-use OCP\IUserSession;
use OCP\Lock\ILockingProvider;
-use OCP\Lock\LockedException;
use OCP\Security\ISecureRandom;
-use OCP\Server;
-use PHPUnit\Framework\Attributes\Group;
if (version_compare(\PHPUnit\Runner\Version::id(), 10, '>=')) {
trait OnNotSuccessfulTestTrait {
@@ -131,21 +123,6 @@ protected static function invokePrivate($object, $methodName, array $parameters
*/
protected static function getUniqueID($prefix = '', $length = 13)
{
- }
-
- /**
- * Filter methods
- *
- * Returns all methods of the given class,
- * that are public or abstract and not in the ignoreMethods list,
- * to be able to fill onlyMethods() with an inverted list.
- *
- * @param string $className
- * @param string[] $filterMethods
- * @return string[]
- */
- public function filterClassMethods(string $className, array $filterMethods): array
- {
}
public static function tearDownAfterClass(): void
@@ -238,7 +215,7 @@ protected function runCommands()
/**
* Check if the given path is locked with a given type
*
- * @param View $view view
+ * @param \OC\Files\View $view view
* @param string $path path to check
* @param int $type lock type
* @param bool $onMountPoint true to check the mount point instead of the
@@ -255,7 +232,7 @@ protected function getGroupAnnotations(): array
{
}
- protected function IsDatabaseAccessAllowed(): bool
+ protected function IsDatabaseAccessAllowed()
{
}
diff --git a/tests/stubs/test_traits_usertrait.php b/tests/stubs/test_traits_usertrait.php
index 6a27afa83..e1644bf17 100644
--- a/tests/stubs/test_traits_usertrait.php
+++ b/tests/stubs/test_traits_usertrait.php
@@ -11,15 +11,14 @@
use OC\User\User;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IUser;
-use OCP\IUserManager;
use OCP\Server;
-use OCP\UserInterface;
class DummyUser extends User {
- public function __construct(
- private string $uid,
- ) {
- parent::__construct($this->uid, null, Server::get(IEventDispatcher::class));
+ private string $uid;
+
+ public function __construct(string $uid) {
+ $this->uid = $uid;
+ parent::__construct($uid, null, Server::get(IEventDispatcher::class));
}
public function getUID(): string {
@@ -32,7 +31,7 @@ public function getUID(): string {
*/
trait UserTrait {
/**
- * @var \Test\Util\User\Dummy|UserInterface
+ * @var \Test\Util\User\Dummy|\OCP\UserInterface
*/
protected $userBackend;