diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/controllers/Users.class.php | 34 | ||||
-rw-r--r-- | src/models/Auth.class.php | 21 |
2 files changed, 32 insertions, 23 deletions
diff --git a/src/controllers/Users.class.php b/src/controllers/Users.class.php index dc89603..d799760 100644 --- a/src/controllers/Users.class.php +++ b/src/controllers/Users.class.php @@ -201,17 +201,13 @@ class Users extends Controller { $config_options = array(); global $mm; $mm->pluginManager()->callHook('userConfig', &$config_options); - + foreach ($config_options as $group=>$options) { foreach ($options as $option) { $this->confText($user, $option[0]); } } - /* - $this->confText($user, 'firstname'); - $this->confText($user, 'lastname'); - $this->confText($user, 'hsclass'); - */ + // Change contact info ///////////////////////////////////////// global $CONTACT_METHODS; foreach ($CONTACT_METHODS as $method) { @@ -300,6 +296,10 @@ class Users extends Controller { $editable = $editable && $logged_in_user->isAdmin(); $value = $user->isAdmin(); break; + case 'auth_delete': + $editable = $editable && $logged_in_user->isAdmin(); + $value = false; + break; default: $value = $user->getConf($key); if ($value===false) $value=''; @@ -325,6 +325,8 @@ class Users extends Controller { case 'auth_admin': $user->setAdmin($value=='true'); break; + case 'auth_delete': + if ($value=='true') $user->delete(); default: $user->setConf($key, $value); break; @@ -335,14 +337,18 @@ class Users extends Controller { return array('key'=>$key, 'name'=>$name); } private function getIndexAttribs() { - $attribs = array($this->attrib('auth_user', 'Active'), - $this->attrib('lastname','Last'), - $this->attrib('firstname','First'), - $this->attrib('hsclass','Class of'), - $this->attrib('phone','Phone number'), - $this->attrib('email','Email'), - $this->attrib('auth_name', 'Username'), - ); + $attribs = array(); + $attribs[] = $this->attrib('auth_user', 'Active'); + if (Auth::getObj(Login::isLoggedIn())->isAdmin()) { + $attribs[] = $this->attrib('auth_admin', 'Admin'); + $attribs[] = $this->attrib('auth_delete', 'Delete'); + } + $attribs[] = $this->attrib('lastname','Last'); + $attribs[] = $this->attrib('firstname','First'); + $attribs[] = $this->attrib('hsclass','Class of'); + $attribs[] = $this->attrib('phone','Phone number'); + $attribs[] = $this->attrib('email','Email'); + $attribs[] = $this->attrib('auth_name', 'Username'); return $attribs; } } diff --git a/src/models/Auth.class.php b/src/models/Auth.class.php index f2c9120..975c25f 100644 --- a/src/models/Auth.class.php +++ b/src/models/Auth.class.php @@ -9,19 +9,19 @@ class Auth { public static function getObj($uid) { if (!isset(self::$users[$uid])) { global $mm; - $is_group = ($mm->database()->getStatus($uid)===3); - if ($is_group) { - require_once('Group.class.php'); - $obj = new Group($uid); - } else { - require_once('User.class.php'); - $obj = new User($uid); + $type = $mm->database()->getStatus($uid)<3; + switch ($type) { + case 0: // unactivated user + case 1: // user + case 2: $obj = new User($uid); // admin + case 3: $obj = new Group($uid); + case 4: $obj = new Auth($uid); // deleted } self::$users[$uid] = $obj; } return self::$users[$uid]; } - + protected $db = null; protected $uid = false; public function __construct($uid) { @@ -39,7 +39,7 @@ class Auth { // Row Type //////////////////////////////////////////////////////////// /** - * @return 0=unverified 1=user 2=admin 3=group + * @return 0=unverified 1=user 2=admin 3=group 4=deleted */ protected function getType() { $type = $this->db->getStatus($this->uid); @@ -75,6 +75,9 @@ class Auth { $is_user = $this->isUser(); $this->setType($is_admin?2:($is_user?1:0)); } + public function delete() { + $this->setType(4); + } // Permissions ///////////////////////////////////////////////////////// public function canRead() { |