Visa Källkod

The following files exist in this folder. Click to view.

NamnTypStorlek
actions.phpPHP Fil7.9 KB
admin.phpPHP Fil13.7 KB
auth.phpPHP Fil4.5 KB
change_password.phpPHP Fil4.1 KB
check_login.phpPHP Fil911 B
index.phpPHP Fil4 KB
json_store.phpPHP Fil2.1 KB
transactions.jsonJSON Fil4.6 KB
users.jsonJSON Fil1.5 KB

json_store.php

71 lines UTF-8 Windows (CRLF) - Type: PHP Fil
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
// Definiera sökvägar till JSON-filerna
define('USERS_JSON_PATH''users.json');
define('TRANSACTIONS_JSON_PATH''transactions.json');

// tidszon
if (function_exists('date_default_timezone_set')) {
    @
date_default_timezone_set('Europe/Stockholm');
}

// Läs JSON-fil som array; om filen saknas, returnera tom array
function js_read_array(string $path): array {
    if (!
file_exists($path)) {
        return [];
    }
    
$contents file_get_contents($path);
    if (
$contents === false) return [];
    
$data json_decode($contents ?: '[]'true);
    return 
is_array($data) ? $data : [];
}

// Skriv en JSON-array till fil
function js_write_array(string $path, array $data): bool {
    
$json json_encode($dataJSON_PRETTY_PRINT JSON_UNESCAPED_UNICODE);
    return 
file_put_contents($path$json) !== false;
}

// ladda/spara användare
function load_users(): array {
    return 
js_read_array(USERS_JSON_PATH);
}

function 
save_users(array $users): bool {
    return 
js_write_array(USERS_JSON_PATH$users);
}

// ladda/spara transaktioner
function load_transactions(): array {
    return 
js_read_array(TRANSACTIONS_JSON_PATH);
}

function 
save_transactions(array $txs): bool {
    return 
js_write_array(TRANSACTIONS_JSON_PATH$txs);
}

// Lägg till händelse i transactions.json (append)
function append_transaction(array $tx): bool {
    
$txs load_transactions();
    
$txs[] = $tx;
    return 
save_transactions($txs);
}

// Nuvarande tid som sträng
function now_str(): string {
    return 
date('Y-m-d H:i:s');
}

// Beräkna saldon per konto för en användare genom att summera alla transaktioner
function compute_balances_for_user(string $username): array {
    
// returns [accountName => balanceInt]
    
$balances = [];
    foreach (
load_transactions() as $t) {
        if ((
$t['username'] ?? null) !== $username) continue;
        
$acc $t['account'] ?? 'Huvudkonto';
        
$amt = (int)($t['amount'] ?? 0);
        if (!isset(
$balances[$acc])) $balances[$acc] = 0;
        
$balances[$acc] += $amt;
    }
    return 
$balances;
}