Changed global comment list sort to creation time
Before this change, it was using edit time, which resulted in bumping old posts every time a comment was edited. Users reported this behavior as awkward and unintuitive, so I've changed it.
This commit is contained in:
parent
f5aed19bf3
commit
645573a272
4 changed files with 55 additions and 2 deletions
|
@ -11,7 +11,7 @@ class PostFilter extends BasicFilter implements IFilter
|
||||||
const ORDER_SCORE = 'score';
|
const ORDER_SCORE = 'score';
|
||||||
const ORDER_LAST_EDIT_TIME = 'lastEditTime';
|
const ORDER_LAST_EDIT_TIME = 'lastEditTime';
|
||||||
const ORDER_FILE_SIZE = 'originalFileSize';
|
const ORDER_FILE_SIZE = 'originalFileSize';
|
||||||
const ORDER_LAST_COMMENT_TIME = 'lastCommentTime';
|
const ORDER_LAST_COMMENT_TIME = 'lastCommentCreationTime';
|
||||||
const ORDER_LAST_FAV_TIME = 'lastFavTime';
|
const ORDER_LAST_FAV_TIME = 'lastFavTime';
|
||||||
const ORDER_LAST_FEATURE_TIME = 'lastFeatureTime';
|
const ORDER_LAST_FEATURE_TIME = 'lastFeatureTime';
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ class Upgrade41 implements IUpgrade
|
||||||
public function run(DatabaseConnection $databaseConnection)
|
public function run(DatabaseConnection $databaseConnection)
|
||||||
{
|
{
|
||||||
$pdo = $databaseConnection->getPDO();
|
$pdo = $databaseConnection->getPDO();
|
||||||
$driver = $databaseConnection->getDriver();
|
|
||||||
|
|
||||||
$pdo->exec('
|
$pdo->exec('
|
||||||
CREATE TRIGGER postNotesDelete AFTER DELETE ON postNotes
|
CREATE TRIGGER postNotesDelete AFTER DELETE ON postNotes
|
||||||
|
|
53
src/Upgrades/Upgrade42.php
Normal file
53
src/Upgrades/Upgrade42.php
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
<?php
|
||||||
|
namespace Szurubooru\Upgrades;
|
||||||
|
use Szurubooru\DatabaseConnection;
|
||||||
|
|
||||||
|
class Upgrade42 implements IUpgrade
|
||||||
|
{
|
||||||
|
public function run(DatabaseConnection $databaseConnection)
|
||||||
|
{
|
||||||
|
$pdo = $databaseConnection->getPDO();
|
||||||
|
|
||||||
|
$pdo->exec('ALTER TABLE posts CHANGE COLUMN lastCommentTime lastCommentEditTime TIMESTAMP NOT NULL DEFAULT 0');
|
||||||
|
$pdo->exec('ALTER TABLE posts ADD COLUMN lastCommentCreationTime TIMESTAMP NOT NULL DEFAULT 0');
|
||||||
|
|
||||||
|
$pdo->exec('DROP TRIGGER IF EXISTS commentsDelete');
|
||||||
|
$pdo->exec('DROP TRIGGER IF EXISTS commentsInsert');
|
||||||
|
$pdo->exec('DROP TRIGGER IF EXISTS commentsUpdate');
|
||||||
|
|
||||||
|
$pdo->exec('
|
||||||
|
CREATE TRIGGER commentsDelete AFTER DELETE ON comments
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
UPDATE posts SET
|
||||||
|
commentCount = (SELECT COUNT(1) FROM comments WHERE comments.postId = posts.id),
|
||||||
|
lastCommentCreationTime = (SELECT MAX(creationTime) FROM comments WHERE comments.postId = posts.id),
|
||||||
|
lastCommentEditTime = (SELECT MAX(lastEditTime) FROM comments WHERE comments.postId = posts.id)
|
||||||
|
WHERE posts.id = OLD.postId;
|
||||||
|
END');
|
||||||
|
|
||||||
|
$pdo->exec('
|
||||||
|
CREATE TRIGGER commentsInsert AFTER INSERT ON comments
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
UPDATE posts SET
|
||||||
|
commentCount = (SELECT COUNT(1) FROM comments WHERE comments.postId = posts.id),
|
||||||
|
lastCommentCreationTime = (SELECT MAX(creationTime) FROM comments WHERE comments.postId = posts.id),
|
||||||
|
lastCommentEditTime = (SELECT MAX(lastEditTime) FROM comments WHERE comments.postId = posts.id)
|
||||||
|
WHERE posts.id = NEW.postId;
|
||||||
|
END');
|
||||||
|
|
||||||
|
$pdo->exec('
|
||||||
|
CREATE TRIGGER commentsUpdate AFTER UPDATE ON comments
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
UPDATE posts SET
|
||||||
|
commentCount = (SELECT COUNT(1) FROM comments WHERE comments.postId = posts.id),
|
||||||
|
lastCommentCreationTime = (SELECT MAX(creationTime) FROM comments WHERE comments.postId = posts.id),
|
||||||
|
lastCommentEditTime = (SELECT MAX(lastEditTime) FROM comments WHERE comments.postId = posts.id)
|
||||||
|
WHERE posts.id IN (OLD.postId, NEW.postId);
|
||||||
|
END');
|
||||||
|
|
||||||
|
$pdo->exec('UPDATE posts SET lastCommentCreationTime = (SELECT MAX(creationTime) FROM comments WHERE comments.postId = posts.id)');
|
||||||
|
}
|
||||||
|
}
|
|
@ -58,6 +58,7 @@ return [
|
||||||
$container->get(\Szurubooru\Upgrades\Upgrade39::class),
|
$container->get(\Szurubooru\Upgrades\Upgrade39::class),
|
||||||
$container->get(\Szurubooru\Upgrades\Upgrade40::class),
|
$container->get(\Szurubooru\Upgrades\Upgrade40::class),
|
||||||
$container->get(\Szurubooru\Upgrades\Upgrade41::class),
|
$container->get(\Szurubooru\Upgrades\Upgrade41::class),
|
||||||
|
$container->get(\Szurubooru\Upgrades\Upgrade42::class),
|
||||||
];
|
];
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue