kolejna partia drobniejszych zmian (wciąż możliwe, że zacommitowany watermelon nie...
[watermeloncms.git] / wtrmln / helpers / text.php
blob7efa52b3f4032e98e8caaf521b799daca4a0b08e
1 <?php
2 /********************************************************************
4 Watermelon CMS
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 ********************************************************************/
24 * Text Helpers
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.
33 * np. 1 pies
34 * 2 psy
35 * 5 psów
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'
42 * przykład:
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';
97 // dane z timestampu
99 list($day, $month, $year, $hour, $minute) = explode('.', date('j.m.Y.H.i', $timestamp));
101 // dane z teraz
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;
112 // wczoraj
114 if($day == $dayN - 1 and $month == $monthN and $year == $yearN)
116 return 'wczoraj, ' . $hour . ':' . $minute;
119 // przedwczoraj
121 if($day == $dayN - 2 and $month == $monthN and $year == $yearN)
123 return 'przedwczoraj, ' . $hour . ':' . $minute;
126 // dawniej niż przedwczoraj
128 switch($month)
130 case 1:
131 $month = 'stycznia';
132 break;
133 case 2:
134 $month = 'lutego';
135 break;
136 case 3:
137 $month = 'marca';
138 break;
139 case 4:
140 $month = 'kwietnia';
141 break;
142 case 5:
143 $month = 'maja';
144 break;
145 case 6:
146 $month = 'czerwca';
147 break;
148 case 7:
149 $month = 'lipca';
150 break;
151 case 8:
152 $month = 'sierpnia';
153 break;
154 case 9:
155 $month = 'września';
156 break;
157 case 10:
158 $month = 'października';
159 break;
160 case 11:
161 $month = 'listopada';
162 break;
163 case 12:
164 $month = 'grudnia';
165 break;
168 return $day . ' ' . $month . ' ' . $year . ' ' . $hour . ':' . $minute;