Versuch mal den Inhalt folgender Datei zu ersetzen(ist im Ordner wbb/system/event/listener
Ansonsten müsste ich wirklich mal FTP und Admin Zugang bekommen damit ich es mir mal ansehen kann
<?php
namespace wbb\system\event\listener;
use wbb\data\post\PostAction;
use wbb\system\worker\PostRebuildDataWorker;
use wcf\system\event\listener\IParameterizedEventListener;
use wcf\system\user\storage\UserStorageHandler;
use wcf\system\visitTracker\VisitTracker;
use wcf\system\WCF;
/**
* Mark all threads and post as read where is ignore from a user
*
* @author Olaf Braun
* @copyright 2016 Olaf Braun - Software Development
*
* @package wbb\system\event\listener
*/
class ThreadIgnoreActionListener implements IParameterizedEventListener{
/**
* Executes this action.
*
* @param object $eventObj Object firing the event
* @param string $className class name of $eventObj
* @param string $eventName name of the event fired
* @param array &$parameters given parameters
*/
public function execute($eventObj, $className, $eventName, array &$parameters){
if(!($eventObj instanceof PostAction && $eventObj->getActionName() != "create")) return;
//updating the last visit time
$sql = "REPLACE INTO wcf".WCF_N."_tracked_visit
(objectTypeID, objectID, userID, visitTime)
(SELECT ?, threadID, userID, ? FROM wbb".WCF_N."_thread_ignore)";
$statement = WCF::getDB()->prepareStatement($sql);
$statement->execute(array(VisitTracker::getInstance()->getObjectTypeID("com.woltlab.wbb.thread"), TIME_NOW));
//set notification as read
$sql = "UPDATE wcf".WCF_N."_user_notification notification
SET confirmTime = ? WHERE
(
SELECT COUNT(*) FROM wbb".WCF_N."_thread_ignore thread_ignore
LEFT JOIN wbb".WCF_N."_post post
ON(post.threadID = thread_ignore.threadID)
WHERE thread_ignore.userID = notification.userID AND notification.objectID = post.threadID
)
> 0";
$statement = WCF::getDB()->prepareStatement($sql);
$statement->execute(array(TIME_NOW));
// delete notification_to_user assignments (mimic legacy notification system)
$sql = "DELETE FROM wcf".WCF_N."_user_notification_to_user
WHERE notificationID NOT IN (
SELECT notificationID
FROM wcf".WCF_N."_user_notification
WHERE confirmTime = ?
)";
$statement = WCF::getDB()->prepareStatement($sql);
$statement->execute(array(0));
//mark likes as confirmed
$sql = "UPDATE wcf".WCF_N."_user_notification notification
SET confirmTime = ? WHERE
(
SELECT COUNT(*) FROM wbb".WCF_N."_thread_ignore thread_ignore
LEFT JOIN wbb".WCF_N."_post post
ON(post.threadID = thread_ignore.threadID)
WHERE thread_ignore.userID = notification.userID AND notification.baseObjectID = post.postID
)
> 0";
$statement = WCF::getDB()->prepareStatement($sql);
$statement->execute(array(TIME_NOW));
UserStorageHandler::getInstance()->resetAll('userNotificationCount');
UserStorageHandler::getInstance()->resetAll('wbbUnreadThreads');
UserStorageHandler::getInstance()->resetAll('wbbUnreadWatchedThreads');
}
}
Alles anzeigen