diff options
| author | 2014-01-26 06:49:35 -0800 | |
|---|---|---|
| committer | 2014-01-26 06:49:35 -0800 | |
| commit | 220c314eedb560f2e269f0da84869e643d40f737 (patch) | |
| tree | 11f626c93e1efc6669caf15024d79fa71624ea32 | |
| parent | c2998ffc97fbb8e45e6179f5d9c59c1b940d5782 (diff) | |
| parent | 964128bd5fba878f97da04d6828692d123e2ffd4 (diff) | |
Merge pull request #394 from aledeg/statistics
Modification des statistiques.
| -rwxr-xr-x | app/Controllers/indexController.php | 1 | ||||
| -rw-r--r-- | app/Models/StatsDAO.php | 29 | ||||
| -rw-r--r-- | app/i18n/en.php | 4 | ||||
| -rw-r--r-- | app/i18n/fr.php | 4 | ||||
| -rw-r--r-- | app/views/index/stats.phtml | 37 | ||||
| -rw-r--r-- | p/themes/Dark/freshrss.css | 17 | ||||
| -rw-r--r-- | p/themes/Flat/freshrss.css | 6 | ||||
| -rw-r--r-- | p/themes/Origine/freshrss.css | 6 |
8 files changed, 86 insertions, 18 deletions
diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php index 74883962d..cb6be6049 100755 --- a/app/Controllers/indexController.php +++ b/app/Controllers/indexController.php @@ -200,6 +200,7 @@ class FreshRSS_index_Controller extends Minz_ActionController { $this->view->count = ($statsDAO->calculateEntryCount()); $this->view->feedByCategory = $statsDAO->calculateFeedByCategory(); $this->view->entryByCategory = $statsDAO->calculateEntryByCategory(); + $this->view->topFeed = $statsDAO->calculateTopFeed(); } public function aboutAction () { diff --git a/app/Models/StatsDAO.php b/app/Models/StatsDAO.php index a317c8f27..60cec7847 100644 --- a/app/Models/StatsDAO.php +++ b/app/Models/StatsDAO.php @@ -122,6 +122,7 @@ FROM {$this->prefix}category AS c, {$this->prefix}feed AS f WHERE c.id = f.category GROUP BY label +ORDER BY data DESC SQL; $stm = $this->bd->prepare($sql); $stm->execute(); @@ -146,6 +147,7 @@ FROM {$this->prefix}category AS c, WHERE c.id = f.category AND f.id = e.id_feed GROUP BY label +ORDER BY data DESC SQL; $stm = $this->bd->prepare($sql); $stm->execute(); @@ -154,6 +156,31 @@ SQL; return $this->convertToPieSerie($res); } + /** + * Calculates the 10 top feeds based on their number of entries + * + * @return array + */ + public function calculateTopFeed() { + $sql = <<<SQL +SELECT f.id AS id +, MAX(f.name) AS name +, MAX(c.name) AS category +, COUNT(e.id) AS count +FROM {$this->prefix}category AS c, +{$this->prefix}feed AS f, +{$this->prefix}entry AS e +WHERE c.id = f.category +AND f.id = e.id_feed +GROUP BY id +ORDER BY count DESC +LIMIT 10 +SQL; + $stm = $this->bd->prepare($sql); + $stm->execute(); + return $stm->fetchAll(PDO::FETCH_ASSOC); + } + private function convertToSerie($data) { $serie = array(); @@ -168,7 +195,7 @@ SQL; $serie = array(); foreach ($data as $value) { - $value['data'] = array(array(0, (int)$value['data'])); + $value['data'] = array(array(0, (int) $value['data'])); $serie[] = $value; } diff --git a/app/i18n/en.php b/app/i18n/en.php index 70fd8a74b..e5cf623c7 100644 --- a/app/i18n/en.php +++ b/app/i18n/en.php @@ -11,6 +11,8 @@ return array ( 'users' => 'Users', 'categories' => 'Categories', 'category' => 'Category', + 'feed' => 'Feed', + 'feeds' => 'Feeds', 'shortcuts' => 'Shortcuts', 'about' => 'About', 'stats' => 'Statistics', @@ -309,4 +311,6 @@ return array ( 'stats_entry_per_day' => 'Entries per day (last 30 days)', 'stats_feed_per_category' => 'Feeds per category', 'stats_entry_per_category' => 'Entries per category', + 'stats_top_feed' => 'Top ten feeds', + 'stats_entry_count' => 'Entry count', ); diff --git a/app/i18n/fr.php b/app/i18n/fr.php index 53645477b..693dce5d1 100644 --- a/app/i18n/fr.php +++ b/app/i18n/fr.php @@ -11,6 +11,8 @@ return array ( 'users' => 'Utilisateurs', 'categories' => 'Catégories', 'category' => 'Catégorie', + 'feed' => 'Flux', + 'feeds' => 'Flux', 'shortcuts' => 'Raccourcis', 'about' => 'À propos', 'stats' => 'Statistiques', @@ -309,4 +311,6 @@ return array ( 'stats_entry_per_day' => 'Nombre d’articles par jour (30 derniers jours)', 'stats_feed_per_category' => 'Flux par catégorie', 'stats_entry_per_category' => 'Articles par catégorie', + 'stats_top_feed' => 'Les dix plus gros flux', + 'stats_entry_count' => 'Nombre d’articles', ); diff --git a/app/views/index/stats.phtml b/app/views/index/stats.phtml index 487c50a4b..ae9db172b 100644 --- a/app/views/index/stats.phtml +++ b/app/views/index/stats.phtml @@ -16,23 +16,23 @@ <tbody> <tr> <th><?php echo Minz_Translate::t ('status_total')?></th> - <td><?php echo $this->repartition['main_stream']['total']?></td> - <td><?php echo $this->repartition['all_feeds']['total']?></td> + <td class="numeric"><?php echo $this->repartition['main_stream']['total']?></td> + <td class="numeric"><?php echo $this->repartition['all_feeds']['total']?></td> </tr> <tr> <th><?php echo Minz_Translate::t ('status_read')?></th> - <td><?php echo $this->repartition['main_stream']['read']?></td> - <td><?php echo $this->repartition['all_feeds']['read']?></td> + <td class="numeric"><?php echo $this->repartition['main_stream']['read']?></td> + <td class="numeric"><?php echo $this->repartition['all_feeds']['read']?></td> </tr> <tr> <th><?php echo Minz_Translate::t ('status_unread')?></th> - <td><?php echo $this->repartition['main_stream']['unread']?></td> - <td><?php echo $this->repartition['all_feeds']['unread']?></td> + <td class="numeric"><?php echo $this->repartition['main_stream']['unread']?></td> + <td class="numeric"><?php echo $this->repartition['all_feeds']['unread']?></td> </tr> <tr> <th><?php echo Minz_Translate::t ('status_favorites')?></th> - <td><?php echo $this->repartition['main_stream']['favorite']?></td> - <td><?php echo $this->repartition['all_feeds']['favorite']?></td> + <td class="numeric"><?php echo $this->repartition['main_stream']['favorite']?></td> + <td class="numeric"><?php echo $this->repartition['all_feeds']['favorite']?></td> </tr> </tbody> </table> @@ -55,6 +55,27 @@ <div id="statsEntryPerCategoryLegend"></div> </div> + <div class="stat"> + <h2><?php echo Minz_Translate::t ('stats_top_feed')?></h2> + <table> + <thead> + <tr> + <th><?php echo Minz_Translate::t ('feed')?></th> + <th><?php echo Minz_Translate::t ('category')?></th> + <th><?php echo Minz_Translate::t ('stats_entry_count')?></th> + </tr> + </thead> + <tbody> + <?php foreach ($this->topFeed as $feed):?> + <tr> + <td><?php echo $feed['name']?></td> + <td><?php echo $feed['category']?></td> + <td class="numeric"><?php echo $feed['count']?></td> + </tr> + <?php endforeach;?> + </tbody> + </table> + </div> </div> <script> diff --git a/p/themes/Dark/freshrss.css b/p/themes/Dark/freshrss.css index abda226a3..e54a0eadd 100644 --- a/p/themes/Dark/freshrss.css +++ b/p/themes/Dark/freshrss.css @@ -877,14 +877,13 @@ input.extend { } .stat { - border:1px solid #aaa; + border:1px solid #2f2f2f; border-radius:10px; - box-shadow:2px 2px 5px #aaa; margin:10px 0; padding:0 5px; } .stat > h2 { - border-bottom:1px solid #aaa; + border-bottom:1px solid #2f2f2f; margin:0 -5px; padding-left:5px; } @@ -894,21 +893,25 @@ input.extend { .stat > table { border-collapse:collapse; margin:5px 0; - text-align:center; width:100%; } .stat > table > thead > tr { - border-bottom:2px solid #aaa; + border-bottom:2px solid #2f2f2f; } .stat > table > tbody > tr { - border-bottom:1px solid #aaa; + border-bottom:1px solid #2f2f2f; } .stat > table > tbody > tr:last-child { border-bottom:0; } .stat > table th, .stat > table td { - border-left:2px solid #aaa; + border-left:2px solid #2f2f2f; + padding:5px; } .stat > table th:first-child, .stat > table td:first-child { border-left:0; } +.stat > table td.numeric{ + margin:5px 0; + text-align:center; +} diff --git a/p/themes/Flat/freshrss.css b/p/themes/Flat/freshrss.css index 640c963c2..19f5967ea 100644 --- a/p/themes/Flat/freshrss.css +++ b/p/themes/Flat/freshrss.css @@ -861,7 +861,6 @@ input.extend { .stat > table { border-collapse:collapse; margin:5px 0; - text-align:center; width:100%; } .stat > table > thead > tr { @@ -875,7 +874,12 @@ input.extend { } .stat > table th, .stat > table td { border-left:2px solid #aaa; + padding:5px; } .stat > table th:first-child, .stat > table td:first-child { border-left:0; } +.stat > table td.numeric{ + margin:5px 0; + text-align:center; +}
\ No newline at end of file diff --git a/p/themes/Origine/freshrss.css b/p/themes/Origine/freshrss.css index 98f470536..85a23140c 100644 --- a/p/themes/Origine/freshrss.css +++ b/p/themes/Origine/freshrss.css @@ -917,7 +917,6 @@ input.extend { .stat > table { border-collapse:collapse; margin:5px 0; - text-align:center; width:100%; } .stat > table > thead > tr { @@ -931,7 +930,12 @@ input.extend { } .stat > table th, .stat > table td { border-left:2px solid #aaa; + padding:5px; } .stat > table th:first-child, .stat > table td:first-child { border-left:0; } +.stat > table td.numeric{ + margin:5px 0; + text-align:center; +}
\ No newline at end of file |
