Adapt abstract other stats daily handler implementations
authorMatthias Schmidt <gravatronics@live.com>
Sat, 5 Aug 2017 15:34:30 +0000 (17:34 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Sat, 5 Aug 2017 15:34:30 +0000 (17:34 +0200)
See #2365

wcfsetup/install/files/lib/system/stat/AbstractCommentStatDailyHandler.class.php
wcfsetup/install/files/lib/system/stat/AbstractDiskUsageStatDailyHandler.class.php

index dbc1c5fe3329c5fbacbf949990a899989620d09a..2c0258dab31d3fe45078c900862fbd4225e20824 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 namespace wcf\system\stat;
 use wcf\system\comment\CommentHandler;
+use wcf\system\database\util\PreparedStatementConditionBuilder;
 use wcf\system\exception\SystemException;
 use wcf\system\WCF;
 
@@ -79,4 +80,12 @@ abstract class AbstractCommentStatDailyHandler extends AbstractStatDailyHandler
                        'total' => $total
                ];
        }
+       
+       /**
+        * @inheritDoc
+        * @since       3.1
+        */
+       protected function addConditions(PreparedStatementConditionBuilder $conditionBuilder) {
+               throw new \BadMethodCallException(__CLASS__ . " does not support addConditions().");
+       }
 }
index d448cf38d6b9c3564b5249c3669559c0b3a53e54..b9289055d5627465cd769be08607b086995f405e 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 namespace wcf\system\stat;
+use wcf\system\database\util\PreparedStatementConditionBuilder;
 use wcf\system\WCF;
 
 /**
@@ -11,15 +12,28 @@ use wcf\system\WCF;
  * @package    WoltLabSuite\Core\System\Stat
  */
 abstract class AbstractDiskUsageStatDailyHandler extends AbstractStatDailyHandler {
+       /**
+        * name of the filesize database table column
+        * @var string
+        * @since       3.1
+        */
+       protected $columnName = 'filesize';
+       
        /**
         * @inheritDoc
         */
        protected function getCounter($date, $tableName, $dateColumnName) {
-               $sql = "SELECT  CEIL(SUM(filesize) / 1000)
+               $conditionBuilder = new PreparedStatementConditionBuilder();
+               $conditionBuilder->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();
        }