[ Index ]
 

Code source de Horde 3.1.3

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/admin/ -> user.php (source)

   1  <?php
   2  /**
   3   * $Horde: horde/admin/user.php,v 1.47.10.7 2006/01/01 21:28:05 jan Exp $
   4   *
   5   * Copyright 1999-2006 Chuck Hagenbuch <chuck@horde.org>
   6   *
   7   * See the enclosed file COPYING for license information (LGPL).  If you
   8   * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
   9   */
  10  
  11  @define('HORDE_BASE', dirname(__FILE__) . '/..');
  12  require_once  HORDE_BASE . '/lib/base.php';
  13  require_once  'Horde/Menu.php';
  14  require_once 'Horde/Form.php';
  15  require_once 'Horde/Variables.php';
  16  require_once 'Horde/Form/Renderer.php';
  17  require_once 'Horde/Variables.php';
  18  
  19  if (!Auth::isAdmin()) {
  20      Horde::fatal('Forbidden.', __FILE__, __LINE__);
  21  }
  22  $auth = &Auth::singleton($conf['auth']['driver']);
  23  
  24  if ($conf['signup']['allow'] && $conf['signup']['approve']) {
  25      require_once 'Horde/Auth/Signup.php';
  26      $signup = &Auth_Signup::singleton();
  27  }
  28  
  29  $vars = &Variables::getDefaultVariables();
  30  $addForm = &new Horde_Form($vars, _("Add a new user:"), 'adduser');
  31  $addForm->setButtons(_("Add user"), _("Reset"));
  32  
  33  $vars->set('form', 'add');
  34  $addForm->addHidden('', 'form', 'text', true, true);
  35  $addForm->addVariable(_("Username"), 'user_name', 'text', true);
  36  $addForm->addVariable(_("Password"), 'password', 'passwordconfirm', false, false, _("type the password twice to confirm"));
  37  
  38  /* Use hooks get any extra fields for new accounts. */
  39  $extra = Horde::callHook('_horde_hook_signup_getextra');
  40  if (!is_a($extra, 'PEAR_Error') && !empty($extra)) {
  41      foreach ($extra as $field_name => $field) {
  42          $readonly = isset($field['readonly']) ? $field['readonly'] : null;
  43          $desc = isset($field['desc']) ? $field['desc'] : null;
  44          $field_params = isset($field['params']) ? $field['params'] : array();
  45  
  46          $addForm->addVariable($field['label'], 'extra[' . $field_name . ']', $field['type'], $field['required'], $readonly, $desc, $field_params);
  47      }
  48  }
  49  
  50  
  51  // Process forms. Use Util::getPost() instead of Util::getFormData()
  52  // for a lot of the data because we want to actively ignore GET data
  53  // in some cases - adding/modifying users - as a security precaution.
  54  switch (Util::getFormData('form')) {
  55  case 'add':
  56      $addForm->validate($vars);
  57  
  58      if ($addForm->isValid() && $vars->get('formname') == 'adduser') {
  59          $addForm->getInfo($vars, $info);
  60  
  61          if (empty($info['user_name'])) {
  62              $notification->push(_("You must specify the username to add."), 'horde.error');
  63  
  64          } else {
  65              $credentials = array('password' => $info['password']);
  66              if (isset($info['extra'])) {
  67                  foreach ($info['extra'] as $field => $value) {
  68                      $credentials[$field] = $value;
  69                  }
  70              }
  71  
  72              if (is_a($ret = $auth->addUser($info['user_name'], $credentials), 'PEAR_Error')) {
  73                  $notification->push(sprintf(_("There was a problem adding \"%s\" to the system: %s"), $info['user_name'], $ret->getMessage()), 'horde.error');
  74              } else {
  75                  if (isset($info['extra'])) {
  76                      $result = Horde::callHook('_horde_hook_signup_addextra',
  77                                                array($info['user_name'], $info['extra']));
  78                      if (is_a($result, 'PEAR_Error')) {
  79                          $notification->push(sprintf(_("Added \"%s\" to the system, but could not add additional signup information: %s."), $info['user_name'], $result->getMessage()), 'horde.warning');
  80                      }
  81                  }
  82                  if (Util::getFormData('removeQueuedSignup')) {
  83                      $signup->removeQueuedSignup($info['user_name']);
  84                  }
  85                  $notification->push(sprintf(_("Successfully added \"%s\" to the system."), $info['user_name']), 'horde.success');
  86                  $addForm->unsetVars($vars);
  87              }
  88          }
  89      }
  90      break;
  91  
  92  case 'remove_f':
  93      $f_user_name = Util::getFormData('user_name');
  94      $remove_form = true;
  95      break;
  96  
  97  case 'remove':
  98      $f_user_name = Util::getFormData('user_name');
  99      if (empty($f_user_name)) {
 100          $notification->push(_("You must specify a username to remove."), 'horde.message');
 101      } elseif (Util::getFormData('submit') !== _("Cancel")) {
 102          if (is_a($result = $auth->removeUser($f_user_name), 'PEAR_Error')) {
 103              $notification->push(sprintf(_("There was a problem removing \"%s\" from the system: ") . $result->getMessage(), $f_user_name), 'horde.error');
 104          } else {
 105              $notification->push(sprintf(_("Successfully removed \"%s\" from the system."), $f_user_name), 'horde.success');
 106          }
 107      }
 108      $vars->remove('user_name');
 109      break;
 110  
 111  case 'clear_f':
 112      $f_user_name = Util::getFormData('user_name');
 113      $clear_form = true;
 114      break;
 115  
 116  case 'clear':
 117      $f_user_name = Util::getFormData('user_name');
 118      if (empty($f_user_name)) {
 119          $notification->push(_("You must specify a username to clear out."), 'horde.message');
 120      } elseif (Util::getFormData('submit') !== _("Cancel")) {
 121          if (is_a($result = $auth->removeUserData($f_user_name), 'PEAR_Error')) {
 122              $notification->push(sprintf(_("There was a problem clearing data for user \"%s\" from the system: ") . $result->getMessage(), $f_user_name), 'horde.error');
 123          } else {
 124              $notification->push(sprintf(_("Successfully cleared data for user \"%s\" from the system."), $f_user_name), 'horde.success');
 125          }
 126      }
 127      $vars->remove('user_name');
 128      break;
 129  
 130  case 'update_f':
 131      $f_user_name = Util::getFormData('user_name');
 132      $update_form = true;
 133      break;
 134  
 135  case 'update':
 136      $user_name_1 = Util::getPost('user_name');
 137      $user_name_2 = Util::getPost('user_name2', $user_name_1);
 138      $fullname = Util::getPost('user_fullname');
 139      $email = Util::getPost('user_email');
 140  
 141      if ($auth->hasCapability('update')) {
 142          $user_pass_1 = Util::getPost('user_pass_1');
 143          $user_pass_2 = Util::getPost('user_pass_2');
 144  
 145          if (empty($user_name_1)) {
 146              $notification->push(_("You must specify the username to update."), 'horde.error');
 147          } elseif (empty($user_pass_1) || empty($user_pass_2)) {
 148              // Don't update, but don't complain.
 149          } elseif ($user_pass_1 != $user_pass_2) {
 150              $notification->push(_("Passwords must match."), 'horde.error');
 151          } else {
 152              $result = $auth->updateUser($user_name_1,
 153                                          $user_name_2,
 154                                          array('password' => $user_pass_1));
 155          }
 156      }
 157  
 158      if (isset($result) && is_a($result, 'PEAR_Error')) {
 159          $notification->push(sprintf(_("There was a problem updating \"%s\": %s"),
 160                                      $user_name_1, $result->getMessage()), 'horde.error');
 161      } else {
 162          require_once 'Horde/Identity.php';
 163          $identity = &Identity::singleton('none', $user_name_1);
 164          $identity->setValue('fullname', $fullname);
 165          $identity->setValue('from_addr', $email);
 166          $identity->save();
 167  
 168          $notification->push(sprintf(_("Successfully updated \"%s\""),
 169                                      $user_name_2), 'horde.success');
 170      }
 171      $vars->remove('user_name');
 172      break;
 173  
 174  case 'approve_f':
 175      $thisSignup = $signup->getQueuedSignup(Util::getFormData('user_name'));
 176      $info = $thisSignup->getData();
 177  
 178      $vars->set('password',
 179                 array('original' => $info['password'],
 180                       'confirm' => $info['password']));
 181      unset($info['password']);
 182      $vars->set('extra', $info);
 183  
 184      $vars->set('removeQueuedSignup', true);
 185      $addForm->addHidden('', 'removeQueuedSignup', 'boolean', true);
 186      break;
 187  
 188  case 'removequeued_f':
 189      $f_user_name = Util::getFormData('user_name');
 190      $removequeued_form = true;
 191      break;
 192  
 193  case 'removequeued':
 194      $result = $signup->removeQueuedSignup(Util::getFormData('user_name'));
 195      if (is_a($result, 'PEAR_Error')) {
 196          $notification->push($result);
 197      } else {
 198          $notification->push(sprintf(_("The signup request for %s has been removed."), Util::getFormData('user_name')));
 199      }
 200      break;
 201  }
 202  
 203  $title = _("User Administration");
 204  Horde::addScriptFile('stripe.js', 'horde', true);
 205  require  HORDE_TEMPLATES . '/common-header.inc';
 206  require  HORDE_TEMPLATES . '/admin/common-header.inc';
 207  $notification->notify(array('listeners' => 'status'));
 208  
 209  if (isset($update_form) && $auth->hasCapability('list')) {
 210      require_once 'Horde/Identity.php';
 211      $identity = &Identity::singleton('none', $f_user_name);
 212      require  HORDE_TEMPLATES . '/admin/user/update.inc';
 213  } elseif (isset($remove_form) && $auth->hasCapability('list') && $auth->hasCapability('remove')) {
 214      require  HORDE_TEMPLATES . '/admin/user/remove.inc';
 215  } elseif (isset($clear_form)) {
 216      require  HORDE_TEMPLATES . '/admin/user/clear.inc';
 217  } elseif (isset($removequeued_form)) {
 218      require  HORDE_TEMPLATES . '/admin/user/removequeued.inc';
 219  } elseif ($auth->hasCapability('add')) {
 220      require  HORDE_TEMPLATES . '/admin/user/add.inc';
 221      if ($conf['signup']['allow'] && $conf['signup']['approve']) {
 222          require  HORDE_TEMPLATES . '/admin/user/approve.inc';
 223      }
 224  } else {
 225      require  HORDE_TEMPLATES . '/admin/user/noadd.inc';
 226  }
 227  
 228  if ($auth->hasCapability('list')) {
 229  
 230      /* If we aren't supplied with a page number, default to page 0. */
 231      $page = Util::getFormData('page', 0);
 232      $search_pattern = Util::getFormData('search_pattern', '');
 233  
 234      $users = $auth->listUsers();
 235      if (is_a($users, 'PEAR_Error')) {
 236          Horde::fatal($users, __FILE__, __LINE__);
 237      }
 238  
 239      /* Returns only users that match the specified pattern. */
 240      require_once  'Horde/Array.php';
 241      $users = preg_grep('/' . $search_pattern . '/', $users);
 242      sort($users);
 243  
 244      require_once 'Horde/UI/Pager.php';
 245      $viewurl = Util::addParameter('admin/user.php', 'search_pattern', $search_pattern);
 246  
 247      $numitem = count($users);
 248      $perpage = 20;
 249  
 250      $min = $page * $perpage;
 251      while ($min > $numitem) {
 252          $page--;
 253          $min = $page * $perpage;
 254      }
 255      $max = $min + $perpage;
 256  
 257      $start = ($page * $perpage) + 1;
 258      $end = min($numitem, $start + $perpage - 1);
 259  
 260      require  HORDE_TEMPLATES . '/admin/user/list.inc';
 261  } else {
 262      require  HORDE_TEMPLATES . '/admin/user/nolist.inc';
 263  }
 264  
 265  require  HORDE_TEMPLATES . '/common-footer.inc';


Généré le : Sun Feb 25 18:01:28 2007 par Balluche grâce à PHPXref 0.7