From 5030dac399e75ab10d318c3fdbf050de02a0c8a7 Mon Sep 17 00:00:00 2001 From: coffeetalkh Date: Wed, 15 Jun 2016 02:22:53 +0430 Subject: [PATCH] Add timeago files --- .travis.yml | 5 +- src/TimeAgo.php | 116 ++++++++++++++++++++++++++++++++++++++++++ tests/TimeAgoTest.php | 82 +++++++++++++++++++++++++++++ 3 files changed, 201 insertions(+), 2 deletions(-) create mode 100644 src/TimeAgo.php create mode 100644 tests/TimeAgoTest.php diff --git a/.travis.yml b/.travis.yml index b1ee74a..df97607 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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 diff --git a/src/TimeAgo.php b/src/TimeAgo.php new file mode 100644 index 0000000..f913af4 --- /dev/null +++ b/src/TimeAgo.php @@ -0,0 +1,116 @@ +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'); + } + } + + } + +} diff --git a/tests/TimeAgoTest.php b/tests/TimeAgoTest.php new file mode 100644 index 0000000..f612122 --- /dev/null +++ b/tests/TimeAgoTest.php @@ -0,0 +1,82 @@ +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() + ); + + } +}