2010-09-10 21:58:34 +02:00
|
|
|
<?php
|
2010-08-31 21:36:07 +02:00
|
|
|
/*
|
|
|
|
Copyright 2010 Grégory Soutadé
|
|
|
|
|
|
|
|
This file is part of KissCount.
|
|
|
|
|
|
|
|
KissCount is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
KissCount is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with KissCount. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
|
|
|
$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();
|
|
|
|
}
|
|
|
|
|
2010-09-10 21:58:34 +02:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2010-08-31 21:36:07 +02:00
|
|
|
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);
|
|
|
|
|
|
|
|
$result = $db->query("SELECT * FROM category WHERE user='$user->id' ORDER by name");
|
|
|
|
|
|
|
|
$user->categories = array();
|
|
|
|
|
|
|
|
while ($row = $result->fetchArray())
|
2010-09-10 21:58:34 +02:00
|
|
|
{
|
|
|
|
ExtractStyle($row);
|
2010-08-31 21:36:07 +02:00
|
|
|
array_push($user->categories, $row);
|
2010-09-10 21:58:34 +02:00
|
|
|
}
|
2010-08-31 21:36:07 +02:00
|
|
|
|
|
|
|
$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 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 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;
|
|
|
|
}
|
|
|
|
?>
|