Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
c63b3fc
feat: php 8.2
DeepDiver1975 Sep 18, 2023
d7ce2d3
fix: param declarations and deprecations
DeepDiver1975 Sep 19, 2023
5f85050
chore: move adjustments
DeepDiver1975 Sep 19, 2023
c584437
ci: adjust .drone.star format
phil-davis Sep 20, 2023
770132b
feat: fix phpstan & phan
DeepDiver1975 Sep 25, 2023
9871d34
fix: style & phan
DeepDiver1975 Sep 25, 2023
5bacf49
fix: add oc version back to DefinitionParameter::jsonSerialize
DeepDiver1975 Sep 25, 2023
a3c40f8
fix: more php8.x deprecations
DeepDiver1975 Sep 25, 2023
413db04
fix: more php8.x deprecations
DeepDiver1975 Sep 25, 2023
a236311
fix: preview generation
DeepDiver1975 Sep 26, 2023
3467b2f
fix: more fixes ....
DeepDiver1975 Sep 26, 2023
fd4195f
fix: ShareTest and MemcacheLockingProvider
DeepDiver1975 Sep 27, 2023
c059843
fix: drop ext-apc - this is unused for decades
DeepDiver1975 Sep 27, 2023
38e4f7a
fix: cache tests + usage of TestCase::getUniqueID()
DeepDiver1975 Sep 28, 2023
84948e8
fix: dynamic properties
DeepDiver1975 Sep 28, 2023
e335e99
feat: move php version check to base.php
DeepDiver1975 Sep 29, 2023
f134c61
fix: installation on MySql
DeepDiver1975 Sep 29, 2023
935c3a1
fix: MigratorTest for MySQL
DeepDiver1975 Sep 29, 2023
5f0ad6d
chore: write log messagen an exception to error_log in case of except…
DeepDiver1975 Oct 1, 2023
0d17047
fix: Share20OcsController
DeepDiver1975 Oct 2, 2023
6ee60ad
fix: Dispatcher/DispatcherTest
DeepDiver1975 Oct 2, 2023
d21652b
fix: Http and tests
DeepDiver1975 Oct 2, 2023
73c694e
fix: more deprcations ...
DeepDiver1975 Oct 2, 2023
7776860
fix: UserControllerTest
DeepDiver1975 Oct 4, 2023
d144295
fix: owncloud log command tests
DeepDiver1975 Oct 4, 2023
07c46b0
fix: more deprecation warnings
DeepDiver1975 Oct 4, 2023
cc7318d
chore: :zzz:
DeepDiver1975 Oct 4, 2023
8013d45
chore: migrate to symfony/mailer
DeepDiver1975 Jan 20, 2023
832e1aa
fix: mail logger method signature
DeepDiver1975 Oct 9, 2023
d7e88ec
fix: make OC_image::loadFromBase64 public again
DeepDiver1975 Oct 9, 2023
d13c134
feat: php 8.3
DeepDiver1975 Feb 17, 2026
4c72c78
fix: Query::jsonSerialize() return type
DeepDiver1975 Feb 17, 2026
ce493d7
Revert "Merge pull request #40747 from owncloud/ci-ubuntu22"
DeepDiver1975 Feb 17, 2026
cc52398
fix: php 8.3 is min version
DeepDiver1975 Feb 17, 2026
28a0cd5
fix: QueryLogger::getMicrotime() returns int
DeepDiver1975 Feb 17, 2026
d353063
fix: MySQLPlatform casing and MapperTest
DeepDiver1975 Feb 26, 2026
b16f987
fix: composer update + remove roave/security-advisories for the time …
DeepDiver1975 Feb 26, 2026
ac8c3d9
ci: use php 8.3 in GH workflows as well
DeepDiver1975 Feb 26, 2026
750e54d
fix: SVG preview generation
DeepDiver1975 Feb 26, 2026
7fa0bab
fix: Office preview generation + fixing CryptoSessionDataTest
DeepDiver1975 Feb 26, 2026
576d06b
fix: deprecations in ViewTest
DeepDiver1975 Feb 26, 2026
9b8aaf3
fix: mysql setup
DeepDiver1975 Feb 26, 2026
c3b097c
ci: use owncloudci/core:83 image for federation tests
DeepDiver1975 Mar 2, 2026
7685773
fix: Request::getParams()
DeepDiver1975 Mar 3, 2026
9d91ef7
feat: update firebase/php-jwt 7+ (#41473)
jvillafanez Mar 3, 2026
cbca741
fix: wrong tablenode in acceptance tests
jvillafanez Mar 3, 2026
eac617d
fix: replace deprecated "application->add" with "addCommand"
jvillafanez Mar 3, 2026
3b97d57
fix: add null type to the failing system config set test
jvillafanez Mar 3, 2026
d058345
fix: add default empty value to the list group command
jvillafanez Mar 3, 2026
ee4bc8d
ci: use correct docker image owncloudci/core:php83
DeepDiver1975 Mar 4, 2026
0a68b89
ci: use different docker core images for different code versions as r…
DeepDiver1975 Mar 4, 2026
beb4f96
ci: fix federated server setup
DeepDiver1975 Mar 4, 2026
c1f440b
ci: fix federated server setup
DeepDiver1975 Mar 4, 2026
d92e8a1
test: fix str_replace in WenUISharingContext::thePublicAccessesTheLas…
DeepDiver1975 Mar 4, 2026
7948e28
test: ignore failing test ApiTest::testShareStorageMountPoint() under…
DeepDiver1975 Mar 4, 2026
b62b4d6
fix: change wrong test expectation for previews
jvillafanez Mar 5, 2026
130bba2
ci: disable code coverage due to issues with the cache
DeepDiver1975 Mar 5, 2026
d2c6ab3
test: skip preview test issue 41480
phil-davis Mar 6, 2026
9096c79
fix: federation ci (#41481)
jvillafanez Mar 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 35 additions & 46 deletions .drone.star
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ MINIO_MC_RELEASE_2020_VERSION = "minio/mc:RELEASE.2020-12-10T01-26-17Z"
OC_CI_ALPINE = "owncloudci/alpine:latest"
OC_CI_BAZEL_BUILDIFIER = "owncloudci/bazel-buildifier"
OC_CI_CEPH = "owncloudci/ceph:tag-build-master-jewel-ubuntu-16.04"
OC_CI_CORE_NODEJS = "owncloudci/core:nodejs14"
OC_CI_CORE = "owncloudci/core:php83"
OC_CI_CORE_OLD = "owncloudci/core:nodejs14"
OC_CI_DRONE_SKIP_PIPELINE = "owncloudci/drone-skip-pipeline"
OC_CI_NODEJS = "owncloudci/nodejs:%s"
OC_CI_ORACLE_XE = "owncloudci/oracle-xe:latest"
Expand All @@ -26,7 +27,7 @@ SONARSOURCE_SONAR_SCANNER_CLI = "sonarsource/sonar-scanner-cli:5"
TOOLHIPPIE_CALENS = "toolhippie/calens:latest"
WEBHIPPIE_REDIS = "webhippie/redis:latest"

DEFAULT_PHP_VERSION = "7.4"
DEFAULT_PHP_VERSION = "8.3"
DEFAULT_NODEJS_VERSION = "14"

# minio mc environment variables
Expand Down Expand Up @@ -67,7 +68,7 @@ config = {
DEFAULT_PHP_VERSION,
],
# Gather coverage for all databases except Oracle
"coverage": True,
"coverage": False,
"databases": [],
},
"slowDatabases": {
Expand All @@ -82,18 +83,6 @@ config = {
"oracle",
],
},
"ubuntu22": {
"phpVersions": [
"7.4-ubuntu22.04",
],
# These pipelines are run just to help avoid any obscure regression
# on Ubuntu 22.04. We do not need coverage for this.
"coverage": False,
"databases": [
"mariadb:10.6",
"mariadb:10.11",
],
},
"external-samba": {
"phpVersions": [
DEFAULT_PHP_VERSION,
Expand All @@ -104,7 +93,7 @@ config = {
"externalTypes": [
"samba",
],
"coverage": True,
"coverage": False,
"extraCommandsBeforeTestRun": [
"ls -l /var/cache",
"mkdir /var/cache/samba",
Expand All @@ -124,7 +113,7 @@ config = {
"sftp",
"owncloud",
],
"coverage": True,
"coverage": False,
},
},
"acceptance": {
Expand Down Expand Up @@ -248,10 +237,6 @@ config = {
"testingRemoteSystem": False,
},
"cliEncryption": {
"phpVersions": [
DEFAULT_PHP_VERSION,
"7.4-ubuntu22.04",
],
"suites": [
"cliEncryption",
],
Expand Down Expand Up @@ -417,18 +402,6 @@ config = {
"runAllSuites": True,
"numberOfParts": 8,
},
"apiUbuntu22": {
"phpVersions": [
"7.4-ubuntu22.04",
],
"suites": {
"apiUbuntu22": "apiUbuntu22",
},
"useHttps": False,
"filterTags": "@smokeTest&&~@notifications-app-required&&~@local_storage&&~@files_external-app-required",
"runAllSuites": True,
"numberOfParts": 8,
},
"apiOnSqlite": {
"suites": {
"apiOnSqlite": "apiOnSqlite",
Expand Down Expand Up @@ -949,7 +922,7 @@ def javascript(ctx, withCoverage):
return pipelines

default = {
"coverage": True,
"coverage": False,
"logLevel": "2",
"skip": False,
}
Expand Down Expand Up @@ -1056,7 +1029,7 @@ def phpTests(ctx, testType, withCoverage):
"mariadb:10.6",
"mariadb:10.11",
],
"coverage": True,
"coverage": False,
"includeKeyInMatrixName": False,
"logLevel": "2",
"cephS3": False,
Expand Down Expand Up @@ -1092,7 +1065,7 @@ def phpTests(ctx, testType, withCoverage):
"postgres:10.21",
"oracle",
],
"coverage": True,
"coverage": False,
"includeKeyInMatrixName": False,
"logLevel": "2",
"cephS3": False,
Expand Down Expand Up @@ -1150,15 +1123,18 @@ def phpTests(ctx, testType, withCoverage):
else:
command = "unknown tbd"

# Shorten PHP docker tags that have longer names like 7.4-ubuntu22.04
phpVersionString = phpVersion.replace("-ubuntu", "-u")
# Get the first 3 characters of the PHP version (7.4 or 8.0 etc)
# And use that for constructing the pipeline name
# That helps shorten pipeline names when using owncloud-ci images
# that have longer names like 7.4-ubuntu20.04
phpMinorVersion = phpVersion[0:3]

for db in params["databases"]:
for externalType in params["externalTypes"]:
keyString = "-" + category if params["includeKeyInMatrixName"] else ""
filesExternalType = externalType if externalType != "none" else ""
externalNameString = "-" + externalType if externalType != "none" else ""
name = "%s%s-php%s-%s%s" % (testType, keyString, phpVersionString, getShortDbNameAndVersion(db), externalNameString)
name = "%s%s-php%s-%s%s" % (testType, keyString, phpMinorVersion, getShortDbNameAndVersion(db), externalNameString)
maxLength = 50
nameLength = len(name)
if nameLength > maxLength:
Expand Down Expand Up @@ -1336,7 +1312,7 @@ def acceptance(ctx):
"browsers": ["chrome"],
"phpVersions": [DEFAULT_PHP_VERSION],
"databases": ["mariadb:10.2"],
"federatedPhpVersion": DEFAULT_PHP_VERSION,
"federatedPhpVersion": 7.4,
"federatedServerNeeded": False,
"federatedDb": "",
"filterTags": "",
Expand Down Expand Up @@ -1423,8 +1399,11 @@ def acceptance(ctx):
for federatedServerVersion in params["federatedServerVersions"]:
for browser in params["browsers"]:
for phpVersion in params["phpVersions"]:
# Shorten PHP docker tags that have longer names like 7.4-ubuntu22.04
phpVersionString = phpVersion.replace("-ubuntu", "-u")
# Get the first 3 characters of the PHP version (7.4 or 8.0 etc)
# And use that for constructing the pipeline name
# That helps shorten pipeline names when using owncloud-ci images
# that have longer names like 7.4-ubuntu20.04
phpMinorVersion = phpVersion[0:3]
for db in params["databases"]:
for runPart in range(1, params["numberOfParts"] + 1):
debugPartsEnabled = (len(params["skipExceptParts"]) != 0)
Expand All @@ -1446,7 +1425,7 @@ def acceptance(ctx):
keyString = "-" + category if params["includeKeyInMatrixName"] else ""
partString = "" if params["numberOfParts"] == 1 else "-%d-%d" % (params["numberOfParts"], runPart)
federatedServerVersionString = "-" + federatedServerVersion.replace("daily-", "").replace("-qa", "") if (federatedServerVersion != "") else ""
name = "%s%s%s%s%s-%s-php%s" % (alternateSuiteName, keyString, partString, federatedServerVersionString, browserString, getShortDbNameAndVersion(db), phpVersionString)
name = "%s%s%s%s%s-%s-php%s" % (alternateSuiteName, keyString, partString, federatedServerVersionString, browserString, getShortDbNameAndVersion(db), phpMinorVersion)
maxLength = 50
nameLength = len(name)
if nameLength > maxLength:
Expand Down Expand Up @@ -2265,6 +2244,10 @@ def installServer(phpVersion, db, logLevel = "2", ssl = False, federatedServerNe
}]

def installAndConfigureFederated(ctx, federatedServerVersion, phpVersion, logLevel, protocol, db, dbSuffix = "fed"):
if (federatedServerVersion == "10.9.1"):
phpVersion = 7.4
if (federatedServerVersion == "latest"):
phpVersion = 7.4
return [
installFederated(ctx, federatedServerVersion, db, dbSuffix),
configureFederated(phpVersion, logLevel, protocol),
Expand Down Expand Up @@ -2308,9 +2291,15 @@ def installFederated(ctx, federatedServerVersion, db, dbSuffix = "fed"):
else:
installerSettings["version"] = federatedServerVersion

image = OC_CI_CORE
if (federatedServerVersion == "10.9.1"):
image = OC_CI_CORE_OLD
if (federatedServerVersion == "latest"):
image = OC_CI_CORE_OLD

return {
"name": "install-federated",
"image": OC_CI_CORE_NODEJS,
"image": image,
"settings": installerSettings,
}

Expand Down Expand Up @@ -2495,7 +2484,7 @@ def installCoreFromTarball(version, db, logLevel = "2", ssl = False, federatedSe

return [{
"name": "install-tarball",
"image": OC_CI_CORE_NODEJS,
"image": OC_CI_CORE,
"settings": {
"version": version,
"core_path": pathOfServerUnderTest,
Expand Down Expand Up @@ -2549,7 +2538,7 @@ def installFederatedFromTarball(federatedServerVersion, phpVersion, logLevel, pr
return [
{
"name": "install-federated",
"image": OC_CI_CORE_NODEJS,
"image": OC_CI_CORE,
"settings": {
"version": federatedServerVersion,
"core_path": dir["federated"],
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@ jobs:
name: PHP Unit
uses: ./.github/workflows/php-unit.yml
with:
php-versions: '["7.4"]'
php-versions: '["8.3"]'
2 changes: 1 addition & 1 deletion .github/workflows/lint-and-codestyle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-version: ["7.4"]
php-version: ["8.3"]
steps:
- name: Checkout code
uses: actions/checkout@v4
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/php-unit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ jobs:
php: ${{ fromJSON(inputs.php-versions) }}
database: [sqlite]
include:
- php: "7.4"
- php: "8.3"
database: "mysql:8.0"
- php: "7.4"
- php: "8.3"
database: "mariadb:10.6"
- php: "7.4"
- php: "8.3"
database: "mariadb:10.11"
- php: "7.4"
- php: "8.3"
database: "postgres:10.21"

services:
Expand Down
23 changes: 5 additions & 18 deletions apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,21 +41,12 @@
* @license http://sabre.io/license/ Modified BSD License
*/
class IMipPlugin extends SabreIMipPlugin {
/** @var IMailer */
private $mailer;

/** @var ILogger */
private $logger;

/** @var IRequest */
private $request;
private IMailer $mailer;
private ILogger $logger;
private IRequest $request;

/**
* Creates the email handler.
*
* @param IMailer $mailer
* @param ILogger $logger
* @param IRequest $request
*/
public function __construct(IMailer $mailer, ILogger $logger, IRequest $request) {
parent::__construct('');
Expand Down Expand Up @@ -123,14 +114,10 @@ public function schedule(ITip\Message $iTipMessage) {
->setFrom([$sender => $senderName])
->setTo([$recipient => $recipientName])
->setSubject($subject)
->setBody($iTipMessage->message->serialize(), $contentType);
->attach($iTipMessage->message->serialize(), "event.ics", $contentType);
try {
$failed = $this->mailer->send($message);
$this->mailer->send($message);
$iTipMessage->scheduleStatus = '1.1; Scheduling message is sent via iMip';
if ($failed) {
$this->logger->error('Unable to deliver message to {failed}', ['app' => 'dav', 'failed' => \implode(', ', $failed)]);
$iTipMessage->scheduleStatus = '5.0; EMail delivery failed';
}
} catch (\Exception $ex) {
$this->logger->logException($ex, ['app' => 'dav']);
$iTipMessage->scheduleStatus = '5.0; EMail delivery failed';
Expand Down
10 changes: 5 additions & 5 deletions apps/dav/lib/Connector/Sabre/Principal.php
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,10 @@ public function getPrincipalsByPrefix($prefixPath) {
* getPrincipalsByPrefix.
*
* @param string $path
* @return array
* @return array|null
*/
public function getPrincipalByPath($path) {
list($prefix, $name) = \Sabre\Uri\split($path);
public function getPrincipalByPath($path): ?array {
[$prefix, $name] = \Sabre\Uri\split($path);

if ($prefix === $this->principalPrefix) {
$user = $this->userManager->get($name);
Expand Down Expand Up @@ -219,12 +219,12 @@ public function findByUri($uri, $principalPrefix) {
* @param IUser $user
* @return array
*/
protected function userToPrincipal($user) {
protected function userToPrincipal(IUser $user): array {
$userId = $user->getUID();
$displayName = $user->getDisplayName();
$principal = [
'uri' => $this->principalPrefix . '/' . $userId,
'{DAV:}displayname' => $displayName === null ? $userId : $displayName,
'{DAV:}displayname' => $displayName,
];

$email = $user->getEMailAddress();
Expand Down
1 change: 0 additions & 1 deletion apps/dav/lib/Server.php
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,6 @@ public function __construct(IRequest $request, $baseUri) {
$acl->principalCollectionSet = [
'principals/users', 'principals/groups'
];
$acl->defaultUsernamePath = 'principals/users';
$this->server->addPlugin($acl);
}

Expand Down
7 changes: 5 additions & 2 deletions apps/dav/lib/Upload/AssemblyStream.php
Original file line number Diff line number Diff line change
Expand Up @@ -248,9 +248,12 @@ public static function wrap(array $nodes) {
'assembly' => [
'nodes' => $nodes]
]);
\stream_wrapper_register('assembly', '\OCA\DAV\Upload\AssemblyStream');
$existed = \in_array("assembly", stream_get_wrappers());
if (!$existed) {
\stream_wrapper_register('assembly', __CLASS__);
}
try {
$wrapped = \fopen('assembly://', 'r', null, $context);
$wrapped = \fopen('assembly://', 'r', false, $context);
} catch (\BadMethodCallException $e) {
\stream_wrapper_unregister('assembly');
throw $e;
Expand Down
4 changes: 2 additions & 2 deletions apps/dav/tests/unit/CalDAV/CalendarTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ public function setUp(): void {
$this->l10n
->expects($this->any())
->method('t')
->will($this->returnCallback(function ($text, $parameters = []) {
->willReturnCallback(function ($text, $parameters = []) {
return \vsprintf($text, $parameters);
}));
});
}

public function testDelete() {
Expand Down
Loading