Exemple #1
0
 /**
  * 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');
         }
     }
 }
Exemple #3
0
 /**
  * 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;
 }
Exemple #4
0
 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.');
 }