Refactor load method

This commit is contained in:
Phyks 2013-08-27 15:51:04 +02:00
parent af10ae7445
commit 73b772aa61
5 changed files with 42 additions and 80 deletions

3
TODO
View File

@ -1,8 +1,5 @@
* i18n
* handle negative amounts
* Refactor load method to avoir load_* methods !
* Test remember_me
* TODO in files
inc/Invoices.class.php :
========================

View File

@ -72,44 +72,6 @@
$this->what = $what;
}
// Load overload => TODO
// =============
public function load_invoices($fields = NULL) {
$return = array();
$invoices = $this->load($fields);
foreach($invoices as $invoice) {
$return[$invoice['id']] = new Invoice();
$return[$invoice['id']]->setId($invoice['id']);
$return[$invoice['id']]->setDate($invoice['date']);
$return[$invoice['id']]->setUsersIn($invoice['users_in']);
$return[$invoice['id']]->setBuyer($invoice['buyer']);
$return[$invoice['id']]->setAmount($invoice['amount']);
$return[$invoice['id']]->setWhat($invoice['what']);
}
return $return;
}
public function load_invoice($fields = NULL) {
$fetch = $this->load($fields);
if(count($fetch) > 0) {
$this->setId($fetch[0]['id']);
$this->setWhat($fetch[0]['what']);
$this->setAmount($fetch[0]['amount']);
$this->setBuyer($fetch[0]['buyer']);
$this->setUsersIn($fetch[0]['users_in']);
$this->setDate($fetch[0]['date']);
return true;
}
else {
return false;
}
}
// Maps htmlspecialchars on the class before display
// =================================================
public function secureDisplay() {
@ -122,4 +84,19 @@
return $this;
}
// Restores object from array
// ==========================
public function sessionRestore($data, $serialized = false) {
if($serialized) {
$data = unserialize($data);
}
$this->setId($data['id']);
$this->setWhat($data['what']);
$this->setAmount($data['amount']);
$this->setBuyer($data['buyer']);
$this->setUsersIn($data['users_in']);
$this->setDate($data['date']);
}
}

View File

@ -94,7 +94,7 @@ class Storage {
// Load function
// =============
public function load($fields = NULL) {
public function load($fields = NULL, $first_only = false) {
$query = 'SELECT ';
$i = false;
foreach($this->fields as $field=>$type) {
@ -123,7 +123,25 @@ class Storage {
$query->execute();
return $query->fetchAll();
$results = $query->fetchAll();
if(count($results) > 0) {
$return = array();
$class = get_class($this);
foreach($results as $result) {
$return[$result['id']] = new $class();
$return[$result['id']]->sessionRestore($result);
}
if($first_only)
return $return[0];
else
return $return;
}
else {
return false;
}
}
// Storing function

View File

@ -103,41 +103,11 @@ class User extends Storage {
$this->setAdmin($user_data['admin']);
}
// Load overload => TODO
// =============
public function load_users($fields = NULL) {
$return = array();
$users = $this->load($fields);
foreach($users as $user) {
$return[$user['id']] = new User();
$return[$user['id']]->sessionRestore($user);
}
return $return;
}
public function load_user($fields = NULL) {
$fetch = $this->load($fields);
if(count($fetch) > 0) {
$this->setId($fetch[0]['id']);
$this->setLogin($fetch[0]['login']);
$this->setDisplayName($fetch[0]['display_name']);
$this->setPassword($fetch[0]['password']);
$this->setAdmin($fetch[0]['admin']);
return true;
}
else {
return false;
}
}
// Check wether a user already exists or not
// (a user = aunique login and display_name)
// =========================================
public function isUnique() {
if(count($this->load_users(array('login'=>$this->login))) == 0 && count($this->load_users(array('display_name'=>$this->display_name)))) {
if(count($this->load(array('login'=>$this->login))) == 0 && count($this->load(array('display_name'=>$this->display_name)))) {
return true;
}
else {

View File

@ -176,7 +176,7 @@
if(!empty($_GET['user_id'])) {
$user_id = (int) $_GET['user_id'];
$user = new User();
$user->load_user(array('id'=>$user_id));
$user = $user->load(array('id'=>$user_id), true);
$tpl->assign('user_data', $user->secureDisplay());
}
$tpl->assign('user_id', (!empty($user_id) ? (int) $user_id : -1));
@ -184,7 +184,7 @@
}
else {
$users_list = new User();
$users_list = $users_list->load_users();
$users_list = $users_list->load();
$tpl->assign('users', secureDisplay($users_list));
$tpl->assign('view', 'list_users');
@ -277,7 +277,7 @@
case 'edit_invoice':
if(!empty($_GET['id'])) {
$invoice = new Invoice();
$invoice->load_invoice(array('id'=>(int) $_GET['id']));
$invoice->load(array('id'=>(int) $_GET['id']), true);
$date_day = '';
$date_month = '';
@ -326,7 +326,7 @@
}
$users_list = new User();
$users_list = $users_list->load_users();
$users_list = $users_list->load();
$tpl->assign('days', range(1,31));
$tpl->assign('months', range(1, 12));
@ -358,10 +358,10 @@
default:
$users_list = new User();
$users_list = $users_list->load_users();
$users_list = $users_list->load();
$invoices_list = new Invoice();
$invoices_list = $invoices_list->load_invoices();
$invoices_list = $invoices_list->load();
$tpl->assign('users', secureDisplay($users_list));
$tpl->assign('invoices', secureDisplay($invoices_list));