. */ $BDD_FILE = '/var/nfs/kc.bdd'; try { $db = new SQLite3($BDD_FILE, SQLITE3_OPEN_READONLY); } catch(Exception $e) { die('Unable to load BDD'); } function GetUsers() { global $db; $res = array(); $result = $db->query("SELECT name FROM user ORDER BY name"); while ($row = $result->fetchArray()) array_push($res, $row['name']); return $res; } function IsUserValid($user, $password) { global $db; $result = $db->query("SELECT id FROM user WHERE name='" . $db->escapeString($user) . "' AND password='" . sha1($db->escapeString($password)) . "'"); return $result->fetchArray(); } function ExtractStyle(&$category) { $s = "background-color:" . $category["backcolor"] . ";"; $s .= "color:" . $category["forecolor"] . ";"; if ($category["font"] != "") { $params = explode(";", $category["font"]); // size ; xx ; 93 italic ; 92 bold ; face name $s .= "font-size:" . $params[0] . "px;"; if ($params[2] == "93") $s .= "font-style:italic;"; if ($params[3] == "92") $s .= "font-weight:bold;"; $s .= "font-family:" . $params[4] . ";"; } $category["style"] = $s; } function LoadUser($name) { global $db; $user = new User(); $name = $db->escapeString($name); $result = $db->query("SELECT * FROM user WHERE name='$name'"); if (!($row = $result->fetchArray())) return NULL; $user->id = $row["id"]; $result = $db->query("SELECT * FROM account WHERE user='$user->id' ORDER BY default_account DESC, name ASC"); $user->accounts = array(); while ($row = $result->fetchArray()) array_push($user->accounts, $row); // Shared accounts $result = $db->query("SELECT * FROM account WHERE id IN (SELECT account FROM shared_account WHERE user='$user->id') ORDER BY name ASC"); while ($row = $result->fetchArray()) array_push($user->accounts, $row); $result = $db->query("SELECT * FROM category WHERE user='$user->id' ORDER by name"); $user->categories = array(); while ($row = $result->fetchArray()) { ExtractStyle($row); array_push($user->categories, $row); } $result = $db->query("SELECT * FROM preference WHERE user='$user->id' ORDER by name"); $user->preferences = array(); $user->preferences["operation_order"] = "ASC"; while ($row = $result->fetchArray()) array_push($user->preferences, $row); return $user; } function LoadCategory(&$user, $id) { $result = $db->query("SELECT * FROM category WHERE id='$id'"); if ($row = $result->fetchArray()) { ExtractStyle($row); array_push($user->categories, $row); return $row; } return ""; } function GetAccountAmount($id, $month, $year) { global $db; $req = "SELECT amount FROM account_amount WHERE account='$id' AND month='$month' AND year='$year'"; $result = $db->query($req); if ($row = $result->fetchArray()) return $row["amount"]; return 0; } function LoadMonth($user, $month, $year) { global $db; if (!isset($user->accounts[0])) return; $req = "SELECT * FROM operation WHERE (account IN('" . $user->accounts[0]["id"] ; foreach($user->accounts as $i => $account) { $req .= "', '" . $account["id"]; } $req .= "')"; $req .= " OR user='$user->id')"; $req .= " AND year='$year' AND month='$month'"; $req .= " ORDER BY fix_cost DESC, year, month ASC, day "; $req .= $user->preferences["operation_order"]; return $db->query($req); } function MetaPositiveAmount($id) { global $db; $req = "SELECT SUM(amount) as amount FROM operation WHERE amount > 0 AND parent='$id'"; $result = $db->query($req); if ($row = $result->fetchArray()) return $row["amount"]; else return 0.0; } function GetAllOperations($user, &$last_year, &$last_month) { $res; global $db; if (!isset($user->accounts[0])) return $res; $req = "SELECT DISTINCT year FROM account_amount WHERE account IN('" . $user->accounts[0]["id"] ; foreach($user->accounts as $i => $account) { $req .= "', '" . $account["id"]; } $req .= "')"; $req2 = "SELECT DISTINCT year FROM operation WHERE account IN('" .$user->accounts[0]["id"] ; foreach($user->accounts as $i => $account) { $req2 .= "', '" . $account["id"]; } $req2 .= "')"; $req2 .= " OR user='" . $user->id . "'"; $req2 .= " ORDER BY year ASC"; $reqUnion = $req . " UNION " . $req2; $result = $db->query($reqUnion); while ($row = $result->fetchArray()) { $last_year = $year = $row["year"]; $req = "SELECT DISTINCT month FROM account_amount WHERE account IN('" . $user->accounts[0]["id"] ; foreach($user->accounts as $i => $account) { $req .= "', '" . $account["id"]; } $req .= "')"; $req .= " AND year='" . $year . "'"; $req2 = "SELECT DISTINCT month FROM operation WHERE (account IN('" . $user->accounts[0]["id"] ; foreach($user->accounts as $i => $account) { $req2 .= "', '" . $account["id"]; } $req2 .= "')"; $req2 .= " OR user='" . $user->id . "')"; $req2 .= " AND year='" . $year . "'"; $req2 .= " ORDER BY month ASC"; $reqUnion = $req . " UNION " . $req2; $result2 = $db->query($reqUnion); while ($row = $result2->fetchArray()) { if (!isset($res[$year])) $res[$year] = array(); array_push($res[$year], $row["month"]); $last_month = $row["month"]; } } return $res; } ?>