| <?php
 /**
  * @author seun makinde williams (seuntech)
  * @copyright 2011
  * @version 1.0
  * @tutorial for help or more script visit www.1plusalltutor.com
  * @link http://www.1plusalltutor.com
  * @license * This program is free software; you can redistribute it and/or 
  * modify it under the terms of the GNU General Public License 
  * as published by the Free Software Foundation
  * 
  * This program is distributed in the hope that it will be useful, 
  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * 
  */
 class timekeeper
 {
    function check($current_time)
    {
       $this->current_time = trim($current_time);
       if (!filter_var($this->current_time, FILTER_VALIDATE_INT) || strlen($this->
          current_time) < 9)
       {
          $this->current_time = strtotime($this->current_time);
       } else
       {
          $this->current_time = $this->current_time;
       }
       return (int)$this->current_time;
    }
    function time_stamp($current_time)
    {
       $this->current_time = timekeeper::check($current_time);
       $this->difference = time() - $this->current_time;
       $this->seconds = $this->difference;
       $this->minutes = round($this->difference / 60);
       $this->hours = round($this->difference / 3600);
       $this->days = round($this->difference / 86400);
       $this->weeks = round($this->difference / 604800);
       $this->months = round($this->difference / 2419200);
       $this->years = round($this->difference / 29030400);
       // Seconds
       if ($this->seconds <= 60)
       {
          return $this->seconds . " Second ago";
       }
       //Minutes
       if ($this->minutes <= 60)
       {
          if ($this->minutes == 1)
          {
             return "1 Minute ago";
          } else
          {
             return $this->minutes . " Minutes ago";
          }
       }
       //Hours
       if ($this->hours <= 24)
       {
          if ($this->hours == 1)
          {
             return "1 hour ago";
          } else
          {
             return $this->hours . " hours ago";
          }
       }
       //Yesterday
       if ($this->days <= 3)
       {
          return "yesterday";
       }
       //Days
       if ($this->days <= 7)
       {
          if ($this->days == 1)
          {
             return "24 Hours ago";
          } else
          {
             return $this->days . " days ago";
          }
       }
       //Weeks
       if ($this->weeks <= 4)
       {
          if ($this->weeks == 1)
          {
             return "7 days ago";
          } else
          {
             return $this->weeks . " weeks ago";
          }
       }
       //Months
       if ($this->months <= 12)
       {
          if ($this->months == 1)
          {
             return "4 weeks ago";
          } else
          {
             return $this->months . " months ago";
          }
       }
       //Years
       if ($this->years == 1)
       {
          return "12 months ago";
       } else
       {
          return $this->years . " years ago";
       }
    }
    #llllllllllllllllllllllllllllllllllllllllllllllllllllll
    function Weekdays($start, $end, $day, $include_start_end = false)
    {
       $this->start = $start;
       $this->end = $end;
       $this->day = $day;
       $this->days = 0;
       $this->include_start_end = $include_start_end;
       $this->start = timekeeper::check($this->start);
       $this->end = timekeeper::check($this->end);
       $this->day = strtolower($this->day);
       $current_ts = $this->start;
       // loop next $this->day until timestamp past $this->end
       while ($current_ts < $this->end)
       {
          if (($current_ts = strtotime('next ' . $this->day, $current_ts)) < $this->end)
          {
             $this->days++;
          }
       }
       // include start/end days
       if ($this->include_start_end)
       {
          if (strtolower(date('l', $this->start)) == $this->day)
          {
             $this->days++;
          }
          if (strtolower(date('0', $this->end)) == $this->day)
          {
             $this->days++;
          }
       }
       return (int)$this->days;
    }
    #future time
    function time_past($case, $time)
    {
       $this->case = ucwords($case) . substr($time, 0, 1);
       $this->time = substr($time, 1, 50);
       switch ($this->case)
       {
          case "H-":
             $this->tomorrow = mktime(date("H") - $this->time, date("i"), date("s"), date("m"),
                date("d"), date("y"));
             break;
          case "H+":
             $this->tomorrow = mktime(date("H") + $this->time, date("i"), date("s"), date("m"),
                date("d"), date("y"));
             break;
          case "I-":
             $this->tomorrow = mktime(date("H"), date("i") - $this->time, date("s"), date("m"),
                date("d"), date("y"));
             break;
          case "I+":
             $this->tomorrow = mktime(date("H"), date("i") + $this->time, date("s"), date("m"),
                date("d"), date("y"));
             break;
          case "S-":
             $this->tomorrow = mktime(date("H"), date("i"), date("s") - $this->time, date("m"),
                date("d"), date("y"));
             break;
          case "S+":
             $this->tomorrow = mktime(date("H"), date("i"), date("s") + $this->time, date("m"),
                date("d"), date("y"));
             break;
          case "M-":
             $this->tomorrow = mktime(date("H"), date("i"), date("s"), date("m") - $this->
                time, date("d"), date("y"));
             break;
          case "M+":
             $this->tomorrow = mktime(date("H"), date("i"), date("s"), date("m") + $this->
                time, date("d"), date("y"));
             break;
          case "D-":
             $this->tomorrow = mktime(date("H"), date("i"), date("s"), date("m"), date("d") -
                $this->time, date("y"));
             break;
          case "D+":
             $this->tomorrow = mktime(date("H"), date("i"), date("s"), date("m"), date("d") +
                $this->time, date("y"));
             break;
          case "Y-":
             $this->tomorrow = mktime(date("H"), date("i"), date("s"), date("m"), date("d"),
                date("y") - $this->time);
             break;
          case "Y+":
             $this->tomorrow = mktime(date("H"), date("i"), date("s"), date("m"), date("d"),
                date("y") + $this->time);
             break;
          default:
             $this->tomorrow = mktime(date("H"), date("i"), date("s"), date("m"), date("d"),
                date("y"));
             break;
       }
       return date("Y-m-d H:i:s", $this->tomorrow);
    }
    #days deference
    function time_deffernce($date2, $date1, $format = "D")
    {
       $this->case = ucwords($format);
       $this->start_date = timekeeper::check($date1);
       $this->end_date = timekeeper::check($date2);
       $this->new_date = $this->start_date - $this->end_date;
       switch ($this->case)
       {
          case "S":
             $this->date = $this->new_date;
             break;
          case "I":
             $this->date = round($this->new_date / 60);
             break;
          case "H":
             $this->date = round($this->new_date / 3600);
             break;
          case "D":
             $this->date = round($this->new_date / 86400);
             break;
          case "W":
             $this->date = round($this->new_date / 604800);
             break;
          case "M":
             $this->date = round($this->new_date / 2419200);
             break;
          case "Y":
             $this->date = round($this->new_date / 29030400);
             break;
          default:
             $this->date = round($this->new_date / 86400);
             break;
       }
       return $this->date;
    }
    #sesionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
    function season()
    {
       $this->seasons = array("Winter", "Spring", "Summer", "Autumn");
       return $this->seasons[(int)((date("n") % 12) / 3)];
    }
    #drop down year
    function drop_year($period)
    {
       $this->time = substr($period, 1, 50);
       $this->case = substr($period, 0, 1);
       switch ($this->case)
       {
          case "-":
             $this->end = date('Y') - $this->time;
             break;
          case "+":
             $this->end = date('Y') + $this->time;
             break;
          default:
             $this->end = date('Y') - 18;
             break;
       }
       $this->start = "1910";
       $this->year = array();
       for ($i = $this->start; $i <= $this->end; $i++)
       {
          $this->year[] = $i;
       }
       return $this->year;
    }
    #time coversion
    function convert_time($time, $output = "Y-m-d H:i:s")
    {
       $this->time = $time;
       $this->output = $output;
       return date($this->output, $this->time);
    }
    #calendar
    function calendar($month, $year)
    {
       $this->month = $month;
       $this->year = $year;
       $this->timestamp = mktime(0, 0, 0, $this->month, 1, $this->year); #timestamp
       $this->maxday = date("t", $this->timestamp); #finds length of given month
       $this->startday = date("N", $this->timestamp); #this month day 1, day of the week, numeric
       $this->calendar = "";
       for ($i = 0; $i < ($this->maxday + $this->startday); $i++)
       {
          if (($i % 7) == 0)
          {
             $this->calendar .= "<tr>";
          }
          if ($i < $this->startday)
          {
             $this->calendar .= "<td></td>";
          } else
          {
             if ($i - $this->startday + 1 == date('j'))
             {
                $this->calendar .= "<td align='center' style='background-color:#cccccc; color:white; height:20px;'>" . ($i - $this->startday + 1) . "</td>";
             } else
             {
                $this->calendar .= "<td align='center' height='20px'>" . ($i - $this->startday + 1) . "</td>";
             }
          }
          if (($i % 7) == 6)
             $this->calendar .= "</tr>";
       }
       return $this->calendar;
    }
    function number_month($month)
    {
       return date('F', mktime(0, 0, 0, $month));
    }
 }
?>
 |