2 /********************************************************************
6 Copyright 2008-2009 Radosław Pietruszewski
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 version 2 as published by the Free Software Foundation.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 ********************************************************************/
26 * helpery związane z obróbką tekstu
30 * string generatePlFormOf(int $int, string $odm1, string $odm2, $string $odm3)
32 * Tworzy odpowiednią polską odmianę rzeczownika dla danego liczebnika.
37 * int $int - liczebnik, do którego ma zostać dopasowana odpowiednia forma rzeczownika
38 * string $odm1 - odmiana, taka jaka jest do liczby 1, np. 'pies', 'dom', 'rower'
39 * string $odm2 - odmiana, taka jaka jest do liczby 2, np. 'psy', 'domy', 'rowery'
40 * string $odm3 - odmiana, taka jaka jest do liczby 5, np. 'psów', 'domów', 'rowerów'
44 * generatePlFormOf( 1, 'rower', 'rowery', 'rowerów') -> 'rower'
45 * generatePlFormOf( 52, 'arbuz', 'arbuzy', 'arbuzów') -> 'arbuzy'
46 * generatePlFormOf(178, 'numer', 'numery', 'numerów') -> 'numerów'
49 function generatePlFormOf($int, $odm1, $odm2, $odm3)
51 if($int == 0) return $odm3;
52 if($int == 1) return $odm1;
53 if($int > 1 && $int < 5) return $odm2;
54 if($int > 4 && $int < 22) return $odm3;
55 $int = substr($int, -1, 1);
57 if($int == 0 ||
$int == 1) return $odm3;
58 if($int > 1 && $int < 5) return $odm2;
59 if($int > 4 && $int < 10) return $odm3;
63 * string plDate(int $timestamp)
65 * tworzy prostą do zrozumienia datę z timestampu
67 * jeśli $timestamp był mniej niż minutę temu zwraca 'przed chwilą'
68 * jeśli $timestamp był mniej niż godzinę temu zwraca 'x minut(ę/y) temu'
69 * jeśli $timestamp to data z dzisiaj zwraca 'dzisiaj, hh:mm'
70 * jeśli $timestamp to data z wczoraj zwraca 'wczoraj, hh:mm'
71 * jeśli $timestamp to data z przedwczoraj zwraca 'przedwczoraj, hh:mm'
72 * jeśli $timestamp był wcześniej niż przedwczoraj zwraca 'dd.mm.yyyy hh:mm'
73 * [PHP date() -> d.m.Y H:i]
75 * int $timestamp - Unix timestamp do przekształcenia w datę
78 function plDate($timestamp)
80 $timestamp = intval($timestamp);
82 // mniej niż minuta temu
84 if($timestamp +
60 > time())
86 return 'przed chwilą';
89 // mniej niż godzina temu
91 if($timestamp +
3600 > time())
93 $minutesAgo = (int) ((time() - $timestamp) / 60);
94 return $minutesAgo . ' ' . generatePlFormOf($minutesAgo, 'minutę', 'minuty', 'minut') . ' temu';
99 list($day, $month, $year, $hour, $minute) = explode('.', date('j.m.Y.H.i', $timestamp));
103 list($dayN, $monthN, $yearN) = explode('.', date('d.m.Y', time()));
105 // dziś, ale więcej niż godzinę temu
107 if($day == $dayN and $month == $monthN and $year == $yearN)
109 return 'dziś, ' . $hour . ':' . $minute;
114 if($day == $dayN - 1 and $month == $monthN and $year == $yearN)
116 return 'wczoraj, ' . $hour . ':' . $minute;
121 if($day == $dayN - 2 and $month == $monthN and $year == $yearN)
123 return 'przedwczoraj, ' . $hour . ':' . $minute;
126 // dawniej niż przedwczoraj
158 $month = 'października';
161 $month = 'listopada';
168 return $day . ' ' . $month . ' ' . $year . ' ' . $hour . ':' . $minute;