Formatting
[memberdb.git] / index.php
1 <?php
2
3 use MemberDB\Config\Config;
4
5 error_reporting(E_ALL);
6 ini_set('display_errors', 1);
7
8 header('Content-type: text/html; charset=utf-8');
9 date_default_timezone_set('UTC');
10 bcscale(2);
11
12 set_exception_handler(function (Throwable $e) {
13     echo('Caught exception: ' . $e->getMessage());
14     exit();
15 });
16
17 require_once(__DIR__ . '/include/autoload.php');
18
19 if (!file_exists(__DIR__ . '/config.php')) {
20     die('Not configured');
21 }
22
23 $config = Config::getInstance();
24 $config->set(require(__DIR__ . '/config.php'));
25 require_once(__DIR__ . '/include/includes.php');
26
27 db_connect();
28
29 $action = 'list_members';
30 if (isset($_GET['action'])) {
31     $action = $_GET['action'];
32 }
33
34 ob_start();
35
36 switch ($action) {
37     case 'list_members'   :
38         action_list_members();
39         break;
40     case 'view_member'    :
41         action_view_member();
42         break;
43     case 'export_email'   :
44         action_export_email();
45         break;
46     case 'create_member'  :
47         action_create_member();
48         break;
49     case 'change_member'  :
50         action_change_member();
51         break;
52     case 'export_ibanhin' :
53         action_export_ibanhin();
54         break;
55     case 'create_event'   :
56         action_create_event();
57         break;
58     case 'change_event'   :
59         action_change_event();
60         break;
61     case 'delete_event'   :
62         action_delete_event();
63         break;
64     case 'create_earnings':
65         action_create_earnings();
66         break;
67     case 'create_earning' :
68         action_create_earning();
69         break;
70     case 'change_earning' :
71         action_change_earning();
72         break;
73     case 'delete_earning' :
74         action_delete_earning();
75         break;
76     case 'create_expense' :
77         action_create_expense();
78         break;
79     case 'change_expense' :
80         action_change_expense();
81         break;
82     case 'delete_expense' :
83         action_delete_expense();
84         break;
85     case 'cryptography'   :
86         action_cryptography();
87         break;
88     case 'fees'           :
89         action_fees();
90         break;
91     case 'directdebit'    :
92         action_directdebit();
93         break;
94     case 'finances'       :
95         action_finances();
96         break;
97     case 'export'         :
98         action_export_payments();
99         break;
100     case 'export_members' :
101         action_export_members();
102         break;
103     default:
104         action_404();
105 }
106
107 $content = ob_get_contents();
108 ob_end_clean();
109 ?>
110 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
111         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
112
113 <html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
114 <head>
115     <title>Mitgliedsverwaltung - Chaos Computer Club Frankfurt am Main</title>
116     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
117     <style type="text/css">
118         form {
119             line-height: 2em;
120         }
121
122         fieldset {
123             line-height: 2em;
124             border: 1px solid #ccc;
125             margin-bottom: 1em;
126             float: left;
127             border-width: 1px 0 0 0;
128             width: 27em;
129         }
130
131         /*fieldset { border: 1px solid #ccc; margin-bottom: 1em; float:left; border-width: 1px 0 0 0; } */
132         legend {
133             font-size: 1.4em;
134         }
135
136         label {
137             clear: left;
138             display: block;
139             width: 10em;
140             float: left;
141         }
142
143         input, select {
144             display: block;
145             width: 20em;
146             float: left;
147         }
148
149         form small {
150             clear: left;
151             display: block;
152             text-align: right;
153             margin-right: 1.8em;
154             line-height: 1em;
155             margin-bottom: 1.5em;
156         }
157
158         fieldset small {
159             clear: left;
160             display: block;
161             text-align: right;
162             margin-right: 1.8em;
163             line-height: 1em;
164             margin-bottom: 1.5em;
165         }
166
167         .checkbox label {
168             clear: none;
169             margin-left: 0.5em;
170         }
171
172         .checkbox input {
173             clear: left;
174             width: auto;
175         }
176
177         #header {
178             margin: 0;
179             padding: 1px 0;
180             background-color: #464646;
181         }
182
183         #content {
184             font-size: 1.4em;
185         }
186
187         .content {
188             margin: 0 auto;
189             width: 960px;
190         }
191
192         .submit {
193             clear: left;
194         }
195
196         h1 {
197             color: #fff;
198         }
199
200         body {
201             margin: 0;
202             padding: 0;
203             font-family: Arial, Verdana, Tahoma;
204             font-size: 62.5%;
205             color: #333;
206         }
207
208         html {
209             margin: 0;
210             padding: 0;
211         }
212
213         table {
214             border-collapse: collapse;
215             margin-bottom: 1em;
216             border: 1px solid #ccc;
217         }
218
219         th, td {
220             padding: 0.3em 2em 0.3em 0.3em;
221         }
222
223         tr:hover {
224             background-color: #eee;
225         }
226
227         tr.earning {
228             background-color: #efe;
229         }
230
231         tr.expense {
232             background-color: #fee;
233         }
234
235         tr.earning:hover {
236             background-color: #dfd;
237         }
238
239         tr.expense:hover {
240             background-color: #fdd;
241         }
242
243         tr.total {
244             background-color: #eee;
245             font-weight: bold;
246         }
247
248         tr.current {
249             background-color: #eee;
250             font-weight: bold;
251         }
252
253         tr.inactive {
254             color: #999;
255         }
256
257         #earning_form {
258             background-color: #efe;
259         }
260
261         #expense_form {
262             background-color: #fee;
263         }
264
265         th {
266             text-align: left;
267             background-color: #eee;
268             font-weight: normal;
269             border-bottom: 1px solid #ccc;
270         }
271
272         h1, h2, h3, legend {
273             font-family: Georgia, Sans-Serif, Verdana;
274             font-weight: normal;
275             color: #333;
276         }
277
278         #header h1 {
279             font-size: 4em;
280             color: #fff;
281         }
282
283         h2 {
284             font-size: 2.2em;
285         }
286
287         h3 {
288             font-size: 1.8em;
289         }
290
291         #pagemenu {
292             background-color: #e0e0e0;
293             border-top: 1px solid #e4f2fd;
294             font-size: 1.4em;
295         }
296
297         #pagemenu ul {
298             list-style: none;
299             padding: 0px 10px;
300             display: block;
301             margin-top: 6px;
302         }
303
304         #pagemenu li {
305             line-height: 28px;
306             font-weight: bold;
307             display: inline;
308             float: left;
309             margin-left: 5px;
310         }
311
312         #pagemenu li a {
313             display: block;
314             color: #888;
315             background-color: #eee;
316             padding: 0px 20px;
317             text-decoration: none;
318         }
319
320         #pagemenu li a:hover {
321             color: #000;
322             background: #fff;
323         }
324
325         #footer {
326             background-color: #eee;
327             border-top: 1px solid #ddd;
328             height: 50px;
329             margin-top: 3em;
330         }
331
332         .clearfix:after {
333             content: " ";
334             display: block;
335             clear: both;
336             visibility: hidden;
337             line-height: 0;
338             height: 0;
339         }
340
341         .clearfix {
342             display: inline-block;
343         }
344
345         html[xmlns] .clearfix {
346             display: block;
347         }
348
349         * html .clearfix {
350             height: 1%;
351         }
352
353         .log_messages {
354             color: #cc0000;
355         }
356
357         p.error {
358             border: 1px solid #900;
359             padding: 1em;
360             color: #cc0000;
361             background-color: #fff9f9;
362         }
363
364         #content a {
365             text-decoration: none;
366             padding: 0 1px;
367             color: #21759B;
368             border-bottom: 1px solid #ccc;
369         }
370
371         #content a:hover {
372             color: #D54E21;
373             background: #F5D1C5;
374             border-bottom: 1px solid #D54E21;
375         }
376
377         .modal_window {
378             position: absolute;
379             display: none;
380             background-color: #fff;
381             padding: 1em;
382         }
383
384         #mask {
385             position: absolute;
386             top: 0px;
387             left: 0px;
388             height: 100%;
389             width: 100%;
390             display: none;
391             background-color: black;
392         }
393
394         .pagination {
395             text-align: center;
396             margin: 10px 0;
397             font-weight: bold;
398         }
399
400         .pagination .prev {
401             float: left;
402         }
403
404         .pagination .next {
405             float: right;
406         }
407
408     </style>
409     <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
410     <script type="text/javascript" src="js/crypto-js/crypto/crypto-min.js"></script>
411     <script type="text/javascript" src="js/crypto-js/sha1/sha1-min.js"></script>
412     <script type="text/javascript" src="js/crypto-js/hmac/hmac-min.js"></script>
413     <script type="text/javascript" src="js/crypto-js/pbkdf2/pbkdf2-min.js"></script>
414     <script type="text/javascript" src="js/crypto-js/ofb/ofb-min.js"></script>
415     <script type="text/javascript" src="js/crypto-js/aes/aes_modified.js"></script>
416     <script type="text/javascript" src="js/date.js"></script>
417     <script type="text/javascript" src="js/utils.js"></script>
418     <script type="text/javascript" src="js/dtaus.js"></script>
419     <script type="text/javascript" src="js/sepa-CORE.js"></script>
420 </head>
421 <body>
422 <div id="header">
423     <div class="content"><h1>Mitgliedsverwaltung</h1></div>
424 </div>
425 <div id="pagemenu">
426     <ul class="content clearfix">
427         <li><a href="<?php echo link_to(); ?>">Mitglieder</a></li>
428         <li><a href="<?php echo link_to('finances'); ?>">Finanzen</a></li>
429         <li><a href="<?php echo link_to('fees'); ?>">Mitgliedsbeitr&auml;ge</a></li>
430         <li><a href="<?php echo link_to('directdebit'); ?>">Bankeinzug</a></li>
431         <li><a href="<?php echo link_to('cryptography'); ?>">Kryptographie</a></li>
432     </ul>
433 </div>
434 <div id="content" class="content"><?php echo $content; ?></div>
435 <div id="footer"></div>
436 </body>
437 </html>