['type'=>'text','required','unique','autoValMethod'=>'gen_ulid'], 'password' => ['type'=>'text'], 'registered' => ['type'=>'datetime','required','unique','autoValMethod'=>'getDateTime'], 'email' => ['type'=>'email','unique'], 'firstname' => ['type'=>'text'], 'lastname' => ['type'=>'text'], 'last_login' => ['type'=>'datetime','required','unique','autoValMethod'=>'getDateTime'], 'token' => ['type'=>'text','required','unique','autoValMethod'=>'uuid4'], 'timezone' => ['type'=>'int'], 'dogs' => ['type'=> 'array','default'=>[]], 'active' => ['type'=>'int','default'=>0] ); protected $hidden = ['password','token']; function login() { if(!$this->id) return false; $this->last_login = $this->getDateTime(); $this->save(); $_SESSION['user'] = $this; $_SESSION['userid'] = $this->id; } function logout() { if(!$this->id) return false; unset($_SESSION['user']); } function exists($id) { return $this->redis->exists($this->dbTable.':'.$id); } function getAll($filtered = true) { $keys = $this->redis->keys($this->dbTable.':*'); $users = []; foreach($keys as $key) { $id = end(explode(':',$key)); $u = new User(); $u->load($id); if($filtered===true) $users[] = $u->getDataFiltered(); else $users[] = $u->data; } return $users; } }