--- /dev/null
+<?php
+
+namespace wcf\system\user\notification\event;
+
+/**
+ * Provides a default implementation for user notifications about comment responses.
+ *
+ * @author Marcel Werk
+ * @copyright 2001-2023 WoltLab GmbH
+ * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @since 6.0
+ */
+abstract class AbstractCommentResponseUserNotificationEvent extends AbstractSharedUserNotificationEvent
+{
+ /**
+ * @inheritDoc
+ */
+ protected $stackable = true;
+
+ /**
+ * @inheritDoc
+ */
+ public function getTitle(): string
+ {
+ $count = \count($this->getAuthors());
+ if ($count > 1) {
+ return $this->getLanguage()->getDynamicVariable('wcf.user.notification.comment.response.title.stacked', [
+ 'count' => $count,
+ 'timesTriggered' => $this->notification->timesTriggered,
+ 'typeName' => $this->getTypeName(),
+ ]);
+ }
+
+ return $this->getLanguage()->getDynamicVariable('wcf.user.notification.comment.response.title', [
+ 'typeName' => $this->getTypeName(),
+ ]);
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getEmailTitle()
+ {
+ $count = \count($this->getAuthors());
+ if ($count > 1) {
+ return $this->getTitle();
+ }
+
+ return $this->getLanguage()->getDynamicVariable('wcf.user.notification.comment.response.mail.title', [
+ 'objectTitle' => $this->getObjectTitle(),
+ 'typeName' => $this->getTypeName(),
+ ]);
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getEventHash()
+ {
+ return \sha1($this->eventID . '-' . $this->getUserNotificationObject()->objectID);
+ }
+
+ /**
+ * Returns the name of the type to which the comment belong.
+ */
+ protected abstract function getTypeName(): string;
+
+ /**
+ * Returns the title of the object to which the comment belong.
+ */
+ protected abstract function getObjectTitle(): string;
+}
*
* @method CommentResponseUserNotificationObject getUserNotificationObject()
*/
-class ArticleCommentResponseOwnerUserNotificationEvent extends AbstractSharedUserNotificationEvent implements
+class ArticleCommentResponseOwnerUserNotificationEvent extends AbstractCommentResponseUserNotificationEvent implements
ITestableUserNotificationEvent
{
use TTestableCommentResponseUserNotificationEvent;
use TTestableArticleCommentUserNotificationEvent;
- /**
- * @inheritDoc
- */
- protected $stackable = true;
-
/**
* @inheritDoc
*/
CommentRuntimeCache::getInstance()->cacheObjectID($this->getUserNotificationObject()->commentID);
}
- /**
- * @inheritDoc
- */
- public function getTitle(): string
- {
- $count = \count($this->getAuthors());
- if ($count > 1) {
- return $this->getLanguage()->getDynamicVariable(
- 'wcf.user.notification.articleComment.responseOwner.title.stacked',
- [
- 'count' => $count,
- 'timesTriggered' => $this->notification->timesTriggered,
- ]
- );
- }
-
- return $this->getLanguage()->get('wcf.user.notification.articleComment.responseOwner.title');
- }
-
/**
* @inheritDoc
*/
/**
* @inheritDoc
*/
- public function getEventHash()
+ protected function getTypeName(): string
+ {
+ return $this->getLanguage()->get('wcf.user.recentActivity.com.woltlab.wcf.article.recentActivityEvent');
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected function getObjectTitle(): string
{
- return \sha1($this->eventID . '-' . $this->notification->objectID);
+ return ViewableArticleContentRuntimeCache::getInstance()
+ ->getObject($this->additionalData['objectID'])->getTitle();
}
}
*
* @method CommentResponseUserNotificationObject getUserNotificationObject()
*/
-class ArticleCommentResponseUserNotificationEvent extends AbstractSharedUserNotificationEvent implements
+class ArticleCommentResponseUserNotificationEvent extends AbstractCommentResponseUserNotificationEvent implements
ITestableUserNotificationEvent
{
use TTestableCommentResponseUserNotificationEvent;
use TTestableArticleCommentUserNotificationEvent;
- /**
- * @inheritDoc
- */
- protected $stackable = true;
-
/**
* @inheritDoc
*/
CommentRuntimeCache::getInstance()->cacheObjectID($this->getUserNotificationObject()->commentID);
}
- /**
- * @inheritDoc
- */
- public function getTitle(): string
- {
- $count = \count($this->getAuthors());
- if ($count > 1) {
- return $this->getLanguage()->getDynamicVariable(
- 'wcf.user.notification.articleComment.response.title.stacked',
- [
- 'count' => $count,
- 'timesTriggered' => $this->notification->timesTriggered,
- ]
- );
- }
-
- return $this->getLanguage()->get('wcf.user.notification.articleComment.response.title');
- }
-
/**
* @inheritDoc
*/
/**
* @inheritDoc
*/
- public function getEventHash()
+ protected function getTypeName(): string
+ {
+ return $this->getLanguage()->get('wcf.user.recentActivity.com.woltlab.wcf.article.recentActivityEvent');
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected function getObjectTitle(): string
{
- return \sha1($this->eventID . '-' . $this->notification->objectID);
+ return ViewableArticleContentRuntimeCache::getInstance()
+ ->getObject($this->additionalData['objectID'])->getTitle();
}
}
*
* @method CommentResponseUserNotificationObject getUserNotificationObject()
*/
-class ModerationQueueCommentResponseUserNotificationEvent extends AbstractSharedUserNotificationEvent implements
+class ModerationQueueCommentResponseUserNotificationEvent extends AbstractCommentResponseUserNotificationEvent implements
ITestableUserNotificationEvent
{
use TTestableCommentResponseUserNotificationEvent;
protected $moderationQueueLoaded = false;
/**
- * @inheritDoc
+ * language item for the type name
+ * @var string|null
*/
- protected $stackable = true;
+ protected $typeName;
/**
* @inheritDoc
return $this->languageItemPrefix;
}
- /**
- * @inheritDoc
- */
- public function getTitle(): string
- {
- $count = \count($this->getAuthors());
- if ($count > 1) {
- return $this->getLanguage()->getDynamicVariable(
- $this->getLanguageItemPrefix() . '.commentResponse.title.stacked',
- [
- 'count' => $count,
- 'timesTriggered' => $this->notification->timesTriggered,
- ]
- );
- }
-
- return $this->getLanguage()->get($this->getLanguageItemPrefix() . '.commentResponse.title');
- }
-
/**
* @inheritDoc
*/
'objectTypeID' => CommentHandler::getInstance()->getObjectTypeID('com.woltlab.wcf.moderation.queue'),
];
}
+
+ /**
+ * @inheritDoc
+ */
+ protected function getTypeName(): string
+ {
+ if ($this->typeName === null) {
+ $moderationHandler = ObjectTypeCache::getInstance()
+ ->getObjectType($this->getModerationQueue()->objectTypeID)
+ ->getProcessor();
+ $this->typeName = $this->getLanguage()->get($moderationHandler->getCommentNotificationTypeNameLanguageItem());
+ }
+
+ return $this->typeName;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected function getObjectTitle(): string
+ {
+ return $this->moderationQueue->getTitle();
+ }
}
*
* @method CommentResponseUserNotificationObject getUserNotificationObject()
*/
-class PageCommentResponseOwnerUserNotificationEvent extends AbstractSharedUserNotificationEvent implements
+class PageCommentResponseOwnerUserNotificationEvent extends AbstractCommentResponseUserNotificationEvent implements
ITestableUserNotificationEvent
{
use TTestableCommentResponseUserNotificationEvent;
use TTestablePageUserNotificationEvent;
- /**
- * @inheritDoc
- */
- protected $stackable = true;
-
/**
* @inheritDoc
*/
CommentRuntimeCache::getInstance()->cacheObjectID($this->getUserNotificationObject()->commentID);
}
- /**
- * @inheritDoc
- */
- public function getTitle(): string
- {
- $count = \count($this->getAuthors());
- if ($count > 1) {
- return $this->getLanguage()->getDynamicVariable(
- 'wcf.user.notification.pageComment.responseOwner.title.stacked',
- [
- 'count' => $count,
- 'timesTriggered' => $this->notification->timesTriggered,
- ]
- );
- }
-
- return $this->getLanguage()->get('wcf.user.notification.pageComment.responseOwner.title');
- }
-
/**
* @inheritDoc
*/
/**
* @inheritDoc
*/
- public function getEventHash()
+ protected function getTypeName(): string
+ {
+ return $this->getLanguage()->get('wcf.search.object.com.woltlab.wcf.page');
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected function getObjectTitle(): string
{
- return \sha1($this->eventID . '-' . $this->notification->objectID);
+ return PageCache::getInstance()->getPage($this->additionalData['objectID'])->getTitle();
}
/**
*
* @method CommentResponseUserNotificationObject getUserNotificationObject()
*/
-class PageCommentResponseUserNotificationEvent extends AbstractSharedUserNotificationEvent implements
+class PageCommentResponseUserNotificationEvent extends AbstractCommentResponseUserNotificationEvent implements
ITestableUserNotificationEvent
{
use TTestableCommentResponseUserNotificationEvent;
use TTestablePageUserNotificationEvent;
- /**
- * @inheritDoc
- */
- protected $stackable = true;
-
/**
* @inheritDoc
*/
CommentRuntimeCache::getInstance()->cacheObjectID($this->getUserNotificationObject()->commentID);
}
- /**
- * @inheritDoc
- */
- public function getTitle(): string
- {
- $count = \count($this->getAuthors());
- if ($count > 1) {
- return $this->getLanguage()->getDynamicVariable(
- 'wcf.user.notification.pageComment.response.title.stacked',
- [
- 'count' => $count,
- 'timesTriggered' => $this->notification->timesTriggered,
- ]
- );
- }
-
- return $this->getLanguage()->get('wcf.user.notification.pageComment.response.title');
- }
-
/**
* @inheritDoc
*/
/**
* @inheritDoc
*/
- public function getEventHash()
+ protected function getTypeName(): string
+ {
+ return $this->getLanguage()->get('wcf.search.object.com.woltlab.wcf.page');
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected function getObjectTitle(): string
{
- return \sha1($this->eventID . '-' . $this->notification->objectID);
+ return PageCache::getInstance()->getPage($this->additionalData['objectID'])->getTitle();
}
/**
*
* @method CommentResponseUserNotificationObject getUserNotificationObject()
*/
-class UserProfileCommentResponseOwnerUserNotificationEvent extends AbstractSharedUserNotificationEvent implements
+class UserProfileCommentResponseOwnerUserNotificationEvent extends AbstractCommentResponseUserNotificationEvent implements
ITestableUserNotificationEvent
{
use TTestableCommentResponseUserNotificationEvent;
- /**
- * @inheritDoc
- */
- protected $stackable = true;
-
/**
* @inheritDoc
*/
]);
}
- /**
- * @inheritDoc
- */
- public function getTitle(): string
- {
- $count = \count($this->getAuthors());
- if ($count > 1) {
- return $this->getLanguage()->getDynamicVariable(
- 'wcf.user.notification.commentResponseOwner.title.stacked',
- [
- 'count' => $count,
- 'timesTriggered' => $this->notification->timesTriggered,
- ]
- );
- }
-
- return $this->getLanguage()->get('wcf.user.notification.commentResponseOwner.title');
- }
-
/**
* @inheritDoc
*/
/**
* @inheritDoc
*/
- public function getEventHash()
+ protected function getTypeName(): string
+ {
+ return $this->getLanguage()->get('wcf.user.profile.menu.wall');
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected function getObjectTitle(): string
{
- return \sha1($this->eventID . '-' . $this->getUserNotificationObject()->commentID);
+ return UserProfileRuntimeCache::getInstance()->getObject($this->additionalData['objectID'])->username;
}
/**
*
* @method CommentResponseUserNotificationObject getUserNotificationObject()
*/
-class UserProfileCommentResponseUserNotificationEvent extends AbstractSharedUserNotificationEvent implements
+class UserProfileCommentResponseUserNotificationEvent extends AbstractCommentResponseUserNotificationEvent implements
ITestableUserNotificationEvent
{
use TTestableCommentResponseUserNotificationEvent;
- /**
- * @inheritDoc
- */
- protected $stackable = true;
-
/**
* @inheritDoc
*/
UserProfileRuntimeCache::getInstance()->cacheObjectID($this->additionalData['objectID']);
}
- /**
- * @inheritDoc
- */
- public function getTitle(): string
- {
- $count = \count($this->getAuthors());
- if ($count > 1) {
- return $this->getLanguage()->getDynamicVariable('wcf.user.notification.commentResponse.title.stacked', [
- 'count' => $count,
- 'timesTriggered' => $this->notification->timesTriggered,
- ]);
- }
-
- return $this->getLanguage()->get('wcf.user.notification.commentResponse.title');
- }
-
/**
* @inheritDoc
*/
/**
* @inheritDoc
*/
- public function getEventHash()
+ protected function getTypeName(): string
+ {
+ return $this->getLanguage()->get('wcf.user.profile.menu.wall');
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected function getObjectTitle(): string
{
- return \sha1($this->eventID . '-' . $this->getUserNotificationObject()->commentID);
+ return UserProfileRuntimeCache::getInstance()->getObject($this->additionalData['objectID'])->username;
}
/**
<item name="wcf.moderation.notification.comment.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben Kommentare zum Moderationseintrag <strong>{$moderationQueue}</strong> verfasst.]]></item>
<item name="wcf.moderation.notification.comment.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat einen Kommentar{else}haben Kommentare{/if} zum Moderationseintrag {@$moderationQueue->getTitle()} [URL:{@$moderationQueue->getLink()}] verfasst{if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}:{else}.{/if}]]></item>
<item name="wcf.moderation.notification.comment.mail.html"><![CDATA[<p>{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat einen Kommentar{else}haben Kommentare{/if} zum Moderationseintrag <a href="{$moderationQueue->getLink()}">{$moderationQueue->getTitle()}</a> verfasst:</p>]]></item>
- <item name="wcf.moderation.notification.commentResponse.title"><![CDATA[Neue Antwort (Moderation)]]></item>
- <item name="wcf.moderation.notification.commentResponse.title.stacked"><![CDATA[{#$timesTriggered} neue Antworten (Moderation)]]></item>
<item name="wcf.moderation.notification.commentResponse.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}Ein Gast{/if} hat eine Antwort zum Kommentar von <strong>{$commentAuthor->username}</strong> zum Moderationseintrag <strong>{$moderationQueue}</strong> verfasst.]]></item>
<item name="wcf.moderation.notification.commentResponse.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben Antworten zum Kommentar zum Moderationseintrag <strong>{$moderationQueue}</strong> verfasst.]]></item>
<item name="wcf.moderation.notification.commentResponse.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat eine Antwort{else}haben Antworten{/if} zum Kommentar von {@$commentAuthor} zum Moderationseintrag {@$moderationQueue->getTitle()} [URL:{@$moderationQueue->getLink()}] verfasst{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.moderation.activation.notification.comment.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben Kommentare zum freizuschaltenden Inhalt <strong>{$moderationQueue}</strong> verfasst.]]></item>
<item name="wcf.moderation.activation.notification.comment.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat einen Kommentar{else}haben Kommentare{/if} zum freizuschaltenden Inhalt {@$moderationQueue->getTitle()} [URL:{@$moderationQueue->getLink()}] verfasst{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.moderation.activation.notification.comment.mail.html"><![CDATA[<p>{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat einen Kommentar{else}haben Kommentare{/if} zum freizuschaltenden Inhalt <a href="{$moderationQueue->getLink()}">{$moderationQueue->getTitle()}</a> verfasst:</p>]]></item>
- <item name="wcf.moderation.activation.notification.commentResponse.title"><![CDATA[Neue Antwort (Freischaltung)]]></item>
- <item name="wcf.moderation.activation.notification.commentResponse.title.stacked"><![CDATA[{#$timesTriggered} neue Antworten (Freischaltung)]]></item>
<item name="wcf.moderation.activation.notification.commentResponse.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}Ein Gast{/if} hat eine Antwort zum Kommentar von <strong>{$commentAuthor}</strong> zum freizuschaltenden Inhalt <strong>{$moderationQueue}</strong> verfasst.]]></item>
<item name="wcf.moderation.activation.notification.commentResponse.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben Antworten zu Kommentaren zum freizuschaltenden Inhalt <strong>{$moderationQueue}</strong> verfasst.]]></item>
<item name="wcf.moderation.activation.notification.commentResponse.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat eine Antwort{else}haben Antworten{/if} zum Kommentar von {@$commentAuthor} zum freizuschaltenden Inhalt {@$moderationQueue->getTitle()} [URL:{@$moderationQueue->getLink()}] verfasst{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.moderation.report.notification.comment.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben Kommentare zur Meldung <strong>{$moderationQueue}</strong> verfasst.]]></item>
<item name="wcf.moderation.report.notification.comment.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat einen Kommentar{else}haben Kommentare{/if} zu der Meldung {@$moderationQueue->getTitle()} [URL:{@$moderationQueue->getLink()}] verfasst{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.moderation.report.notification.comment.mail.html"><![CDATA[<p>{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat einen Kommentar{else}haben Kommentare{/if} zu der Meldung <a href="{$moderationQueue->getLink()}">{$moderationQueue->getTitle()}</a> verfasst:</p>]]></item>
- <item name="wcf.moderation.report.notification.commentResponse.title"><![CDATA[Neue Antwort (Meldung)]]></item>
- <item name="wcf.moderation.report.notification.commentResponse.title.stacked"><![CDATA[{#$timesTriggered} neue Antworten (Meldung)]]></item>
<item name="wcf.moderation.report.notification.commentResponse.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}Ein Gast{/if} hat eine Antwort zum Kommentar von <strong>{$commentAuthor}</strong> zur Meldung <strong>{$moderationQueue}</strong> verfasst.]]></item>
<item name="wcf.moderation.report.notification.commentResponse.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben Antworten zu Kommentare zur Meldung <strong>{$moderationQueue}</strong> verfasst.]]></item>
<item name="wcf.moderation.report.notification.commentResponse.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat eine Antwort{else}haben Antworten{/if} zum Kommentar von {@$commentAuthor} zur Meldung {@$moderationQueue->getTitle()} [URL:{@$moderationQueue->getLink()}] verfasst{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.comment.like.title.stacked"><![CDATA[{#$count} Benutzern haben auf {if LANGUAGE_USE_INFORMAL_VARIANT}deinen{else}Ihren{/if} Kommentar reagiert (Pinnwand)]]></item>
<item name="wcf.user.notification.comment.like.message"><![CDATA[<strong>{$author}</strong> hat auf {if LANGUAGE_USE_INFORMAL_VARIANT}deinen{else}Ihren{/if} Kommentar an {if $owner === null}{if LANGUAGE_USE_INFORMAL_VARIANT}deiner{else}Ihrer{/if} Pinnwand{else}der Pinnwand von <strong>{$owner}</strong>{/if} reagiert ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
<item name="wcf.user.notification.comment.like.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben auf {if LANGUAGE_USE_INFORMAL_VARIANT}deinen{else}Ihren{/if} Kommentar an {if $owner === null}{if LANGUAGE_USE_INFORMAL_VARIANT}deiner{else}Ihrer{/if} Pinnwand{else}der Pinnwand von <strong>{$owner}</strong>{/if} reagiert ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
- <item name="wcf.user.notification.commentResponse.title"><![CDATA[Neue Antwort (Pinnwand)]]></item>
- <item name="wcf.user.notification.commentResponse.title.stacked"><![CDATA[{#$timesTriggered} neue Antworten (Pinnwand)]]></item>
<item name="wcf.user.notification.commentResponse.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}Ein Gast{/if} hat eine Antwort zu {if LANGUAGE_USE_INFORMAL_VARIANT}deinem{else}Ihrem{/if} Kommentar an {if $owner->userID == $__wcf->getUser()->userID}{if LANGUAGE_USE_INFORMAL_VARIANT}deiner{else}Ihrer{/if} Pinnwand{else}der Pinnwand von <strong>{$owner}</strong>{/if} verfasst.]]></item>
<item name="wcf.user.notification.commentResponse.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben auf {if LANGUAGE_USE_INFORMAL_VARIANT}deinen{else}Ihren{/if} Kommentar an {if $owner->userID == $__wcf->getUser()->userID}{if LANGUAGE_USE_INFORMAL_VARIANT}deiner{else}Ihrer{/if} Pinnwand{else}der Pinnwand von <strong>{$owner}</strong>{/if} geantwortet.]]></item>
<item name="wcf.user.notification.commentResponse.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat eine Antwort{else}haben Antworten{/if} auf {if LANGUAGE_USE_INFORMAL_VARIANT}deinen{else}Ihren{/if} Kommentar an {if $mailbox->getUser()->userID == $owner->userID}{if LANGUAGE_USE_INFORMAL_VARIANT}deiner{else}Ihrer{/if} Pinnwand{else}der Pinnwand von {@$owner}{/if} [URL:{@$owner->getLink()}#wall/comment{@$commentID}/response{@$responseID}] verfasst{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.commentResponse.like.title.stacked"><![CDATA[{#$count} Benutzer haben auf {if LANGUAGE_USE_INFORMAL_VARIANT}deine{else}Ihre{/if} Antwort auf einen Kommentar reagiert (Pinnwand)]]></item>
<item name="wcf.user.notification.commentResponse.like.message"><![CDATA[<strong>{$author}</strong> hat auf {if LANGUAGE_USE_INFORMAL_VARIANT}deine{else}Ihre{/if} Antwort auf einen Kommentar an {if $owner === null}{if LANGUAGE_USE_INFORMAL_VARIANT}deiner{else}Ihrer{/if} Pinnwand{else}der Pinnwand von <strong>{$owner}</strong>{/if} reagiert ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
<item name="wcf.user.notification.commentResponse.like.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben auf {if LANGUAGE_USE_INFORMAL_VARIANT}deine{else}Ihre{/if} Antwort auf einen Kommentar an {if $owner === null}{if LANGUAGE_USE_INFORMAL_VARIANT}deiner{else}Ihrer{/if} Pinnwand{else}der Pinnwand von <strong>{$owner}</strong>{/if} reagiert ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
- <item name="wcf.user.notification.commentResponseOwner.title"><![CDATA[Neue Antwort (Pinnwand)]]></item>
- <item name="wcf.user.notification.commentResponseOwner.title.stacked"><![CDATA[{#$timesTriggered} neue Antworten (Pinnwand)]]></item>
<item name="wcf.user.notification.commentResponseOwner.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}Ein Gast{/if} hat eine Antwort zum Kommentar von <strong>{$commentAuthor}</strong> an {if LANGUAGE_USE_INFORMAL_VARIANT}deiner{else}Ihrer{/if} Pinnwand verfasst.]]></item>
<item name="wcf.user.notification.commentResponseOwner.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben auf den Kommentar von <strong>{$author}</strong> an {if LANGUAGE_USE_INFORMAL_VARIANT}deiner{else}Ihrer{/if} Pinnwand geantwortet.]]></item>
<item name="wcf.user.notification.commentResponseOwner.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat eine Antwort{else}haben Antworten{/if} zum Kommentar von {@$commentAuthor} an {if LANGUAGE_USE_INFORMAL_VARIANT}deiner{else}Ihrer{/if} Pinnwand [URL:{$owner->getLink()}#wall/comment{@$commentID}/response{@$responseID}] verfasst{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.pageComment.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben Kommentare auf der Seite <strong>{$page->getTitle()}</strong> verfasst.]]></item>
<item name="wcf.user.notification.pageComment.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat einen Kommentar{else}haben Kommentare{/if} auf der Seite „{@$page->getTitle()}“ [URL:{@$page->getLink()}#comment{@$commentID}] verfasst{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.pageComment.mail.html"><![CDATA[<p>{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat einen Kommentar{else}haben Kommentare{/if} auf der Seite <a href="{$page->getLink()}#comment{@$commentID}">{$page->getTitle()}</a> verfasst:</p>]]></item>
- <item name="wcf.user.notification.pageComment.response.title"><![CDATA[Neue Antwort (Seite)]]></item>
- <item name="wcf.user.notification.pageComment.response.title.stacked"><![CDATA[{#$timesTriggered} neue Antworten (Seite)]]></item>
<item name="wcf.user.notification.pageComment.response.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}Ein Gast{/if} hat eine Antwort zu dem Kommentar von <strong>{$commentAuthor}</strong> auf der Seite <strong>{$page->getTitle()}</strong> verfasst.]]></item>
<item name="wcf.user.notification.pageComment.response.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben auf den Kommentar von <strong>{$commentAuthor}</strong> auf der Seite <strong>{$page->getTitle()}</strong> geantwortet.]]></item>
<item name="wcf.user.notification.pageComment.response.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat eine Antwort{else}haben Antworten{/if} zum Kommentar von {@$commentAuthor} auf der Seite „{@$page->getTitle()}“ [URL:{@$page->getLink()}#comment{@$commentID}/response{@$responseID}] verfasst{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.pageComment.response.mail.html"><![CDATA[<p>{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat eine Antwort{else}haben Antworten{/if} zum Kommentar von <strong>{$commentAuthor}</strong> auf der Seite <a href="{$page->getLink()}#comment{@$commentID}">{$page->getTitle()}</a> verfasst:</p>]]></item>
- <item name="wcf.user.notification.pageComment.responseOwner.title"><![CDATA[Neue Antwort (Seite)]]></item>
- <item name="wcf.user.notification.pageComment.responseOwner.title.stacked"><![CDATA[{#$timesTriggered} neue Antworten (Seite)]]></item>
<item name="wcf.user.notification.pageComment.responseOwner.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}Ein Gast{/if} hat eine Antwort auf {if LANGUAGE_USE_INFORMAL_VARIANT}deinen{else}Ihren{/if} Kommentar auf der Seite <strong>{$page->getTitle()}</strong> verfasst.]]></item>
<item name="wcf.user.notification.pageComment.responseOwner.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben auf {if LANGUAGE_USE_INFORMAL_VARIANT}deinen{else}Ihren{/if} Kommentar auf der Seite <strong>{$page->getTitle()}</strong> geantwortet.]]></item>
<item name="wcf.user.notification.pageComment.responseOwner.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat eine Antwort{else}haben Antworten{/if} auf {if LANGUAGE_USE_INFORMAL_VARIANT}deinen{else}Ihren{/if} Kommentar auf der Seite „{@$page->getTitle()}“ [URL:{@$page->getLink()}#comment{@$commentID}/response{@$responseID}] verfasst{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.articleComment.like.title.stacked"><![CDATA[{#$count} Benutzer haben auf {if LANGUAGE_USE_INFORMAL_VARIANT}deinen{else}Ihren{/if} Kommentar reagiert (Artikel)]]></item>
<item name="wcf.user.notification.articleComment.like.message"><![CDATA[<strong>{$author}</strong> hat auf {if LANGUAGE_USE_INFORMAL_VARIANT}deinen{else}Ihren{/if} Kommentar zum Artikel <strong>{$article->getTitle()}</strong> reagiert ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
<item name="wcf.user.notification.articleComment.like.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben auf {if LANGUAGE_USE_INFORMAL_VARIANT}deinen{else}Ihren{/if} Kommentar zum Artikel <strong>{$article->getTitle()}</strong> reagiert ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
- <item name="wcf.user.notification.articleComment.response.title"><![CDATA[Neue Antwort (Artikel)]]></item>
- <item name="wcf.user.notification.articleComment.response.title.stacked"><![CDATA[{#$timesTriggered} neue Antworten (Artikel)]]></item>
+ <item name="wcf.user.notification.comment.response.title"><![CDATA[Neue Antwort ({$typeName})]]></item>
+ <item name="wcf.user.notification.comment.response.mail.title"><![CDATA[Neue Antwort zu "{@$objectTitle}" ({@$typeName})]]></item>
+ <item name="wcf.user.notification.comment.response.title.stacked"><![CDATA[{#$timesTriggered} neue Antworten ({$typeName})]]></item>
<item name="wcf.user.notification.articleComment.response.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}Ein Gast{/if} hat eine Antwort zu einem Kommentar in dem Artikel <strong>{$article->getTitle()}</strong> verfasst.]]></item>
<item name="wcf.user.notification.articleComment.response.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben Antworten zu einem Kommentar in dem Artikel <strong>{$article->getTitle()}</strong> verfasst.]]></item>
<item name="wcf.user.notification.articleComment.response.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat eine Antwort{else}haben Antworten{/if} zu einem Kommentar in dem Artikel „{@$article->getTitle()}“ [URL:{@$article->getLink()}#comments/comment{@$commentID}/response{@$responseID}] verfasst{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.articleComment.response.like.title.stacked"><![CDATA[{#$count} Benutzer haben auf {if LANGUAGE_USE_INFORMAL_VARIANT}deine{else}Ihre{/if} Antwort auf einen Kommentar reagiert (Artikel)]]></item>
<item name="wcf.user.notification.articleComment.response.like.message"><![CDATA[<strong>{$author}</strong> hat auf {if LANGUAGE_USE_INFORMAL_VARIANT}deine{else}Ihre{/if} Antwort auf einen Kommentar zum Artikel <strong>{$article->getTitle()}</strong> reagiert ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
<item name="wcf.user.notification.articleComment.response.like.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben auf {if LANGUAGE_USE_INFORMAL_VARIANT}deine{else}Ihre{/if} Antwort auf einen Kommentar zum Artikel <strong>{$article->getTitle()}</strong> reagiert ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
- <item name="wcf.user.notification.articleComment.responseOwner.title"><![CDATA[Neue Antwort (Artikel)]]></item>
- <item name="wcf.user.notification.articleComment.responseOwner.title.stacked"><![CDATA[{#$timesTriggered} neue Antworten (Artikel)]]></item>
<item name="wcf.user.notification.articleComment.responseOwner.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}Ein Gast{/if} hat eine Antwort zum Kommentar von <strong>{$commentAuthor}</strong> zu {if LANGUAGE_USE_INFORMAL_VARIANT}deinem{else}Ihrem{/if} Artikel <strong>{$article->getTitle()}</strong> verfasst.]]></item>
<item name="wcf.user.notification.articleComment.responseOwner.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} haben Antworten zum Kommentar von <strong>{$commentAuthor}</strong> zu {if LANGUAGE_USE_INFORMAL_VARIANT}deinem{else}Ihrem{/if} Artikel <strong>{$article->getTitle()}</strong> verfasst.]]></item>
<item name="wcf.user.notification.articleComment.responseOwner.mail.plaintext"><![CDATA[{@$authorList} {if $count == 1 && $guestTimesTriggered < 2 && (!$event->getAuthor()->userID || $guestTimesTriggered == 0)}hat eine Antwort{else}haben Antworten{/if} zum Kommentar von {@$commentAuthor} zu {if LANGUAGE_USE_INFORMAL_VARIANT}deinem{else}Ihrem{/if} Artikel „{@$article->getTitle()}“ [URL:{@$article->getLink()}#comments/comment{@$commentID}/response{@$responseID}] verfasst{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.comment.like.title.stacked"><![CDATA[{#$count} users reacted to your comment (Wall)]]></item>
<item name="wcf.user.notification.comment.like.message"><![CDATA[<strong>{$author}</strong> reacted to your comment on {if $owner === null}your wall{else}<strong>{$owner}</strong>’s</a>{/if} ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
<item name="wcf.user.notification.comment.like.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} reacted to your comment on {if $owner === null}your wall{else}<strong>{$owner}</strong>’s wall{/if} ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
- <item name="wcf.user.notification.commentResponse.title"><![CDATA[New Reply (Wall)]]></item>
- <item name="wcf.user.notification.commentResponse.title.stacked"><![CDATA[{#$timesTriggered} new replies (Wall)]]></item>
<item name="wcf.user.notification.commentResponse.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}A guest{/if} replied to your comment on {if $owner->userID == $__wcf->getUser()->userID}your{else}<strong>{$owner}</strong>’s{/if} wall.]]></item>
<item name="wcf.user.notification.commentResponse.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} replied to your comment on {if $owner->userID == $__wcf->getUser()->userID}your{else}<strong>{$owner}</strong>’s{/if} wall.]]></item>
<item name="wcf.user.notification.commentResponse.mail.plaintext"><![CDATA[{@$authorList} replied to your comment on {if $mailbox->getUser()->userID == $owner->userID}your{else}{@$owner}’s{/if} wall [URL:{@$owner->getLink()}#wall/comment{@$commentID}/response{@$responseID}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.commentResponse.like.title.stacked"><![CDATA[{#$count} users reacted to your reply to a comment (Wall)]]></item>
<item name="wcf.user.notification.commentResponse.like.message"><![CDATA[<strong>{$author}</strong> reacted to your reply to a comment on {if $owner === null}your wall{else}<strong>{$owner}</strong>’s wall{/if} ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
<item name="wcf.user.notification.commentResponse.like.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} reacted to your reply to a comment on {if $owner === null}your wall{else}<strong>{$owner}</strong>’s wall{/if} ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
- <item name="wcf.user.notification.commentResponseOwner.title"><![CDATA[New Reply (Wall)]]></item>
- <item name="wcf.user.notification.commentResponseOwner.title.stacked"><![CDATA[{#$timesTriggered} new replies (Wall)]]></item>
<item name="wcf.user.notification.commentResponseOwner.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}A guest{/if} replied to <strong>{$commentAuthor}</strong>’s comment on your wall.]]></item>
<item name="wcf.user.notification.commentResponseOwner.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} replied to the comment by <strong>{$author}</strong> on your wall.]]></item>
<item name="wcf.user.notification.commentResponseOwner.mail.plaintext"><![CDATA[{@$authorList} replied to {@$commentAuthor}’s comment on your wall [URL:{@$owner->getLink()}#wall/comment{@$commentID}/response{@$responseID}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.pageComment.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} commented on the page <strong>{$page->getTitle()}</strong>.]]></item>
<item name="wcf.user.notification.pageComment.mail.plaintext"><![CDATA[{@$authorList} commented on the page “{@$page->getTitle()}” [URL:{@$page->getLink()}#comment{@$commentID}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.pageComment.mail.html"><![CDATA[<p>{@$authorList} commented on the page <a href="{$page->getLink()}#comment{@$commentID}">{$page->getTitle()}</a>:</p>]]></item>
- <item name="wcf.user.notification.pageComment.response.title"><![CDATA[New Reply (Page)]]></item>
- <item name="wcf.user.notification.pageComment.response.title.stacked"><![CDATA[{#$timesTriggered} new replies (Page)]]></item>
<item name="wcf.user.notification.pageComment.response.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}A guest{/if} replied to <strong>{$commentAuthor}</strong>’s comment on the page {$page->getTitle()}.]]></item>
<item name="wcf.user.notification.pageComment.response.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} replied to <strong>{$commentAuthor}</strong>’s comment on the page {$page->getTitle()}.]]></item>
<item name="wcf.user.notification.pageComment.response.mail.plaintext"><![CDATA[{@$authorList} replied to {@$commentAuthor}’s comment on the page “{@$page->getTitle()}” [URL:{@$page->getLink()}#comment{@$commentID}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.pageComment.response.mail.html"><![CDATA[<p>{@$authorList} replied to {$commentAuthor}’s comment on the page <a href="{$page->getLink()}#comment{@$commentID}">{$page->getTitle()}</a>:</p>]]></item>
- <item name="wcf.user.notification.pageComment.response.title"><![CDATA[New Reply (Page)]]></item>
- <item name="wcf.user.notification.pageComment.responseOwner.title.stacked"><![CDATA[{#$timesTriggered} new replies (Page)]]></item>
<item name="wcf.user.notification.pageComment.responseOwner.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}A guest{/if} replied to your comment on the page <strong>{$page->getTitle()}</strong>.]]></item>
<item name="wcf.user.notification.pageComment.responseOwner.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} replied to your comment on the page <strong>{$page->getTitle()}</strong>.]]></item>
<item name="wcf.user.notification.pageComment.responseOwner.mail.plaintext"><![CDATA[{@$authorList} replied to your comment on the page “{@$page->getTitle()}” [URL:{@$page->getLink()}#comment{@$commentID}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.articleComment.like.title.stacked"><![CDATA[{#$count} users reacted to your comment (Article)]]></item>
<item name="wcf.user.notification.articleComment.like.message"><![CDATA[<strong>{$author}</strong> reacted to your comment on the article <strong>{$article->getTitle()}</strong> ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
<item name="wcf.user.notification.articleComment.like.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} reacted to your comment on the article <strong>{$article->getTitle()}</strong> ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
- <item name="wcf.user.notification.articleComment.response.title"><![CDATA[New Reply (Article)]]></item>
- <item name="wcf.user.notification.articleComment.response.title.stacked"><![CDATA[{#$timesTriggered} new Replies (Article)]]></item>
+ <item name="wcf.user.notification.comment.response.title"><![CDATA[New Reply ({$typeName})]]></item>
+ <item name="wcf.user.notification.comment.response.mail.title"><![CDATA[New Reply on "{@$objectTitle}" ({@$typeName})]]></item>
+ <item name="wcf.user.notification.comment.response.title.stacked"><![CDATA[{#$timesTriggered} new Replies ({$typeName})]]></item>
<item name="wcf.user.notification.articleComment.response.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}A guest{/if} replied to a comment on the article <strong>{$article->getTitle()}</strong>.]]></item>
<item name="wcf.user.notification.articleComment.response.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} replied to a comment on the article <strong>{$article->getTitle()}</strong>.]]></item>
<item name="wcf.user.notification.articleComment.response.mail.plaintext"><![CDATA[{@$authorList} replied to a comment on the article “{@$article->getTitle()}” [URL:{@$article->getLink()}#comments/comment{@$commentID}/response{@$responseID}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>
<item name="wcf.user.notification.articleComment.response.like.title.stacked"><![CDATA[{#$count} users reacted to your reply to a comment (Article)]]></item>
<item name="wcf.user.notification.articleComment.response.like.message"><![CDATA[<strong>{$author}</strong> reacted to your reply to a comment on the article <strong>{$article->getTitle()}</strong> ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
<item name="wcf.user.notification.articleComment.response.like.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} reacted to your reply to a comment on the article <strong>{$article->getTitle()}</strong> ({@$__wcf->getReactionHandler()->renderInlineList($reactions)}).]]></item>
- <item name="wcf.user.notification.articleComment.responseOwner.title"><![CDATA[New Reply (Article)]]></item>
- <item name="wcf.user.notification.articleComment.responseOwner.title.stacked"><![CDATA[{#$timesTriggered} new Replies (Article)]]></item>
<item name="wcf.user.notification.articleComment.responseOwner.message"><![CDATA[{if $author->userID}<strong>{$author}</strong>{else}A guest{/if} replied to a comment by <strong>{$commentAuthor}</strong> on your article <strong>{$article->getTitle()}</strong>.]]></item>
<item name="wcf.user.notification.articleComment.responseOwner.message.stacked"><![CDATA[{@'wcf.user.notification.stacked.authorList'|language} replied to a comment by <strong>{$commentAuthor}</strong> on your article <strong>{$article->getTitle()}</strong>.]]></item>
<item name="wcf.user.notification.articleComment.responseOwner.mail.plaintext"><![CDATA[{@$authorList} replied to {@$commentAuthor}’s comment on your article “{@$article->getTitle()}” [URL:{@$article->getLink()}#comments/comment{@$commentID}/response{@$responseID}]{if $count == 1 && !$guestTimesTriggered}:{else}.{/if}]]></item>