Jacek Kowalski
2012-08-12 4cd94bafb70598ab9dd00a869e404d03b827dffb
commit | author | age
8bd4d9 1 <?php
JK 2 class kurs implements module {
3     static $name2iso = array(
4         'dolar' => 'USD',
5         'dolara' => 'USD',
6         'euro' => 'EUR',
7         'rubel' => 'RUB',
8         'rubla' => 'RUB',
9         'GPB' => 'GBP',
10         'funt' => 'GBP',
11         'funta' => 'GBP',
12         'funt szterling' => 'GBP',
13         'funta szterlinga' => 'GBP',
14         'frank' => 'CHF',
15         'franka' => 'CHF',
16         'frank szwajcarski' => 'CHF',
17         'franka szwajcarskiego' => 'CHF',
18         'jen' => 'JPY',
19         'jena' => 'JPY',
20         'forint' => 'HUF',
21         'forinta' => 'HUF',
22         'hrywna' => 'UAH',
23         'hrywny' => 'UAH',
24         'hrywien' => 'UAH',
25         'kuna' => 'HRK',
26         'kuny' => 'HRK',
27         'kun' => 'HRK',
28         'lej' => 'RON',
29         'lei' => 'RON',
30         'lejow' => 'RON',
31         'lew' => 'BGN',
32         'lewy' => 'BGN',
33         'lewow' => 'BGN',
34         'peso' => 'MXN',
35         'rupia' => 'IDR',
36         'rupii' => 'IDR',
37         'SDR' => 'XDR',
38     );
39     
40     static function register_cmd() {
41         return array(
42             'kursy' => 'cmd_kurs',
43             'kurs' => 'cmd_kurs',
44             'k' => 'cmd_kurs',
45             'waluta' => 'cmd_kurs',
46             'waluty' => 'cmd_kurs',
47             'euro' => 'cmd_rewrite',
48             'dolar' => 'cmd_rewrite',
49             'dolara' => 'cmd_rewrite',
50         );
51     }
52     
53     static function help($cmd = NULL) {
54         if($cmd === NULL) {
55             GGapi::putRichText('kurs ', TRUE);
56             GGapi::putRichText('waluta', FALSE, TRUE);
57             GGapi::putRichText("\n".'   Kurs danej waluty wg. NBP'."\n\n");
58         }
59         else
60         {
61             GGapi::putRichText('kurs ', TRUE);
62             GGapi::putRichText('[waluta]', FALSE, TRUE);
63             GGapi::putRichText(' (aliasy: ');
64             GGapi::putRichText('kursy, k, waluta', TRUE);
65             GGapi::putRichText(')'."\n".'   Zwraca aktualne kursy (średnie, a także kupna i sprzedaży - jeśli są dostępne) waluty ');
66             GGapi::putRichText('[waluta]', FALSE, TRUE);
67             GGapi::putRichText('.'."\n".'   Argument powinien być kodem waluty zgodnym z ISO 4217 lub jedną z popularnych nazw (np. dolar, euro).'."\n\n".'   Tabela A jest aktualizowana codziennie po godzinie 12:00, tabela B w środy po 12:00, tabela C codziennie po 8:00'."\n\n");
68             GGapi::putRichText('Przykłady', FALSE, FALSE, TRUE);
69             GGapi::putRichText("\n".'kurs USD'."\n".'kurs EUR');
70         }
71     }
72     
73     static function cmd_rewrite($nazwa, $argument) {
74         self::cmd_kurs('rewrite', self::$name2iso[$nazwa].' '.$argument);
75     }
76     
77     static function cmd_kurs($nazwa, $argument) {
78         $argument = funcs::utfToAscii(trim($argument));
79         
80         if(isset(self::$name2iso[$argument])) {
81             $argument = self::$name2iso[$argument];
82         }
83         else
84         {
85             $argument = strtoupper($argument);
86         }
87         
88         $waluty_A = unserialize(file_get_contents('./data/kurs/A_kursy.txt'));
89         
90         if(empty($argument)) {
91             $waluty_C = unserialize(file_get_contents('./data/kurs/C_kursy.txt'));
92             
93             $txt = 'Kursy średnie walut obcych z dnia '.$waluty_A['i_n_f_o']['data'].' (tabela NBP nr '.$waluty_A['i_n_f_o']['tabela'].') oraz kursy kupna i sprzedaży z dnia '.$waluty_C['i_n_f_o']['data'].' (tabela NBP nr '.$waluty_C['i_n_f_o']['tabela'].')'."\n";
94             foreach($waluty_C as $kod => $dane) {
95                 if($kod == 'i_n_f_o') continue;
96                 $txt .= "\n".$dane['ilosc'].' '.$kod.' => '.$waluty_A[$kod]['kurs'].' PLN';
97                 $txt .= ' (kupno: '.$dane['kupno'].' PLN, sprzedaż: '.$dane['sprzedaz'].' PLN)';
98             }
99             
100             GGapi::putText($txt);
101             return TRUE;
102         }
103         
104         if(isset($waluty_A[$argument])) {
105             $txt = 'Kursy średnie walut obcych z dnia '.$waluty_A['i_n_f_o']['data'].' (tabela NBP nr '.$waluty_A['i_n_f_o']['tabela'].')';
106             $waluty_C = unserialize(file_get_contents('./data/kurs/C_kursy.txt'));
107             if(isset($waluty_C[$argument])) {
108                  $txt .= ' oraz kursy kupna i sprzedaży z dnia '.$waluty_C['i_n_f_o']['data'].' (tabela NBP nr '.$waluty_C['i_n_f_o']['tabela'].')';
109             }
110             
111             $txt .= "\n\n".$waluty_A[$argument]['ilosc'].' '.$argument.' => '.$waluty_A[$argument]['kurs'].' PLN';
112             if(isset($waluty_C[$argument])) {
113                 $txt .= ' (kupno: '.$waluty_C[$argument]['kupno'].' PLN, sprzedaż: '.$waluty_C[$argument]['sprzedaz'].' PLN)';
114             }
115             
116             GGapi::putText($txt);
117             return TRUE;
118         }
119         else
120         {
121             $waluty_B = unserialize(file_get_contents('./data/kurs/B_kursy.txt'));
122             if(!isset($waluty_B[$argument])) {
123                 GGapi::putText('Nie znaleziono żądanej waluty. Sprawdź, czy kod waluty jest zgodny z ISO 4217.'."\n\n");
124                 GGapi::putRichText('Przykłady', FALSE, FALSE, TRUE);
125                 GGapi::putRichText("\n".'kurs USD'."\n".'kurs EUR');
126                 
127                 return FALSE;
128             }
129             
130             GGapi::putText('Kursy średnie walut obcych z dnia '.$waluty_B['i_n_f_o']['data'].' (tabela NBP nr '.$waluty_B['i_n_f_o']['tabela'].')'."\n\n".$waluty_B[$argument]['ilosc'].' '.$argument.' => '.$waluty_B[$argument]['kurs'].' PLN');
131             
132             return TRUE;
133         }
134     }
135 }
136 ?>