1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| <?php
/**
* PHP AXIOM
*
* @license LGPL
* @author Benjamin DELESPIERRE <benjamin.delespierre@gmail.com>
* @category Model
* @package Model
* $Date: 2011-05-18 17:00:36 +0200 (mer., 18 mai 2011) $
* $Id: User.class.php 22988 2011-05-18 15:00:36Z delespierre $
*/
/**
* User Model
*
* @author Delespierre
* @version $Rev: 22988 $
* @subpackage User
*/
class User extends Model {
protected function _init ($statement) {
if (isset($this->_statements[$statement]))
return $this->_statements[$statement];
switch ($statement) {
case 'create':
$query = 'INSERT INTO `ax_users` (`login`,`password`,`name`,`surname`) VALUES (:login,:password,:name,:surname)';
break;
case 'retrieve':
$query = 'SELECT * FROM `ax_users` WHERE `id`=:id';
break;
case 'update':
$query = 'UPDATE `ax_users` SET `login`=:login, `password`=:password, `name`=:name, `surname`=:surname, '.
'`creation`=:creation, `last_connection`=:last_connection WHERE `id`=:id';
break;
case 'delete':
$query = 'DELETE FROM `ax_users` WHERE `id`=:id';
break;
default:
throw new RuntimeException("$statement is unexepected for " . __METHOD__);
}
return $this->_statements[$statement] = Database::prepare($query);
}
public static function exists ($username, $password) {
$query = "SELECT `id` FROM `ax_users` WHERE `login`=:login AND `password`=:password";
$stmt = Database::prepare($query);
$password = md5($password);
$stmt->bindParam(':login', $username, PDO::PARAM_STR);
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
if ($stmt->execute()) {
if ($stmt->rowCount()) {
$row = $stmt->fetch();
return new self($row['id']);
}
return false;
}
else
throw new RuntimeException("Error with query");
}
public static function getUsers ($search_params = array()) {
$query = "SELECT * FROM `ax_users`";
if (!empty($search_params)) {
$pieces = array();
foreach ($search_params as $key => $value)
$pieces[] = "`$key`=:$key";
$query .= " WHERE " . implode(' AND ', $pieces);
}
$stmt = Database::prepare($query);
if ($stmt->execute(array_keys_prefix($search_params, ':'))) {
$user = new self;
$stmt->setFetchMode(PDO::FETCH_INTO, $user);
return new PDOStatementIterator($stmt);
}
return false;
}
} |
Partager