diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml
index b4c6deee06785474888d2757ba7e70903da0086e..b9412e7bed746d178479074a07c410b97ced0093 100644
--- a/.github/workflows/package.yml
+++ b/.github/workflows/package.yml
@@ -4,7 +4,7 @@ on: [push, pull_request]
jobs:
release-tarball:
- runs-on: ubuntu-18.04
+ runs-on: ubuntu-latest
name: Build release tarball
steps:
- name: Checkout
@@ -22,8 +22,8 @@ jobs:
coverage: none
- name: Install Krankerl
run: |
- wget https://github.com/ChristophWurst/krankerl/releases/download/v0.12.3/krankerl_0.12.3_amd64.deb
- sudo dpkg -i krankerl_0.12.3_amd64.deb
+ wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
+ sudo dpkg -i krankerl_0.14.0_amd64.deb
- name: Package app
run: krankerl package
- uses: actions/upload-artifact@v2
diff --git a/.github/workflows/php-test.yml b/.github/workflows/php-test.yml
index b8d2a931098e23926874aa3c977268bf8975cc1d..7fef20f0172016e4a6dfe6c59810e1efaedffb30 100644
--- a/.github/workflows/php-test.yml
+++ b/.github/workflows/php-test.yml
@@ -20,12 +20,6 @@ jobs:
nextcloud-versions: 'stable24'
- php-versions: '8.1'
nextcloud-versions: 'stable24'
- - php-versions: '7.4'
- nextcloud-versions: 'master'
- - php-versions: '8.0'
- nextcloud-versions: 'master'
- - php-versions: '8.1'
- nextcloud-versions: 'master'
name: php${{ matrix.php-versions }} on ${{ matrix.nextcloud-versions }} unit tests
env:
CI: true
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b64cf20c88521b7f26aff72b189af1bcaf3ced32..bbb124b9609e75df0d056b73d6a9c3771197c545 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,10 @@
# Changelog
+## 3.5.5 - 2023-02-01
+### Fixed
+- Error handling in booking controller
+
## 3.5.4 - 2022-12-22
### Fixed
- Handling of Email VALARMs
diff --git a/appinfo/info.xml b/appinfo/info.xml
index 195c859c98ff72c11baf5cbff4251033fa851f9b..2f1757145ac1a19f85fa31fcb9080b8bb21363ef 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -15,7 +15,7 @@
* ☑️ Tasks! See tasks with a due date directly in the calendar
* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.
]]>
- 3.5.4
+ 3.5.5
agpl
Anna Larch
Nextcloud Groupware Team
diff --git a/lib/Controller/BookingController.php b/lib/Controller/BookingController.php
index a8a564c2decb1e42ed527b368f2fadd1a80e8c28..4339c14308b068fef05f4aec240632b2014cb37d 100644
--- a/lib/Controller/BookingController.php
+++ b/lib/Controller/BookingController.php
@@ -42,6 +42,7 @@ use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\DB\Exception;
+use OCP\IConfig;
use OCP\IRequest;
use OCP\Mail\IMailer;
use Psr\Log\LoggerInterface;
@@ -68,6 +69,7 @@ class BookingController extends Controller {
/** @var IMailer */
private $mailer;
+ private IConfig $systemConfig;
public function __construct(string $appName,
IRequest $request,
@@ -77,7 +79,8 @@ class BookingController extends Controller {
AppointmentConfigService $appointmentConfigService,
URLGenerator $urlGenerator,
LoggerInterface $logger,
- IMailer $mailer) {
+ IMailer $mailer,
+ IConfig $systemConfig) {
parent::__construct($appName, $request);
$this->bookingService = $bookingService;
@@ -87,6 +90,7 @@ class BookingController extends Controller {
$this->urlGenerator = $urlGenerator;
$this->logger = $logger;
$this->mailer = $mailer;
+ $this->systemConfig = $systemConfig;
}
/**
@@ -191,7 +195,17 @@ class BookingController extends Controller {
return JsonResponse::fail(null, Http::STATUS_UNPROCESSABLE_ENTITY);
} catch (ServiceException $e) {
$this->logger->error($e->getMessage(), ['exception' => $e]);
- return JsonResponse::errorFromThrowable($e, $e->getHttpCode() ?? Http::STATUS_INTERNAL_SERVER_ERROR);
+
+ if ($this->systemConfig->getSystemValue('debug', false)) {
+ return JsonResponse::errorFromThrowable($e, $e->getHttpCode() ?? Http::STATUS_INTERNAL_SERVER_ERROR,
+ ['debug' => true,]
+ );
+ }
+
+ return JsonResponse::error(
+ 'Server error',
+ $e->getHttpCode() ?? Http::STATUS_INTERNAL_SERVER_ERROR
+ );
}
return JsonResponse::success($booking);
diff --git a/package-lock.json b/package-lock.json
index 48205b81d5428790b9b524984f6a43ee0d6474c7..bed327aa5683e9d96001708a90f83f2153b7a631 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "calendar",
- "version": "3.5.4",
+ "version": "3.5.5",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "calendar",
- "version": "3.5.4",
+ "version": "3.5.5",
"license": "agpl",
"dependencies": {
"@fullcalendar/core": "5.11.0",
diff --git a/package.json b/package.json
index b4067d429cffeeee6394285c13d2007717319ad3..fc97e1175fbd3f0a1145a2572b0ea20da9bea09c 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "calendar",
"description": "A calendar app for Nextcloud. Easily sync events from various devices, share and edit them online.",
- "version": "3.5.4",
+ "version": "3.5.5",
"author": "Georg Ehrke ",
"contributors": [
"Georg Ehrke ",
diff --git a/tests/php/unit/Controller/BookingControllerTest.php b/tests/php/unit/Controller/BookingControllerTest.php
index 529cc2f49fbaf9fc9a6c0134ba650e0c96280e7f..5c60cc283d75551ac95b7c6e47b222f88af5d6f8 100644
--- a/tests/php/unit/Controller/BookingControllerTest.php
+++ b/tests/php/unit/Controller/BookingControllerTest.php
@@ -39,6 +39,7 @@ use OCP\AppFramework\Services\IInitialState;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\Calendar\ICalendarQuery;
use OCP\Contacts\IManager;
+use OCP\IConfig;
use OCP\IInitialStateService;
use OCP\IRequest;
use OCP\IUser;
@@ -88,6 +89,9 @@ class BookingControllerTest extends TestCase {
/** @var IMailer|MockObject */
private $mailer;
+ /** @var IConfig|MockObject */
+ private $systemConfig;
+
protected function setUp():void {
parent::setUp();
@@ -104,6 +108,7 @@ class BookingControllerTest extends TestCase {
$this->urlGenerator = $this->createMock(URLGenerator::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->mailer = $this->createMock(IMailer::class);
+ $this->systemConfig = $this->createMock(IConfig::class);
$this->controller = new BookingController(
$this->appName,
$this->request,
@@ -113,7 +118,8 @@ class BookingControllerTest extends TestCase {
$this->apptService,
$this->urlGenerator,
$this->logger,
- $this->mailer
+ $this->mailer,
+ $this->systemConfig,
);
}
@@ -255,6 +261,10 @@ class BookingControllerTest extends TestCase {
->method('book')
->with($config, 1, 1, 'Europe/Berlin', 'Test', $email, 'Test')
->willThrowException(new ServiceException());
+ $this->systemConfig->expects(self::once())
+ ->method('getSystemValue')
+ ->with('debug')
+ ->willReturn(false);
$this->controller->bookSlot(1, 1, 1, 'Test', $email, 'Test', 'Europe/Berlin');
}