Răsfoiți Sursa

Add repartition statistic support in Sqlite

Alexis Degrugillier 11 ani în urmă
părinte
comite
aa317eb294
2 a modificat fișierele cu 28 adăugiri și 2 ștergeri
  1. 1 1
      app/Models/StatsDAO.php
  2. 27 1
      app/Models/StatsDAOSQLite.php

+ 1 - 1
app/Models/StatsDAO.php

@@ -95,7 +95,7 @@ SQL;
 	 * @return string
 	 */
 	public function calculateEntryRepartitionPerFeedPerHour($feed = null) {
-		return $this->calculateEntryRepartitionPerFeedPerPeriod('%k', $feed);
+		return $this->calculateEntryRepartitionPerFeedPerPeriod('%H', $feed);
 	}
 
 	/**

+ 27 - 1
app/Models/StatsDAOSQLite.php

@@ -28,10 +28,36 @@ SQL;
 		$res = $stm->fetchAll(PDO::FETCH_ASSOC);
 
 		foreach ($res as $value) {
-			$count[(int)$value['day']] = (int) $value['count'];
+			$count[(int) $value['day']] = (int) $value['count'];
 		}
 
 		return $this->convertToSerie($count);
 	}
 
+	protected function calculateEntryRepartitionPerFeedPerPeriod($period, $feed = null) {
+		if ($feed) {
+			$restrict = "WHERE e.id_feed = {$feed}";
+		} else {
+			$restrict = '';
+		}
+		$sql = <<<SQL
+SELECT strftime('{$period}', e.date, 'unixepoch') AS period
+, COUNT(1) AS count
+FROM {$this->prefix}entry AS e
+{$restrict}
+GROUP BY period
+ORDER BY period ASC
+SQL;
+
+		$stm = $this->bd->prepare($sql);
+		$stm->execute();
+		$res = $stm->fetchAll(PDO::FETCH_NAMED);
+
+		foreach ($res as $value) {
+			$repartition[(int) $value['period']] = (int) $value['count'];
+		}
+
+		return $this->convertToSerie($repartition);
+	}
+
 }