Skip to content

Commit 5030dac

Browse files
Add timeago files
1 parent 1f8425b commit 5030dac

File tree

3 files changed

+201
-2
lines changed

3 files changed

+201
-2
lines changed

.travis.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ php:
33
- 5.4
44
- 5.5
55
- 5.6
6+
- 7.0
67
- hhvm
78

89
script:
910
- composer update
10-
- composer dump-autoload
11+
- composer dump-autoload
1112
- phpunit
12-
13+
1314
matrix:
1415
allow_failures:
1516
- php: hhvm

src/TimeAgo.php

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
<?php
2+
3+
namespace OpenCafe\Tools;
4+
5+
use OpenCafe\Tools\Lang;
6+
7+
class TimeAgo {
8+
9+
private $language;
10+
11+
public function __construct( $timestamp, $lang ) {
12+
13+
$this->language = $lang;
14+
15+
$time_ago = strtotime($timestamp->format('Y-m-d H:i:s'));
16+
17+
$cur_time = time();
18+
19+
$time_elapsed = $cur_time - strtotime($timestamp->format('Y-m-d H:i:s'));
20+
21+
$this->second = $time_elapsed ;
22+
23+
$this->minute = round($time_elapsed / 60 );
24+
25+
$this->quarter = round($time_elapsed / 900 );
26+
27+
$this->half = round($time_elapsed / 1800 );
28+
29+
$this->hour = round($time_elapsed / 3600);
30+
31+
$this->day = round($time_elapsed / 86400 );
32+
33+
$this->week = round($time_elapsed / 604800);
34+
35+
$this->month = round($time_elapsed / 2600640 );
36+
37+
$this->year = round($time_elapsed / 31207680 );
38+
39+
}
40+
41+
public function get() {
42+
43+
// Seconds
44+
if($this->second <= 60) {
45+
return Lang::get($this->language, "just-now" );
46+
}
47+
//Minutes
48+
else if($this->minute <=60){
49+
if($this->minute==1){
50+
return Lang::get($this->language, 'one-minute') . " " .
51+
Lang::get($this->language, 'ago');
52+
}
53+
else{
54+
return "$this->minute " . Lang::get($this->language, 'minutes')
55+
. " " .
56+
Lang::get($this->language, 'ago');
57+
}
58+
}
59+
//Hours
60+
else if($this->hour <=24){
61+
if($this->hour==1){
62+
return Lang::get($this->language, 'an-hour') . " " .
63+
Lang::get($this->language, 'ago');
64+
}else{
65+
return "$this->hour " . Lang::get($this->language, 'hours')
66+
. " " .
67+
Lang::get($this->language, 'ago');
68+
}
69+
}
70+
//Days
71+
else if($this->day <= 7){
72+
if($this->day==1){
73+
return Lang::get($this->language, 'yesterday');
74+
}else{
75+
return "$this->day " . Lang::get($this->language, 'days')
76+
. " " .
77+
Lang::get($this->language, 'ago');
78+
}
79+
}
80+
//Weeks
81+
else if($this->week <= 4.3){
82+
if($this->week==1){
83+
return Lang::get($this->language, 'a-week') . " " .
84+
Lang::get($this->language, 'ago');
85+
}else{
86+
return "$this->week " . Lang::get($this->language, 'weeks')
87+
. " " .
88+
Lang::get($this->language, 'ago');
89+
}
90+
}
91+
//Months
92+
else if($this->month <=12){
93+
if($this->month==1){
94+
return Lang::get($this->language, 'a-month') . " " .
95+
Lang::get($this->language, 'ago');
96+
}else{
97+
return "$this->month " . Lang::get($this->language, 'months')
98+
. " " .
99+
Lang::get($this->language, 'ago');
100+
}
101+
}
102+
//Years
103+
else{
104+
if($this->year==1){
105+
return Lang::get($this->language, 'one-year') . " " .
106+
Lang::get($this->language, 'ago');
107+
}else{
108+
return "$this->year " . Lang::get($this->language, 'years')
109+
. " " .
110+
Lang::get($this->language, 'ago');
111+
}
112+
}
113+
114+
}
115+
116+
}

tests/TimeAgoTest.php

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<?php
2+
3+
use OpenCafe\Datium as Datium;
4+
5+
class TimeAgoTest extends PHPUnit_Framework_TestCase
6+
{
7+
8+
public function testTimeAgo()
9+
{
10+
11+
$this->assertEquals(
12+
'just now',
13+
Datium::now()->sub('1 second')->ago()
14+
);
15+
16+
$this->assertEquals(
17+
'just now',
18+
Datium::now()->sub('59 second')->ago()
19+
);
20+
21+
$this->assertEquals(
22+
'just now',
23+
Datium::now()->sub('1 minute')->ago()
24+
);
25+
26+
$this->assertEquals(
27+
'one minute ago',
28+
Datium::now()->sub('1 minute')->sub('1 second')->ago()
29+
);
30+
31+
$this->assertEquals(
32+
'59 minutes ago',
33+
Datium::now()->sub('59 minute')->sub('1 second')->ago()
34+
);
35+
36+
$this->assertEquals(
37+
'59 minutes ago',
38+
Datium::now()->sub('59 minute')->sub('1 second')->ago()
39+
);
40+
41+
$this->assertEquals(
42+
'an hour ago',
43+
Datium::now()->sub('1 hour')->sub('1 minute')->ago()
44+
);
45+
46+
$this->assertEquals(
47+
'10 hours ago',
48+
Datium::now()->sub('10 hour')->ago()
49+
);
50+
51+
$this->assertEquals(
52+
'yesterday',
53+
Datium::now()->sub('1 day')->sub('1 hour')->ago()
54+
);
55+
56+
$this->assertEquals(
57+
'3 days ago',
58+
Datium::now()->sub('3 day')->ago()
59+
);
60+
61+
$this->assertEquals(
62+
'a month ago',
63+
Datium::now()->sub('1 month')->sub('1 day')->ago()
64+
);
65+
66+
$this->assertEquals(
67+
'2 months ago',
68+
Datium::now()->sub('2 month')->sub('1 day')->ago()
69+
);
70+
71+
$this->assertEquals(
72+
'one year ago',
73+
Datium::now()->sub('1 month')->sub('1 year')->ago()
74+
);
75+
76+
$this->assertEquals(
77+
'2 years ago',
78+
Datium::now()->sub('1 month')->sub('2 year')->ago()
79+
);
80+
81+
}
82+
}

0 commit comments

Comments
 (0)