Ver código fonte

Prepare statistics for SQLite

Temporarily disable 30-day statistics for SQLite
https://github.com/marienfressinaud/FreshRSS/issues/100
https://github.com/marienfressinaud/FreshRSS/issues/90
Alexandre Alapetite 11 anos atrás
pai
commit
3bbd0e446f

+ 2 - 2
app/Controllers/statsController.php

@@ -3,7 +3,7 @@
 class FreshRSS_stats_Controller extends Minz_ActionController {
 
 	public function indexAction() {
-		$statsDAO = new FreshRSS_StatsDAO ();
+		$statsDAO = FreshRSS_Factory::createStatsDAO();
 		Minz_View::appendScript (Minz_Url::display ('/scripts/flotr2.min.js?' . @filemtime(PUBLIC_PATH . '/scripts/flotr2.min.js')));
 		$this->view->repartition = $statsDAO->calculateEntryRepartition();
 		$this->view->count = ($statsDAO->calculateEntryCount());
@@ -13,7 +13,7 @@ class FreshRSS_stats_Controller extends Minz_ActionController {
 	}
 
 	public function idleAction() {
-		$statsDAO = new FreshRSS_StatsDAO ();
+		$statsDAO = FreshRSS_Factory::createStatsDAO();
 		$feeds = $statsDAO->calculateFeedLastDate();
 		$idleFeeds = array();
 		$now = new \DateTime();

+ 10 - 0
app/Models/Factory.php

@@ -19,4 +19,14 @@ class FreshRSS_Factory {
 			return new FreshRSS_EntryDAO();
 		}
 	}
+
+	public static function createStatsDAO() {
+		$db = Minz_Configuration::dataBase();
+		if ($db['type'] === 'sqlite') {
+			return new FreshRSS_StatsDAOSQLite();
+		} else {
+			return new FreshRSS_StatsDAO();
+		}
+	}
+
 }

+ 2 - 2
app/Models/StatsDAO.php

@@ -201,7 +201,7 @@ SQL;
 		return $stm->fetchAll(PDO::FETCH_ASSOC);
 	}
 
-	private function convertToSerie($data) {
+	protected function convertToSerie($data) {
 		$serie = array();
 
 		foreach ($data as $key => $value) {
@@ -211,7 +211,7 @@ SQL;
 		return json_encode($serie);
 	}
 
-	private function convertToPieSerie($data) {
+	protected function convertToPieSerie($data) {
 		$serie = array();
 
 		foreach ($data as $value) {

+ 9 - 0
app/Models/StatsDAOSQLite.php

@@ -0,0 +1,9 @@
+<?php
+
+class FreshRSS_StatsDAOSQLite extends FreshRSS_StatsDAO {
+
+	public function calculateEntryCount() {
+		return $this->convertToSerie(array());	//TODO: Implement 30-day statistics for SQLite
+	}
+
+}