From fbd160bf71d72c32eddd8ee61de06e6c98426a87 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 9 Jun 2020 18:04:55 +0200 Subject: [PATCH] Fixed user deletion --- Core/Frameworks/Baikal/Model/Calendar.php | 7 +++++-- Core/Frameworks/Baikal/Model/Calendar/Calendar.php | 7 ++++--- Core/Frameworks/Baikal/Model/User.php | 4 +++- Core/Frameworks/BaikalAdmin/Controller/Users.php | 1 + 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Core/Frameworks/Baikal/Model/Calendar.php b/Core/Frameworks/Baikal/Model/Calendar.php index 8b67598..93b654e 100644 --- a/Core/Frameworks/Baikal/Model/Calendar.php +++ b/Core/Frameworks/Baikal/Model/Calendar.php @@ -257,7 +257,8 @@ class Calendar extends \Flake\Core\Model\Db { } function destroy() { - if (!$this->hasInstances()) { + $hasInstances = $this->hasInstances(); + if (!$hasInstances) { $oEvents = $this->getEventsBaseRequester()->execute(); foreach ($oEvents as $event) { $event->destroy(); @@ -265,6 +266,8 @@ class Calendar extends \Flake\Core\Model\Db { } parent::destroy(); - $this->oCalendar->destroy(); + if (!$hasInstances) { + $this->oCalendar->destroy(); + } } } diff --git a/Core/Frameworks/Baikal/Model/Calendar/Calendar.php b/Core/Frameworks/Baikal/Model/Calendar/Calendar.php index 8c2264e..364a6b7 100644 --- a/Core/Frameworks/Baikal/Model/Calendar/Calendar.php +++ b/Core/Frameworks/Baikal/Model/Calendar/Calendar.php @@ -40,7 +40,7 @@ class Calendar extends \Flake\Core\Model\Db { $rSql = $GLOBALS["DB"]->exec_SELECTquery( "count(*)", "calendarinstances", - "calendarid" . "='" . $this->aData["calendarid"] . "'" + "calendarid" . "='" . $this->aData["id"] . "'" ); if (($aRs = $rSql->fetch()) === false) { @@ -53,8 +53,9 @@ class Calendar extends \Flake\Core\Model\Db { } function destroy() { - if (!$this->hasInstances()) { - parent::destroy(); + if ($this->hasInstances()) { + throw new \Exception("Trying to destroy a calendar with instances"); } + parent::destroy(); } } diff --git a/Core/Frameworks/Baikal/Model/User.php b/Core/Frameworks/Baikal/Model/User.php index e2e56e1..addb562 100644 --- a/Core/Frameworks/Baikal/Model/User.php +++ b/Core/Frameworks/Baikal/Model/User.php @@ -181,7 +181,9 @@ class User extends \Flake\Core\Model\Db { # TODO: delete all related resources (principals, calendars, calendar events, contact books and contacts) # Destroying identity principal - $this->oIdentityPrincipal->destroy(); + if ($this->oIdentityPrincipal != null) { + $this->oIdentityPrincipal->destroy(); + } $oCalendars = $this->getCalendarsBaseRequester()->execute(); foreach ($oCalendars as $calendar) { diff --git a/Core/Frameworks/BaikalAdmin/Controller/Users.php b/Core/Frameworks/BaikalAdmin/Controller/Users.php index b1401b5..9c6f2cc 100644 --- a/Core/Frameworks/BaikalAdmin/Controller/Users.php +++ b/Core/Frameworks/BaikalAdmin/Controller/Users.php @@ -165,6 +165,7 @@ class Users extends \Flake\Core\Controller { $oUser->destroy(); } catch (\Exception $e) { # user is already deleted; silently discarding + error_log($e); } # Redirecting to admin home