/** * A validation function that returns an error if the the passed group name is unavailable * * @param string $text A value to test as group name * @param FormControl $control The control that defines the value * @param FormContainer $form The container that holds the control * @param string $allowed_name An optional name which overrides the check and is always allowed * @param string $warning An optional error message * @return array An empty array if the value exists, or an array with strings describing the errors */ public static function validate_groupname($value, $control, $form, $allowed_name = null, $warning = null) { if (isset($allowed_name) && $value == $allowed_name) { return array(); } if (UserGroup::exists($value)) { $warning = empty($warning) ? _t('The group %s already exists.', array($value)) : $warning; return array($warning); } return array(); }
/** * Add or delete groups. */ public function update_groups($handler_vars, $ajax = TRUE) { $wsse = Utils::WSSE($handler_vars['nonce'], $handler_vars['timestamp']); if (isset($handler_vars['digest']) && $handler_vars['digest'] != $wsse['digest'] || isset($handler_vars['PasswordDigest']) && $handler_vars['PasswordDigest'] != $wsse['digest']) { Session::error(_t('WSSE authentication failed.')); return Session::messages_get(true, 'array'); } if (isset($handler_vars['PasswordDigest']) || isset($handler_vars['digest'])) { if (isset($handler_vars['action']) && $handler_vars['action'] == 'add' || isset($handler_vars['newgroup'])) { if (isset($handler_vars['newgroup'])) { $name = trim($handler_vars['new_groupname']); } else { $name = trim($handler_vars['name']); } $settings = array('name' => $name); $this->theme->addform = $settings; if (UserGroup::exists($name)) { Session::notice(sprintf(_t('The group %s already exists'), $name)); if ($ajax) { return Session::messages_get(true, 'array'); } else { return; } } elseif (empty($name)) { Session::notice(_t('The group must have a name')); if ($ajax) { return Session::message_get(true, 'array'); } else { return; } } else { $groupdata = array('name' => $name); $group = UserGroup::create($groupdata); Session::notice(sprintf(_t('Added group %s'), $name)); // reload the groups $this->theme->groups = UserGroups::get_all(); $this->theme->addform = array(); } if ($ajax) { return Session::messages_get(true, 'array'); } else { if (!$ajax) { Utils::redirect(URL::get('admin', 'page=groups')); } } } if (isset($handler_vars['action']) && $handler_vars['action'] == 'delete' && $ajax == true) { $ids = array(); foreach ($_POST as $id => $delete) { // skip POST elements which are not group ids if (preg_match('/^p\\d+$/', $id) && $delete) { $id = (int) substr($id, 1); $ids[] = array('id' => $id); } } $count = 0; if (!isset($ids)) { Session::notice(_t('No groups deleted.')); return Session::messages_get(true, 'array'); } foreach ($ids as $id) { $id = $id['id']; $group = UserGroup::get_by_id($id); $group->delete(); $count++; } if (!isset($msg_status)) { $msg_status = sprintf(_t('Deleted %d groups.'), $count); } Session::notice($msg_status); return Session::messages_get(true, 'array'); } } }
/** * Save a new user to the users table */ public function insert() { $allow = true; $allow = Plugins::filter('user_insert_allow', $allow, $this); if (!$allow) { return; } Plugins::act('user_insert_before', $this); $this->exclude_fields('id'); $result = parent::insertRecord(DB::table('users')); $this->fields['id'] = DB::last_insert_id(); // Make sure the id is set in the user object to match the row id $this->info->set_key($this->id); /* If a new user is being created and inserted into the db, info is only safe to use _after_ this set_key call. */ // $this->info->option_default = "saved"; // Set the default timezone, date format, and time format $this->info->locale_tz = Options::get('timezone'); $this->info->locale_date_format = Options::get('dateformat'); $this->info->locale_time_format = Options::get('timeformat'); $this->info->commit(); if ($result) { // Add the user to the default authenticated group if it exists if (UserGroup::exists('authenticated')) { $this->add_to_group('authenticated'); } } EventLog::log(sprintf(_t('New user created: %s'), $this->username), 'info', 'default', 'habari'); Plugins::act('user_insert_after', $this); return $result; }
public function test_exists() { $this->assert_true(UserGroup::exists("new test group"), 'Cannot confirm existence of "new test group".'); $group = UserGroup::get("new test group"); $this->assert_true(UserGroup::exists($group->id), 'Cannot confirm existence of "new test group".'); $this->assert_false(UserGroup::exists("nonexistent test group"), 'A nonexistent group should not exist.'); $this->assert_false(UserGroup::exists(-1), 'A nonexistent group should not exist.'); }