From 0ab5c33ddfbe99cefba810ec49c128a97b0668f0 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Sun, 3 Mar 2013 14:46:58 +0100 Subject: [PATCH] Various updates. --- composer.lock | 8 ++-- lib/Bean/User.php | 47 ++++++++++++++++++ lib/Model/Users.php | 113 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 164 insertions(+), 4 deletions(-) create mode 100644 lib/Bean/User.php create mode 100644 lib/Model/Users.php diff --git a/composer.lock b/composer.lock index 9e04540..dd75b8e 100644 --- a/composer.lock +++ b/composer.lock @@ -188,12 +188,12 @@ "source": { "type": "git", "url": "https://github.com/vatesfr/rekodi.git", - "reference": "608abef5d01a09c5122905a6b99c5197140745a0" + "reference": "7a8d126055acfe4e3dbbdf01d50e3143952b8b77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vatesfr/rekodi/zipball/608abef5d01a09c5122905a6b99c5197140745a0", - "reference": "608abef5d01a09c5122905a6b99c5197140745a0", + "url": "https://api.github.com/repos/vatesfr/rekodi/zipball/7a8d126055acfe4e3dbbdf01d50e3143952b8b77", + "reference": "7a8d126055acfe4e3dbbdf01d50e3143952b8b77", "shasum": "" }, "require": { @@ -222,7 +222,7 @@ "keywords": [ "event" ], - "time": "2013-02-17 16:58:01" + "time": "2013-03-03 13:25:27" } ], "packages-dev": null, diff --git a/lib/Bean/User.php b/lib/Bean/User.php new file mode 100644 index 0000000..05bbf98 --- /dev/null +++ b/lib/Bean/User.php @@ -0,0 +1,47 @@ +. + * + * @author Julien Fontanet + * @license http://www.gnu.org/licenses/gpl-3.0-standalone.html GPLv3 + * + * @package Xen Orchestra Server + */ + +namespace Bean; + +/** + * + */ +final class User extends \Rekodi\Bean +{ + /** + * This function is not necessary but allow us to dynamically + * initialize our bean. + */ + static function init() + { + self::$_fields = array_flip(array( + 'id', + 'name', + 'password', + )); + } + + protected static $_fields; +} +User::init(); diff --git a/lib/Model/Users.php b/lib/Model/Users.php new file mode 100644 index 0000000..6d63f86 --- /dev/null +++ b/lib/Model/Users.php @@ -0,0 +1,113 @@ +. + * + * @author Julien Fontanet + * @license http://www.gnu.org/licenses/gpl-3.0-standalone.html GPLv3 + * + * @package Xen Orchestra Server + */ + +namespace Model; + +/** + * + */ +final class Users +{ + /** + * + */ + function __construct(\Rekodi\Manager $manager) + { + $this->_manager = $manager; + } + + /** + * + */ + function delete($id) + { + $n = $this->_manager->delete(array('id' => $id)); + + if ($n !== 1) + { + trigger_error( + 'unexpected number of deleted users ('.$n.')', + E_USER_ERROR + ); + } + } + + /** + * @param string $id + * @param mixed $default + * + * @return User + */ + function get($id, $default = 'fatal error') + { + $users = $this->_manager->get(array('id' => $id)); + + if ($users) + { + return $users[0]; + } + + if (func_num_args() >= 2) + { + return $default; + } + + trigger_error( + 'no such user (id = '.$id.')', + E_USER_ERROR + ); + } + + /** + * + */ + function save(User $user) + { + if (!isset($user->id)) + { + + // @todo Fills the user with its generated id. + + return; + } + + $n = $this->_manager->update( + $user->getOriginals(), + $user->getDirty() + ); + + if ($n !== 1) + { + trigger_error( + 'unexpected number of updated users ('.$n.')', + E_USER_ERROR + ); + } + } + + /** + * @var \Rekodi\Manager + */ + private $_manager; +}