public function testDiffOfDays() { $this->assertEquals(0, Time::diffOfDates('2006-09-07', '2006-09-07')); $this->assertEquals(1, Time::diffOfDates('2006-09-06', '2006-09-07')); $this->assertEquals(2, Time::diffOfDates('2006-09-05', '2006-09-07')); $this->assertEquals(10, Time::diffOfDates('2006-08-28', '2006-09-07')); $this->assertEquals(31, Time::diffOfDates('2006-08-07', '2006-09-07')); $this->assertEquals(2, Time::diffOfDates('2014-03-30', '2014-04-01')); }
/** * Display days of streakrunning */ private function displayStreak() { $Query = ' SELECT `time`, DATE(FROM_UNIXTIME(`time`)) as `day` FROM `' . PREFIX . 'training` WHERE `sportid`=' . Configuration::General()->runningSport() . ' AND `accountid`=' . SessionAccountHandler::getId() . ' GROUP BY DATE(FROM_UNIXTIME(`time`)) ORDER BY `day` DESC'; $Request = DB::getInstance()->query($Query); $IsStreak = true; $FirstDay = true; $NumDays = 0; $LastTime = time(); $LastDay = date('Y-m-d'); $Text = ''; while ($IsStreak) { $Day = $Request->fetch(); if ($FirstDay) { if ($Day['day'] != $LastDay) { if (Time::diffOfDates($Day['day'], $LastDay) == 1) { $Text = __('If you run today: '); $NumDays++; } else { $IsStreak = false; } } $FirstDay = false; } if (!$Day || !$IsStreak) { $IsStreak = false; } else { if (Time::diffOfDates($Day['day'], $LastDay) <= 1) { $NumDays++; $LastDay = $Day['day']; $LastTime = $Day['time']; } else { $IsStreak = false; } } } if ($NumDays >= $this->Configuration()->value('show_streak_days')) { if ($NumDays == 0) { $Text .= __('You don\'t have a streak. Go out and start one!'); $LastTraining = DB::getInstance()->query('SELECT time FROM `' . PREFIX . 'training` WHERE `sportid`=' . Configuration::General()->runningSport() . ' AND accountid = ' . SessionAccountHandler::getId() . ' ORDER BY `time` DESC LIMIT 1')->fetch(); if (isset($LastTraining['time'])) { $Text .= ' ' . sprintf(__('Your last run was on %s'), date('d.m.Y', $LastTraining['time'])); } } else { $Text .= sprintf(_n('%d day of running since %s', '%d days of running since %s', $NumDays), $NumDays, date('d.m.Y', $LastTime)); } echo '<p class="text c"><em>' . $Text . '</em></p>'; } }