Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
27 changes: 22 additions & 5 deletions Events.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

namespace humhub\modules\mail;

use humhub\commands\IntegrityController;
use humhub\modules\mail\helpers\Url;
use humhub\modules\mail\models\Config;
use humhub\modules\mail\models\Message;
Expand Down Expand Up @@ -35,14 +36,15 @@ class Events
*/
public static function onIntegrityCheck($event)
{
/* @var IntegrityController $integrityController */
$integrityController = $event->sender;

$integrityController->showTestHeadline("Mail Module (" . Message::find()->count() . " conversations)");

try {
foreach (Message::find()->each() as $message) {
/* @var $message Message */
if (!$message->getAuthor()->count()) {
if (!$message->getAuthor()->exists()) {
if ($integrityController->showFix("Deleting conversation id " . $message->id . " without existing author!")) {
$message->delete();
}
Expand All @@ -53,12 +55,12 @@ public static function onIntegrityCheck($event)

foreach (MessageEntry::find()->each() as $messageEntry) {
/* @var $messageEntry MessageEntry */
if (!$messageEntry->getUser()->count()) {
if (!$messageEntry->getUser()->exists()) {
if ($integrityController->showFix("Deleting message entry id " . $messageEntry->id . " without existing user!")) {
$messageEntry->delete();
}
}
if (!$messageEntry->message) {
if (!$messageEntry->getMessage()->exists()) {
if ($integrityController->showFix("Deleting message entry id " . $messageEntry->id . " without existing conversation!")) {
$messageEntry->delete();
}
Expand All @@ -69,22 +71,37 @@ public static function onIntegrityCheck($event)

foreach (UserMessage::find()->each() as $userMessage) {
/* @var $userMessage UserMessage */
if (!$userMessage->getUser()->count()) {
if (!$userMessage->getUser()->exists()) {
if ($integrityController->showFix("Deleting user message id " . $userMessage->message_id . " without existing user!")) {
$userMessage->delete();
}
}
if (!$userMessage->getMessage()->exists()) {
if ($integrityController->showFix("Deleting user message id " . $userMessage->message_id . " without existing conversation!")) {
$userMessage->delete();
}
}
}

$integrityController->showTestHeadline("Mail Module (" . UserMessageTag::find()->count() . " user message tag entries)");

foreach (UserMessageTag::find()->each() as $messageTag) {
/* @var $messageTag UserMessageTag */
if (!$messageTag->getUser()->count()) {
if (!$messageTag->getUser()->exists()) {
if ($integrityController->showFix("Deleting user tag id " . $messageTag->id . " without existing user!")) {
$messageTag->delete();
}
}
if (!$messageTag->getMessage()->exists()) {
if ($integrityController->showFix("Deleting user tag id " . $messageTag->id . " without existing conversation!")) {
$messageTag->delete();
}
}
if (!$messageTag->getTag()->exists()) {
if ($integrityController->showFix("Deleting user tag id " . $messageTag->id . " without existing tag!")) {
$messageTag->delete();
}
}
}
} catch (\Throwable $e) {
Yii::error($e);
Expand Down
1 change: 1 addition & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Changelog
- Enh #466: Convert swagger docs to OpenAPI 3.0
- Fix #469: In mail notifications, use core button for "Reply now", to allow auto-contrast
- Fix #470: Email inline style from Sass variables, e.g. when overwriting `$mail-font-family` in the Custom SCSS field
- Fix #404: Fix wrong user message records

3.3.5 (September 30, 2025)
--------------------------
Expand Down
8 changes: 8 additions & 0 deletions models/UserMessageTag.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,14 @@ public static function create(UserMessage $message, MessageTag $userTag)
(new static(['message_id' => $message->message_id, 'user_id' => $message->user_id, 'tag_id' => $userTag->id]))->save();
}

/**
* @return ActiveQuery
*/
public function getMessage()
{
return $this->hasOne(Message::class, ['id' => 'message_id']);
}

/**
* @return ActiveQuery
*/
Expand Down
Loading