summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/user/helpers/user.php15
-rw-r--r--modules/user/helpers/user_installer.php2
-rw-r--r--modules/user/tests/User_Groups_Test.php52
3 files changed, 59 insertions, 10 deletions
diff --git a/modules/user/helpers/user.php b/modules/user/helpers/user.php
index 7d72a9b6..e7a3e165 100644
--- a/modules/user/helpers/user.php
+++ b/modules/user/helpers/user.php
@@ -94,7 +94,7 @@ class user_Core {
* @return User_Model
*/
static function create($name, $display_name, $password) {
- $user = ORM::factory("user")->where("name", $name);
+ $user = ORM::factory("user")->where("name", $name)->find();
if ($user->loaded) {
throw new Exception("@todo USER_ALREADY_EXISTS $name");
}
@@ -102,16 +102,13 @@ class user_Core {
$user->name = $name;
$user->display_name = $display_name;
$user->password = $password;
- $user->save();
-
- // Everybody user
- $group = ORM::factory("group", 1);
- $group->add($user);
- // Registered users
- $group = ORM::factory("group", 2);
- $group->add($user);
+ // Everybody group
+ $user->add(ORM::factory("group", 1));
+ // Registered Users group
+ $user->add(ORM::factory("group", 2));
+ $user->save();
module::event("user_created", $user);
return $user;
}
diff --git a/modules/user/helpers/user_installer.php b/modules/user/helpers/user_installer.php
index 2de3a6cd..739a8815 100644
--- a/modules/user/helpers/user_installer.php
+++ b/modules/user/helpers/user_installer.php
@@ -62,8 +62,8 @@ class user_installer {
$guest = user::create("guest", "Guest User", "");
$guest->guest = true;
- $guest->save();
$guest->remove($registered);
+ $guest->save();
$admin = user::create("admin", "Gallery Administrator", "admin");
$admin->admin = true;
diff --git a/modules/user/tests/User_Groups_Test.php b/modules/user/tests/User_Groups_Test.php
new file mode 100644
index 00000000..f8f25cf1
--- /dev/null
+++ b/modules/user/tests/User_Groups_Test.php
@@ -0,0 +1,52 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 Bharat Mediratta
+ *
+ * This program 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 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+class User_Groups_Test extends Unit_Test_Case {
+ public function teardown() {
+ try {
+ $group = ORM::factory("group")->where("name", "user_groups_test")->find();
+ if ($group->loaded) {
+ $group->delete();
+ }
+ } catch (Exception $e) { }
+
+ try {
+ $user = ORM::factory("user")->where("name", "user_groups_test")->find();
+ if ($user->loaded) {
+ $user->delete();
+ }
+ } catch (Exception $e) { }
+ }
+
+ public function add_user_to_group_test() {
+ $user = ORM::factory("user");
+ $user->name = "user_groups_test";
+ $user->save();
+
+ $group = ORM::factory("group");
+ $group->name = "user_groups_test";
+ $group->save();
+
+ $group->add($user);
+ $group->save();
+
+ $this->assert_true($user->has($group));
+ }
+}