From e41e77b8a99a4a61d38b57b0ed820dca5f58e5cf Mon Sep 17 00:00:00 2001 From: Matthias Schmidt Date: Sat, 5 Aug 2017 17:34:30 +0200 Subject: [PATCH] Adapt abstract other stats daily handler implementations See #2365 --- .../AbstractCommentStatDailyHandler.class.php | 9 ++++++ ...bstractDiskUsageStatDailyHandler.class.php | 32 +++++++++++++++---- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/wcfsetup/install/files/lib/system/stat/AbstractCommentStatDailyHandler.class.php b/wcfsetup/install/files/lib/system/stat/AbstractCommentStatDailyHandler.class.php index dbc1c5fe33..2c0258dab3 100644 --- a/wcfsetup/install/files/lib/system/stat/AbstractCommentStatDailyHandler.class.php +++ b/wcfsetup/install/files/lib/system/stat/AbstractCommentStatDailyHandler.class.php @@ -1,6 +1,7 @@ $total ]; } + + /** + * @inheritDoc + * @since 3.1 + */ + protected function addConditions(PreparedStatementConditionBuilder $conditionBuilder) { + throw new \BadMethodCallException(__CLASS__ . " does not support addConditions()."); + } } diff --git a/wcfsetup/install/files/lib/system/stat/AbstractDiskUsageStatDailyHandler.class.php b/wcfsetup/install/files/lib/system/stat/AbstractDiskUsageStatDailyHandler.class.php index d448cf38d6..b9289055d5 100644 --- a/wcfsetup/install/files/lib/system/stat/AbstractDiskUsageStatDailyHandler.class.php +++ b/wcfsetup/install/files/lib/system/stat/AbstractDiskUsageStatDailyHandler.class.php @@ -1,5 +1,6 @@ add($dateColumnName . ' BETWEEN ? AND ?', [$date, $date + 86399]); + + $this->addConditions($conditionBuilder); + + $sql = "SELECT CEIL(SUM(" . $this->columnName . ") / 1000) FROM ".$tableName." - WHERE ".$dateColumnName." BETWEEN ? AND ?"; + " . $conditionBuilder; $statement = WCF::getDB()->prepareStatement($sql); - $statement->execute([$date, $date + 86399]); + $statement->execute($conditionBuilder->getParameters()); + return $statement->fetchColumn(); } @@ -27,11 +41,17 @@ abstract class AbstractDiskUsageStatDailyHandler extends AbstractStatDailyHandle * @inheritDoc */ protected function getTotal($date, $tableName, $dateColumnName) { - $sql = "SELECT CEIL(SUM(filesize) / 1000) + $conditionBuilder = new PreparedStatementConditionBuilder(); + $conditionBuilder->add($dateColumnName . ' < ?', [$date + 86399]); + + $this->addConditions($conditionBuilder); + + $sql = "SELECT CEIL(SUM(" . $this->columnName . ") / 1000) FROM ".$tableName." - WHERE ".$dateColumnName." < ?"; + " . $conditionBuilder; $statement = WCF::getDB()->prepareStatement($sql); - $statement->execute([$date + 86400]); + $statement->execute($conditionBuilder->getParameters()); + return $statement->fetchColumn(); } -- 2.20.1