summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2014-01-26 06:49:35 -0800
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2014-01-26 06:49:35 -0800
commit220c314eedb560f2e269f0da84869e643d40f737 (patch)
tree11f626c93e1efc6669caf15024d79fa71624ea32
parentc2998ffc97fbb8e45e6179f5d9c59c1b940d5782 (diff)
parent964128bd5fba878f97da04d6828692d123e2ffd4 (diff)
Merge pull request #394 from aledeg/statistics
Modification des statistiques.
-rwxr-xr-xapp/Controllers/indexController.php1
-rw-r--r--app/Models/StatsDAO.php29
-rw-r--r--app/i18n/en.php4
-rw-r--r--app/i18n/fr.php4
-rw-r--r--app/views/index/stats.phtml37
-rw-r--r--p/themes/Dark/freshrss.css17
-rw-r--r--p/themes/Flat/freshrss.css6
-rw-r--r--p/themes/Origine/freshrss.css6
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