Skip to content

Commit

Permalink
Add timeago files
Browse files Browse the repository at this point in the history
  • Loading branch information
imehdihosseini committed Jun 14, 2016
1 parent 1f8425b commit 5030dac
Show file tree
Hide file tree
Showing 3 changed files with 201 additions and 2 deletions.
5 changes: 3 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@ php:
- 5.4
- 5.5
- 5.6
- 7.0
- hhvm

script:
- composer update
- composer dump-autoload
- composer dump-autoload
- phpunit

matrix:
allow_failures:
- php: hhvm
116 changes: 116 additions & 0 deletions src/TimeAgo.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
<?php

namespace OpenCafe\Tools;

use OpenCafe\Tools\Lang;

class TimeAgo {

private $language;

public function __construct( $timestamp, $lang ) {

$this->language = $lang;

$time_ago = strtotime($timestamp->format('Y-m-d H:i:s'));

$cur_time = time();

$time_elapsed = $cur_time - strtotime($timestamp->format('Y-m-d H:i:s'));

$this->second = $time_elapsed ;

$this->minute = round($time_elapsed / 60 );

$this->quarter = round($time_elapsed / 900 );

$this->half = round($time_elapsed / 1800 );

$this->hour = round($time_elapsed / 3600);

$this->day = round($time_elapsed / 86400 );

$this->week = round($time_elapsed / 604800);

$this->month = round($time_elapsed / 2600640 );

$this->year = round($time_elapsed / 31207680 );

}

public function get() {

// Seconds
if($this->second <= 60) {
return Lang::get($this->language, "just-now" );
}
//Minutes
else if($this->minute <=60){
if($this->minute==1){
return Lang::get($this->language, 'one-minute') . " " .
Lang::get($this->language, 'ago');
}
else{
return "$this->minute " . Lang::get($this->language, 'minutes')
. " " .
Lang::get($this->language, 'ago');
}
}
//Hours
else if($this->hour <=24){
if($this->hour==1){
return Lang::get($this->language, 'an-hour') . " " .
Lang::get($this->language, 'ago');
}else{
return "$this->hour " . Lang::get($this->language, 'hours')
. " " .
Lang::get($this->language, 'ago');
}
}
//Days
else if($this->day <= 7){
if($this->day==1){
return Lang::get($this->language, 'yesterday');
}else{
return "$this->day " . Lang::get($this->language, 'days')
. " " .
Lang::get($this->language, 'ago');
}
}
//Weeks
else if($this->week <= 4.3){
if($this->week==1){
return Lang::get($this->language, 'a-week') . " " .
Lang::get($this->language, 'ago');
}else{
return "$this->week " . Lang::get($this->language, 'weeks')
. " " .
Lang::get($this->language, 'ago');
}
}
//Months
else if($this->month <=12){
if($this->month==1){
return Lang::get($this->language, 'a-month') . " " .
Lang::get($this->language, 'ago');
}else{
return "$this->month " . Lang::get($this->language, 'months')
. " " .
Lang::get($this->language, 'ago');
}
}
//Years
else{
if($this->year==1){
return Lang::get($this->language, 'one-year') . " " .
Lang::get($this->language, 'ago');
}else{
return "$this->year " . Lang::get($this->language, 'years')
. " " .
Lang::get($this->language, 'ago');
}
}

}

}
82 changes: 82 additions & 0 deletions tests/TimeAgoTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<?php

use OpenCafe\Datium as Datium;

class TimeAgoTest extends PHPUnit_Framework_TestCase
{

public function testTimeAgo()
{

$this->assertEquals(
'just now',
Datium::now()->sub('1 second')->ago()
);

$this->assertEquals(
'just now',
Datium::now()->sub('59 second')->ago()
);

$this->assertEquals(
'just now',
Datium::now()->sub('1 minute')->ago()
);

$this->assertEquals(
'one minute ago',
Datium::now()->sub('1 minute')->sub('1 second')->ago()
);

$this->assertEquals(
'59 minutes ago',
Datium::now()->sub('59 minute')->sub('1 second')->ago()
);

$this->assertEquals(
'59 minutes ago',
Datium::now()->sub('59 minute')->sub('1 second')->ago()
);

$this->assertEquals(
'an hour ago',
Datium::now()->sub('1 hour')->sub('1 minute')->ago()
);

$this->assertEquals(
'10 hours ago',
Datium::now()->sub('10 hour')->ago()
);

$this->assertEquals(
'yesterday',
Datium::now()->sub('1 day')->sub('1 hour')->ago()
);

$this->assertEquals(
'3 days ago',
Datium::now()->sub('3 day')->ago()
);

$this->assertEquals(
'a month ago',
Datium::now()->sub('1 month')->sub('1 day')->ago()
);

$this->assertEquals(
'2 months ago',
Datium::now()->sub('2 month')->sub('1 day')->ago()
);

$this->assertEquals(
'one year ago',
Datium::now()->sub('1 month')->sub('1 year')->ago()
);

$this->assertEquals(
'2 years ago',
Datium::now()->sub('1 month')->sub('2 year')->ago()
);

}
}

0 comments on commit 5030dac

Please sign in to comment.