Skip to content
Snippets Groups Projects
class.user.php 31.3 KiB
Newer Older
  • Learn to ignore specific revisions
  •         $account->set('backend', $vars['backend']);
    
    Peter Rotich's avatar
    Peter Rotich committed
    
            if ($vars['username'] && strcasecmp($vars['username'], $user->getEmail()))
                $account->set('username', $vars['username']);
    
            if ($vars['passwd1'] && !$vars['sendemail']) {
    
                $account->set('passwd', Passwd::hash($vars['passwd1']));
    
                $account->setStatus(UserAccountStatus::CONFIRMED);
    
                    $account->setStatus(UserAccountStatus::REQUIRE_PASSWD_RESET);
    
                if ($vars['forbid-pwreset-flag'])
    
                    $account->setStatus(UserAccountStatus::FORBID_PASSWD_RESET);
    
    Peter Rotich's avatar
    Peter Rotich committed
            }
    
            elseif ($vars['backend'] && $vars['backend'] != 'client') {
                // Auto confirm remote accounts
    
                $account->setStatus(UserAccountStatus::CONFIRMED);
    
    Peter Rotich's avatar
    Peter Rotich committed
    
            $account->save(true);
    
    
            if (!$account->isConfirmed() && $vars['sendemail'])
    
    Peter Rotich's avatar
    Peter Rotich committed
                $account->sendConfirmEmail();
    
            return $account;
        }
    
    
    class UserAccountStatus {
    
        var $flag;
    
        const CONFIRMED             = 0x0001;
        const LOCKED                = 0x0002;
        const REQUIRE_PASSWD_RESET  = 0x0004;
        const FORBID_PASSWD_RESET   = 0x0008;
    
        function __construct($flag) {
            $this->flag = $flag;
        }
    
        function check($flag) {
            return 0 !== ($this->flag & $flag);
        }
    
        function isLocked() {
            return $this->check(self::LOCKED);
        }
    
        function isConfirmed() {
            return $this->check(self::CONFIRMED);
        }
    
        function __toString() {
    
            if ($this->isLocked())
                return 'Locked (Administrative)';
    
            if (!$this->isConfirmed())
                return 'Locked (Pending Activation)';
    
    
            // ... Other flags here (password reset, etc).
    
    
            return 'Active (Registered)';
        }
    }
    
    
    /*
     *  Generic user list.
     */
    class UserList implements  IteratorAggregate, ArrayAccess {
        private $users;
    
        function __construct($list = array()) {
            $this->users = $list;
        }
    
        function add($user) {
            $this->offsetSet(null, $user);
        }
    
        function offsetSet($offset, $value) {
    
            if (is_null($offset))
                $this->users[] = $value;
            else
                $this->users[$offset] = $value;
        }
    
        function offsetExists($offset) {
            return isset($this->users[$offset]);
        }
    
        function offsetUnset($offset) {
            unset($this->users[$offset]);
        }
    
        function offsetGet($offset) {
            return isset($this->users[$offset]) ? $this->users[$offset] : null;
        }
    
        function getIterator() {
            return new ArrayIterator($this->users);
        }
    
        function __toString() {
    
            $list = array();
            foreach($this->users as $user) {
                if (is_object($user))
                    $list [] = $user->getName();
            }
    
            return $list ? implode(', ', $list) : '';
        }
    }
    
    require_once(INCLUDE_DIR . 'class.organization.php');