['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'=>[]], 'tournaments' => ['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 removeDog($dogid) { if(!$this->id) return false; if (in_array($dogid, $this->data['dogs'])) { $this->data['dogs'] = array_diff($this->data['dogs'],[$dogid]); $this->save(); } } 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) $thisdata = $u->getDataFiltered(); else $thisdata = $u->data; $thisdata['id'] = $id; $users[] = $thisdata; } return $users; } }