253 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			253 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /*
 | |
|   Copyright 2010-2011 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();
 | |
| }
 | |
| 
 | |
| 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;
 | |
| }
 | |
| ?>
 |