mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-10-20 18:24:36 -04:00
commit
7be9613fa6
7 files changed
+68
-9
No files matched your search
@@ -21,6 +21,7 @@ class FreshRSS_stats_Controller extends Minz_ActionController {
|
||||
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();
|
||||
$this->view->average = $statsDAO->calculateEntryAverage();
|
||||
$this->view->feedByCategory = $statsDAO->calculateFeedByCategory();
|
||||
$this->view->entryByCategory = $statsDAO->calculateEntryByCategory();
|
||||
$this->view->topFeed = $statsDAO->calculateTopFeed();
|
||||
|
||||
+24
-3
@@ -79,6 +79,27 @@ SQL;
|
||||
return $this->convertToSerie($count);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates entry average per day on a 30 days period.
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function calculateEntryAverage() {
|
||||
$period = self::ENTRY_COUNT_PERIOD;
|
||||
|
||||
// Get stats per day for the last 30 days
|
||||
$sql = <<<SQL
|
||||
SELECT COUNT(1) / {$period} AS average
|
||||
FROM {$this->prefix}entry AS e
|
||||
WHERE FROM_UNIXTIME(e.date, '%Y%m%d') BETWEEN DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -{$period} DAY), '%Y%m%d') AND DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y%m%d')
|
||||
SQL;
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
$res = $stm->fetch(PDO::FETCH_NAMED);
|
||||
|
||||
return round($res['average'], 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize an array for the entry count.
|
||||
*
|
||||
@@ -160,7 +181,7 @@ SQL;
|
||||
public function calculateEntryAveragePerFeedPerHour($feed = null) {
|
||||
return $this->calculateEntryAveragePerFeedPerPeriod(1/24, $feed);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Calculates the average number of article per day of week per feed
|
||||
*
|
||||
@@ -180,10 +201,10 @@ SQL;
|
||||
public function calculateEntryAveragePerFeedPerMonth($feed = null) {
|
||||
return $this->calculateEntryAveragePerFeedPerPeriod(30, $feed);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Calculates the average number of article per feed
|
||||
*
|
||||
*
|
||||
* @param float $period number used to divide the number of day in the period
|
||||
* @param integer $feed id
|
||||
* @return integer
|
||||
|
||||
@@ -34,6 +34,29 @@ SQL;
|
||||
return $this->convertToSerie($count);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates entry average per day on a 30 days period.
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function calculateEntryAverage() {
|
||||
$period = self::ENTRY_COUNT_PERIOD;
|
||||
|
||||
// Get stats per day for the last 30 days
|
||||
$sql = <<<SQL
|
||||
SELECT COUNT(1) / {$period} AS average
|
||||
FROM {$this->prefix}entry AS e
|
||||
WHERE strftime('%Y%m%d', e.date, 'unixepoch')
|
||||
BETWEEN strftime('%Y%m%d', 'now', '-{$period} days')
|
||||
AND strftime('%Y%m%d', 'now', '-1 day')
|
||||
SQL;
|
||||
$stm = $this->bd->prepare($sql);
|
||||
$stm->execute();
|
||||
$res = $stm->fetch(PDO::FETCH_NAMED);
|
||||
|
||||
return round($res['average'], 2);
|
||||
}
|
||||
|
||||
protected function calculateEntryRepartitionPerFeedPerPeriod($period, $feed = null) {
|
||||
if ($feed) {
|
||||
$restrict = "WHERE e.id_feed = {$feed}";
|
||||
|
||||
@@ -56,6 +56,7 @@ return array (
|
||||
'stats_entry_per_hour' => 'Per hour',
|
||||
'stats_entry_per_day_of_week' => 'Per day of week',
|
||||
'stats_entry_per_month' => 'Per month',
|
||||
'stats_percent_of_total' => '%% of total',
|
||||
|
||||
'last_week' => 'Last week',
|
||||
'last_month' => 'Last month',
|
||||
|
||||
@@ -56,6 +56,7 @@ return array (
|
||||
'stats_entry_per_hour' => 'Par heure',
|
||||
'stats_entry_per_day_of_week' => 'Par jour de la semaine',
|
||||
'stats_entry_per_month' => 'Par mois',
|
||||
'stats_percent_of_total' => '%% du total',
|
||||
|
||||
'last_week' => 'Depuis la semaine dernière',
|
||||
'last_month' => 'Depuis le mois dernier',
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
<th><?php echo _t ('feed'); ?></th>
|
||||
<th><?php echo _t ('category'); ?></th>
|
||||
<th><?php echo _t ('stats_entry_count'); ?></th>
|
||||
<th><?php echo _t ('stats_percent_of_total'); ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -56,6 +57,7 @@
|
||||
<td><a href="<?php echo _url('stats', 'repartition', 'id', $feed['id']); ?>"><?php echo $feed['name']; ?></a></td>
|
||||
<td><?php echo $feed['category']; ?></td>
|
||||
<td class="numeric"><?php echo formatNumber($feed['count']); ?></td>
|
||||
<td class="numeric"><?php echo formatNumber($feed['count'] / $this->repartition['all_feeds']['total'] * 100, 1);?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
@@ -91,12 +93,22 @@ function initStats() {
|
||||
return;
|
||||
}
|
||||
// Entry per day
|
||||
var avg = [];
|
||||
for (var i = -31; i <= 0; i++) {
|
||||
avg.push([i, <?php echo $this->average?>]);
|
||||
}
|
||||
Flotr.draw(document.getElementById('statsEntryPerDay'),
|
||||
[<?php echo $this->count ?>],
|
||||
[{
|
||||
data: <?php echo $this->count ?>,
|
||||
bars: {horizontal: false, show: true}
|
||||
},{
|
||||
data: avg,
|
||||
lines: {show: true},
|
||||
label: "<?php echo $this->average?>"
|
||||
}],
|
||||
{
|
||||
grid: {verticalLines: false},
|
||||
bars: {horizontal: false, show: true},
|
||||
xaxis: {noTicks: 6, showLabels: false, tickDecimals: 0},
|
||||
xaxis: {noTicks: 6, showLabels: false, tickDecimals: 0, min: -30.75, max: -0.25},
|
||||
yaxis: {min: 0},
|
||||
mouse: {relative: true, track: true, trackDecimals: 0, trackFormatter: function(obj) {return numberFormat(obj.y);}}
|
||||
});
|
||||
|
||||
@@ -67,7 +67,7 @@ function initStats() {
|
||||
}, {
|
||||
data: avg_h,
|
||||
lines: {show: true},
|
||||
label: <?php echo $this->averageHour?>,
|
||||
label: "<?php echo $this->averageHour?>",
|
||||
yaxis: 2
|
||||
}],
|
||||
{
|
||||
@@ -96,7 +96,7 @@ function initStats() {
|
||||
}, {
|
||||
data: avg_dow,
|
||||
lines: {show: true},
|
||||
label: <?php echo $this->averageDayOfWeek?>,
|
||||
label: "<?php echo $this->averageDayOfWeek?>",
|
||||
yaxis: 2
|
||||
}],
|
||||
{
|
||||
@@ -126,7 +126,7 @@ function initStats() {
|
||||
}, {
|
||||
data: avg_m,
|
||||
lines: {show: true},
|
||||
label: <?php echo $this->averageMonth?>,
|
||||
label: "<?php echo $this->averageMonth?>",
|
||||
yaxis: 2
|
||||
}],
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user