c7b66fb1187c2f4a0d67ccf6b7a36cd9073e9edc
[friendica-addons.git] / dav / common / wdcal_configuration.php
1 <?php
2
3 abstract class wdcal_local
4 {
5
6         const LOCAL_US = 0;
7         const LOCAL_DE = 1;
8
9         /**
10          * @static
11          * @return array|wdcal_local[]
12          */
13         static function getInstanceClasses() {
14                 return array(
15                         self::LOCAL_US => "wdcal_local_us",
16                         self::LOCAL_DE => "wdcal_local_de",
17                 );
18         }
19
20         /**
21          * @static
22          * @param int $config
23          * @return null|wdcal_local
24          */
25         static function getInstance($config = 0) {
26                 $classes = self::getInstanceClasses();
27                 if (isset($classes[$config])) return new $classes[$config];
28                 return null;
29         }
30
31         /**
32          * @static
33          * @param int $uid
34          * @return wdcal_local
35          */
36         static function getInstanceByUser($uid = 0) {
37                 $dateformat = get_pconfig($uid, "dav", "dateformat");
38                 $format = self::getInstance($dateformat);
39                 if ($format == null) $format = self::getInstance(self::LOCAL_US);
40                 return $format;
41         }
42
43         /**
44          * @static
45          * @abstract
46          * @return string
47          */
48         abstract static function getLanguageCode();
49
50         /**
51          * @abstract
52          * @static
53          * @return string
54          */
55         abstract static function getName();
56
57         /**
58          * @static
59          * @abstract
60          * @return int
61          */
62         abstract static function getID();
63
64         /**
65          * @param string $str
66          * @return int
67          */
68         function date_local2timestamp($str) {
69                 $x = $this->date_parseLocal($str);
70                 return mktime($x["hour"], $x["minute"], $x["second"], $x["month"], $x["day"], $x["year"]);
71         }
72
73         /**
74          * @abstract
75          * @param string $str
76          * @return array
77          */
78         abstract function date_parseLocal($str);
79
80         /**
81          * @abstract
82          * @param int $ts
83          * @return string
84          */
85         abstract function date_timestamp2local($ts);
86
87         /**
88          * @abstract
89          * @param int $ts
90          * @return string
91          */
92         abstract function date_timestamp2localDate($ts);
93
94         /**
95          * @abstract
96          * @return int
97          */
98         abstract function getFirstDayOfWeek();
99
100         /**
101          * @abstract
102          * @return string
103          */
104         abstract function dateformat_js_dm1();
105         /**
106          * @abstract
107          * @return string
108          */
109         abstract function dateformat_js_dm2();
110
111         /**
112          * @abstract
113          * @return string
114          */
115         abstract function dateformat_js_dm3();
116
117         /**
118          * @abstract
119          * @return string
120          */
121         abstract function dateformat_datepicker_js();
122
123         /**
124          * @abstract
125          * @param int $ts
126          * @return string
127          */
128         abstract function dateformat_datepicker_php($ts = 0);
129
130 }
131
132
133
134 class wdcal_local_us extends wdcal_local {
135
136         /**
137          * @static
138          * @return string
139          */
140         static function getLanguageCode() {
141                 return "en";
142         }
143
144         /**
145          * @return string
146          */
147         static function getName() {
148                 return t("U.S. Time Format (mm/dd/YYYY)");
149         }
150
151         /**
152          * @static
153          * @return int
154          */
155         static function getID() {
156                 return wdcal_local::LOCAL_US;
157         }
158
159         /**
160          * @param string $str
161          * @return array
162          */
163         function date_parseLocal($str) {
164                 return date_parse_from_format("m/d/Y H:i", $str);
165         }
166
167
168         /**
169          * @param int $ts
170          * @return string
171          */
172         function date_timestamp2local($ts)
173         {
174                 return date("m/d/Y H:i", $ts);
175         }
176
177         /**
178          * @param int $ts
179          * @return string
180          */
181         function date_timestamp2localDate($ts) {
182                 return date("l, F jS Y", $ts);
183         }
184
185         /**
186          * @return int
187          */
188         function getFirstDayOfWeek() {
189                 return 0;
190         }
191
192         /**
193          * @return string
194          */
195         function dateformat_js_dm1() {
196                 return "W, M/d";
197         }
198
199         /**
200          * @return string
201          */
202         function dateformat_js_dm2() {
203                 return "d. L";
204         }
205
206         /**
207          * @return string
208          */
209         function dateformat_js_dm3() {
210                 return "d L yyyy";
211         }
212
213         /**
214          * @return string
215          */
216         function dateformat_datepicker_js() {
217                 return "mm/dd/yy";
218         }
219
220         /**
221          * @param int $ts
222          * @return string
223          */
224         function dateformat_datepicker_php($ts = 0) {
225                 return date("m/d/Y", $ts);
226         }
227 }
228
229 class wdcal_local_de extends  wdcal_local {
230
231         /**
232          * @static
233          * @return string
234          */
235         static function getLanguageCode() {
236                 return "de";
237         }
238
239         /**
240          * @return string
241          */
242         static function getName() {
243                 return t("German Time Format (dd.mm.YYYY)");
244         }
245
246         /**
247          * @static
248          * @return int
249          */
250         static function getID() {
251                 return wdcal_local::LOCAL_DE;
252         }
253
254         /**
255          * @param string $str
256          * @return array
257          */
258         function date_parseLocal($str)
259         {
260                 return date_parse_from_format("d.m.Y H:i", $str);
261         }
262
263         /**
264          * @param int $ts
265          * @return string
266          */
267         function date_timestamp2local($ts)
268         {
269                 return date("d.m.Y H:i", $ts);
270         }
271
272         /**
273          * @param int $ts
274          * @return string
275          */
276         function date_timestamp2localDate($ts) {
277                 return date("l, j. F Y", $ts);
278         }
279
280         /**
281          * @return int
282          */
283         function getFirstDayOfWeek() {
284                 return 1;
285         }
286
287         /**
288          * @return string
289          */
290         function dateformat_js_dm1() {
291                 return "W, d.M";
292         }
293
294         /**
295          * @return string
296          */
297         function dateformat_js_dm2() {
298                 return "d. L";
299         }
300
301         /**
302          * @return string
303          */
304         function dateformat_js_dm3() {
305                 return "d L yyyy";
306         }
307
308         /**
309          * @return string
310          */
311         function dateformat_datepicker_js() {
312                 return "dd.mm.yy";
313         }
314
315         /**
316          * @param int $ts
317          * @return string
318          */
319         function dateformat_datepicker_php($ts = 0) {
320                 return date("d.m.Y", $ts);
321         }
322 }
323