diff --git a/inc/Paybacks.class.php b/inc/Paybacks.class.php
new file mode 100644
index 0000000..146cab8
--- /dev/null
+++ b/inc/Paybacks.class.php
@@ -0,0 +1,106 @@
+'key',
+ 'date'=>'date',
+ 'invoice_id'=>'int',
+ 'amount'=>'float',
+ 'from_user'=>'int',
+ 'to_user'=>'int'
+ );
+
+ public function __construct() {
+ parent::__construct();
+ }
+
+ // Getters
+ // =======
+
+ public function getId() {
+ return (int) $this->id;
+ }
+
+ public function getDate($format = 'd-m-Y H:i') {
+ if(!empty($this->date))
+ return $this->date->format($format);
+ else
+ return false;
+ }
+
+ public function getInvoice() {
+ return (int) $this->invoice_id;
+ }
+
+ public function getAmount() {
+ return (float) $this->amount;
+ }
+
+ public function getFrom() {
+ return (int) $this->from;
+ }
+
+ public function getTo() {
+ return (int) $this->to;
+ }
+
+ // Setters
+ // =======
+
+ public function setId($id) {
+ $this->id = (int) $id;
+ }
+
+ public function setDate($minute, $hour, $day, $month, $year) {
+ if((int) $minute < 10) $minute = '0'.$minute;
+
+ $this->date = DateTime::createFromFormat('Y-n-j G:i', $year.'-'.(int) $month.'-'.(int) $day.' '.(int) $hour.':'.$minute);
+ }
+
+ public function setInvoice($invoice_id) {
+ $this->invoice_id = (int) $invoice_id;
+ }
+
+ public function setAmount($amount) {
+ $this->amount = (float) $amount;
+ }
+
+ public function setFrom($from) {
+ $this->from = (int) $from;
+ }
+
+ public function setTo($to) {
+ $this->to = (int) $to;
+ }
+
+ // Restores object from array
+ // ==========================
+
+ public function sessionRestore($data, $serialized = false) {
+ if($serialized)
+ $data = unserialize($data);
+
+ $this->setId($data['id']);
+ $this->setInvoice($data['invoice_id']);
+ $this->setAmount($data['amount']);
+ $this->setFrom($data['from']);
+ $this->setTo($data['to']);
+
+ $this->date = DateTime::createFromFormat('Y-m-d H:i:s', $data['date']);
+ }
+
+ // Maps htmlspecialchars on the class before display
+ // =================================================
+
+ public function secureDisplay() {
+ $this->id = (int) $this->id;
+ $this->invoice_id = (int) $this->invoice_id;
+ $this->amount = (float) $this->amount;
+ $this->from = (int) $this->from;
+ $this->to = (int) $this->to;
+ }
+ }
diff --git a/index.php b/index.php
index e11d35a..72da9df 100644
--- a/index.php
+++ b/index.php
@@ -21,6 +21,7 @@
require_once('data/config.php');
require_once('inc/User.class.php');
require_once('inc/Invoices.class.php');
+ require_once('inc/Paybacks.class.php');
require_once('inc/rain.tpl.class.php');
require_once('inc/functions.php');
require_once('inc/Ban.inc.php');
@@ -474,8 +475,9 @@
break;
default:
+ $use_cache = false;
// Display cached page in priority
- if($cache = $tpl->cache('index', $expire_time = 600, $cache_id = $current_user->getLogin())) {
+ if($use_cache && $cache = $tpl->cache('index', $expire_time = 600, $cache_id = $current_user->getLogin())) {
echo $cache;
}
else {
@@ -485,8 +487,17 @@
$invoices_list = new Invoice();
$invoices_list = $invoices_list->load();
+ if($invoices_list === false) $invoices_list = array();
+
+ $paybacks = array();
+ foreach($invoices_list as $invoice) {
+ $paybacks[$invoice->getId()] = new Payback();
+ $paybacks[$invoice->getId()] = $paybacks[$invoice->getId()]->load(array('invoice_id'=>$invoice->getId()));
+ }
+
$tpl->assign('users', secureDisplay($users_list));
$tpl->assign('invoices', secureDisplay($invoices_list));
+ $tpl->assign('paybacks', secureDisplay($paybacks));
// Cache the page (1 month to make it almost permanent and only regenerate it upon new invoice)
$tpl->cache('index', 108000, $current_user->getLogin());
diff --git a/install.php b/install.php
index fc8fed7..ab2df83 100644
--- a/install.php
+++ b/install.php
@@ -35,7 +35,7 @@
//Create table "Invoices"
- $db->query('CREATE TABLE IF NOT EXISTS '.$mysql_prefix.'Invoices (id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, date INT(11), users_in VARCHAR(255), buyer INT(11), amount FLOAT, what TEXT) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci');
+ $db->query('CREATE TABLE IF NOT EXISTS '.$mysql_prefix.'Invoices (id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, date DATETIME, users_in VARCHAR(255), buyer INT(11), amount FLOAT, what TEXT) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci');
$count_invoices = $db->query('SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = "'.$mysql_db.'" AND table_name = "'.$mysql_prefix.'"Invoices');
$count_invoices = $count_users->fetch();
@@ -53,7 +53,14 @@
$warning .= 'Table '.$mysql_prefix.'Users_in_invoices already exists. Not doing anything on this table. Please check manually that this table is correct.
';
}
- //Create table "Payback" - TODO
+ //Create table "Paybacks"
+ $db->query('CREATE TABLE IF NOT EXISTS '.$mysql_prefix.'Paybacks (id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, date DATETIME, invoice_id INT(11), KEY invoice_id (invoice_id), amount FLOAT, from_user INT(11), to_user INT(11)) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci');
+
+ $count_paybacks = $db->query('SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = "'.$mysql_db.'" AND table_name = "'.$mysql_prefix.'"Paybacks');
+ $count_paybacks = $count_paybacks->fetch();
+ if($count_paybacks[0] > 0) {
+ $warning .= 'Table '.$mysql_prefix.'Paybacks already exists. Not doing anything on this table. Please check manually that this table is correct.
';
+ }
} catch (PDOException $e) {
$error = 'Unable to connect to database and create database, check your credentials and config.
Error message : '.$e->getMessage().'.';
}