Merge pull request #394 from aledeg/statistics

Modification des statistiques.
This commit is contained in:
Alexandre Alapetite
2014-01-26 06:49:35 -08:00
8 changed files with 86 additions and 18 deletions

View File

@@ -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 () {

View File

@@ -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;
}

View File

@@ -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',
);

View File

@@ -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 darticles 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 darticles',
);

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}