Функцията връща изминалото време от дадено събитие подобно на Facebook. Дава ми някакви грешки и не знам как да ги оправя. Не съм е писал аз тази фунция и ако може някой да е оправи ще съм му благодарен.
Код:
function TimeAgo($datefrom,$dateto=-1)
{
// Началната дата е 01.01.1970
if($datefrom<=0) { return "Преди много време"; }
if($dateto==-1) { $dateto = time(); }
// Разлика в секунди между датите
$difference = $dateto - $datefrom;
// Ако разликата е под минута, показваме секундите
if($difference < 60)
{
$interval = "s";
}
// Ако интервала е между 1 и 60 минути показваме минутите
elseif($difference >= 60 && $difference<60*60)
{
$interval = "n";
}
// Ако интервала е между 1 и 24 часа, показваме часовете
elseif($difference >= 60*60 && $difference<60*60*24)
{
$interval = "h";
}
// Ако е в рамките на седмицата, показваме дните
elseif($difference >= 60*60*24 && $difference<60*60*24*7)
{
$interval = "d";
}
// Ако е между 1 и 30 дена, показваме седмиците
elseif($difference >= 60*60*24*7 && $difference <
60*60*24*30)
{
$interval = "ww";
}
// Ако интервала е между 30 дена и 1 година показваме месеците
elseif($difference >= 60*60*24*30 && $difference <
60*60*24*365)
{
$interval = "m";
}
// Ако интервала е над 365 дена показваме годините
elseif($difference >= 60*60*24*365)
{
$interval = "y";
}
/*
* На база на интервала определяме броя единици
* между датите.Също така определяме думичките
* за ед./мн. число (ако е 1 или са повече)
*/
switch($interval)
{
case "m":
$months_difference = floor($difference / 60 / 60 / 24 /
29);
while (mktime(date("H", $datefrom), date("i", $datefrom),
date("s", $datefrom), date("n", $datefrom)+($months_difference),
date("j", $dateto), date("Y", $datefrom)) < $dateto)
{
$months_difference++;
}
$datediff = $months_difference;
// We need this in here because it is possible
// to have an 'm' interval and a months
// difference of 12 because we are using 29 days
// in a month
if($datediff==12)
{
$datediff--;
}
$res = ($datediff==1) ? "преди месец" : "преди $datediff месеца";
break;
case "y":
$datediff = floor($difference / 60 / 60 / 24 / 365);
$res = ($datediff==1) ? "преди година" : "преди $datediff години";
break;
case "d":
$datediff = floor($difference / 60 / 60 / 24);
$res = ($datediff==1) ? "преди един ден" : "преди $datediff дена";
break;
case "ww":
$datediff = floor($difference / 60 / 60 / 24 / 7);
$res = ($datediff==1) ? "преди седмица" : "преди $datediff седмици";
break;
case "h":
$datediff = floor($difference / 60 / 60);
$res = ($datediff==1) ? "преди час" : "преди $datediff часа";
break;
case "n":
$datediff = floor($difference / 60);
$res = ($datediff==1) ? "преди минута" : "преди $datediff минути";
break;
case "s":
$datediff = $difference;
$res = ($datediff==1) ? "перди секунда" : "перди $datediff секунди";
break;
}
return $res;
}