Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[stable28] fix: override iTip Broker to fix several issues #49269

Draft
wants to merge 2 commits into
base: stable28
Choose a base branch
from

Conversation

backportbot[bot]
Copy link

@backportbot backportbot bot commented Nov 13, 2024

Backport of #48583

Requires: #49267

Warning, This backport's changes differ from the original and might be incomplete ⚠️

Todo

  • Review and resolve any conflicts
  • Amend HEAD commit to remove the line stating to skip CI

Learn more about backports at https://docs.nextcloud.com/server/stable/go.php?to=developer-backports.

@kesselb
Copy link
Contributor

kesselb commented Nov 14, 2024

Failing tests look related: https://drone.nextcloud.com/nextcloud/server/57857/9/4

image

@SebastianKrupinski
Copy link
Contributor

Failing tests look related: drone.nextcloud.com/nextcloud/server/57857/9/4

Yeah, I used a reflection trick to test the protected class, which seems to break with php 8.0. Might need to mod the test with a internal class and forward the request to the parent

@kesselb
Copy link
Contributor

kesselb commented Nov 14, 2024

Try invokePrivate from tests/lib/TestCase.php

@SebastianKrupinski
Copy link
Contributor

Try invokePrivate from tests/lib/TestCase.php

That worked! Thanks! Wish I knew about that when I created the test originally.

/**
* Returns an instance of the iTip\Broker.
*/
protected function createITipBroker(): TipBroker {

Check failure

Code scanning / Psalm

MethodSignatureMismatch Error

Method OCA\DAV\CalDAV\Schedule\Plugin::createITipBroker with return type 'OCA\DAV\CalDAV\Schedule\TipBroker' is different to return type 'Sabre\VObject\ITip\Broker' of inherited method Sabre\CalDAV\Schedule\Plugin::createITipBroker
/**
* Returns an instance of the iTip\Broker.
*/
protected function createITipBroker(): TipBroker {

Check failure

Code scanning / Psalm

UndefinedClass Error

Class, interface or enum named OCA\DAV\CalDAV\Schedule\TipBroker does not exist
* Returns an instance of the iTip\Broker.
*/
protected function createITipBroker(): TipBroker {
return new TipBroker();

Check failure

Code scanning / Psalm

UndefinedClass Error

Class, interface or enum named OCA\DAV\CalDAV\Schedule\TipBroker does not exist
$icalMsg = new VCalendar();

foreach ($calendar->select('VTIMEZONE') as $timezone) {
$icalMsg->add(clone $timezone);

Check notice

Code scanning / Psalm

MixedClone Note

Cannot clone mixed
// the attendee was removed and we need to send them a CANCEL message.
// Also If the meeting STATUS property was changed to CANCELLED
// we need to send the attendee a CANCEL message.
if (!$attendee['newInstances'] || $eventInfo['status'] === 'CANCELLED') {

Check notice

Code scanning / Psalm

RiskyTruthyFalsyComparison Note

Operand of type array<never, never>|mixed contains type mixed, which can be falsy and truthy. This can cause possibly unexpected behavior. Use strict comparison instead.
$message->method = $icalMsg->METHOD = 'CANCEL';
$message->significantChange = true;
// clone base event
$event = clone $eventInfo['instances']['master'];

Check notice

Code scanning / Psalm

MixedClone Note

Cannot clone mixed
$oldEventInfo['significantChangeHash'] !== $eventInfo['significantChangeHash'];

foreach ($attendee['newInstances'] as $instanceId => $instanceInfo) {
$currentEvent = clone $eventInfo['instances'][$instanceId];

Check notice

Code scanning / Psalm

MixedClone Note

Cannot clone mixed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3. to review Waiting for reviews
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants