예제 #1
0
 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>';
        }
    }