{if !$notification[confirmed]}<span class="badge label newContentBadge">{lang}wcf.message.new{/lang}</span>{/if}
{$notification[event]->getTitle()}
- </h3>
+ </h3>
<small>{@$notification[time]|time}</small>
</div>
<p>{@$notification[event]->getMessage()}</p>
- <ul style="margin-top: 4px">
+ <ul class="marginTopTiny">
{foreach from=$notification[event]->getAuthors() item=author}
- <li style="display: inline-block" class="jsTooltip" title="{$author->username}"><a href="{link controller='User' object=$author}{/link}" class="framed">{@$author->getAvatar()->getImageTag(24)}</a></li>
+ {if $author->userID}
+ <li style="display: inline-block" class="jsTooltip" title="{$author->username}"><a href="{link controller='User' object=$author}{/link}" class="framed">{@$author->getAvatar()->getImageTag(24)}</a></li>
+ {/if}
{/foreach}
</ul>
}
// insert author
- if ($this->parameters['authorID']) {
- $sql = "INSERT INTO wcf".WCF_N."_user_notification_author
- (notificationID, authorID, time)
- VALUES (?, ?, ?)";
- $statement = WCF::getDB()->prepareStatement($sql);
-
- WCF::getDB()->beginTransaction();
- foreach ($notifications as $notificationData) {
- $statement->execute(array(
- $notificationData['object']->notificationID,
- $this->parameters['authorID'],
- TIME_NOW
- ));
- }
- WCF::getDB()->commitTransaction();
+ $sql = "INSERT INTO wcf".WCF_N."_user_notification_author
+ (notificationID, authorID, time)
+ VALUES (?, ?, ?)";
+ $statement = WCF::getDB()->prepareStatement($sql);
+
+ WCF::getDB()->beginTransaction();
+ foreach ($notifications as $notificationData) {
+ $statement->execute(array(
+ $notificationData['object']->notificationID,
+ $this->parameters['authorID'] ?: null,
+ TIME_NOW
+ ));
}
+ WCF::getDB()->commitTransaction();
return $notifications;
}
}
// insert author
- if ($this->parameters['authorID']) {
- $sql = "INSERT IGNORE INTO wcf".WCF_N."_user_notification_author
- (notificationID, authorID, time)
- VALUES (?, ?, ?)";
- $statement = WCF::getDB()->prepareStatement($sql);
-
- WCF::getDB()->beginTransaction();
- foreach ($notifications as $notificationData) {
- $statement->execute(array(
- $notificationData['object']->notificationID,
- $this->parameters['authorID'],
- TIME_NOW
- ));
- }
- WCF::getDB()->commitTransaction();
+ $sql = "INSERT IGNORE INTO wcf".WCF_N."_user_notification_author
+ (notificationID, authorID, time)
+ VALUES (?, ?, ?)";
+ $statement = WCF::getDB()->prepareStatement($sql);
+
+ WCF::getDB()->beginTransaction();
+ foreach ($notifications as $notificationData) {
+ $statement->execute(array(
+ $notificationData['object']->notificationID,
+ $this->parameters['authorID'] ?: null,
+ TIME_NOW
+ ));
}
+ WCF::getDB()->commitTransaction();
// update trigger count
$sql = "UPDATE wcf".WCF_N."_user_notification
- SET timesTriggered = timesTriggered + ?
+ SET timesTriggered = timesTriggered + ?,
+ guestTimesTriggered = guestTimesTriggered + ?
WHERE notificationID = ?";
$statement = WCF::getDB()->prepareStatement($sql);
foreach ($notifications as $notificationData) {
$statement->execute(array(
1,
+ $this->parameters['authorID'] ? 0 : 1,
$notificationData['object']->notificationID
));
}
$statement->execute($conditions->getParameters());
$authorIDs = $authorToNotification = array();
while ($row = $statement->fetchArray()) {
- if (!$row['authorID']) {
- continue;
+ if ($row['authorID']) {
+ $authorIDs[] = $row['authorID'];
}
if (!isset($authorToNotification[$row['notificationID']])) {
$authorToNotification[$row['notificationID']] = array();
}
- $authorIDs[] = $row['authorID'];
$authorToNotification[$row['notificationID']][] = $row['authorID'];
}
$notification,
$objectTypes[$notification->objectType]['objects'][$notification->objectID],
(isset($authors[$notification->authorID]) ? $authors[$notification->authorID] : $unknownAuthor),
- $notification->additionalData,
- $notification->timesTriggered
+ $notification->additionalData
);
$class->setLanguage($user->getLanguage());
if (isset($authorToNotification[$notification->notificationID])) {
$eventAuthors = array();
foreach ($authorToNotification[$notification->notificationID] as $userID) {
- if (isset($authors[$userID])) {
+ if (!$userID) {
+ $eventAuthors[0] = $unknownAuthor;
+ }
+ else if (isset($authors[$userID])) {
$eventAuthors[$userID] = $authors[$userID];
}
}
$notificationIDs[] = $row['notificationID'];
}
- // filter array of existing notifications and remove values which do not have a notification from this author yet (inverse logic!)
+ // 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 + ?
+ SET timesTriggered = timesTriggered + ?,
+ guestTimesTriggered = guestTimesTriggered + ?
WHERE notificationID = ?";
$statement = WCF::getDB()->prepareStatement($sql);
foreach ($notificationIDs as $notificationID) {
$statement->execute(array(
1,
+ $notificationObject->getAuthorID() ? 0 : 1,
$notificationID
));
}
if (WCF::getUser()->userID) {
// load storage data
UserStorageHandler::getInstance()->loadStorage(array(WCF::getUser()->userID));
-
+
// get ids
$data = UserStorageHandler::getInstance()->getStorage(array(WCF::getUser()->userID), 'userNotificationCount');
$statement->execute($conditions->getParameters());
$authorIDs = $authorToNotification = array();
while ($row = $statement->fetchArray()) {
- if (!$row['authorID']) {
- continue;
+ if ($row['authorID']) {
+ $authorIDs[] = $row['authorID'];
}
if (!isset($authorToNotification[$row['notificationID']])) {
$authorToNotification[$row['notificationID']] = array();
}
- $authorIDs[] = $row['authorID'];
$authorToNotification[$row['notificationID']][] = $row['authorID'];
}
$notification,
$objectTypes[$notification->objectType]['objects'][$notification->objectID],
(isset($authors[$notification->authorID]) ? $authors[$notification->authorID] : $unknownAuthor),
- $notification->additionalData,
- $notification->timesTriggered
+ $notification->additionalData
);
if (!$class->checkAccess()) {
if (isset($authorToNotification[$notification->notificationID])) {
$eventAuthors = array();
foreach ($authorToNotification[$notification->notificationID] as $userID) {
- if (isset($authors[$userID])) {
+ if (!$userID) {
+ $eventAuthors[0] = $unknownAuthor;
+ }
+ else if (isset($authors[$userID])) {
$eventAuthors[$userID] = $authors[$userID];
}
}
/**
* @see \wcf\system\user\notification\event\IUserNotificationEvent::setObject()
*/
- public function setObject(UserNotification $notification, IUserNotificationObject $object, UserProfile $author, array $additionalData = array(), $timesTriggered = 0) {
- parent::setObject($notification, $object, $author, $additionalData, $timesTriggered);
+ public function setObject(UserNotification $notification, IUserNotificationObject $object, UserProfile $author, array $additionalData = array()) {
+ parent::setObject($notification, $object, $author, $additionalData);
$this->prepare();
}
*/
protected static $periods = array();
- /**
- * notification trigger count
- * @var integer
- */
- protected $timesTriggered = 0;
-
/**
* @see \wcf\system\user\notification\event\IUserNotificationEvent::setAuthors()
*/
/**
* @see \wcf\system\user\notification\event\IUserNotificationEvent::setObject()
*/
- public function setObject(UserNotification $notification, IUserNotificationObject $object, UserProfile $author, array $additionalData = array(), $timesTriggered = 0) {
+ public function setObject(UserNotification $notification, IUserNotificationObject $object, UserProfile $author, array $additionalData = array()) {
$this->notification = $notification;
$this->userNotificationObject = $object;
$this->author = $author;
$this->additionalData = $additionalData;
- $this->timesTriggered = $timesTriggered;
}
/**
* @param \wcf\system\user\notification\object\IUserNotificationObject $object
* @param \wcf\data\user\UserProfile $author
* @param array<mixed> $additionalData
- * @param integer $timesTriggered
*/
- public function setObject(UserNotification $notification, IUserNotificationObject $object, UserProfile $author, array $additionalData = array(), $timesTriggered = 0);
+ public function setObject(UserNotification $notification, IUserNotificationObject $object, UserProfile $author, array $additionalData = array());
/**
* Sets the language for the event
if ($count > 1) {
return $this->getLanguage()->getDynamicVariable('wcf.user.notification.comment.like.title.stacked', array(
'count' => $count,
- 'timesTriggered' => $this->timesTriggered
+ 'timesTriggered' => $this->notification->timesTriggered
));
}
if ($count > 1) {
return $this->getLanguage()->getDynamicVariable('wcf.user.notification.commentResponse.like.title.stacked', array(
'count' => $count,
- 'timesTriggered' => $this->timesTriggered
+ 'timesTriggered' => $this->notification->timesTriggered
));
}
if ($count > 1) {
return $this->getLanguage()->getDynamicVariable('wcf.user.notification.commentResponseOwner.title.stacked', array(
'count' => $count,
- 'timesTriggered' => $this->timesTriggered
+ 'timesTriggered' => $this->notification->timesTriggered
));
}
if ($count > 1) {
return $this->getLanguage()->getDynamicVariable('wcf.user.notification.commentResponse.title.stacked', array(
'count' => $count,
- 'timesTriggered' => $this->timesTriggered
+ 'timesTriggered' => $this->notification->timesTriggered
));
}
if ($count > 1) {
return $this->getLanguage()->getDynamicVariable('wcf.user.notification.comment.title.stacked', array(
'count' => $count,
- 'timesTriggered' => $this->timesTriggered
+ 'timesTriggered' => $this->notification->timesTriggered
));
}
* @see \wcf\system\user\notification\event\IUserNotificationEvent::getMessage()
*/
public function getMessage() {
- $authors = array_values($this->getAuthors());
- $count = count($authors);
-
- if ($count > 1) {
+ $authors = $this->getAuthors();
+ if (count($authors) > 1) {
+ if (isset($authors[0])) {
+ unset($authors[0]);
+ }
+ $count = count($authors);
+
return $this->getLanguage()->getDynamicVariable('wcf.user.notification.comment.message.stacked', array(
'author' => $this->author,
- 'authors' => $authors,
+ 'authors' => array_values($authors),
'count' => $count,
- 'others' => $count - 1
+ 'others' => $count - 1,
+ 'guestTimesTriggered' => $this->notification->guestTimesTriggered
));
}
* @see \wcf\system\user\notification\event\IUserNotificationEvent::getEmailMessage()
*/
public function getEmailMessage($notificationType = 'instant') {
- $authors = array_values($this->getAuthors());
- $count = count($authors);
$user = new User($this->userNotificationObject->objectID);
- if ($count > 1) {
+ $authors = $this->getAuthors();
+ if (count($authors) > 1) {
+ if (isset($authors[0])) {
+ unset($authors[0]);
+ }
+ $count = count($authors);
+
return $this->getLanguage()->getDynamicVariable('wcf.user.notification.comment.mail.stacked', array(
'author' => $this->author,
- 'authors' => $authors,
+ 'authors' => array_values($authors),
'count' => $count,
'others' => $count - 1,
'owner' => $user,
- 'notificationType' => $notificationType
+ 'notificationType' => $notificationType,
+ 'guestTimesTriggered' => $this->notification->guestTimesTriggered
));
}
<item name="wcf.user.notification.comment.title"><![CDATA[Neuer Kommentar (Pinnwand)]]></item>
<item name="wcf.user.notification.comment.title.stacked"><![CDATA[{#$timesTriggered} neue Kommentare (Pinnwand)]]></item>
<item name="wcf.user.notification.comment.message"><![CDATA[Hat einen Kommentar an Ihrer Pinnwand verfasst.]]></item>
- <item name="wcf.user.notification.comment.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count == 2} und {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} und {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} und {#$others} weitere{/if} haben Kommentare an <a href="{link controller='User' object=$__wcf->getUser()}#wall{/link}">Ihrer Pinnwand</a> verfasst.]]></item>
+ <item name="wcf.user.notification.comment.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count != 1}{if $count == 2 && !$guestTimesTriggered} und {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3}{if !$guestTimesTriggered} und {else}, {/if} {@$authors[2]->getAnchorTag()}{/if}{/if}{if $guestTimesTriggered} und {if $guestTimesTriggered == 1}ein Gast{else}Gäste{/if}{/if}{else}{@$authors[0]->getAnchorTag()}{if $guestTimesTriggered},{else} und{/if} {#$others} weitere Benutzer {if $guestTimesTriggered}und {if $guestTimesTriggered == 1}ein Gast{else}Gäste{/if}{/if}{/if} haben Kommentare an <a href="{link controller='User' object=$__wcf->getUser()}#wall{/link}">Ihrer Pinnwand</a> verfasst..]]></item>
<item name="wcf.user.notification.comment.like.title"><![CDATA[Gefällt ein Kommentar (Pinnwand)]]></item>
<item name="wcf.user.notification.comment.like.title.stacked"><![CDATA[{#$count} Benutzern gefällt Ihr Kommentar (Pinnwand)]]></item>
<item name="wcf.user.notification.comment.like.message"><![CDATA[Gefällt Ihr Kommentar an {if $owner === null}Ihrer Pinnwand{else}der Pinnwand von {$owner->username}{/if}.]]></item>
<item name="wcf.user.notification.comment.like.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count == 2} und {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} und {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} und {#$others} weiteren{/if} gefällt Ihr Kommentar an {if $owner === null}<a href="{link controller='User' object=$__wcf->getUser()}#wall{/link}">Ihrer Pinnwand</a>{else}der <a href="{link controller='User' object=$owner}#wall{/link}">Pinnwand von {$owner->username}</a>{/if}.]]></item>
- <item name="wcf.user.notification.comment.mail"><![CDATA[{@$author->username} hat einen Kommentar an Ihrer Pinnwand verfasst:
+ <item name="wcf.user.notification.comment.mail"><![CDATA[{if !$author->userID}ein Gast{else}{@$author->username}{/if} hat einen Kommentar an Ihrer Pinnwand verfasst:
{if $notificationType == 'instant'}
---------------------------------
{@$comment->message}
---------------------------------
-{/if}{link controller='User' object=$owner isEmail=true}{/link}#wall]]></item>
- <item name="wcf.user.notification.comment.mail.stacked"><![CDATA[{if $count < 4}{@$authors[0]->username}{if $count == 2} und {else}, {/if}{@$authors[1]->username}{if $count == 3} und {@$authors[2]->username}{/if}{else}{@$authors[0]->username} und {#$others} weitere{/if} haben Kommentare an Ihrer Pinnwand verfasst:
-{link controller='User' object=$owner isEmail=true}{/link}#wall]]></item>
+{/if}{link controller='User' object=$owner isEmail=true}#wall{/link}]]></item>
+ <item name="wcf.user.notification.comment.mail.stacked"><![CDATA[{if $count < 4}{@$authors[0]->username}{if $count != 1}{if $count == 2 && !$guestTimesTriggered} und {else}, {/if}{@$authors[1]->username}{if $count == 3}{if !$guestTimesTriggered} und {else}, {/if} {@$authors[2]->username}{/if}{/if}{if $guestTimesTriggered} und {if $guestTimesTriggered == 1}ein Gast{else}Gäste{/if}{/if}{else}{@$authors[0]->username}{if $guestTimesTriggered},{else} und{/if} {#$others} weitere Benutzer {if $guestTimesTriggered}und {if $guestTimesTriggered == 1}ein Gast{else}Gäste{/if}{/if}{/if} haben Kommentare an Ihrer Pinnwand verfasst:
+{link controller='User' object=$owner isEmail=true}#wall{/link}]]></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[Hat eine Antwort zu Ihrem Kommentar an der Pinnwand von {$owner->username} verfasst.]]></item>
<item name="wcf.user.notification.commentResponse.like.title.stacked"><![CDATA[{#$count} Benutzern gefällt Ihre Antwort auf einen Kommentar (Pinnwand)]]></item>
<item name="wcf.user.notification.commentResponse.like.message"><![CDATA[Gefällt Ihre Antwort auf einen Kommentar an {if $owner === null}Ihrer Pinnwand{else}der Pinnwand von {$owner->username}{/if}.]]></item>
<item name="wcf.user.notification.commentResponse.like.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count == 2} und {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} und {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} und {#$others} weiteren{/if} gefällt Ihre Antwort auf einen Kommentar an {if $owner === null}<a href="{link controller='User' object=$__wcf->getUser()}#wall{/link}">Ihrer Pinnwand</a>{else}der <a href="{link controller='User' object=$owner}#wall{/link}">Pinnwand von {$owner->username}</a>{/if}.]]></item>
- <item name="wcf.user.notification.commentResponse.mail"><![CDATA[{@$author->username} hat eine Antwort zu Ihrem Kommentar an der Pinnwand von "{@$owner->username}" verfasst:
+ <item name="wcf.user.notification.commentResponse.mail"><![CDATA[{if !$author->userID}ein Gast{else}{@$author->username}{/if} hat eine Antwort zu Ihrem Kommentar an der Pinnwand von "{@$owner->username}" verfasst:
{if $notificationType == 'instant'}
---------------------------------
{@$response->message}
<item name="wcf.user.notification.comment.title"><![CDATA[New Comment (Wall)]]></item>
<item name="wcf.user.notification.comment.title.stacked"><![CDATA[{#$timesTriggered} new comments (Wall)]]></item>
<item name="wcf.user.notification.comment.message"><![CDATA[Wrote a comment on your wall.]]></item>
- <item name="wcf.user.notification.comment.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count == 2} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} and {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} and {#$others} others{/if} wrote comments on <a href="{link controller='User' object=$__wcf->getUser()}#wall{/link}">your wall</a>.]]></item>
+ <item name="wcf.user.notification.comment.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count != 1}{if $count == 2 && !$guestTimesTriggered} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3}{if !$guestTimesTriggered} and {else}, {/if} {@$authors[2]->getAnchorTag()}{/if}{/if}{if $guestTimesTriggered} and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{else}{@$authors[0]->getAnchorTag()}{if $guestTimesTriggered},{else} and{/if} {#$others} other users {if $guestTimesTriggered}and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{/if} wrote comments on <a href="{link controller='User' object=$__wcf->getUser()}#wall{/link}">your wall</a>.]]></item>
<item name="wcf.user.notification.comment.like.title"><![CDATA[Likes a comment (Wall)]]></item>
<item name="wcf.user.notification.comment.like.title.stacked"><![CDATA[{#$count} users like your comment (Wall)]]></item>
<item name="wcf.user.notification.comment.like.message"><![CDATA[Likes your comment on {if $owner === null}your wall{else}{$owner->username}’s wall{/if}.]]></item>
<item name="wcf.user.notification.comment.like.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count == 2} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} and {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} and {#$others} others{/if} like your comment on {if $owner === null}<a href="{link controller='User' object=$__wcf->getUser()}#wall{/link}">your wall</a>{else}<a href="{link controller='User' object=$owner}#wall{/link}">{$owner->username}’s wall</a>{/if}.]]></item>
- <item name="wcf.user.notification.comment.mail"><![CDATA[{@$author->username} wrote a comment on your wall:
+ <item name="wcf.user.notification.comment.mail"><![CDATA[{if !$author->userID}a guest{else}{@$author->username}{/if} wrote a comment on your wall:
{if $notificationType == 'instant'}
---------------------------------
{@$comment->message}
---------------------------------
{/if}{link controller='User' object=$owner isEmail=true}#wall{/link}]]></item>
- <item name="wcf.user.notification.comment.mail.stacked"><![CDATA[{if $count < 4}{@$authors[0]->username}{if $count == 2} and {else}, {/if}{@$authors[1]->username}{if $count == 3} and {@$authors[2]->username}{/if}{else}{@$authors[0]->username} and {#$others} others{/if} wrote comments on your wall:
+ <item name="wcf.user.notification.comment.mail.stacked"><![CDATA[{if $count < 4}{@$authors[0]->username}{if $count != 1}{if $count == 2 && !$guestTimesTriggered} and {else}, {/if}{@$authors[1]->username}{if $count == 3}{if !$guestTimesTriggered} and {else}, {/if} {@$authors[2]->username}{/if}{/if}{if $guestTimesTriggered} and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{else}{@$authors[0]->username}{if $guestTimesTriggered},{else} and{/if} {#$others} other users {if $guestTimesTriggered}and {if $guestTimesTriggered == 1}a guest{else}guests{/if}{/if}{/if} wrote comments on your wall:
{link controller='User' object=$owner isEmail=true}#wall{/link}]]></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.like.title.stacked"><![CDATA[{#$count} users like your reply to a comment (Wall)]]></item>
<item name="wcf.user.notification.commentResponse.like.message"><![CDATA[Likes your reply to a comment on {if $owner === null}your wall{else}{$owner->username}’s wall{/if}.]]></item>
<item name="wcf.user.notification.commentResponse.like.message.stacked"><![CDATA[{if $count < 4}{@$authors[0]->getAnchorTag()}{if $count == 2} and {else}, {/if}{@$authors[1]->getAnchorTag()}{if $count == 3} and {@$authors[2]->getAnchorTag()}{/if}{else}{@$authors[0]->getAnchorTag()} and {#$others} others{/if} like your reply to a comment on {if $owner === null}<a href="{link controller='User' object=$__wcf->getUser()}#wall{/link}">your wall</a>{else}<a href="{link controller='User' object=$owner}#wall{/link}">{$owner->username}’s wall</a>{/if}.]]></item>
- <item name="wcf.user.notification.commentResponse.mail"><![CDATA[{@$author->username} wrote a reply to your comment on {@$owner->username}’s wall:
+ <item name="wcf.user.notification.commentResponse.mail"><![CDATA[{if !$author->userID}a guest{else}{@$author->username}{/if} wrote a reply to your comment on {@$owner->username}’s wall:
{if $notificationType == 'instant'}
---------------------------------
{@$response->message}
eventHash VARCHAR(40) NOT NULL DEFAULT '',
authorID INT(10) NULL,
timesTriggered INT(10) NOT NULL DEFAULT 0,
+ guestTimesTriggered INT(10) NOT NULL DEFAULT 0,
userID INT(10) NOT NULL,
time INT(10) NOT NULL DEFAULT 0,
mailNotified TINYINT(1) NOT NULL DEFAULT 0,
DROP TABLE IF EXISTS wcf1_user_notification_author;
CREATE TABLE wcf1_user_notification_author (
notificationID INT(10) NOT NULL,
- authorID INT(10) NOT NULL,
+ authorID INT(10),
time INT(10) NOT NULL DEFAULT 0,
UNIQUE KEY (notificationID, authorID)
);