From 0a7954c167e2af970c7da0824383b99813964304 Mon Sep 17 00:00:00 2001 From: Alexander Ebert Date: Wed, 25 Jun 2014 14:32:33 +0200 Subject: [PATCH] Added notifications for comment (response) likes --- com.woltlab.wcf/objectType.xml | 13 +++ .../templates/notificationSettings.tpl | 20 ++-- com.woltlab.wcf/userNotificationEvent.xml | 13 +++ .../data/comment/LikeableComment.class.php | 21 ++++ .../LikeableCommentResponse.class.php | 25 +++++ .../like/object/AbstractLikeObject.class.php | 8 ++ .../data/like/object/ILikeObject.class.php | 8 ++ .../lib/system/like/LikeHandler.class.php | 14 ++- .../UserNotificationHandler.class.php | 25 ++--- .../AbstractUserNotificationEvent.class.php | 7 ++ .../event/IUserNotificationEvent.class.php | 7 ++ ...CommentLikeUserNotificationEvent.class.php | 93 ++++++++++++++++++ ...esponseLikeUserNotificationEvent.class.php | 96 +++++++++++++++++++ ...ommentLikeUserNotificationObject.class.php | 41 ++++++++ ...sponseLikeUserNotificationObject.class.php | 41 ++++++++ ...ntLikeUserNotificationObjectType.class.php | 44 +++++++++ ...seLikeUserNotificationObjectType.class.php | 29 ++++++ wcfsetup/install/lang/de.xml | 9 ++ wcfsetup/install/lang/en.xml | 9 ++ 19 files changed, 501 insertions(+), 22 deletions(-) create mode 100644 wcfsetup/install/files/lib/system/user/notification/event/UserProfileCommentLikeUserNotificationEvent.class.php create mode 100644 wcfsetup/install/files/lib/system/user/notification/event/UserProfileCommentResponseLikeUserNotificationEvent.class.php create mode 100644 wcfsetup/install/files/lib/system/user/notification/object/CommentLikeUserNotificationObject.class.php create mode 100644 wcfsetup/install/files/lib/system/user/notification/object/CommentResponseLikeUserNotificationObject.class.php create mode 100644 wcfsetup/install/files/lib/system/user/notification/object/type/UserProfileCommentLikeUserNotificationObjectType.class.php create mode 100644 wcfsetup/install/files/lib/system/user/notification/object/type/UserProfileCommentResponseLikeUserNotificationObjectType.class.php diff --git a/com.woltlab.wcf/objectType.xml b/com.woltlab.wcf/objectType.xml index fb60484a92..5609043636 100644 --- a/com.woltlab.wcf/objectType.xml +++ b/com.woltlab.wcf/objectType.xml @@ -203,6 +203,19 @@ com.woltlab.wcf.user + + + com.woltlab.wcf.user.profileComment.like.notification + com.woltlab.wcf.notification.objectType + + com.woltlab.wcf.user + + + com.woltlab.wcf.user.profileComment.response.like.notification + com.woltlab.wcf.notification.objectType + + com.woltlab.wcf.user + diff --git a/com.woltlab.wcf/templates/notificationSettings.tpl b/com.woltlab.wcf/templates/notificationSettings.tpl index cd70385abe..5129d75e96 100644 --- a/com.woltlab.wcf/templates/notificationSettings.tpl +++ b/com.woltlab.wcf/templates/notificationSettings.tpl @@ -60,17 +60,21 @@ {lang}wcf.user.notification.{$eventCategory}{/lang}
- {foreach from=$eventList item='event'} + {foreach from=$eventList item=event}
{hascontent}{content}{lang __optional=true}wcf.user.notification.{$event->objectType}.{$event->eventName}.description{/lang}{/content}{/hascontent} - - - + {if $event->supportsEmailNotification()} + + + + {else} + {lang}wcf.user.notification.mailNotificationType.notSupported{/lang} + {/if}
{/foreach}
diff --git a/com.woltlab.wcf/userNotificationEvent.xml b/com.woltlab.wcf/userNotificationEvent.xml index d71b9102f9..516976a007 100644 --- a/com.woltlab.wcf/userNotificationEvent.xml +++ b/com.woltlab.wcf/userNotificationEvent.xml @@ -25,5 +25,18 @@ 1 + + + like + com.woltlab.wcf.user.profileComment.like.notification + + 1 + + + like + com.woltlab.wcf.user.profileComment.like.response.notification + + 1 + diff --git a/wcfsetup/install/files/lib/data/comment/LikeableComment.class.php b/wcfsetup/install/files/lib/data/comment/LikeableComment.class.php index 34cb0c6c06..d81d4531d7 100644 --- a/wcfsetup/install/files/lib/data/comment/LikeableComment.class.php +++ b/wcfsetup/install/files/lib/data/comment/LikeableComment.class.php @@ -1,7 +1,14 @@ objectType; } + + /** + * @see \wcf\data\like\object\ILikeObject::sendNotification() + */ + public function sendNotification(Like $like) { + $objectType = CommentHandler::getInstance()->getObjectType($this->object->objectTypeID); + if (UserNotificationHandler::getInstance()->getObjectTypeID($objectType->objectType.'.like.notification')) { + $notificationObjectType = UserNotificationHandler::getInstance()->getObjectTypeProcessor($objectType->objectType.'.like.notification'); + if ($this->userID != WCF::getUser()->userID) { + $notificationObject = new CommentLikeUserNotificationObject($like); + UserNotificationHandler::getInstance()->fireEvent('like', $objectType->objectType.'.like.notification', $notificationObject, array($this->userID), array('objectID' => $this->object->objectID)); + } + } + } } diff --git a/wcfsetup/install/files/lib/data/comment/response/LikeableCommentResponse.class.php b/wcfsetup/install/files/lib/data/comment/response/LikeableCommentResponse.class.php index 97cc4c819b..c31e866d6d 100644 --- a/wcfsetup/install/files/lib/data/comment/response/LikeableCommentResponse.class.php +++ b/wcfsetup/install/files/lib/data/comment/response/LikeableCommentResponse.class.php @@ -1,7 +1,13 @@ userID; } + + /** + * @see \wcf\data\like\object\ILikeObject::sendNotification() + */ + public function sendNotification(Like $like) { + $comment = new Comment($this->object->commentID); + $objectType = CommentHandler::getInstance()->getObjectType($comment->objectTypeID); + if (UserNotificationHandler::getInstance()->getObjectTypeID($objectType->objectType.'.response.like.notification')) { + $notificationObjectType = UserNotificationHandler::getInstance()->getObjectTypeProcessor($objectType->objectType.'.response.like.notification'); + if ($this->userID != WCF::getUser()->userID) { + $notificationObject = new CommentResponseLikeUserNotificationObject($like); + UserNotificationHandler::getInstance()->fireEvent('like', $objectType->objectType.'.response.like.notification', $notificationObject, array($this->userID), array( + 'commentID' => $comment->commentID, + 'commentUserID' => $comment->userID, + 'objectID' => $comment->objectID, + )); + } + } + } } diff --git a/wcfsetup/install/files/lib/data/like/object/AbstractLikeObject.class.php b/wcfsetup/install/files/lib/data/like/object/AbstractLikeObject.class.php index 17bdda4599..49808ee068 100644 --- a/wcfsetup/install/files/lib/data/like/object/AbstractLikeObject.class.php +++ b/wcfsetup/install/files/lib/data/like/object/AbstractLikeObject.class.php @@ -1,5 +1,6 @@ objectType = $objectType; } + + /** + * @see \wcf\data\like\object\ILikeObject::sendNotification() + */ + public function sendNotification(Like $like) { + // individual implementations can override this method to provide notifications + } } diff --git a/wcfsetup/install/files/lib/data/like/object/ILikeObject.class.php b/wcfsetup/install/files/lib/data/like/object/ILikeObject.class.php index b93089952a..dd8a9498da 100644 --- a/wcfsetup/install/files/lib/data/like/object/ILikeObject.class.php +++ b/wcfsetup/install/files/lib/data/like/object/ILikeObject.class.php @@ -1,5 +1,6 @@ $likeValue )); - if ($likeValue == Like::LIKE && $likeable->getUserID()) UserActivityPointHandler::getInstance()->fireEvent('com.woltlab.wcf.like.activityPointEvent.receivedLikes', $like->likeID, $likeable->getUserID()); + if ($likeValue == Like::LIKE && $likeable->getUserID()) { + UserActivityPointHandler::getInstance()->fireEvent('com.woltlab.wcf.like.activityPointEvent.receivedLikes', $like->likeID, $likeable->getUserID()); + $likeable->sendNotification($like); + } } else { $likeEditor = new LikeEditor($like); @@ -295,8 +298,13 @@ class LikeHandler extends SingletonFactory { )); if ($likeable->getUserID()) { - if ($likeValue == Like::DISLIKE) UserActivityPointHandler::getInstance()->removeEvents('com.woltlab.wcf.like.activityPointEvent.receivedLikes', array($likeable->getUserID() => 1)); - else UserActivityPointHandler::getInstance()->fireEvent('com.woltlab.wcf.like.activityPointEvent.receivedLikes', $like->likeID, $likeable->getUserID()); + if ($likeValue == Like::DISLIKE) { + UserActivityPointHandler::getInstance()->removeEvents('com.woltlab.wcf.like.activityPointEvent.receivedLikes', array($likeable->getUserID() => 1)); + } + else { + UserActivityPointHandler::getInstance()->fireEvent('com.woltlab.wcf.like.activityPointEvent.receivedLikes', $like->likeID, $likeable->getUserID()); + $likeable->sendNotification($like); + } } } diff --git a/wcfsetup/install/files/lib/system/user/notification/UserNotificationHandler.class.php b/wcfsetup/install/files/lib/system/user/notification/UserNotificationHandler.class.php index 344964ed6a..c1fb78971e 100644 --- a/wcfsetup/install/files/lib/system/user/notification/UserNotificationHandler.class.php +++ b/wcfsetup/install/files/lib/system/user/notification/UserNotificationHandler.class.php @@ -143,14 +143,14 @@ class UserNotificationHandler extends SingletonFactory { $notificationIDs[] = $row['notificationID']; } - if (!empty($notificationIDs)) { - // filter array of existing notifications and remove values which do not have a notification from this author yet (inverse logic!) - foreach ($notifications as $userID => $notificationID) { - if (!in_array($notificationID, $notificationIDs)) { - unset($notifications[$userID]); - } + // filter array of existing notifications and remove values which do not have a notification from this author yet (inverse logic!) + foreach ($notifications as $userID => $notificationID) { + if (!in_array($notificationID, $notificationIDs)) { + unset($notifications[$userID]); } - + } + + if (!empty($notificationIDs)) { // update trigger count $sql = "UPDATE wcf".WCF_N."_user_notification SET timesTriggered = timesTriggered + ? @@ -188,6 +188,7 @@ class UserNotificationHandler extends SingletonFactory { 'objectID' => $notificationObject->getObjectID(), 'eventHash' => $event->getEventHash(), 'packageID' => $objectTypeObject->packageID, + 'mailNotified' => ($event->supportsEmailNotification() ? 0 : 1), 'time' => TIME_NOW, 'additionalData' => serialize($additionalData) ), @@ -208,10 +209,12 @@ class UserNotificationHandler extends SingletonFactory { $notifications = $result['returnValues']; // send notifications - foreach ($recipients as $recipient) { - if ($recipient->mailNotificationType == 'instant') { - if (isset($notifications[$recipient->userID]) && $notifications[$recipient->userID]['isNew']) { - $this->sendInstantMailNotification($notifications[$recipient->userID]['object'], $recipient, $event); + if ($event->supportsEmailNotification()) { + foreach ($recipients as $recipient) { + if ($recipient->mailNotificationType == 'instant') { + if (isset($notifications[$recipient->userID]) && $notifications[$recipient->userID]['isNew']) { + $this->sendInstantMailNotification($notifications[$recipient->userID]['object'], $recipient, $event); + } } } } diff --git a/wcfsetup/install/files/lib/system/user/notification/event/AbstractUserNotificationEvent.class.php b/wcfsetup/install/files/lib/system/user/notification/event/AbstractUserNotificationEvent.class.php index cbd2245277..d188339c09 100644 --- a/wcfsetup/install/files/lib/system/user/notification/event/AbstractUserNotificationEvent.class.php +++ b/wcfsetup/install/files/lib/system/user/notification/event/AbstractUserNotificationEvent.class.php @@ -225,4 +225,11 @@ abstract class AbstractUserNotificationEvent extends DatabaseObjectDecorator imp return WCF::getLanguage()->get('wcf.date.period.older'); } + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::supportsEmailNotification() + */ + public function supportsEmailNotification() { + return true; + } } diff --git a/wcfsetup/install/files/lib/system/user/notification/event/IUserNotificationEvent.class.php b/wcfsetup/install/files/lib/system/user/notification/event/IUserNotificationEvent.class.php index f883b42739..c77fa8f11d 100644 --- a/wcfsetup/install/files/lib/system/user/notification/event/IUserNotificationEvent.class.php +++ b/wcfsetup/install/files/lib/system/user/notification/event/IUserNotificationEvent.class.php @@ -119,4 +119,11 @@ interface IUserNotificationEvent extends IDatabaseObjectProcessor { * @return boolean */ public function isStackable(); + + /** + * Returns true if this notification event supports email notifications. + * + * @return boolean + */ + public function supportsEmailNotification(); } diff --git a/wcfsetup/install/files/lib/system/user/notification/event/UserProfileCommentLikeUserNotificationEvent.class.php b/wcfsetup/install/files/lib/system/user/notification/event/UserProfileCommentLikeUserNotificationEvent.class.php new file mode 100644 index 0000000000..751d27882e --- /dev/null +++ b/wcfsetup/install/files/lib/system/user/notification/event/UserProfileCommentLikeUserNotificationEvent.class.php @@ -0,0 +1,93 @@ + + * @package com.woltlab.wcf + * @subpackage system.user.notification.event + * @category Community Framework + */ +class UserProfileCommentLikeUserNotificationEvent extends AbstractUserNotificationEvent { + /** + * @see \wcf\system\user\notification\event\AbstractUserNotificationEvent::$stackable + */ + protected $stackable = true; + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::getTitle() + */ + public function getTitle() { + $count = count($this->getAuthors()); + if ($count > 1) { + return $this->getLanguage()->getDynamicVariable('wcf.user.notification.comment.like.title.stacked', array( + 'count' => $count, + 'timesTriggered' => $this->timesTriggered + )); + } + + return $this->getLanguage()->get('wcf.user.notification.comment.like.title'); + } + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::getMessage() + */ + public function getMessage() { + $authors = array_values($this->getAuthors()); + $count = count($authors); + $owner = null; + if ($this->additionalData['objectID'] != WCF::getUser()->userID) { + $owner = new User($this->additionalData['objectID']); + } + + if ($count > 1) { + return $this->getLanguage()->getDynamicVariable('wcf.user.notification.comment.like.message.stacked', array( + 'author' => $this->author, + 'authors' => $authors, + 'comment' => $this->userNotificationObject, + 'count' => $count, + 'others' => max($count - 1, 0), + 'owner' => $owner + )); + } + + return $this->getLanguage()->getDynamicVariable('wcf.user.notification.comment.like.message', array( + 'author' => $this->author, + 'comment' => $this->userNotificationObject, + 'owner' => $owner + )); + } + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::getEmailMessage() + */ + public function getEmailMessage($notificationType = 'instant') { /* not supported */ } + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::getLink() + */ + public function getLink() { + return LinkHandler::getInstance()->getLink('User', array('object' => WCF::getUser()), '#wall'); + } + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::getEventHash() + */ + public function getEventHash() { + return sha1($this->eventID . '-' . $this->additionalData['objectID']); + } + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::supportsEmailNotification() + */ + public function supportsEmailNotification() { + return false; + } +} diff --git a/wcfsetup/install/files/lib/system/user/notification/event/UserProfileCommentResponseLikeUserNotificationEvent.class.php b/wcfsetup/install/files/lib/system/user/notification/event/UserProfileCommentResponseLikeUserNotificationEvent.class.php new file mode 100644 index 0000000000..c8c077960d --- /dev/null +++ b/wcfsetup/install/files/lib/system/user/notification/event/UserProfileCommentResponseLikeUserNotificationEvent.class.php @@ -0,0 +1,96 @@ + + * @package com.woltlab.wcf + * @subpackage system.user.notification.event + * @category Community Framework + */ +class UserProfileCommentResponseLikeUserNotificationEvent extends AbstractUserNotificationEvent { + /** + * @see \wcf\system\user\notification\event\AbstractUserNotificationEvent::$stackable + */ + protected $stackable = true; + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::getTitle() + */ + public function getTitle() { + $count = count($this->getAuthors()); + if ($count > 1) { + return $this->getLanguage()->getDynamicVariable('wcf.user.notification.commentResponse.like.title.stacked', array( + 'count' => $count, + 'timesTriggered' => $this->timesTriggered + )); + } + + return $this->getLanguage()->get('wcf.user.notification.commentResponse.like.title'); + } + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::getMessage() + */ + public function getMessage() { + $authors = array_values($this->getAuthors()); + $count = count($authors); + $commentUser = $owner = null; + if ($this->additionalData['objectID'] != WCF::getUser()->userID) { + $owner = new User($this->additionalData['objectID']); + } + if ($this->additionalData['commentUserID'] != WCF::getUser()->userID) { + $commentUser = new User($this->additionalData['commentUserID']); + } + + if ($count > 1) { + return $this->getLanguage()->getDynamicVariable('wcf.user.notification.commentResponse.like.message.stacked', array( + 'author' => $this->author, + 'authors' => $authors, + 'commentUser' => $commentUser, + 'count' => $count, + 'others' => max($count - 1, 0), + 'owner' => $owner + )); + } + + return $this->getLanguage()->getDynamicVariable('wcf.user.notification.commentResponse.like.message', array( + 'author' => $this->author, + 'comment' => $this->userNotificationObject, + 'owner' => $owner + )); + } + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::getEmailMessage() + */ + public function getEmailMessage($notificationType = 'instant') { /* not supported */ } + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::getLink() + */ + public function getLink() { + return LinkHandler::getInstance()->getLink('User', array('object' => WCF::getUser()), '#wall'); + } + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::getEventHash() + */ + public function getEventHash() { + return sha1($this->eventID . '-' . $this->additionalData['commentID']); + } + + /** + * @see \wcf\system\user\notification\event\IUserNotificationEvent::supportsEmailNotification() + */ + public function supportsEmailNotification() { + return false; + } +} diff --git a/wcfsetup/install/files/lib/system/user/notification/object/CommentLikeUserNotificationObject.class.php b/wcfsetup/install/files/lib/system/user/notification/object/CommentLikeUserNotificationObject.class.php new file mode 100644 index 0000000000..9ce13fae75 --- /dev/null +++ b/wcfsetup/install/files/lib/system/user/notification/object/CommentLikeUserNotificationObject.class.php @@ -0,0 +1,41 @@ + + * @package com.woltlab.wcf + * @subpackage system.user.notification.object + * @category Community Framework + */ +class CommentLikeUserNotificationObject extends DatabaseObjectDecorator implements IUserNotificationObject { + /** + * @see \wcf\data\DatabaseObjectDecorator::$baseClass + */ + protected static $baseClass = 'wcf\data\like\Like'; + + /** + * @see \wcf\system\user\notification\object\IUserNotificationObject::getTitle() + */ + public function getTitle() { + return ''; + } + + /** + * @see \wcf\system\user\notification\object\IUserNotificationObject::getURL() + */ + public function getURL() { + return ''; + } + + /** + * @see \wcf\system\user\notification\object\IUserNotificationObject::getAuthorID() + */ + public function getAuthorID() { + return $this->userID; + } +} diff --git a/wcfsetup/install/files/lib/system/user/notification/object/CommentResponseLikeUserNotificationObject.class.php b/wcfsetup/install/files/lib/system/user/notification/object/CommentResponseLikeUserNotificationObject.class.php new file mode 100644 index 0000000000..e57e6d9bc7 --- /dev/null +++ b/wcfsetup/install/files/lib/system/user/notification/object/CommentResponseLikeUserNotificationObject.class.php @@ -0,0 +1,41 @@ + + * @package com.woltlab.wcf + * @subpackage system.user.notification.object + * @category Community Framework + */ +class CommentResponseLikeUserNotificationObject extends DatabaseObjectDecorator implements IUserNotificationObject { + /** + * @see \wcf\data\DatabaseObjectDecorator::$baseClass + */ + protected static $baseClass = 'wcf\data\like\Like'; + + /** + * @see \wcf\system\user\notification\object\IUserNotificationObject::getTitle() + */ + public function getTitle() { + return ''; + } + + /** + * @see \wcf\system\user\notification\object\IUserNotificationObject::getURL() + */ + public function getURL() { + return ''; + } + + /** + * @see \wcf\system\user\notification\object\IUserNotificationObject::getAuthorID() + */ + public function getAuthorID() { + return $this->userID; + } +} diff --git a/wcfsetup/install/files/lib/system/user/notification/object/type/UserProfileCommentLikeUserNotificationObjectType.class.php b/wcfsetup/install/files/lib/system/user/notification/object/type/UserProfileCommentLikeUserNotificationObjectType.class.php new file mode 100644 index 0000000000..f8856b004d --- /dev/null +++ b/wcfsetup/install/files/lib/system/user/notification/object/type/UserProfileCommentLikeUserNotificationObjectType.class.php @@ -0,0 +1,44 @@ + + * @package com.woltlab.wcf + * @subpackage system.user.notification.object.type + * @category Community Framework + */ +class UserProfileCommentLikeUserNotificationObjectType extends AbstractUserNotificationObjectType implements ICommentUserNotificationObjectType { + /** + * @see \wcf\system\user\notification\object\type\AbstractUserNotificationObjectType::$decoratorClassName + */ + protected static $decoratorClassName = 'wcf\system\user\notification\object\CommentLikeUserNotificationObject'; + + /** + * @see \wcf\system\user\notification\object\type\AbstractUserNotificationObjectType::$objectClassName + */ + protected static $objectClassName = 'wcf\data\like\Like'; + + /** + * @see \wcf\system\user\notification\object\type\AbstractUserNotificationObjectType::$objectListClassName + */ + protected static $objectListClassName = 'wcf\data\like\LikeList'; + + /** + * @see \wcf\system\user\notification\object\type\ICommentUserNotificationObjectType::getOwnerID() + */ + public function getOwnerID($objectID) { + $sql = "SELECT objectUserID + FROM wcf".WCF_N."_like + WHERE likeID = ?"; + $statement = WCF::getDB()->prepareStatement($sql); + $statement->execute(array($objectID)); + $row = $statement->fetchArray(); + + return ($row ? $row['objectUserID'] : 0); + } +} diff --git a/wcfsetup/install/files/lib/system/user/notification/object/type/UserProfileCommentResponseLikeUserNotificationObjectType.class.php b/wcfsetup/install/files/lib/system/user/notification/object/type/UserProfileCommentResponseLikeUserNotificationObjectType.class.php new file mode 100644 index 0000000000..33c45b14d2 --- /dev/null +++ b/wcfsetup/install/files/lib/system/user/notification/object/type/UserProfileCommentResponseLikeUserNotificationObjectType.class.php @@ -0,0 +1,29 @@ + + * @package com.woltlab.wcf + * @subpackage system.user.notification.object.type + * @category Community Framework + */ +class UserProfileCommentResponseLikeUserNotificationObjectType extends AbstractUserNotificationObjectType { + /** + * @see \wcf\system\user\notification\object\type\AbstractUserNotificationObjectType::$decoratorClassName + */ + protected static $decoratorClassName = 'wcf\system\user\notification\object\CommentResponseUserNotificationObject'; + + /** + * @see \wcf\system\user\notification\object\type\AbstractUserNotificationObjectType::$objectClassName + */ + protected static $objectClassName = 'wcf\data\comment\response\CommentResponse'; + + /** + * @see \wcf\system\user\notification\object\type\AbstractUserNotificationObjectType::$objectListClassName + */ + protected static $objectListClassName = 'wcf\data\comment\response\CommentResponseList'; +} diff --git a/wcfsetup/install/lang/de.xml b/wcfsetup/install/lang/de.xml index ae2aa6ae0a..52c2e61f64 100644 --- a/wcfsetup/install/lang/de.xml +++ b/wcfsetup/install/lang/de.xml @@ -2851,6 +2851,7 @@ Möchten Sie diese E-Mail-Benachrichtigung in Zukunft nicht mehr erhalten, könn + @@ -2864,6 +2865,10 @@ Möchten Sie diese E-Mail-Benachrichtigung in Zukunft nicht mehr erhalten, könn getAnchorTag()}{if $count == 2} und {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} und {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} und {#$count} weitere{/if} haben Kommentare an Ihrer Pinnwand verfasst.]]> + + + username}{/if}.]]> + getAnchorTag()}{if $count == 2} und {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} und {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} und {#$count} weiteren{/if} gefällt Ihr Kommentar an {if $owner === null}Ihrer Pinnwand{else}der Pinnwand von {$owner->username}{/if}.]]> username} hat einen Kommentar an Ihrer Pinnwand verfasst: {if $notificationType == 'instant'} --------------------------------- @@ -2874,6 +2879,10 @@ Möchten Sie diese E-Mail-Benachrichtigung in Zukunft nicht mehr erhalten, könn username} verfasst.]]> getAnchorTag()}{if $count == 2} und {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} und {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} und {#$count} weitere{/if} haben auf Ihren Kommentar an der Pinnwand von {$owner->username} geantwortet.]]> + + + username}{/if}.]]> + getAnchorTag()}{if $count == 2} und {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} und {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} und {#$count} weiteren{/if} gefällt Ihre Antwort auf einen Kommentar an {if $owner === null}Ihrer Pinnwand{else}der Pinnwand von {$owner->username}{/if}.]]> username} hat eine Antwort zu Ihrem Kommentar an der Pinnwand von "{@$owner->username}" verfasst: {if $notificationType == 'instant'} --------------------------------- diff --git a/wcfsetup/install/lang/en.xml b/wcfsetup/install/lang/en.xml index ca69f9967e..63031369af 100644 --- a/wcfsetup/install/lang/en.xml +++ b/wcfsetup/install/lang/en.xml @@ -2706,6 +2706,7 @@ If you do not want to receive further email notifications for this event, you ca + @@ -2719,6 +2720,10 @@ If you do not want to receive further email notifications for this event, you ca getAnchorTag()}{if $count == 2} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} and {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} and {#$count} others{/if} wrote comments on your wall.]]> + + + username}’s wall{/if}.]]> + getAnchorTag()}{if $count == 2} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} and {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} and {#$count} others{/if} like your comment on {if $owner === null}your wall{else}{$owner->username}’s wall{/if}.]]> username} wrote a comment on your wall: {if $notificationType == 'instant'} --------------------------------- @@ -2729,6 +2734,10 @@ If you do not want to receive further email notifications for this event, you ca username}’s wall.]]> getAnchorTag()}{if $count == 2} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} and {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} and {#$count} others{/if} replied to your comment on {$owner->username}’s wall.]]> + + + username}’s wall{/if}.]]> + getAnchorTag()}{if $count == 2} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} and {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} and {#$count} others{/if} like your reply to a comment on {if $owner === null}your wall{else}{$owner->username}’s wall{/if}.]]> username} wrote a reply to your comment on {@$owner->username}’s wall: {if $notificationType == 'instant'} --------------------------------- -- 2.20.1