Merge pull request #625 from AndreasK79/current_streak

Current streak is added.
pull/626/head
Peter Goodhall 2020-09-21 11:53:43 +01:00 zatwierdzone przez GitHub
commit 2c44517370
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
3 zmienionych plików z 126 dodań i 0 usunięć

Wyświetl plik

@ -19,6 +19,8 @@ class Dayswithqso extends CI_Controller {
$data['result'] = $this->dayswithqso_model->getDaysWithQso();
$data['streaks'] = $this->dayswithqso_model->getLongestStreak();
$data['currentstreak'] = $this->dayswithqso_model->getCurrentStreak();
$data['almostcurrentstreak'] = $this->dayswithqso_model->getAlmostCurrentStreak();
$this->load->view('interface_assets/header', $data);
$this->load->view('dayswithqso/index');

Wyświetl plik

@ -24,6 +24,82 @@ class Dayswithqso_model extends CI_Model
return $query->result();
}
/*
* Function returns current streak
*/
function getCurrentStreak() {
$dates = $this->getDates();
$dates = array_reverse($dates);
$streak = 1;
$firstrun = true;
$dateprev = date_create(date('Y-m-d'));
foreach($dates as $date) { // Loop through the result set
$datecurr = date_create($date->date);
$diff = $dateprev->diff($datecurr)->format("%a"); // Getting date difference between current date and previous date in array
if ($diff == 0) {
$streaks['highstreak'] = $streak;
$streaks['endstreak'] = $datecurr->format('Y-m-d');
$streaks['beginstreak'] = $datecurr->format('Y-m-d');
$firstrun = false;
}
else if ($diff == 1 and !$firstrun) { // If diff = 1, means that we are on a streak
$streaks['highstreak'] = ++$streak;
$streaks['beginstreak'] = $datecurr->sub(new DateInterval('P'.($streak-1).'D'))->format('Y-m-d');
} else {
break;
}
$dateprev = date_create($date->date);
}
if (isset($streaks) && is_array($streaks)) {
return $streaks;
} else {
return null;
}
}
/*
* Function returns streak that ended yesterday, but can be continued if a qso is made today
*/
function getAlmostCurrentStreak() {
$dates = $this->getDates();
$dates = array_reverse($dates);
$streak = 1;
$firstrun = true;
$dateprev = date_create(date('Y-m-d'));
foreach($dates as $date) { // Loop through the result set
$datecurr = date_create($date->date);
$diff = $dateprev->diff($datecurr)->format("%a"); // Getting date difference between current date and previous date in array
if ($diff == 1 && $firstrun == true) {
$streaks['highstreak'] = $streak++;
$streaks['endstreak'] = $datecurr->format('Y-m-d');
$streaks['beginstreak'] = $datecurr->format('Y-m-d');
$firstrun = false;
}
else if ($diff == 1 && $firstrun == false) {
$streaks['highstreak'] = $streak++;
$streaks['beginstreak'] = $datecurr->format('Y-m-d');
} else {
//$streaks['highstreak'] = $streak;
//$streaks['beginstreak'] = $datecurr->format('Y-m-d');
break;
}
$dateprev = date_create($date->date);
}
if (isset($streaks) && is_array($streaks)) {
return $streaks;
} else {
return null;
}
}
/*
* Function returns the 10 longest streaks of QSOs based on all QSO dates in the log on active station profile
*/

Wyświetl plik

@ -70,4 +70,52 @@
echo '<div class="alert alert-danger" role="alert"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>No streak found!</div>';
}
?>
<h2>Current streak with QSOs in the log</h2>
<?php
if (is_array($currentstreak)) {
echo '<div id="streaks" class="table-responsive"><table class="qsotable table table-bordered table-hover table-striped table-condensed">';
echo '<tr>';
echo '<th style=\'text-align: center\'>Current Streak (Continues days with QSOs)</th>';
echo '<th style=\'text-align: center\'>Begin date</th>';
echo '<th style=\'text-align: center\'>End date</th>';
echo '</tr>';
echo '<tr>';
echo '<td style=\'text-align: center\'>' . $currentstreak['highstreak'] . '</td>';
$beginstreak_newdate = strtotime($currentstreak['beginstreak']);
echo '<td style=\'text-align: center\'>' . date($custom_date_format, $beginstreak_newdate) . '</td>';
$endstreak_newdate = strtotime($currentstreak['endstreak']);
echo '<td style=\'text-align: center\'>' . date($custom_date_format, $endstreak_newdate) . '</td>';
echo '</tr>';
echo '</table></div>';
}
elseif (is_array($almostcurrentstreak)) {
?>
<p>If you make a QSO today, you can continue to extend your streak, else your current streak will be broken!</p>
<?php
echo '<div id="streaks" class="table-responsive"><table class="qsotable table table-bordered table-hover table-striped table-condensed">';
echo '<tr>';
echo '<th style=\'text-align: center\'>Current Streak (Continues days with QSOs)</th>';
echo '<th style=\'text-align: center\'>Begin date</th>';
echo '<th style=\'text-align: center\'>End date</th>';
echo '</tr>';
echo '<tr>';
echo '<td style=\'text-align: center\'>' . $almostcurrentstreak['highstreak'] . '</td>';
$beginstreak_newdate = strtotime($almostcurrentstreak['beginstreak']);
echo '<td style=\'text-align: center\'>' . date($custom_date_format, $beginstreak_newdate) . '</td>';
$endstreak_newdate = strtotime($almostcurrentstreak['endstreak']);
echo '<td style=\'text-align: center\'>' . date($custom_date_format, $endstreak_newdate) . '</td>';
echo '</tr>';
echo '</table></div>';
}
else {
echo '<div class="alert alert-danger" role="alert"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>No current streak found!</div>';
}
?>
</div>